techmannih/nema34-mounted-stepper-controller
A 48 V USB‑C PD 3.1 EPR NEMA‑34 stepper controller PCB combining STM32/TMC5160 control, external MOSFET motor bridges, protected power and regenerative braking, USB data, telemetry, diagnostics, status LEDs, and buzzer alarms.
- Version
- 0.3.92
- License
- unset
- Stars
- 1
engineering/reference-board-comparison.json
{
"reviewed_at_utc": "2026-10-09T15:17:38.861936+00:00",
"current_board_commit": "49c3ac7836e0595798955490af49c769ca056bc6",
"scope": "Reference source/documentation comparison and targeted measurements of current final KiCad PCB; no circuit modifications.",
"references": [
{
"package": "imrishabh18/rp2040-motor-controller",
"version": "1.0.42",
"release_id": "e8d285f7-c3d8-46f5-9a54-344fdde0124e",
"url": "https://tscircuit.com/imrishabh18/rp2040-motor-controller",
"reviewed_file_sha256": {
"README.md": "88b05a6b8b9aaef9c2e7de6fc66305f0da271d848710434b3df651a401a34222",
"package.json": "7a1a044cc79e425f539b6cd22b16631926ed7a99709660fb2dbcf3bd248be199",
"index.circuit.tsx": "65391e3e5525c4b3968983c23327385fb903f9ab716d3b6c0b7d144472ee17b6",
"reports/routing-refresh-review.md": "159e965f54d94d925d3cfd6f31c73bd2b7976796b3f65e8632d50f78a3300dfe"
}
},
{
"package": "imrishabh18/nema-23-stepper-controller",
"version": "1.3.2",
"release_id": "ce2edb82-bc7a-4eb3-9cbd-280f173e6dcd",
"url": "https://tscircuit.com/imrishabh18/nema-23-stepper-controller",
"reviewed_file_sha256": {
"README.md": "ef0e74239e4d940161187105c3d7a9c906366edc5e17b3d87770e31d4c78930c",
"package.json": "615b569228278d06130bde2495a1d635dba5c9739b57c2bf9a03d938526513a6",
"index.circuit.tsx": "5c2e528de893e435b0b52491b9de0c8eeed371b22e63ddaf5db29884f564b73c",
"checks/ground-copper-connectivity.json": "b93515b375e5c80d76de810cfbe11455a281db7cedc86c1a98aaa4b425811bc4",
"checks/kelvin-connectivity.json": "c9cbd43206fc0a84c54f38184444fd79de6e9e9898b029dea152d0057ac64681",
"routing/power-layer-policy.json": "badbd03f1da397187bca584f9d927ec9aea5f94bbb10124fafffc344e2e7fea2",
"engineering/motor-profile.json": "b0d257204e7585c7f984e3c318ab80c181dea60340e17e6afc5038d14d2d91c7"
}
}
],
"limitations": [
"Exact revisions ordered by the reviewer are unknown.",
"Reference compiled circuit JSON downloads timed out; reference DRC/thermal/DFM statements are author-reported, not independently reproduced.",
"NEMA23 latest README explicitly retains a fabricator DFM hold for 2 oz outer copper versus 0.10 mm tracks.",
"No physical motor, thermal, power-sequencing or EMI tests were performed."
],
"current_native_measurements": {
"pad_distances": [
{
"from": "C32:1",
"to": "U7:42",
"from_net": "BOOT_A1",
"to_net": "BOOT_A1",
"pad_center_distance_mm": 11.185
},
{
"from": "C33:1",
"to": "U7:35",
"from_net": "BOOT_A2",
"to_net": "BOOT_A2",
"pad_center_distance_mm": 6.887
},
{
"from": "C34:1",
"to": "U7:2",
"from_net": "BOOT_B1",
"to_net": "BOOT_B1",
"pad_center_distance_mm": 11.056
},
{
"from": "C35:1",
"to": "U7:43",
"from_net": "BOOT_B2",
"to_net": "BOOT_B2",
"pad_center_distance_mm": 10.533
},
{
"from": "R43:2",
"to": "Q9:4",
"from_net": "GL_A2",
"to_net": "GL_A2",
"pad_center_distance_mm": 7.552
},
{
"from": "U7:8",
"to": "R109:1",
"from_net": "SENSE_A",
"to_net": "SENSE_A",
"pad_center_distance_mm": 26.038
},
{
"from": "U7:9",
"to": "R110:1",
"from_net": "SENSE_B",
"to_net": "SENSE_B",
"pad_center_distance_mm": 30.901
}
],
"total_track_length_by_net_not_point_to_point": {
"BOOT_A2": {
"length_mm": 8.309,
"segments": 10,
"vias": 3,
"layers": [
"F.Cu",
"In1.Cu",
"In2.Cu"
]
},
"GL_A2": {
"length_mm": 11.962,
"segments": 13,
"vias": 2,
"layers": [
"F.Cu",
"In1.Cu"
]
},
"SENSE_A": {
"length_mm": 65.602,
"segments": 61,
"vias": 15,
"layers": [
"B.Cu",
"F.Cu",
"In1.Cu"
]
},
"SENSE_B": {
"length_mm": 61.326,
"segments": 89,
"vias": 6,
"layers": [
"B.Cu",
"F.Cu",
"In1.Cu"
]
},
"BOOT_B2": {
"length_mm": 15.451,
"segments": 12,
"vias": 4,
"layers": [
"F.Cu",
"In1.Cu",
"In2.Cu"
]
},
"BOOT_B1": {
"length_mm": 15.114,
"segments": 11,
"vias": 3,
"layers": [
"F.Cu",
"In1.Cu",
"In2.Cu"
]
},
"BOOT_A1": {
"length_mm": 14.857,
"segments": 10,
"vias": 2,
"layers": [
"F.Cu",
"In2.Cu"
]
}
}
},
"findings": [
{
"priority": 1,
"topic": "Motor-stage placement and routing",
"evidence": "Bootstrap positive nets total 8.309–15.451 mm of planar track and 2–4 vias each. U7 sense-input to shunt pad straight distances are 26.038 and 30.901 mm. Gate resistor R43 output is 7.552 mm straight from Q9 gate.",
"assessment": "These are layout-review concerns, not measured failures or manufacturer-specified distance-limit violations.",
"next_action": "Compact the driver/bridges/shunts; shorten bootstrap and gate loops; verify dedicated Kelvin sense branches on both sides of each shunt. Netlist connectivity alone does not establish Kelvin routing.",
"manufacturer_source": "https://www.analog.com/media/en/technical-documentation/data-sheets/tmc5160a_datasheet_rev1.18.pdf"
},
{
"priority": 2,
"topic": "Power-stage temperature monitoring",
"reference": "Both reference designs include TMP102 board-temperature sensing.",
"current": "No separate PCB temperature sensor is present in the fitted IC list; TMC on-chip temperature does not directly measure external MOSFET temperatures.",
"next_action": "Evaluate temperature sensing near the external power stage plus a validated thermal derating/shutdown policy."
},
{
"priority": 3,
"topic": "Independent logic USB power",
"reference": "Both references power the logic independently from DATA USB.",
"current": "J10 is a self-powered USB device; its VBUS feeds only attach sensing and protection, requiring J1 for startup logic.",
"assessment": "Valid self-powered architecture, but a user-experience difference from the references.",
"next_action": "If matching their single-cable setup behavior, add a protected logic-only DATA supply path with reverse-current isolation and verify all power sequences."
},
{
"priority": 4,
"topic": "Phase-current telemetry",
"reference": "Both references include two INA240 amplifiers for bidirectional winding-current ADC measurements.",
"current": "MCU IIN_MON measures bus input current. R109/R110 serve TMC current regulation; there are no separate phase-current ADC amplifiers.",
"assessment": "A diagnostics feature difference, not proof that current regulation is absent.",
"next_action": "Decide whether measured per-phase current is required; if added, size shunts/amplifiers and ADC filters for this motor and validate PWM rejection."
},
{
"priority": 5,
"topic": "Integrated driver alternative",
"reference": "RP2040 reference uses DRV8825 around 20 V and 1 A peak; NEMA23 uses DRV8452DDWR around 28 V and 2.804 A RMS.",
"current": "TMC5160A external MOSFET architecture targets 48 V / 5.5 A RMS. User previously chose to retain it.",
"assessment": "The reference drivers do not directly meet this target. External MOSFETs are required by TMC5160A, but not the only possible architecture.",
"candidate": "TI DRV8462 in DDV package is rated 65 V operating and 7 A RMS; DDW is only 3.5 A RMS. DDV needs a new footprint/pinout, thermal design/heatsink, firmware and sourcing review; it is not a validated drop-in replacement.",
"manufacturer_source": "https://www.ti.com/product/DRV8462"
},
{
"priority": 6,
"topic": "Mechanical and retained interfaces",
"current": "All fitted components are top-side, including central AS5047P; industrial interfaces remain on consolidated J7.",
"next_action": "Verify magnet location/gap, shaft access, mounting and heatsink clearance on exact NEMA34 hardware. Preserve user-required industrial interfaces; do not copy reference connector/copper/motor ratings."
}
]
}