imrishabh18/rp2040-motor-controller

An RP2040-based NEMA17 stepper-motor controller with USB-C programming and PD motor-power negotiation, DRV8825 dual H-bridge drive, current/temperature telemetry, protected power filtering, status RGB LED, buzzer alarm, and optional magnetic encoder.

Version
1.0.41
License
unset
Stars
3

reports/validate-final.log

$ bun scripts/validate-build.ts
{
  "generatedAt": "2026-10-01T18:25:45.728Z",
  "input": "dist/index/circuit.json",
  "sha256": "e5202595aa4c10929f651206a45ae468966620d6bd001efa8dc505b09c02bee0",
  "versions": {
    "tscircuit": "0.0.2702",
    "@tscircuit/core": "0.0.2032",
    "@tscircuit/cli": "0.1.2212",
    "@tscircuit/common": "0.0.48",
    "@tscircuit/capacity-autorouter": "0.0.899",
    "@tscircuit/checks": "0.0.232",
    "circuit-json": "0.0.491",
    "circuit-to-svg": "0.0.423"
  },
  "commonGround": {
    "groundNetDeclarations": 1,
    "checkedGroundPorts": 40,
    "checkedCurrentSenseChannels": 2,
    "checkedMotorOutputs": 4
  },
  "temperatureTelemetry": {
    "i2cAddress": "0x48",
    "sdaGpio": 26,
    "sclGpio": 27,
    "alertGpio": null,
    "unusedGpio": 24,
    "alertPolicy": "RP2040 software using I2C temperature",
    "enableGpio": 22,
    "sensorDistanceMm": 5.699999999999999,
    "checkedElectricalGroups": 11,
    "hardwareInterlock": "PD-gated MCU enable",
    "autonomousBoardTemperatureShutdown": false,
    "status": "pass"
  },
  "pdVoltageControl": {
    "status": "pass",
    "gpios": [
      4,
      5,
      6
    ],
    "cfgPhysicalPins": [
      9,
      2,
      3
    ],
    "inverted": true,
    "startupRequestV": 5
  },
  "outerMotorPower": {
    "status": "pass",
    "motorNets": 11,
    "checkedTraceCount": 30,
    "checkedTraceIds": [
      "pcb_trace_9",
      "pcb_trace_10",
      "pcb_trace_11",
      "pcb_trace_12",
      "source_trace_253_retained_24",
      "source_trace_239_retained_28",
      "source_trace_197_retained_41",
      "source_trace_196_retained_42",
      "source_trace_195_retained_43",
      "source_trace_194_retained_44",
      "source_trace_193_retained_45",
      "source_trace_192_retained_46",
      "source_trace_155_retained_57",
      "source_trace_153__source_trace_156__source_trace_160__source_trace_161__source_trace_280_retained_58",
      "source_trace_153_retained_59",
      "source_trace_153__source_trace_156__source_trace_160__source_trace_161__source_trace_280_retained_60",
      "source_trace_153__source_trace_156__source_trace_160__source_trace_161__source_trace_280_retained_61",
      "source_trace_153__source_trace_156__source_trace_160__source_trace_161__source_trace_280_retained_62",
      "source_trace_120__source_trace_122__source_trace_123__source_trace_124__source_trace_154__source_trace_157__source_trace_158__source_trace_159__source_trace_171__source_trace_172__source_trace_281_retained_79",
      "source_trace_172_retained_80",
      "source_trace_124_retained_81",
      "source_trace_159_retained_82",
      "source_trace_123_retained_83",
      "source_trace_120__source_trace_122__source_trace_123__source_trace_124__source_trace_154__source_trace_157__source_trace_158__source_trace_159__source_trace_171__source_trace_172__source_trace_281_retained_84",
      "source_trace_120__source_trace_122__source_trace_123__source_trace_124__source_trace_154__source_trace_157__source_trace_158__source_trace_159__source_trace_171__source_trace_172__source_trace_281_retained_85",
      "source_trace_120__source_trace_122__source_trace_123__source_trace_124__source_trace_154__source_trace_157__source_trace_158__source_trace_159__source_trace_171__source_trace_172__source_trace_281_retained_86",
      "source_trace_120__source_trace_122__source_trace_123__source_trace_124__source_trace_154__source_trace_157__source_trace_158__source_trace_159__source_trace_171__source_trace_172__source_trace_281_retained_87",
      "source_trace_158_retained_88",
      "source_trace_120__source_trace_122__source_trace_123__source_trace_124__source_trace_154__source_trace_157__source_trace_158__source_trace_159__source_trace_171__source_trace_172__source_trace_281_retained_89",
      "decouple_MOTOR_VBUS_CAP"
    ],
    "wireLengthMmByLayer": {
      "top": 172.69625123976542,
      "bottom": 237.5658338743287
    },
    "allowedWireLayers": [
      "top",
      "bottom"
    ],
    "throughViasAllowed": true
  },
  "jlcClearances": {
    "padToPad": [],
    "padToTrace": [],
    "traceToTrace": [],
    "viaToPad": [],
    "viaToTrace": [],
    "motorPowerToPad": []
  },
  "embeddedErrors": [],
  "routingErrors": [],
  "warnings": {
    "source_refdes_convention_warning": 8,
    "pcb_trace_warning": 81,
    "source_component_pins_underspecified_warning": 10,
    "source_no_power_pin_defined_warning": 15,
    "source_no_ground_pin_defined_warning": 8,
    "schematic_component_styling_warning": 9,
    "source_part_not_found_warning": 1,
    "supplier_footprint_mismatch_warning": 58
  }
}