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>
)