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/reviewer-eco.json
{
"status": "cad-verified-order-hold",
"baseline": "4698062",
"user_decisions": {
"separate_usb_ports": true,
"industrial_interfaces": "retain CAN, RS485, RS232 and all I/O",
"external_motor_bridges": "retain TMC5160A and eight CSD19534Q5A MOSFETs",
"industrial_connector_placement": "J7 beside motor connector J2 at the board edge"
},
"changes": [
"J1 is PD POWER only; J10 is USB DATA with independent regulated logic power and VBUS attach sense",
"J10 CC1 and CC2 have independent 5.1k Rd and USBLC6-4SC6 ESD protection",
"U5 boots from PD VBUS before the eFuse; U22 retains VMOTOR brake backup; U23/U24 OR to board V3V3. U28/U25 derive V3V3_USB from DATA VBUS; U26/U27 combine the two logic rails without joining their VBUS inputs.",
"J7 20-pin JST PHD replaces J6/J7/J9 without deleting industrial features",
"TMC5160 SD_MODE pin functions: pin23 DCEN grounded, pin24 DCIN grounded, pin25 DCO NC; encoder SPI and ABI test pads retained",
"R105 and D12 PCB orientations corrected; only local copper rerouted, logical connections preserved",
"J7 moved from the board center to (-2, -39) mm beside J2; SW1 shifted 4 mm left for clearance. Schematic and pinout unchanged; affected copper rerouted and VMOTOR reinforced with 2.4 mm corridors and parallel power vias."
],
"sources": [
"https://www.ti.com/lit/ds/symlink/lmr36510.pdf",
"https://www.ti.com/lit/ds/symlink/tpd4s480.pdf",
"https://www.st.com/resource/en/datasheet/usblc6-4.pdf",
"https://www.jst-mfg.com/product/pdf/eng/ePHD.pdf",
"https://www.analog.com/media/en/technical-documentation/data-sheets/tmc5160a_datasheet_rev1.18.pdf",
"https://www.ti.com/lit/ds/symlink/ina240.pdf",
"https://www.ti.com/lit/gpn/tmp102",
"https://www.ti.com/lit/ds/symlink/ads1115.pdf",
"https://www.ti.com/lit/ds/symlink/tlv755p.pdf",
"https://www.ti.com/lit/ds/symlink/tps2553.pdf",
"https://www.ti.com/lit/ds/symlink/lm66100.pdf"
],
"manufacturing_orderable": false,
"open_gates": [
"TI TPS26750 EPR EEPROM image and programming/negotiation verification",
"USB current/inrush/backfeed/attach-detach measurements",
"Motor bring-up and thermal/regeneration validation"
],
"connector_stock": {
"C471521": "exact indexed stock checked; PA66 glass-filled header, same JST PHD interface",
"C158017": "not selected: exact index query empty"
},
"driver_alternative": "DRV8462DDVR researched but not selected; user requested retaining the present bridges",
"usb_power_assumption": "DATA USB supplies setup/diagnostics independently; motor power remains PD-only. MCU-only rail and suspend firmware implemented; USB power-state compliance needs hardware qualification.",
"connector_relocation": {
"baseline_commit": "3cb470b1edb3a1562233fa85b4c145d706f3ea6c",
"J7_center_mm": [
-2,
-39
],
"J2_center_mm": [
20,
-39
],
"SW1_center_mm": [
-18,
-40
],
"schematic_records_compared": 2901,
"schematic_records_unchanged": true,
"source_matched_pad_geometries": 942,
"native_drc_violations": 0,
"unconnected_items": 0,
"schematic_parity_issues": 0,
"erc_violations": 0
},
"top_side_assembly_change": {
"requested_at": "2026-10-09",
"placed_components": 265,
"fitted_parts": 254,
"bare_service_pads": 11,
"bottom_components": 0,
"schematic_records_unchanged": true,
"routing_validation": "Native DRC: 0 violations, 0 unconnected, 0 schematic parity; ERC: 0 violations",
"encoder_magnet_gap_validation": "pending physical assembly"
},
"baseline_cad_evidence": {
"drc_violations": 0,
"unconnected_items": 0,
"schematic_parity_issues": 0,
"erc_violations": 0,
"thermal_vias_verified": 40,
"live_available_part_types": 68,
"board_file": "dist/manufacturing/kicad-project/pd1180-epr-r0.3.kicad_pcb",
"source_matched_pad_geometries": 942,
"verification_checks_passed": 29,
"topology_and_via_tests": 19,
"test_assertions": 728,
"delivery_required_files": 38,
"delivery_zip_archives": 5,
"mapped_viewer_ports": 934,
"scope": "Historical pre-telemetry route; does not validate the current source"
},
"reference_board_eco": {
"baseline_commit": "49c3ac7836e0595798955490af49c769ca056bc6",
"reference_boards": [
"https://tscircuit.com/imrishabh18/rp2040-motor-controller",
"https://tscircuit.com/imrishabh18/nema-23-stepper-controller"
],
"driver_decision": "Retain TMC5160A per prior explicit user instruction. DRV8462 DDV requires a separate approved power-stage redesign. Exact C29780285 stock was not verified.",
"changes": [
"Compact gate and bootstrap routing; terminal-only Kelvin returns",
"TMP102 ALERT hardware inhibit with firmware validity and thermal derating request",
"ADS1115 bus telemetry frees PA0/PA1 for INA240 per-phase diagnostics",
"Independent DATA USB logic supply with reverse blocking",
"283 fitted components and 11 service pads on top; 42 constrained bypasses",
"Separate V3V3_MCU, board-power sense, open-drain CS, power-qualified I2C/telemetry and USB STOP0 with watchdog wake"
],
"validation": "Completed native route: zero DRC violations, unconnected items, schematic parity issues and ERC violations. All 9 Kelvin/analog branches pass terminal-only isolation; 40 drain thermal vias retain correct nets, and 42 local bypass paths are constrained. Motor outputs remain locked and ordering remains on hold.",
"fabrication_blockers": [
"Qualify USB startup/suspend current, resume timing and rail handovers on hardware.",
"Review clipped power-copper necks and validate target-current thermal performance.",
"Complete TI configuration and staged powered commissioning."
],
"current_sense_paths_mm": {
"A_LOW": 22.775,
"A_HIGH": 12.564,
"B_LOW": 19.2,
"B_HIGH": 22.765,
"PHASE_A_PLUS": 3.099,
"PHASE_A_MINUS": 3.099,
"PHASE_B_PLUS": 3.099,
"PHASE_B_MINUS": 3.099
},
"reference_evidence": "engineering/reference-board-comparison.json",
"routing_evidence": "docs/routing-report.json",
"validation_helper_corrections": [
"Use actual overlap outside the receiving pad for Kelvin joins; regression distinguishes in-pad from premature joins.",
"Use KiCad rotation in downward-positive file coordinates for thermal-pad checks.",
"Measure same-net/layer corridor coverage by geometric length, independent of segment and overlapping zone counts."
]
},
"completion_work": {
"status": "cad-and-software-completed-hardware-qualification-pending",
"firmware": "Integrated and host-tested TMC5160A pipelined SPI, write acknowledgement, disabled startup, mode/fault checks and thermally scaled low-current STEP/DIR service; released ARM image stays locked until hardware/configuration qualification.",
"ci": "Canonicalized only derived trace_length at 1e-12 mm to prevent cross-platform floating-point evidence mismatch. Review validates CAD with the order hold visible; ordering remains separately blocked.",
"motor_phase_copper": "Parallel bottom corridor from Q7 drain stitching to R115 input, four new 0.60/0.30 mm transfer vias and 2.4 mm top landing. No Kelvin branch shortcut.",
"pd_configuration": "Official TI tool v2.0.1 reached; export pending explicit user approval of its application license. No TI binary invented.",
"physical_evidence": "Assembled-board availability, actual load/RPM/stop time and brake/heatsink data requested, not yet supplied.",
"usb_routing": "R71 grouped with R72 on top; USB trunks rerouted on B.Cu over a stitched local In2 GND region. Five low-speed signals moved out of the reference layer. Native DRC/parity zero; all four USB reference checks pass, and the previous routing fails the same checker.",
"schematic_records_unchanged": 3189,
"pad_comparison": {
"pad_geometries_checked": 1042,
"unchanged_except_R71_translation_mm": [
-15,
1.5
],
"all_other_pad_geometry_layer_net_unchanged": true,
"board_sha256": "61bad79e8f07e963e17933d183a309a91dc449ff143098563ce739ee1f07138d"
},
"motor_phase_copper_evidence": "engineering/filled-copper-review.json",
"usb_reference_evidence": "docs/usb-reference-check.json",
"release_3d": "Release export regenerates GLB from the exact final routed circuit, deletes previous output first and requires a valid complete GLB before packaging.",
"via_drill_correction": {
"baseline_commit": "d02df91171e6f44e42e1531dce0d28b64a0d0e21",
"board_sha256": "ca3715aa25884e35cc3925a0c5e498852de8ee2de2fae081cf484d3a2d74c6bf",
"pads_compared": 1042,
"all_pad_positions_geometry_and_nets_unchanged": true,
"via_count": 561,
"minimum_finished_via_drill_mm": 0.3,
"via_pad_drill_counts": {
"0.50/0.30": 416,
"0.60/0.30": 145
},
"changes": "416 dense-signal vias at 0.50/0.30 mm and 145 power/general vias at 0.60/0.30 mm. Local trace adjustments preserve all footprint/pad geometry and all nine original sense branches. Removed two disconnected pour fragments, merged adjoining SENSE_B pours at a copper sliver, and added one digital-ground via."
}
},
"superseded_by": "engineering/onboard-control-eco.json",
"historical_note": "Historical architecture record. Current user scope removes J7/external command paths and unsupported mounting fixture; do not use this file as the current connection inventory."
}