astra/nema17-stepper-motor-controller-spring-clamp-rp2040

A 4-layer RP2040 controller board that negotiates USB‑C PD motor power and drives a NEMA17 stepper via a DRV8825, with current sensing, thermal shutdown, RGB status LED, buzzer alarm, optional AS5600 encoder, protection/filtering, and test points.

Version
1.4.0
License
unset
Stars
0

schematic/MotorPowerFilteringSection.tsx

import { PMEG6020ELRX } from "../imports/PMEG6020ELRX";
import { revisionPlacement } from "../mechanical/revision-placement";
import { TCJD226M050R0090E } from "../imports/TCJD226M050R0090E";
import {
  groundTrace,
  powerTrace,
  schematicSections,
  schematicSheets,
} from "./config";

export const MotorPowerFilteringComponents = () => (
  <>
    <PMEG6020ELRX name="D_MOTOR_BLOCK" schX={0} schY={-7.5}
      schSheetName={schematicSheets.motorPower} schSectionName={schematicSections.pdFiltering} {...revisionPlacement("D_MOTOR_BLOCK", {x:-5.625,y:-8.25})} />
    <fuse
      name="F_MOTOR_VBUS" schRotation={90.0} pcbRotation={90}
      currentRating="2A"
      voltageRating="30V"
      footprint="1812"
      supplierPartNumbers={{ jlcpcb: ["C960026"] }}
      manufacturerPartNumber="BSMD1812-200-30V"
      pcbX={5.025}
      pcbY={11.95}
      schX={-3}
      schY={-7.5}
      schSheetName={schematicSheets.motorPower}
      schSectionName={schematicSections.pdFiltering}
    />
    <capacitor
      name="C_PD_VBUS"
      capacitance="10uF"
      maxVoltageRating="50V"
      footprint="1206"
      supplierPartNumbers={{ jlcpcb: ["C13585"] }}
      manufacturerPartNumber="CL31A106KBHNNNE"
      // Input-side reservoir; C_VMA/C_VM_HF are the local IC bypasses.
      maxDecouplingTraceLength={22}
      schX={3}
      schY={-7.5}
      schOrientation="vertical"
      schSheetName={schematicSheets.motorPower}
      schSectionName={schematicSections.pdFiltering} {...revisionPlacement("C_PD_VBUS", {x:-5.625,y:-8.25})}
    />
    <TCJD226M050R0090E
      name="C_MOTOR_BULK"
      layer="top"
      pcbX={-12.375}
      pcbY={6.75}
      pcbRotation={90}
      schX={6}
      schY={-7.5}
      schOrientation="vertical"
      schSheetName={schematicSheets.motorPower}
      schSectionName={schematicSections.pdFiltering}
    />
    <diode
      name="D_MOTOR_TVS" pcbRotation={0}
      footprint="smb"
      // 22 V stand-off, 35.5 V rated pulse clamp: below DRV8825's 45 V
      // operating limit and the motor rail capacitors' 50 V rating.
      supplierPartNumbers={{ jlcpcb: ["C1975329"] }}
      manufacturerPartNumber="SMBJ22CAQ-13-F"
      pcbX={-2.875}
      pcbY={15.75}
      schX={9}
      schY={-7.5}
      schOrientation="vertical"
      schSheetName={schematicSheets.motorPower}
      schSectionName={schematicSections.pdFiltering}
    />
  </>
);

export const MotorPowerFilteringSupplyTrace = () => (
  <>
    <trace name="MOTOR_REVERSE_BLOCK" from=".F_MOTOR_VBUS > .pin2" to=".D_MOTOR_BLOCK > .anode" {...powerTrace} />
    <trace
      name="MOTOR_VBUS_FUSE_INPUT"
      from=".J_MOTOR_USB > .A4B9"
      to=".F_MOTOR_VBUS > .pin1"
      {...powerTrace}
    />
    <trace
      name="MOTOR_VBUS_CAP"
      from=".D_MOTOR_BLOCK > .cathode"
      to=".C_PD_VBUS > .pin1"
      schDisplayLabel="VMOTOR_PROTECTED"
      {...powerTrace}
    />
    <trace
      name="MOTOR_VBUS_BULK"
      from=".D_MOTOR_BLOCK > .cathode"
      to=".C_MOTOR_BULK > .pin1"
      {...powerTrace}
    />
    <trace
      name="MOTOR_VBUS_TVS"
      from=".D_MOTOR_BLOCK > .cathode"
      to=".D_MOTOR_TVS > .cathode"
      {...powerTrace}
    />
  </>
);

export const MotorPowerFilteringGroundTrace = () => (
  <>
    <trace
      name="PD_VBUS_CAP_GND"
      from=".C_PD_VBUS > .pin2"
      to="net.GND"
      {...groundTrace}
    />
    <trace
      name="MOTOR_BULK_GND"
      from=".C_MOTOR_BULK > .pin2"
      to="net.GND"
      {...groundTrace}
    />
    <trace
      name="MOTOR_TVS_GND"
      from=".D_MOTOR_TVS > .anode"
      to="net.GND"
      {...groundTrace}
    />
  </>
);