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.42
- License
- unset
- Stars
- 3
imports/DRV8825PWPR.tsx
import { Children, cloneElement, isValidElement } from "react";
import { DRV8825PWPR as JlcDriver } from "./jlc/DRV8825PWPR";
import type { ChipProps } from "@tscircuit/props"
const pinLabels = {
pin1: ["CP1"],
pin2: ["CP2"],
pin3: ["VCP"],
pin4: ["VMA", "VM"],
pin5: ["AOUT1"],
pin6: ["ISENA", "AISEN"],
pin7: ["AOUT2"],
pin8: ["BOUT2"],
pin9: ["ISENB", "BISEN"],
pin10: ["BOUT1"],
pin11: ["VMB"],
pin12: ["AVREF"],
pin13: ["BVREF"],
pin14: ["GND1"],
pin15: ["V3P3OUT"],
pin16: ["nRESET"],
pin17: ["nSLEEP", "nSleep"],
pin18: ["nFAULT", "nFault"],
pin19: ["DECAY"],
pin20: ["DIR"],
pin21: ["nENBL"],
pin22: ["STEP"],
pin23: ["NC"],
pin24: ["MODE0"],
pin25: ["MODE1"],
pin26: ["MODE2"],
pin27: ["nHOME"],
pin28: ["GND2"],
pin29: ["EP"]
} as const
const pinAttributes = {
pin14: {requiresGround: true},
pin23: {doNotConnect: true},
pin28: {requiresGround: true},
pin29: {requiresGround: true}
} as const
const footprinterPinLabels = {
...pinLabels,
"pin29": [...pinLabels["pin29"], "thermalpad"],
} as const
export const DRV8825PWPR = (props: ChipProps<typeof pinLabels>) => {
const importedFootprint = JlcDriver({name: props.name}).props.footprint;
let viaIndex = 0;
// Keep the supplier geometry unchanged; explicitly bind its embedded vias
// to EP because this core version misses some rotated pad-containment joins.
const footprint = cloneElement(importedFootprint, {}, Children.map(importedFootprint.props.children, child => {
if (!isValidElement(child) || child.type !== "via") return child;
return cloneElement(child as any, {name: `DRV_IMPORTED_EP_${++viaIndex}`, connectsTo: "pin29", tented: "both_sides"});
}));
return (
<chip
pinLabels={footprinterPinLabels}
pinAttributes={pinAttributes}
supplierPartNumbers={{
"jlcpcb": [
"C81582"
]
}}
manufacturerPartNumber="DRV8825PWPR"
footprint={footprint}
cadModel={{
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C81582.obj?uuid=8cb208170c6a49d2a22c82795805910d",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C81582.step?uuid=8cb208170c6a49d2a22c82795805910d",
pcbRotationOffset: 0,
modelOriginPosition: { x: -0.000012699999842880061, y: 0, z: -0.65 },
}}
{...props}
/>
)
}