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
schematic/FeedbackSection.tsx
import { revisionPlacement } from "../mechanical/revision-placement";
import { Fragment } from "react";
import { HYG_8503A } from "../imports/HYG_8503A";
import { AO3400A } from "../imports/AO3400A";
import { B5819W_SL } from "../imports/B5819W_SL";
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>
<HYG_8503A name="BZ1" layer="top" {...revisionPlacement("BZ1")} schX={5} schY={3} noConnect={["NC1","NC2"]} {...alarm}/>
<AO3400A name="Q_BUZZER" layer="top" schX={5} schY={0} {...alarm} {...revisionPlacement("Q_BUZZER")}/>
<B5819W_SL name="D_BUZZER" layer="top" schX={8} schY={3} schRotation={90} {...alarm} {...revisionPlacement("D_BUZZER")}/>
<resistor name="R_BUZZER_GATE" resistance="100" footprint="0402" supplierPartNumbers={{jlcpcb:["C25076"]}}
layer="top" schX={1} schY={0} {...alarm} {...revisionPlacement("R_BUZZER_GATE")}/>
<resistor name="R_BUZZER_PD" resistance="100k" footprint="0402" supplierPartNumbers={{jlcpcb:["C25741"]}}
layer="top" schX={3} schY={-2} schOrientation="vertical" {...alarm} {...revisionPlacement("R_BUZZER_PD")}/>
<capacitor name="C_BUZZER" capacitance="10uF" footprint="0603" supplierPartNumbers={{jlcpcb:["C19702"]}}
layer="top" 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}/>
</>;
