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/filled-copper-review.json

{
  "status": "analytical-screen-only-hardware-qualification-pending",
  "baseline_commit": "d28bcf61d0d0479ad3a44b3ad14bfbf5b858c435",
  "board": "dist/manufacturing/kicad-project/pd1180-epr-r0.3.kicad_pcb",
  "board_sha256": "4e53cf5210003b327a1b4cd49f3c5c81ff3a0f5f44277b71c384c29bc95a5cb3",
  "change": "Reran all six motor-current paths at both mesh sizes on the encoder top-capacitor revision. No powered or thermal qualification implied.",
  "before": [
    {
      "net": "MOTOR_A1",
      "from": "Q7:9",
      "to": "R115:1",
      "grid_mm": 0.075,
      "nodes": 24480,
      "resistance_mohm_20c": 20.9415,
      "voltage_drop_mv_at_5_5a": 115.178,
      "loss_w_at_5_5a": 0.6335,
      "source_nodes": 2928,
      "destination_nodes": 368,
      "components": 1,
      "board_sha256": "ed81f2ec88d66d8bcc982ccb56d393fb08e92f256c9a55982854857234df7dad",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    },
    {
      "net": "MOTOR_A1",
      "from": "Q7:9",
      "to": "R115:1",
      "grid_mm": 0.05,
      "nodes": 55196,
      "resistance_mohm_20c": 21.2778,
      "voltage_drop_mv_at_5_5a": 117.028,
      "loss_w_at_5_5a": 0.6437,
      "source_nodes": 6552,
      "destination_nodes": 840,
      "components": 1,
      "board_sha256": "ed81f2ec88d66d8bcc982ccb56d393fb08e92f256c9a55982854857234df7dad",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    }
  ],
  "after": [
    {
      "net": "MOTOR_A1",
      "from": "Q7:9",
      "to": "R115:1",
      "grid_mm": 0.075,
      "nodes": 47680,
      "resistance_mohm_20c": 2.8393,
      "voltage_drop_mv_at_5_5a": 15.616,
      "loss_w_at_5_5a": 0.0859,
      "source_nodes": 2928,
      "destination_nodes": 368,
      "components": 1,
      "board_sha256": "4e53cf5210003b327a1b4cd49f3c5c81ff3a0f5f44277b71c384c29bc95a5cb3",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    },
    {
      "net": "MOTOR_A1",
      "from": "Q7:9",
      "to": "R115:1",
      "grid_mm": 0.05,
      "nodes": 107249,
      "resistance_mohm_20c": 2.8313,
      "voltage_drop_mv_at_5_5a": 15.572,
      "loss_w_at_5_5a": 0.0856,
      "source_nodes": 6552,
      "destination_nodes": 840,
      "components": 1,
      "board_sha256": "4e53cf5210003b327a1b4cd49f3c5c81ff3a0f5f44277b71c384c29bc95a5cb3",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    }
  ],
  "final_mesh_difference_percent": 0.2825557164553388,
  "analytical_model_tests": {
    "rectangular_sheet_expected_mohm": 4.860038095238096,
    "coarse_mohm": 5.0446,
    "fine_mohm": 4.9873,
    "barrel_expected_mohm": 1.371915609452138,
    "barrel_mohm": 1.3719,
    "passed": true
  },
  "model_source_sha256": {
    "scripts/export-filled-power-copper.py": "293474ca65798cf99077d80e26a465e90792d0f5127b459e1aaeb5a2c474c76b",
    "scripts/screen-filled-power-copper.py": "3f6adf115d9f99cdaada7050a539459491608d11b3c011e6ebba54791c8a750b",
    "scripts/test-filled-power-copper.py": "2be758ad54dabc7013fef0f844a65a991c01af8df011103a5231dc8e282212ef"
  },
  "reproduction": {
    "dependencies": "numpy==2.0.2 scipy==1.13.1 shapely==2.0.7",
    "export": "KiCad Python: scripts/export-filled-power-copper.py <board.kicad_pcb> <filled-copper.json>",
    "solve": "python scripts/screen-filled-power-copper.py <filled-copper.json> MOTOR_A1 0.05 Q7:9 R115:1",
    "model_tests": "python scripts/test-filled-power-copper.py",
    "baseline_board": "git show d28bcf61d0d0479ad3a44b3ad14bfbf5b858c435:dist/manufacturing/kicad-project/pd1180-epr-r0.3.kicad_pcb"
  },
  "qualification": "No temperature-rise, PWM-current or 5.5 A continuous-current qualification is claimed.",
  "reviewed_at": "2026-10-15T22:43:28.191169+00:00",
  "motor_output_paths": [
    {
      "net": "MOTOR_A1_OUT",
      "from": "R115:2",
      "to": "J2:1",
      "grid_mm": 0.075,
      "nodes": 16853,
      "resistance_mohm_20c": 4.8955,
      "voltage_drop_mv_at_5_5a": 26.925,
      "loss_w_at_5_5a": 0.1481,
      "source_nodes": 368,
      "destination_nodes": 4488,
      "components": 1,
      "board_sha256": "4e53cf5210003b327a1b4cd49f3c5c81ff3a0f5f44277b71c384c29bc95a5cb3",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    },
    {
      "net": "MOTOR_A1_OUT",
      "from": "R115:2",
      "to": "J2:1",
      "grid_mm": 0.05,
      "nodes": 37703,
      "resistance_mohm_20c": 4.9184,
      "voltage_drop_mv_at_5_5a": 27.051,
      "loss_w_at_5_5a": 0.1488,
      "source_nodes": 840,
      "destination_nodes": 9800,
      "components": 1,
      "board_sha256": "4e53cf5210003b327a1b4cd49f3c5c81ff3a0f5f44277b71c384c29bc95a5cb3",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    },
    {
      "net": "MOTOR_A2",
      "from": "Q9:9",
      "to": "J2:2",
      "grid_mm": 0.075,
      "nodes": 35706,
      "resistance_mohm_20c": 10.8228,
      "voltage_drop_mv_at_5_5a": 59.526,
      "loss_w_at_5_5a": 0.3274,
      "source_nodes": 2928,
      "destination_nodes": 3476,
      "components": 1,
      "board_sha256": "4e53cf5210003b327a1b4cd49f3c5c81ff3a0f5f44277b71c384c29bc95a5cb3",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    },
    {
      "net": "MOTOR_A2",
      "from": "Q9:9",
      "to": "J2:2",
      "grid_mm": 0.05,
      "nodes": 80212,
      "resistance_mohm_20c": 10.7007,
      "voltage_drop_mv_at_5_5a": 58.854,
      "loss_w_at_5_5a": 0.3237,
      "source_nodes": 6552,
      "destination_nodes": 7816,
      "components": 1,
      "board_sha256": "4e53cf5210003b327a1b4cd49f3c5c81ff3a0f5f44277b71c384c29bc95a5cb3",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    },
    {
      "net": "MOTOR_B1_OUT",
      "from": "R116:2",
      "to": "J2:3",
      "grid_mm": 0.075,
      "nodes": 14438,
      "resistance_mohm_20c": 6.4583,
      "voltage_drop_mv_at_5_5a": 35.521,
      "loss_w_at_5_5a": 0.1954,
      "source_nodes": 368,
      "destination_nodes": 3464,
      "components": 1,
      "board_sha256": "4e53cf5210003b327a1b4cd49f3c5c81ff3a0f5f44277b71c384c29bc95a5cb3",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    },
    {
      "net": "MOTOR_B1_OUT",
      "from": "R116:2",
      "to": "J2:3",
      "grid_mm": 0.05,
      "nodes": 32546,
      "resistance_mohm_20c": 6.4229,
      "voltage_drop_mv_at_5_5a": 35.326,
      "loss_w_at_5_5a": 0.1943,
      "source_nodes": 840,
      "destination_nodes": 7808,
      "components": 1,
      "board_sha256": "4e53cf5210003b327a1b4cd49f3c5c81ff3a0f5f44277b71c384c29bc95a5cb3",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    },
    {
      "net": "MOTOR_B2",
      "from": "Q13:9",
      "to": "J2:4",
      "grid_mm": 0.075,
      "nodes": 34271,
      "resistance_mohm_20c": 7.1754,
      "voltage_drop_mv_at_5_5a": 39.465,
      "loss_w_at_5_5a": 0.2171,
      "source_nodes": 2928,
      "destination_nodes": 3468,
      "components": 1,
      "board_sha256": "4e53cf5210003b327a1b4cd49f3c5c81ff3a0f5f44277b71c384c29bc95a5cb3",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    },
    {
      "net": "MOTOR_B2",
      "from": "Q13:9",
      "to": "J2:4",
      "grid_mm": 0.05,
      "nodes": 76976,
      "resistance_mohm_20c": 7.1207,
      "voltage_drop_mv_at_5_5a": 39.164,
      "loss_w_at_5_5a": 0.2154,
      "source_nodes": 6552,
      "destination_nodes": 7816,
      "components": 1,
      "board_sha256": "4e53cf5210003b327a1b4cd49f3c5c81ff3a0f5f44277b71c384c29bc95a5cb3",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    }
  ],
  "reviewed_from_commit": "71c2efc3350f365382dd32ec3a0e6ecfd0fd9e17",
  "reviewed_source_entry_sha256": "51fae7ba95264851e1ccc3f17c060cd151ebb6e01e5452a80e31cf61ec6a67b7",
  "mounting_eco_baseline": {
    "net": "MOTOR_A1",
    "from": "Q7:9",
    "to": "R115:1",
    "grid_mm": 0.05,
    "nodes": 96815,
    "resistance_mohm_20c": 3.2946,
    "voltage_drop_mv_at_5_5a": 18.12,
    "loss_w_at_5_5a": 0.0997,
    "source_nodes": 6552,
    "destination_nodes": 840,
    "components": 1,
    "board_sha256": "0c1dbe10d257462dc62c383588286ed5d06c9d1228f8f9cae0ef2c6974ffc430",
    "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
    "limitations": [
      "Grid approximation; validate mesh convergence and native connectivity separately",
      "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
      "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
      "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
    ]
  },
  "b1_drain_to_shunt": [
    {
      "net": "MOTOR_B1",
      "from": "Q11:9",
      "to": "R116:1",
      "grid_mm": 0.075,
      "nodes": 27382,
      "resistance_mohm_20c": 6.5046,
      "voltage_drop_mv_at_5_5a": 35.775,
      "loss_w_at_5_5a": 0.1968,
      "source_nodes": 2928,
      "destination_nodes": 368,
      "components": 1,
      "board_sha256": "4e53cf5210003b327a1b4cd49f3c5c81ff3a0f5f44277b71c384c29bc95a5cb3",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    },
    {
      "net": "MOTOR_B1",
      "from": "Q11:9",
      "to": "R116:1",
      "grid_mm": 0.05,
      "nodes": 61480,
      "resistance_mohm_20c": 6.4825,
      "voltage_drop_mv_at_5_5a": 35.654,
      "loss_w_at_5_5a": 0.1961,
      "source_nodes": 6552,
      "destination_nodes": 840,
      "components": 1,
      "board_sha256": "4e53cf5210003b327a1b4cd49f3c5c81ff3a0f5f44277b71c384c29bc95a5cb3",
      "method": "9-point DC sheet-conductance screening; 35 um copper at 20 C, 20 um via plating, 1.6 mm equally spaced stack",
      "limitations": [
        "Grid approximation; validate mesh convergence and native connectivity separately",
        "Ideal terminal contacts; via contacts approximate, copper thickness and barrel plating are assumptions",
        "Excludes connector/contact, shunt and transistor resistance, AC/PWM/proximity effects and temperature feedback",
        "DC 5.5 A comparison is not a duty-cycle, temperature-rise or current-rating qualification"
      ]
    }
  ],
  "current_export_sha256": "b059d3dd1d28aa3dbef09236ad7fb8c88739d7c45fadea26e2b097caa814ae2c",
  "mesh_convergence_percent": {
    "MOTOR_A1": 0.2825557164553388,
    "MOTOR_B1": 0.3409178557655227,
    "MOTOR_A1_OUT": 0.4655985686402066,
    "MOTOR_A2": 1.1410468474025197,
    "MOTOR_B1_OUT": 0.5511529060081909,
    "MOTOR_B2": 0.7681829033662354
  }
}