imrishabh18/rp2040-motor-controller
The circuit implements a powered USB interface with a W25Q16 flash memory chip, a RP2040 microcontroller, and AO3400A MOSFETs for switch control, enabling USB communication, memory storage, and device power management.
- Version
- 1.0.19
- License
- unset
- Stars
- 0
schematic/FeedbackSection.tsx
import { Fragment } from "react";
import { AS5600_ASOM } from "../imports/AS5600_ASOM";
import { HYG_8503A } from "../imports/HYG_8503A";
import { AO3400A } from "../imports/AO3400A";
import { B5819W_SL } from "../imports/B5819W_SL";
const section = { schSheetName: "position_alarm", schSectionName: "encoder" } as const;
const alarm = { schSheetName: "position_alarm", schSectionName: "alarm" } as const;
const signal = { thickness: "0.15mm" } as const;
const supply = { thickness: "0.3mm" } as const;
/** The sensor faces the rear-shaft magnet at the centre of the motor-side face. */
export const FeedbackSection = () => <>
<schematicsheet name="position_alarm" displayName="Position Feedback & Audible Alarm" sheetIndex={6}>
<schematicsection name="encoder" displayName="Shaft Position" />
<schematicsection name="alarm" displayName="Temperature Alarm" />
<schematicsection name="feedback_supply" displayName="3.3 V Bypass" />
</schematicsheet>
<AS5600_ASOM name="U_ENCODER" doNotPlace layer="bottom" pcbX={0} pcbY={0}
schWidth={1.77} schHeight={1.6} schX={-5} schY={0.439} noConnect={["OUT", "PGO"]} {...section}
schPinArrangement={{leftSide:{pins:[6,7],direction:"top-to-bottom"},rightSide:{pins:[3,5],direction:"top-to-bottom"},topSide:{pins:[1,2],direction:"left-to-right"},bottomSide:{pins:[4,8],direction:"left-to-right"}}} />
<capacitor name="C_ENCODER" pcbRotation={90} capacitance="100nF" footprint="0402" supplierPartNumbers={{jlcpcb:["C1525"]}}
layer="top" pcbX={1.75} pcbY={-2.75} maxDecouplingTraceLength={4} schX={-3} schY={-5.5} schOrientation="vertical" {...section} schSectionName="feedback_supply"/>
<capacitor name="C_ENCODER_BULK" pcbRotation={0} capacitance="1uF" footprint="0402" supplierPartNumbers={{jlcpcb:["C52923"]}}
layer="top" pcbX={-0.5} pcbY={-2.75} maxDecouplingTraceLength={3} schX={-1} schY={-5.5} schOrientation="vertical" {...section} schSectionName="feedback_supply"/>
<resistor name="R_ENC_SDA" pcbRotation={0} resistance="4.7k" footprint="0402" supplierPartNumbers={{jlcpcb:["C25900"]}}
layer="top" pcbX={3.25} pcbY={1.25} schX={-11} schY={2.2} schOrientation="pos_bottom" {...section}/>
<resistor name="R_ENC_SCL" pcbRotation={90} resistance="4.7k" footprint="0402" supplierPartNumbers={{jlcpcb:["C25900"]}}
layer="top" pcbX={-1.75} pcbY={4.0} schX={-9} schY={2.2} schOrientation="pos_bottom" {...section}/>
<HYG_8503A name="BZ1" pcbRotation={0} layer="top" pcbX={15} pcbY={6} schX={5} schY={3} noConnect={["NC1","NC2"]} {...alarm}/>
<AO3400A name="Q_BUZZER" pcbRotation={0} symbol={undefined} schWidth={1.2} schHeight={0.8} layer="top" pcbX={11.0} pcbY={-4.5} schX={5} schY={0} {...alarm}/>
<B5819W_SL name="D_BUZZER" layer="top" pcbX={-2.15} pcbY={-8.25} pcbRotation={0} schX={8} schY={3} schRotation={90} {...alarm}/>
<resistor name="R_BUZZER_GATE" pcbRotation={90} resistance="100" footprint="0402" supplierPartNumbers={{jlcpcb:["C25076"]}}
layer="top" pcbX={12.25} pcbY={-7.5} schX={1} schY={0} {...alarm}/>
<resistor name="R_BUZZER_PD" pcbRotation={0} resistance="100k" footprint="0402" supplierPartNumbers={{jlcpcb:["C25741"]}}
layer="top" pcbX={11.75} pcbY={-2.0} schX={3} schY={-2} schOrientation="vertical" {...alarm}/>
<capacitor name="C_BUZZER" pcbRotation={0} capacitance="10uF" footprint="0603" supplierPartNumbers={{jlcpcb:["C19702"]}}
layer="top" pcbX={11.3} pcbY={-0.25} maxDecouplingTraceLength={6} schX={1} schY={-5.5} schOrientation="vertical" {...alarm} schSectionName="feedback_supply"/>
<trace name="ENCODER_SDA" from=".MCU > .U1 > .GPIO0" to=".U_ENCODER > .SDA" schDisplayLabel="ENC_SDA" {...signal}/>
<trace name="ENCODER_SCL" from=".MCU > .U1 > .GPIO1" to=".U_ENCODER > .SCL" schDisplayLabel="ENC_SCL" {...signal}/>
<trace name="ENCODER_SUPPLY" from=".MCU > .L_AVDD > .pin1" to=".U_ENCODER > .VDD3V3" schDisplayLabel="V3V3" {...supply}/>
<trace name="ENCODER_3V3_MODE" from=".U_ENCODER > .VDD3V3" to=".U_ENCODER > .VDD5V" {...supply}/>
<trace name="ENCODER_GND" from=".U_ENCODER > .GND" to="net.GND" {...supply}/>
<trace name="ENCODER_DIRECTION" from=".U_ENCODER > .DIR" to="net.GND" {...signal}/>
{["C_ENCODER","C_ENCODER_BULK"].map(name=><Fragment key={name}>
<trace name={`${name}_VCC`} from={`.${name} > .pin1`} to=".U_ENCODER > .VDD3V3" schDisplayLabel="V3V3" {...supply}/>
<trace name={`${name}_GND`} from={`.${name} > .pin2`} to="net.GND" {...supply}/>
</Fragment>)}
{[['R_ENC_SDA','SDA'],['R_ENC_SCL','SCL']].map(([name,pin])=><Fragment key={name}>
<trace name={`${name}_SIGNAL`} from={`.${name} > .pin1`} to={`.U_ENCODER > .${pin}`} schDisplayLabel={`ENC_${pin}`} {...signal}/>
<trace name={`${name}_VCC`} from={`.${name} > .pin2`} to=".U_ENCODER > .VDD3V3" schDisplayLabel="V3V3" {...signal}/>
</Fragment>)}
<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" 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" 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}/>
</>;