Loading files…
The hardest part of this project was making design decisions. If the goal were simply to solve the scenario described in the assignment introduction, a basic multimeter would have sufficed. So with little to no design, monetary, or other constraints, I decided to base my choices on how interesting I found the solutions, of course only when there was no clear direction provided in the task.
The 4–20 mA interface was not specified, so I assumed a sensor with an integrated transmitter and chose a 100 Ω shunt resistor, expecting a 0.4 V to 2 V voltage output (if the transmitter in the sensor could not provide a 2V voltage for example the shunt resistor would have to be changed). If the sensor were just a passive component, a transmitter circuit would be required.
I attempted to build the circuit using components I had available to make the process more interesting. The result is this schematic: CurrentSensorUSB_prototype.pdf. I didn’t have any components to achieve galvanic isolation between the MCU and the current measurement, but I was able to use the circuit to test the Python data acquisition software. I wrote the firmware in Rust because I had never tried embedded Rust before README.md.
The prototype circuit didn’t fully meet the requirements outlined in the task, so I created another schematic: CurrentSensorUSB.pdf, along with a BOM: CurrentSensorUSB.csv. A more detailed explanation of the component choices can be found here: README.md. I couldn’t write the firmware for this circuit because I didn’t have the hardware or toolchain to test it.
The software folder contains a Python project with a CLI tool that can acquire a data stream over serial and generate a report based on the acquired data. An example report generated using the prototype board can be found here: report.pdf. More information on this task can be found in the README in the software directory: .
Bill of Materials (BOM):
Supplier Selection:
Files for Suppliers:
PCB Fabrication (DFM Review)
Assembly (PCBA)
Firmware Provisioning
Incoming Inspection (IQC):
In‑Process Checks:
End‑of‑Line Functional Test (FCT):
USB Enumeration: Ensure the board appears as a CDC/Serial device; verify VID/PID and basic loopback.
Current‑Loop Accuracy:
Calibration:
Isolation Test:
Traceability:
| Category | Files/Supplies | Equipment |
|---|---|---|
| PCB Fab | Gerbers, drill file, board outline (DXF/PDF), impedance spec | — |
| PCB Assembly | BOM (incl. alternates), pick‑and‑place, paste‑mask Gerbers | Pick‑and‑place machine, reflow oven, AOI |
| Firmware/Programming | Final Rust .bin/.hex, programming script, README | SWD/JTAG programmer (ST‑Link), PC |
| Functional Testing | Test‑fixture drawing, FCT script (Python), calibration doc | 4–20 mA precision source (e.g., Keithley), 6½‑digit DMM, oscilloscope, USB protocol analyzer, hipot tester |
No comments yet. Be the first to ask about this board.