seveibar/pd-dual-stepper-controller

Bottom-side PCB silkscreen artwork consisting of embedded mirrored TS Circuit SVG logos, with via-clearance-aware lower-board placement.

Version
0.1.0
License
unset
Stars
0

schematic/Drv8825Support2.tsx

import { motor2Placement } from "../mechanical/motor2-placement";
import { Fragment } from "react";
import { schematicSheets, schematicSections } from "./config";

const sch = { schSheetName: "motor_2", schSectionName: "motor_2_core" };


/** TI DRV8825, sections 6/8/10: charge pump, local supplies and 1 A reference.
 * V3P3OUT is an isolated driver reference supply, NOT the RP2040 3.3 V rail.
 * 3.3 * 2k/(2.4k+2k) = 1.5 V; I_FS = 1.5/(5*0.3) = 1 A.
 * Divider + MODE2 + both reference inputs remain below V3P3OUT's 1 mA limit.
 */
export const Drv8825Support2 = () => <>
  <capacitor name="C_CP_M2" schRotation={180} capacitance="10nF" maxVoltageRating="50V" footprint="0402"
    supplierPartNumbers={{jlcpcb:["C15195"]}} {...sch} {...motor2Placement("C_CP_M2", {x:-5.625,y:-8.25})} />
  <capacitor name="C_VCP_M2" schOrientation="vertical" capacitance="100nF" maxVoltageRating="50V" footprint="0402"
    supplierPartNumbers={{jlcpcb:["C960916"]}} {...sch} {...motor2Placement("C_VCP_M2", {x:-5.625,y:-8.25})} />
  <resistor name="R_VCP_M2" resistance="1M" footprint="0402" supplierPartNumbers={{jlcpcb:["C26083"]}} {...sch} {...motor2Placement("R_VCP_M2", {x:-5.625,y:-8.25})} />
  <capacitor name="C_VMA_M2" maxDecouplingTraceLength={4} capacitance="100nF" maxVoltageRating="50V" footprint="0402"
    supplierPartNumbers={{jlcpcb:["C960916"]}} {...sch} schOrientation="vertical" {...motor2Placement("C_VMA_M2", {x:-5.625,y:-8.25})} />
  <capacitor name="C_DRV_3V3_M2" maxDecouplingTraceLength={4.5} capacitance="470nF" maxVoltageRating="16V" footprint="0402"
    supplierPartNumbers={{jlcpcb:["C480644"]}} {...sch} schOrientation="vertical" {...motor2Placement("C_DRV_3V3_M2", {x:-5.625,y:-8.25})} />
  <resistor name="R_DRV_REF_TOP_M2" resistance="2.4k" footprint="0402" supplierPartNumbers={{jlcpcb:["C25882"]}} {...sch} schOrientation="pos_bottom" {...motor2Placement("R_DRV_REF_TOP_M2", {x:-5.625,y:-8.25})} />
  <resistor name="R_DRV_REF_BOTTOM_M2" resistance="2k" footprint="0402" supplierPartNumbers={{jlcpcb:["C4109"]}} {...sch} schOrientation="vertical" {...motor2Placement("R_DRV_REF_BOTTOM_M2", {x:-5.625,y:-8.25})} />
  <capacitor name="C_DRV_REF_M2" capacitance="100nF" maxVoltageRating="16V" footprint="0402"
    supplierPartNumbers={{jlcpcb:["C1525"]}} {...sch} schOrientation="vertical" {...motor2Placement("C_DRV_REF_M2", {x:-5.625,y:-8.25})} />
  <resistor name="R_DRV_ENABLE_PU_M2" resistance="10k" footprint="0402" supplierPartNumbers={{jlcpcb:["C25744"]}} {...sch} schOrientation="vertical" {...motor2Placement("R_DRV_ENABLE_PU_M2", {x:-5.625,y:-8.25})} />
  {([
    ["CP1", ".DRIVER_M2 > .CP1", ".C_CP_M2 > .pin1", "CP1"],
    ["CP2", ".DRIVER_M2 > .CP2", ".C_CP_M2 > .pin2", "CP2"],
    ["VCP", ".DRIVER_M2 > .VCP", ".C_VCP_M2 > .pin1", "VCP"],
    ["VCP_CAP_VM", ".C_VCP_M2 > .pin2", ".DRIVER_M2 > .VMA", "VMOTOR"],
    ["VCP_PULL", ".R_VCP_M2 > .pin1", ".DRIVER_M2 > .VCP", "VCP"],
    ["VCP_PULL_VM", ".R_VCP_M2 > .pin2", ".DRIVER_M2 > .VMA", "VMOTOR"],
    ["VMB", ".DRIVER_M2 > .VMB", ".DRIVER_M2 > .VMA", "VMOTOR", "0.8mm"],
    ["VMA_CAP", ".C_VMA_M2 > .pin1", ".DRIVER_M2 > .VMA", "VMOTOR", "0.4mm"],
    ["VMA_CAP_GND", ".C_VMA_M2 > .pin2", "net.GND", "GND", "0.3mm"],
    ["GND2", ".DRIVER_M2 > .GND2", ".DRIVER_M2 > .EP", "GND", "0.3mm"],
    ["V3P3", ".DRIVER_M2 > .V3P3OUT", ".C_DRV_3V3_M2 > .pin1", "DRV_3V3"],
    ["V3P3_GND", ".C_DRV_3V3_M2 > .pin2", "net.GND", "GND"],
    ["REF_SUPPLY", ".R_DRV_REF_TOP_M2 > .pin1", ".DRIVER_M2 > .V3P3OUT", "DRV_3V3"],
    ["REF_DIVIDER", ".R_DRV_REF_TOP_M2 > .pin2", ".R_DRV_REF_BOTTOM_M2 > .pin1", "DRV_VREF"],
    ["REF_A", ".R_DRV_REF_BOTTOM_M2 > .pin1", ".DRIVER_M2 > .AVREF", "DRV_VREF"],
    ["REF_B", ".DRIVER_M2 > .AVREF", ".DRIVER_M2 > .BVREF", "DRV_VREF"],
    ["REF_CAP", ".C_DRV_REF_M2 > .pin1", ".DRIVER_M2 > .AVREF", "DRV_VREF"],
    ["REF_CAP_GND", ".C_DRV_REF_M2 > .pin2", "net.GND", "GND"],
    ["REF_GND", ".R_DRV_REF_BOTTOM_M2 > .pin2", "net.GND", "GND"],
    ["MODE0", ".DRIVER_M2 > .MODE0", "net.GND", "GND"],
    ["MODE1", ".DRIVER_M2 > .MODE1", "net.GND", "GND"],
    ["MODE2", ".DRIVER_M2 > .MODE2", ".DRIVER_M2 > .V3P3OUT", "DRV_3V3"],
    ["EN_PULLUP", ".DRIVER_M2 > .nENBL", ".R_DRV_ENABLE_PU_M2 > .pin1", "DRIVER_ENABLE_N_M2"],
    ["EN_PULLUP_SUPPLY", ".R_DRV_ENABLE_PU_M2 > .pin2", ".MCU > .L_AVDD > .pin1", "V3V3"],
  ] as const).map(([name,from,to,label,width]) => <Fragment key={name}><trace name={`DRV2_${name}`} from={from} to={to}
    schDisplayLabel={["GND", "VMOTOR", "V3V3"].includes(label) ? label : `M2_${label}`} thickness={width ?? "0.15mm"} /></Fragment>)}
</>;