mohan-bee/drone
This code defines the physical hardware layout and component placements for a drone's circuit board, including outlines, cutouts, and detailed PCB footprints for various electronic components like microcontrollers, sensors, connectors, and passive devices.
- Version
- 1.0.11
- License
- unset
- Stars
- 0
sections/MotorDriversSection.tsx
import { pcbPlacement } from "../board/PcbPlacement"
import { SM02B_GHS_TB_LF__SN_ } from "../imports/SM02B_GHS_TB_LF__SN_"
import { SI2302DS_T1_GE3_VB } from "../imports/SI2302DS_T1_GE3_VB"
const fp0603 = "0603"
const section = "Motor Drivers"
const motorRefs = {
1: { transistor: "T1", resistor: "R18", diode: "D2", capacitor: "C15", connector: "J2" },
2: { transistor: "T2", resistor: "R19", diode: "D3", capacitor: "C16", connector: "J5" },
3: { transistor: "T3", resistor: "R20", diode: "D4", capacitor: "C17", connector: "J6" },
4: { transistor: "T4", resistor: "R21", diode: "D5", capacitor: "C18", connector: "J4" },
} as const
const Motor = ({ n }: { n: 1 | 2 | 3 | 4 }) => {
const refs = motorRefs[n]
const { transistor, resistor, diode, capacitor, connector } = refs
const battPin = n === 1 || n === 3 ? 2 : 1
const motorPin = battPin === 1 ? 2 : 1
return (
<>
<SI2302DS_T1_GE3_VB
name={transistor}
symbol={undefined}
schSectionName={section}
{...pcbPlacement(transistor)}
/>
<resistor name={resistor} resistance="10k" footprint={fp0603} schSectionName={section} {...pcbPlacement(resistor)} />
<diode
name={diode}
footprint="sod323"
pinLabels={{ pin1: ["cathode", "neg"], pin2: ["anode", "pos"] }}
schOrientation="vertical"
schSectionName={section}
supplierPartNumbers={{ jlcpcb: ["C2128"] }}
{...pcbPlacement(diode)}
/>
<capacitor name={capacitor} capacitance="1uF" footprint={fp0603} schOrientation="vertical" schSectionName={section} {...pcbPlacement(capacitor)} />
<SM02B_GHS_TB_LF__SN_ name={connector} schSectionName={section} symbol={undefined} schWidth="1.2mm" schHeight="0.6mm" {...pcbPlacement(connector)} />
<trace from={`.${transistor} > .G`} to={`net.MOT_${n}`} /><trace from={`.${transistor} > .S`} to="net.GND" /><trace from={`.${transistor} > .D`} to={`net.MOTOR_${n}_NEG`} />
<trace from={`.${resistor} > .pin2`} to={`net.MOT_${n}`} /><trace from={`.${resistor} > .pin1`} to="net.GND" />
<trace
from={`.${diode} > .cathode`}
to={n === 1 ? ".J2 > .pin2" : "net.BATT"}
pcbPathRelativeTo={n === 1 ? `.${diode} > .cathode` : undefined}
pcbPath={n === 1 ? [
{ x: -1.05, y: 0, via: true, fromLayer: "top", toLayer: "bottom" },
{ x: -1.05, y: 0 },
{ x: 6.714022337346712, y: 8.977361517629571 },
{ x: 6.714022337346712, y: 8.977361517629571, via: true, fromLayer: "bottom", toLayer: "top" },
{ x: 6.714022337346712, y: 8.977361517629571 },
] : undefined}
/><trace from={`.${diode} > .anode`} to={`net.MOTOR_${n}_NEG`} />
<trace
from={`.${capacitor} > .pin1`}
to={n === 4 ? ".J4 > .pin1" : "net.BATT"}
pcbPathRelativeTo={n === 4 ? `.${capacitor} > .pin1` : undefined}
pcbPath={n === 4 ? [
{ x: -0.825, y: 0, via: true, fromLayer: "top", toLayer: "bottom" },
{ x: -0.825, y: 0 },
{ x: -1.4284324825032115, y: -5.502713930054838 },
{ x: -1.4284324825032115, y: -5.502713930054838, via: true, fromLayer: "bottom", toLayer: "top" },
{ x: -1.4284324825032115, y: -5.502713930054838 },
] : undefined}
/><trace from={`.${capacitor} > .pin2`} to={`net.MOTOR_${n}_NEG`} />
<trace from={`.${connector} > .pin${battPin}`} to="net.BATT" /><trace from={`.${connector} > .pin${motorPin}`} to={`net.MOTOR_${n}_NEG`} />
</>
)
}
export const MotorDriversSection = () => (
<>
<schematicsection name={section} />
<Motor n={1} /><Motor n={2} /><Motor n={3} /><Motor n={4} />
</>
)
export default () => (
<board routingDisabled schAutoLayoutEnabled schTraceAutoLabelEnabled schMaxTraceDistance="8mm">
<MotorDriversSection />
</board>
)