astra/nema17-stepper-motor-controller-spring-clamp-rp2040
A 4-layer RP2040 controller board that negotiates USB‑C PD motor power and drives a NEMA17 stepper via a DRV8825, with current sensing, thermal shutdown, RGB status LED, buzzer alarm, optional AS5600 encoder, protection/filtering, and test points.
- Version
- 1.4.0
- License
- unset
- Stars
- 0
schematic/FeedbackSection.tsx
import { revisionPlacement } from "../mechanical/revision-placement";
import { Fragment } from "react";
import { KLJ_4020 } from "../imports/KLJ_4020";
import { AO3400A } from "../imports/AO3400A";
import { B5819WS } from "../imports/B5819WS";
const alarm = { schSheetName: "position_alarm", schSectionName: "alarm" } as const;
const signal = { thickness: "0.15mm" } as const;
const supply = { thickness: "0.3mm" } as const;
/** Audible overtemperature alarm. An optional DNP shaft encoder shares this sheet. */
export const FeedbackSection = () => <>
<schematicsheet name="position_alarm" displayName="Optional Encoder & Audible Alarm" sheetIndex={6}>
<schematicsection name="encoder" displayName="Optional Shaft Position (DNP)" />
<schematicsection name="alarm" displayName="Temperature Alarm" />
<schematicsection name="feedback_supply" displayName="3.3 V Bypass" />
</schematicsheet>
<KLJ_4020 name="BZ1" pcbRotation={0} layer="top" pcbX={18} pcbY={-7.8} schX={5} schY={3} {...alarm}/>
<schematictext text="BZ1 KLJ-4020" schX={5.8} schY={3.6} fontSize={0.18} anchor="left" {...alarm}/>
<AO3400A name="Q_BUZZER" layer="bottom" schX={5} schY={0} {...alarm} {...revisionPlacement("Q_BUZZER")}/>
<B5819WS name="D_BUZZER" layer="bottom" schX={8} schY={3} schRotation={90} {...alarm} {...revisionPlacement("D_BUZZER")}/>
<resistor name="R_BUZZER_GATE" resistance="100" footprint="0402" supplierPartNumbers={{jlcpcb:["C25076"]}}
layer="bottom" schX={1} schY={0} {...alarm} {...revisionPlacement("R_BUZZER_GATE")}/>
<resistor name="R_BUZZER_PD" resistance="100k" footprint="0402" supplierPartNumbers={{jlcpcb:["C25741"]}}
layer="bottom" schX={3} schY={-2} schOrientation="vertical" {...alarm} {...revisionPlacement("R_BUZZER_PD")}/>
<capacitor name="C_BUZZER" capacitance="10uF" footprint="0603" supplierPartNumbers={{jlcpcb:["C19702"]}}
layer="bottom" maxDecouplingTraceLength={6} schX={1} schY={-5.5} schOrientation="vertical" {...alarm} schSectionName="feedback_supply" {...revisionPlacement("C_BUZZER")}/>
<trace name="BUZZER_PWM" from=".MCU > .U1 > .GPIO16" to=".R_BUZZER_GATE > .pin1" schDisplayLabel="BUZZER_PWM" {...signal}/>
<trace name="BUZZER_GATE" from=".R_BUZZER_GATE > .pin2" to=".Q_BUZZER > .G" {...signal}/>
<trace name="BUZZER_OFF" from=".Q_BUZZER > .G" to=".R_BUZZER_PD > .pin1" {...signal}/>
<trace name="BUZZER_PD_GND" from=".R_BUZZER_PD > .pin2" to="net.GND" {...signal}/>
<trace name="BUZZER_SOURCE" from=".Q_BUZZER > .S" to="net.GND" {...supply}/>
<trace name="BUZZER_SINK" schDisplayLabel="BUZZER_SINK" from=".Q_BUZZER > .D" to=".BZ1 > ._NEG" {...supply}/>
<trace name="BUZZER_VCC" from=".BZ1 > ._POS" to=".MCU > .L_AVDD > .pin1" schDisplayLabel="V3V3" {...supply}/>
<trace name="BUZZER_FLYBACK_A" schDisplayLabel="BUZZER_SINK" from=".D_BUZZER > .anode" to=".Q_BUZZER > .D" {...supply}/>
<trace name="BUZZER_FLYBACK_K" from=".D_BUZZER > .cathode" to=".BZ1 > ._POS" {...supply}/>
<trace name="BUZZER_DECOUPLE" from=".C_BUZZER > .pin1" to=".BZ1 > ._POS" schDisplayLabel="V3V3" {...supply}/>
<trace name="BUZZER_DECOUPLE_GND" from=".C_BUZZER > .pin2" to="net.GND" {...supply}/>
</>;