ShiboSoftwareDev/nema8-20mm-pd-mini-controller
A 20 mm four-layer USB‑C PD 9 V NEMA8 stepper-driver board using CH224K power negotiation/protection and a TMC2209 with current sensing, motor connector, and STEP/DIR/UART control test points.
- Version
- 1.0.2
- License
- unset
- Stars
- 0
dist/index.js
import { jsx, jsxs } from 'react/jsx-runtime';
import { Fragment } from 'react';
const pinLabels$6 = {
pin1: ["pin1"],
pin2: ["pin2"],
pin3: ["pin3"],
pin4: ["pin4"],
pin5: ["pin5"]
};
const BM04B_SRSS_TB_LF__SN_ = (props) => {
return (jsx("chip", { pinLabels: pinLabels$6, supplierPartNumbers: {
"jlcpcb": [
"C160390"
]
}, manufacturerPartNumber: "BM04B-SRSS-TB(LF)(SN)", footprint: jsxs("footprint", { children: [jsx("smtpad", { portHints: ["pin1"], pcbX: "-1.499997mm", pcbY: "-1.3250037mm", width: "0.5999988mm", height: "1.5500096mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin2"], pcbX: "-0.499999mm", pcbY: "-1.3250037mm", width: "0.5999988mm", height: "1.5500096mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin3"], pcbX: "0.499999mm", pcbY: "-1.3250037mm", width: "0.5999988mm", height: "1.5500096mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin4"], pcbX: "1.499997mm", pcbY: "-1.3250037mm", width: "0.5999988mm", height: "1.5500096mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin5"], pcbX: "-2.799969mm", pcbY: "1.2000103mm", width: "1.1999976mm", height: "1.7999964mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin5"], pcbX: "2.799969mm", pcbY: "1.2000103mm", width: "1.1999976mm", height: "1.7999964mm", shape: "rect" }), jsx("silkscreenpath", { route: [{ "x": -1.8987769999999955, "y": 1.900796299999996 }, { "x": 1.9010629999999935, "y": 1.900796299999996 }] }), jsx("silkscreenpath", { route: [{ "x": -3.001137, "y": 0.0008763000000158172 }, { "x": -3.001137, "y": -0.999883699999998 }, { "x": -2.0994369999999947, "y": -0.999883699999998 }] }), jsx("silkscreenpath", { route: [{ "x": -2.500756999999993, "y": -0.999883699999998 }, { "x": -2.500756999999993, "y": 0.0008763000000158172 }, { "x": -2.500756999999993, "y": -0.999883699999998 }] }), jsx("silkscreenpath", { route: [{ "x": -2.500756999999993, "y": -0.40044369999999674 }, { "x": -3.001137, "y": -0.40044369999999674 }, { "x": -2.500756999999993, "y": -0.40044369999999674 }] }), jsx("silkscreenpath", { route: [{ "x": 3.0008830000000017, "y": 0.0008763000000158172 }, { "x": 3.0008830000000017, "y": -0.999883699999998 }, { "x": 2.0991830000000107, "y": -0.999883699999998 }] }), jsx("silkscreenpath", { route: [{ "x": 2.500502999999995, "y": -0.999883699999998 }, { "x": 2.500502999999995, "y": 0.0008763000000158172 }, { "x": 2.500502999999995, "y": -0.999883699999998 }] }), jsx("silkscreenpath", { route: [{ "x": 2.500502999999995, "y": -0.40044369999999674 }, { "x": 3.0008830000000017, "y": -0.40044369999999674 }, { "x": 2.500502999999995, "y": -0.40044369999999674 }] }), jsx("silkscreenpath", { route: [{ "x": -1.8987769999999955, "y": 0.9990962999999908 }, { "x": -1.8987769999999955, "y": 1.4994762999999978 }, { "x": 1.9010629999999935, "y": 1.4994762999999978 }, { "x": 1.9010629999999935, "y": 0.9990962999999908 }] }), jsx("silkscreenpath", { route: [{ "x": -1.8987769999999955, "y": 0.39965630000001795 }, { "x": -1.8987769999999955, "y": -0.25058369999999286 }, { "x": 1.9010629999999935, "y": -0.25058369999999286 }, { "x": 1.9010629999999935, "y": 0.39965630000001795 }] }), jsx("silkscreenpath", { route: [{ "x": -1.4999969999999934, "y": 0.9990962999999908 }, { "x": -1.4999969999999934, "y": 0.8009763000000021 }] }), jsx("silkscreenpath", { route: [{ "x": -0.4992369999999937, "y": 0.9990962999999908 }, { "x": -0.4992369999999937, "y": 0.8009763000000021 }] }), jsx("silkscreenpath", { route: [{ "x": 0.4989830000000097, "y": 0.9990962999999908 }, { "x": 0.4989830000000097, "y": 0.8009763000000021 }] }), jsx("silkscreenpath", { route: [{ "x": 1.4997429999999952, "y": 0.9990962999999908 }, { "x": 1.4997429999999952, "y": 0.8009763000000021 }] }), jsx("silkscreenpath", { route: [{ "x": -2.249982800000012, "y": -1.6499967000000026 }, { "x": -2.342729725363057, "y": -1.4554478696548045 }, { "x": -2.5523478589418005, "y": -1.4053332248097234 }, { "x": -2.7230600507568, "y": -1.536895328466926 }, { "x": -2.7280019964004794, "y": -1.7523641585241592 }, { "x": -2.5635011023114913, "y": -1.8916146357114911 }, { "x": -2.351805763763423, "y": -1.8511631438971818 }, { "x": -2.2502368000000246, "y": -1.661071100000001 }] }), jsx("silkscreentext", { text: "{NAME}", pcbX: "-0.001397mm", pcbY: "3.1039963mm", anchorAlignment: "center", fontSize: "1mm" }), jsx("courtyardoutline", { outline: [{ "x": -3.6549969999999945, "y": 2.3539963000000057 }, { "x": 3.652203, "y": 2.3539963000000057 }, { "x": 3.652203, "y": -2.337003699999997 }, { "x": -3.6549969999999945, "y": -2.337003699999997 }, { "x": -3.6549969999999945, "y": 2.3539963000000057 }] })] }), cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C160390.obj?uuid=9af647057cdd4d60966c8713812af180",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C160390.step?uuid=9af647057cdd4d60966c8713812af180",
pcbRotationOffset: 0,
modelOriginPosition: { x: 1.5, y: -0.4325029999999981, z: -0.01 },
}, ...props }));
};
const pinLabels$5 = {
pin1: ["pin1"],
pin2: ["pin2"]
};
const BSMD1206_110_16V = (props) => {
return (jsx("chip", { pinLabels: pinLabels$5, symbol: jsxs("symbol", { children: [jsx("schematicrect", { schX: 0, schY: 0, width: 0.52, height: 0.12, strokeWidth: 0.02, color: "#880000" }), jsx("port", { name: "pin1", pinNumber: 1, aliases: ["1"], direction: "left", schX: -0.4, schY: 0, schStemLength: 0.2 }), jsx("port", { name: "pin2", pinNumber: 2, aliases: ["2"], direction: "right", schX: 0.4, schY: 0, schStemLength: 0.2 }), jsx("schematicpath", { points: [{ "x": -0.2, "y": 0 }, { "x": 0.2, "y": 0 }], strokeColor: "#8D2323" }), jsx("schematictext", { text: "{NAME}", schX: 0, schY: 0.32, anchor: "center", fontSize: 0.16 })] }), supplierPartNumbers: {
"jlcpcb": [
"C2803346"
]
}, manufacturerPartNumber: "BSMD1206-110-16V", footprint: "smdpads2_p2.89mm_pw1.1901mm_ph1.728mm", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2803346.obj?uuid=7dbd95a5ee9a45949b72cb8147e267ff",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2803346.step?uuid=7dbd95a5ee9a45949b72cb8147e267ff",
pcbRotationOffset: 0,
modelOriginPosition: { x: 0, y: -12699999999199463e-21, z: 0 },
}, ...props }));
};
const pinLabels$4 = {
pin1: ["VDD"],
pin2: ["CFG2"],
pin3: ["CFG3"],
pin4: ["DP"],
pin5: ["DM"],
pin6: ["CC2"],
pin7: ["CC1"],
pin8: ["VBUS"],
pin9: ["CFG1"],
pin10: ["PG"],
pin11: ["GND"],
};
const pinAttributes$1 = {
pin1: { requiresPower: true },
pin11: { requiresGround: true },
};
const footprinterPinLabels$2 = {
...pinLabels$4,
pin11: [...pinLabels$4.pin11, "thermalpad"],
};
const CH224K = (props) => (jsx("chip", { pinLabels: footprinterPinLabels$2, pinAttributes: pinAttributes$1, supplierPartNumbers: { jlcpcb: ["C970725"] }, manufacturerPartNumber: "CH224K", footprint: "dfn10_thermalpad2.1mmx3.3mm_p1mm_w7.5mm_pl1.5mm_pin1location(leftside,bottom)", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C970725.obj?uuid=c37139ac11be40009679f32869d9459d",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C970725.step?uuid=c37139ac11be40009679f32869d9459d",
pcbRotationOffset: 0,
modelOriginPosition: { x: 0.000063500000123895, y: 0, z: -0.81 },
}, ...props }));
const pinLabels$3 = {
pin1: ["cathode", "neg"],
pin2: ["anode", "pos"]
};
const PMEG6020ELRX = (props) => {
const { name = "D1", ...restProps } = props;
return (jsx("diode", { name: name, pinLabels: pinLabels$3, supplierPartNumbers: {
"jlcpcb": [
"C478000"
]
}, manufacturerPartNumber: "PMEG6020ELRX", footprint: "smdpads2_p3.3848mm_pw0.95mm_ph1.15mm", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C478000.obj?uuid=ffe28a36cfa04cde86eca0e275be7a76",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C478000.step?uuid=ffe28a36cfa04cde86eca0e275be7a76",
pcbRotationOffset: 0,
modelOriginPosition: { x: 0, y: 0, z: -0.55 },
}, ...restProps }));
};
const PT1206FR_7W0R33L = (props) => {
const { name = "R1", ...restProps } = props;
return (jsx("resistor", { name: name, resistance: "330mohm", supplierPartNumbers: {
"jlcpcb": [
"C858786"
]
}, manufacturerPartNumber: "PT1206FR-7W0R33L", footprint: "smdpads2_p2.9576mm_pw1.2075mm_ph1.701mm", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C858786.obj?uuid=da5f078ee43c429f91838a456f48f0a8",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C858786.step?uuid=da5f078ee43c429f91838a456f48f0a8",
pcbRotationOffset: 0,
modelOriginPosition: { x: 0, y: 0, z: 0 },
}, ...restProps }));
};
const pinLabels$2 = {
pin1: ["C"],
pin2: ["A"]
};
const SMAJ12A = (props) => {
return (jsx("chip", { pinLabels: pinLabels$2, symbol: jsxs("symbol", { children: [jsx("schematicpath", { svgPath: "M 0.1 -0.12 L -0.1 0 L 0.1 0.14 Z", strokeColor: "#880000" }), jsx("schematicpath", { points: [{ "x": -0.18, "y": 0.18 }, { "x": -0.1, "y": 0.1 }, { "x": -0.1, "y": -0.1 }, { "x": -0.02, "y": -0.18 }], strokeColor: "#880000" }), jsx("port", { name: "pin2", pinNumber: 2, aliases: ["A"], direction: "right", schX: 0.4, schY: 0, schStemLength: 0.3 }), jsx("port", { name: "pin1", pinNumber: 1, aliases: ["C"], direction: "left", schX: -0.4, schY: 0, schStemLength: 0.3 }), jsx("schematictext", { text: "{NAME}", schX: 0, schY: 0.35, anchor: "center", fontSize: 0.16 })] }), supplierPartNumbers: {
"jlcpcb": [
"C113957"
]
}, manufacturerPartNumber: "SMAJ12A", footprint: "smdpads2_p4.3851mm_pw1.8mm_ph1.7mm_cyw6.6976mm_cyh3.4464mm", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C113957.obj?uuid=972d26354d034239a6c09eb6538bb96b",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C113957.step?uuid=972d26354d034239a6c09eb6538bb96b",
pcbRotationOffset: 0,
modelOriginPosition: { x: 0, y: 0.000012699999842880061, z: -0.1 },
}, ...props }));
};
const pinLabels$1 = {
pin1: ["OB2"],
pin2: ["ENN"],
pin3: ["GND2"],
pin4: ["CPO"],
pin5: ["CPI"],
pin6: ["VCP"],
pin7: ["SPREAD"],
pin8: ["5VOUT"],
pin9: ["MS1_AD0"],
pin10: ["MS2_AD1"],
pin11: ["DIAG"],
pin12: ["INDEX"],
pin13: ["CLK"],
pin14: ["PDN_UART"],
pin15: ["VCC_IO"],
pin16: ["STEP"],
pin17: ["VREF"],
pin18: ["GND1"],
pin19: ["DIR"],
pin20: ["STDBY"],
pin21: ["OA2"],
pin22: ["VS2"],
pin23: ["BRA"],
pin24: ["OA1"],
pin25: ["UNUSED"],
pin26: ["OB1"],
pin27: ["BRB"],
pin28: ["VS1"],
pin29: ["EP"]
};
const pinAttributes = {
pin3: { requiresGround: true },
pin18: { requiresGround: true },
pin29: { requiresGround: true }
};
const footprinterPinLabels$1 = {
...pinLabels$1,
"pin29": [...pinLabels$1["pin29"], "thermalpad"],
};
const TMC2209_LA_T = (props) => {
return (jsx("chip", { pinLabels: footprinterPinLabels$1, pinAttributes: pinAttributes, supplierPartNumbers: {
"jlcpcb": [
"C2150710"
]
}, manufacturerPartNumber: "TMC2209-LA-T", footprint: "qfn28_thermalpad3.5mmx3.5mm_pillpads_h6.1mm_pw0.28mm_pl0.9mm_pin1location(bottomside,left)", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2150710.obj?uuid=ae12e1b5ea7a411e8a6f7d8e9f5ed919",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2150710.step?uuid=ae12e1b5ea7a411e8a6f7d8e9f5ed919",
pcbRotationOffset: 90,
modelOriginPosition: { x: -6349999998889189e-20, y: -6349999999599731e-20, z: -0.02 },
}, ...props }));
};
const pinLabels = {
pin1: ["EH2"],
pin2: ["EH1"],
pin3: ["EH4"],
pin4: ["EH3"],
pin5: ["B8", "SBU2"],
pin6: ["A5", "CC1"],
pin7: ["B7", "DN2"],
pin8: ["A6", "DP1"],
pin9: ["A7", "DN1"],
pin10: ["B6", "DP2"],
pin11: ["A8", "SBU1"],
pin12: ["B5", "CC2"],
pin13: ["A1B12", "GND1"],
pin14: ["B1A12", "GND2"],
pin15: ["B4A9", "VBUS1"],
pin16: ["A4B9", "VBUS2"]
};
const footprinterPinLabels = {
...pinLabels,
"pin4": [...pinLabels["pin4"], "pin1"],
"pin1": [...pinLabels["pin1"], "pin2"],
"pin2": [...pinLabels["pin2"], "pin4"],
};
const TYPE_C_31_M_12 = (props) => {
return (jsx("chip", { pinLabels: footprinterPinLabels, supplierPartNumbers: {
"jlcpcb": [
"C165948"
]
}, manufacturerPartNumber: "TYPE-C-31-M-12", footprint: "usbcmidmount16_tophw0.8mm_bottomhw0.8mm_tophh1.6mm_bottomhh1.4mm_topring0.2mm_bottomring0.2mm_rowy2.174mm_ph1.3mm_pw0.3mm_powerpw0.6mm_powerx3.2mm_shellx4.3251mm_topy1.4057mm_bottomy2.7741mm_holex2.8999mm_holey0.9056mm_holed0.6mm", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C165948.obj?uuid=617b05f9bba7410b96c001093d8189e4",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C165948.step?uuid=617b05f9bba7410b96c001093d8189e4",
pcbRotationOffset: 180,
modelOriginPosition: { x: 0, y: -2.7500289000000517, z: 0.000010999999999872223 },
}, ...props }));
};
const resistorParts = {
"27": "C25100", "1k": "C11702", "5.1k": "C25905", "6.8k": "C25907", "10k": "C25744",
"12k": "C25752", "47k": "C25792", "56k": "C25794", "100k": "C25741", "270k": "C25770",
};
const capacitorParts = {
"22nF_50V": { part: "C1532", footprint: "0402", voltage: "50V" },
"100nF": { part: "C1525", footprint: "0402", voltage: "16V" },
"100nF_50V": { part: "C14663", footprint: "0603", voltage: "50V" },
"1uF_50V": { part: "C28323", footprint: "0805", voltage: "50V" },
"2.2uF": { part: "C23630", footprint: "0603", voltage: "16V" },
"10uF_25V": { part: "C96446", footprint: "0603", voltage: "25V" },
};
const R = ({ name, resistance, ...props }) => (jsx("resistor", { name: name, resistance: resistance, footprint: "0402", schSheetName: "main", supplierPartNumbers: { jlcpcb: [resistorParts[resistance]] }, ...props }));
const C = ({ name, value, ...props }) => {
const item = capacitorParts[value];
return jsx("capacitor", { name: name, capacitance: value.replace("_50V", "").replace("_25V", ""), footprint: item.footprint, maxVoltageRating: item.voltage, schSheetName: "main", maxDecouplingTraceLength: "100mm", supplierPartNumbers: { jlcpcb: [item.part] }, ...props });
};
const nets = [
"GND", "VBUS_RAW", "VBUS_FUSED", "VM", "VIO", "USB_CC1", "USB_CC2",
"PD_VDD", "PD_SENSE", "PD_CFG1",
"STEP", "DIR", "ENN", "UART_DRV", "V5_DRV",
"VREF", "CP_HI", "CP_LO", "VCP", "SENSE_A", "SENSE_B", "MOTOR_B_NEG",
"MOTOR_B_POS", "MOTOR_A_POS", "MOTOR_A_NEG",
];
const netWidths = {
VBUS_RAW: "1mm", VBUS_FUSED: "1mm", VM: "1mm", SENSE_A: "0.6mm", SENSE_B: "0.6mm",
MOTOR_B_NEG: "0.6mm", MOTOR_B_POS: "0.6mm", MOTOR_A_POS: "0.6mm", MOTOR_A_NEG: "0.6mm",
};
const thermalViaOffsets = [-0.8, 0, 0.8];
const driverY = 1.0;
const driverSelector = ".U_DRV";
const topEscape = (port, points) => ({
connection: `.U_DRV > .${port}`,
route: points.map(([x, y]) => ({ route_type: "wire", x, y, width: 0.15, layer: "top" })),
});
const innerEscape = (port, start, viaStart, viaEnd, layer) => ({
connection: `.U_DRV > .${port}`,
route: [
{ route_type: "wire", x: start[0], y: start[1], width: 0.15, layer: "top" },
{ route_type: "wire", x: viaStart[0], y: viaStart[1], width: 0.15, layer: "top" },
{ route_type: "via", x: viaStart[0], y: viaStart[1], from_layer: "top", to_layer: layer,
via_diameter: 0.45, via_hole_diameter: 0.3 },
{ route_type: "wire", x: viaStart[0], y: viaStart[1], width: 0.15, layer },
{ route_type: "wire", x: viaEnd[0], y: viaEnd[1], width: 0.15, layer },
{ route_type: "via", x: viaEnd[0], y: viaEnd[1], from_layer: layer, to_layer: "top",
via_diameter: 0.45, via_hole_diameter: 0.3 },
{ route_type: "wire", x: viaEnd[0], y: viaEnd[1], width: 0.15, layer: "top" },
],
});
/* Deterministic exits keep the default autorouter away from the 0.5 mm-pitch
* QFN pin field. Motor, sense and supply paths leave the fanout on an outer
* layer; only low-current STEP/DIR/STDBY signals use the internal layers. */
[
topEscape("OB2", [[-1.5, -2.5], [-3.8, -2.4]]),
topEscape("SPREAD", [[1.5, -2.5], [3.8, -2.4]]),
topEscape("5VOUT", [[2.5, -1.5], [3.8, -1.5]]),
topEscape("MS1_AD0", [[2.5, -1], [3.8, -1]]),
topEscape("PDN_UART", [[2.5, 1.5], [3.8, 1.5]]),
topEscape("VCC_IO", [[1.5, 2.5], [1.6, 3.8]]),
innerEscape("STEP", [1, 2.5], [1, 3.2], [3.8, 3.2], "inner2"),
topEscape("VREF", [[0.5, 2.5], [0.35, 3.8]]),
innerEscape("DIR", [-0.5, 2.5], [-0.5, 2.8], [-3.8, 3.2], "inner2"),
topEscape("OA2", [[-1.5, 2.5], [-1.6, 3.8]]),
topEscape("VS2", [[-2.5, 1.5], [-3.8, 1.6]]),
topEscape("BRA", [[-2.5, 1], [-3.8, 1]]),
topEscape("OA1", [[-2.5, 0.5], [-3.8, 0.35]]),
topEscape("OB1", [[-2.5, -0.5], [-3.8, -0.35]]),
topEscape("BRB", [[-2.5, -1], [-3.8, -1]]),
topEscape("VS1", [[-2.5, -1.5], [-3.8, -1.6]]),
];
function Nema8TwentyMillimeterController() {
return (jsxs("board", { width: "20mm", height: "20mm", layers: 4, thickness: "1.6mm", fabricatorPreset: "jlcpcb_standard_20260912", autorouterEffortLevel: "10x", minTraceWidth: "0.15mm", minTraceToPadEdgeClearance: "0.1mm", minViaEdgeToPadEdgeClearance: "0.1mm", minViaHoleEdgeToViaHoleEdgeClearance: "0.2mm", minPlatedHoleDrillEdgeToDrillEdgeClearance: "0.3mm", minPadEdgeToPadEdgeClearance: "0.1mm", minBoardEdgeClearance: "0.17mm", minViaHoleDiameter: "0.3mm", minViaPadDiameter: "0.45mm", isViaInPadAllowed: true, autorouter: { preset: "default", allowViaInPad: false, traceClearance: "0.2mm" }, pcbStyle: { viaHoleDiameter: "0.3mm", viaPadDiameter: "0.45mm" }, children: [jsx("schematicsection", { name: "Power", displayName: "USB-C / USB-PD power" }), jsx("schematicsection", { name: "Control", displayName: "External STEP/DIR/UART control" }), jsx("schematicsection", { name: "Driver", displayName: "TMC2209 motor stage" }), jsxs("schematicsheet", { name: "main", displayName: "NEMA8 20 mm stepper driver", sheetSize: "A4", children: [jsx("schematictext", { schX: -18, schY: 12.7, anchor: "top_left", fontSize: 0.2, text: "USB-C PD INPUT \u2014 U_PD (CH224K) negotiates a fixed 9 V contract." }), jsx("schematictext", { schX: -12, schY: 9.5, anchor: "top_left", fontSize: 0.2, text: "PROTECTION \u2014 F1 1.1 A resettable fuse, reverse-current diode, 12 V TVS, and 10 uF/25 V bulk capacitor." }), jsx("schematictext", { schX: 0, schY: 10, anchor: "top_left", fontSize: 0.2, text: "STEPPER STAGE \u2014 U_DRV is a TMC2209 stepper driver." }), jsx("schematictext", { schX: 0, schY: 9.5, anchor: "top_left", fontSize: 0.2, text: "Motor: StepperOnline 8HS15-0604S, 0.60 A/phase, 11 ohm, 5.5 mH." }), jsx("schematictext", { schX: -9, schY: -7.7, anchor: "top_left", fontSize: 0.2, text: "HOST I/O \u2014 External VIO, STEP, DIR, ENN, UART, and GND." }), jsx("schematictext", { schX: -9, schY: -8.2, anchor: "top_left", fontSize: 0.2, text: "MOTOR I/O \u2014 B-, B+, A+, A-." })] }), jsx("schematicsheet", { name: "implementation", displayName: "PCB routing breakouts", sheetSize: "A4", children: jsx("schematictext", { schX: -18, schY: 13, anchor: "top_left", fontSize: 0.2, text: "PCB ROUTING BREAKOUTS \u2014 Internal test pads split physical routes; functional interfaces are documented on the main sheet." }) }), nets.map((name) => jsx(Fragment, { children: jsx("net", { name: name, nominalTraceWidth: netWidths[name] }) }, name)), jsx(TYPE_C_31_M_12, { name: "J_USB", pcbX: 0, pcbY: -6, pcbRotation: 0, schSectionName: "Power", schSheetName: "main", schX: -15, schY: 7, noConnect: ["SBU1", "SBU2", "DP1", "DP2", "DN1", "DN2"], connections: { EH1: "net.GND", EH2: "net.GND", EH3: "net.GND", EH4: "net.GND",
GND1: "net.GND", GND2: "net.GND",
VBUS1: "net.VBUS_RAW", VBUS2: "net.VBUS_RAW" } }), jsx(CH224K, { name: "U_PD", layer: "bottom", pcbX: 4.0, pcbY: 1.0, pcbRotation: 90, schSectionName: "Power", schSheetName: "main", schX: -13.78, schY: 11, schWidth: 3, schHeight: 3, noConnect: ["CFG2", "CFG3", "PG"], connections: { VDD: "net.PD_VDD", GND: "net.GND", VBUS: "net.PD_SENSE" } }), jsx(R, { name: "R_PD_VDD", resistance: "1k", layer: "bottom", pcbX: 6.8, pcbY: 4.8, pcbRotation: 90, schSectionName: "Power", schX: -17, schY: 11.5, connections: { pin1: "net.VBUS_RAW", pin2: "net.PD_VDD" } }), jsx(C, { name: "C_PD_VDD", value: "1uF_50V", layer: "bottom", pcbX: 4.4, pcbY: 4.8, schSectionName: "Power", schX: -17, schY: 10, connections: { pin1: "net.PD_VDD", pin2: "net.GND" } }), jsx(R, { name: "R_PD_SENSE", resistance: "10k", layer: "bottom", pcbX: 8.0, pcbY: -7.5, pcbRotation: 90, schSectionName: "Power", schX: -9.72, schY: 11.5, connections: { pin1: "net.VBUS_RAW", pin2: "net.PD_SENSE" } }), jsx(R, { name: "R_PD_SET_9V", resistance: "6.8k", layer: "bottom", pcbX: 5.0, pcbY: 6.3, schSectionName: "Power", schX: -7.5, schY: 11.5, connections: { pin2: "net.GND" } }), jsx("trace", { name: "PD_CC1_ROUTE", from: ".J_USB > .CC1", to: ".U_PD > .CC1", thickness: "0.15mm", maxViaCount: 2, pcbPathRelativeTo: ".J_USB > .CC1", pcbPath: [
{ x: -2.4, y: 3.0 }, { x: -4.2, y: 3.0 },
{ x: -4.2, y: 3.0, via: true, fromLayer: "top", toLayer: "inner2" },
{ x: -4.2, y: 3.0 }, { x: -4.2, y: 4.2 },
{ x: 0.8, y: 4.2 }, { x: 0.8, y: 6.0 },
{ x: 0.8, y: 6.0, via: true, fromLayer: "inner2", toLayer: "bottom" },
{ x: 0.8, y: 6.0 },
] }), jsx("trace", { name: "PD_CC2_ROUTE", from: ".J_USB > .CC2", to: ".U_PD > .CC2", thickness: "0.15mm", maxViaCount: 1, pcbPathRelativeTo: ".J_USB > .CC2", pcbPath: [
{ x: 0.75, y: 3.5 }, { x: 2.0, y: 3.5 },
{ x: 2.0, y: 3.5, via: true, fromLayer: "top", toLayer: "bottom" },
{ x: 2.0, y: 3.5 }, { x: 2.0, y: 5.0 },
] }), jsx("trace", { name: "DP_DM", from: ".U_PD > .DP", to: ".U_PD > .DM", thickness: "0.15mm", maxViaCount: 0 }), jsx("trace", { name: "PD_CFG_9V", from: ".U_PD > .CFG1", to: ".R_PD_SET_9V > .pin1", thickness: "0.15mm", maxViaCount: 0, pcbPathRelativeTo: ".U_PD > .CFG1", pcbPath: [
{ x: 1.0, y: 4.2 }, { x: 2.6, y: 4.2 },
{ x: 2.6, y: -2.2 }, { x: 5.3, y: -2.2 },
] }), jsx("trace", { name: "PD_SENSE_ROUTE", from: ".U_PD > .VBUS", to: ".R_PD_SENSE > .pin2", thickness: "0.15mm", maxViaCount: 2, pcbPathRelativeTo: ".U_PD > .VBUS", pcbPath: [
{ x: 0, y: 4.5 },
{ x: 0, y: 4.5, via: true, fromLayer: "bottom", toLayer: "inner1" },
{ x: 0, y: 4.5 }, { x: -7.4, y: 4.5 }, { x: -7.4, y: -3.2 },
{ x: -9.01, y: -3.2 },
{ x: -9.01, y: -3.2, via: true, fromLayer: "inner1", toLayer: "bottom" },
{ x: -9.01, y: -3.2 },
] }), jsx(BSMD1206_110_16V, { name: "F1", pcbX: -7.3, pcbY: -4, pcbRotation: 90, schSectionName: "Power", schSheetName: "main", schX: -12, schY: 7, connections: { pin1: "net.VBUS_RAW" } }), jsx(PMEG6020ELRX, { name: "D_BLOCK", pcbX: 7.3, pcbY: -4, pcbRotation: 90, schSectionName: "Power", schSheetName: "main", schX: -9, schY: 7 }), jsx(SMAJ12A, { name: "D_VM_TVS", layer: "bottom", pcbX: 0, pcbY: 8.95, pcbRotation: 0, schSectionName: "Power", schSheetName: "main", schX: -6, schY: 5, connections: { A: "net.GND" } }), jsx(C, { name: "C_VM_BULK", value: "10uF_25V", layer: "bottom", pcbX: -2, pcbY: -6, pcbRotation: 90, schSectionName: "Power", schX: -7, schY: 3, connections: { pin2: "net.GND" } }), jsx(C, { name: "C_VM_HF1", value: "100nF_50V", pcbX: -8.5, pcbY: -0.7, schSectionName: "Driver", schX: 0, schY: 8, connections: { pin2: "net.GND" } }), jsx(C, { name: "C_VM_HF2", value: "100nF_50V", pcbX: -8.5, pcbY: 2.6, schSectionName: "Driver", schX: 2, schY: 8, connections: { pin2: "net.GND" } }), jsx(TMC2209_LA_T, { name: "U_DRV", pcbX: -2.5, pcbY: driverY, pcbRotation: 0, schSectionName: "Driver", schSheetName: "main", schX: 4, schY: 1, schWidth: 3.5, schHeight: 5, noConnect: ["INDEX", "DIAG"] }), jsx(C, { name: "C_CP", value: "22nF_50V", layer: "bottom", pcbX: -1.5, pcbY: -3, pcbRotation: 180, schSectionName: "Driver", schX: 0, schY: 5 }), jsx("trace", { name: "DRV_CPO_ROUTE", from: `${driverSelector} > .CPO`, to: ".C_CP > .pin1", thickness: "0.15mm", maxViaCount: 1, pcbPathRelativeTo: `${driverSelector} > .CPO`, pcbPath: [
{ x: 0.1, y: -3.2 },
{ x: 0.1, y: -3.2, via: true, fromLayer: "top", toLayer: "bottom" },
{ x: 0.1, y: -3.2 }, { x: 0.1, y: -4 }, { x: 0.49, y: -4 },
] }), jsx("trace", { name: "CPI", from: `${driverSelector} > .CPI`, to: ".C_CP > .pin2", thickness: "0.15mm", maxViaCount: 1, pcbPathRelativeTo: `${driverSelector} > .CPI`, pcbPath: [
{ x: 0.5, y: -3.6 }, { x: 1.5, y: -3.75 },
{ x: 1.5, y: -3.75, via: true, fromLayer: "top", toLayer: "bottom" },
{ x: 1.5, y: -3.75 }, { x: 1.5, y: -4 }, { x: 1.51, y: -4 },
] }), jsx("trace", { name: "DRV_SPREAD_GND", from: `${driverSelector} > .SPREAD`, to: ".C_5V > .pin2", thickness: "0.15mm" }), jsx("trace", { name: "DRV_MS1_GND", from: `${driverSelector} > .MS1_AD0`, to: ".C_5V > .pin2", thickness: "0.15mm" }), jsx("trace", { name: "V5OUT", from: `${driverSelector} > .5VOUT`, to: ".C_5V > .pin1", thickness: "0.15mm" }), jsx("trace", { name: "VREF_SET", from: `${driverSelector} > .VREF`, to: ".R_VREF_TOP > .pin2", thickness: "0.15mm" }), jsx("testpoint", { name: "TP_ENN_BREAK", footprintVariant: "pad", padShape: "circle", padDiameter: "0.5mm", layer: "top", pcbX: -5.8, pcbY: -2.5, schSheetName: "implementation", schX: -15, schY: 8, pcbStyle: { silkscreenTextVisibility: "hidden" } }), jsx("trace", { name: "U_DRV_ENN_ESCAPE", from: `${driverSelector} > .ENN`, to: ".TP_ENN_BREAK > .pin1", thickness: "0.15mm", maxViaCount: 0, pcbPathRelativeTo: `${driverSelector} > .ENN`, pcbPath: [
{ x: -1, y: -3.3 }, { x: -1.5, y: -3.3 }, { x: -3.3, y: -3.5 },
] }), jsx("trace", { name: "ENN_TO_PAD_ROUTE", from: ".TP_ENN_BREAK > .pin1", to: ".TP_ENN > .pin1", thickness: "0.15mm", maxViaCount: 2, pcbPathRelativeTo: ".TP_ENN_BREAK > .pin1", pcbPath: [
{ x: 0, y: 0, via: true, fromLayer: "top", toLayer: "inner1" },
{ x: 0, y: 0 }, { x: -2.2, y: 0 }, { x: -2.2, y: 8.5 },
{ x: 9.3, y: 8.5 },
{ x: 9.3, y: 8.5, via: true, fromLayer: "inner1", toLayer: "bottom" },
{ x: 9.3, y: 8.5 }, { x: 9.3, y: 9.0 }, { x: 8.8, y: 9.0 },
] }), jsx("trace", { name: "U_DRV_VCP_ESCAPE", from: `${driverSelector} > .VCP`, to: ".C_VCP > .pin1", thickness: "0.15mm", pcbPathRelativeTo: `${driverSelector} > .VCP`, pcbPath: [
{ x: 1.0, y: -3.3 }, { x: 2.9, y: -3.3 },
{ x: 2.9, y: -3.3, via: true, fromLayer: "top", toLayer: "inner1" },
{ x: 2.9, y: -3.3 }, { x: 2.9, y: -2.4 },
{ x: 6.7, y: -2.4 }, { x: 6.7, y: 0.6 },
{ x: 6.7, y: 0.6, via: true, fromLayer: "inner1", toLayer: "top" },
{ x: 6.7, y: 0.6 }, { x: 7.375, y: 0.6 },
] }), jsx("trace", { name: "U_DRV_GND2_EP", from: `${driverSelector} > .GND2`, to: `${driverSelector} > .EP`, thickness: "0.15mm", maxViaCount: 0, pcbPathRelativeTo: `${driverSelector} > .GND2`, pcbPath: [{ x: -0.5, y: -1.8 }, { x: -0.5, y: 0 }, { x: 0, y: 0 }] }), jsx("trace", { name: "U_DRV_GND1_EP", from: `${driverSelector} > .GND1`, to: `${driverSelector} > .EP`, thickness: "0.15mm", pcbPathRelativeTo: `${driverSelector} > .GND1`, pcbPath: [{ x: 0, y: 1.7 }, { x: 0, y: 0 }] }), jsx("trace", { name: "U_DRV_UNUSED_EP", from: `${driverSelector} > .UNUSED`, to: `${driverSelector} > .EP`, thickness: "0.15mm", pcbPathRelativeTo: `${driverSelector} > .UNUSED`, pcbPath: [{ x: -1.7, y: 0 }, { x: 0, y: 0 }] }), jsx("trace", { name: "U_DRV_MS2_EP", from: `${driverSelector} > .MS2_AD1`, to: `${driverSelector} > .EP`, thickness: "0.15mm", pcbPathRelativeTo: `${driverSelector} > .MS2_AD1`, pcbPath: [{ x: 1.7, y: -0.5 }, { x: 1.2, y: 0 }, { x: 0, y: 0 }] }), jsx("trace", { name: "U_DRV_EP_GND", from: `${driverSelector} > .EP`, to: "net.GND", thickness: "0.15mm", pcbPathRelativeTo: `${driverSelector} > .EP`, pcbPath: [{ x: 0, y: 0, via: true, fromLayer: "top", toLayer: "bottom" }] }), jsx("testpoint", { name: "TP_STEP_BREAK", footprintVariant: "pad", padShape: "circle", padDiameter: "0.5mm", layer: "top", pcbX: 1.3, pcbY: 4.2, schSheetName: "implementation", schX: -10, schY: 8, pcbStyle: { silkscreenTextVisibility: "hidden" } }), jsx("testpoint", { name: "TP_DIR_BREAK", footprintVariant: "pad", padShape: "circle", padDiameter: "0.5mm", layer: "top", pcbX: -6.3, pcbY: 4.2, schSheetName: "implementation", schX: -5, schY: 8, pcbStyle: { silkscreenTextVisibility: "hidden" } }), jsx("testpoint", { name: "TP_UART_BREAK", footprintVariant: "pad", padShape: "circle", padDiameter: "0.5mm", layer: "top", pcbX: 1.3, pcbY: 2.5, schSheetName: "implementation", schX: 0, schY: 8, pcbStyle: { silkscreenTextVisibility: "hidden" } }), jsx("trace", { name: "DRV_STEP_ESCAPE", from: `${driverSelector} > .STEP`, to: ".TP_STEP_BREAK > .pin1", thickness: "0.15mm", maxViaCount: 2, pcbPathRelativeTo: `${driverSelector} > .STEP`, pcbPath: [
{ x: 1.0, y: 3.2 },
{ x: 1.0, y: 3.2, via: true, fromLayer: "top", toLayer: "inner2" },
{ x: 1.0, y: 3.2 }, { x: 3.8, y: 3.2 },
{ x: 3.8, y: 3.2, via: true, fromLayer: "inner2", toLayer: "top" },
{ x: 3.8, y: 3.2 },
] }), jsx("trace", { name: "DRV_DIR_ESCAPE", from: `${driverSelector} > .DIR`, to: ".TP_DIR_BREAK > .pin1", thickness: "0.15mm", maxViaCount: 2, pcbPathRelativeTo: `${driverSelector} > .DIR`, pcbPath: [
{ x: -0.5, y: 2.8 },
{ x: -0.5, y: 2.8, via: true, fromLayer: "top", toLayer: "inner2" },
{ x: -0.5, y: 2.8 }, { x: -3.8, y: 3.2 },
{ x: -3.8, y: 3.2, via: true, fromLayer: "inner2", toLayer: "top" },
{ x: -3.8, y: 3.2 },
] }), jsx("trace", { name: "DRV_UART_ESCAPE", from: `${driverSelector} > .PDN_UART`, to: ".TP_UART_BREAK > .pin1", thickness: "0.15mm", maxViaCount: 0, pcbPathRelativeTo: `${driverSelector} > .PDN_UART`, pcbPath: [{ x: 3.8, y: 1.5 }] }), jsx("trace", { name: "DRV_VCCIO_DECOUPLE", from: `${driverSelector} > .VCC_IO`, to: ".C_VIO > .pin1", thickness: "0.15mm", pcbPathRelativeTo: `${driverSelector} > .VCC_IO`, pcbPath: [{ x: 1.6, y: 3.8 }, { x: 1.6, y: 4.2 }, { x: 4.89, y: 4.2 }] }), jsx("trace", { name: "DRV_STDBY_VIO", from: `${driverSelector} > .STDBY`, to: ".C_VIO > .pin1", thickness: "0.15mm", maxViaCount: 0, pcbPathRelativeTo: `${driverSelector} > .STDBY`, pcbPath: [{ x: -1, y: 3.3 }, { x: -0.7, y: 3.3 }, { x: -0.7, y: 3.9 }, { x: 4.89, y: 3.9 }] }), jsx(C, { name: "C_VCP", value: "100nF_50V", pcbX: 5.7, pcbY: 1.6, schSectionName: "Driver", schX: 1.41, schY: 5, connections: { pin1: "net.VCP" } }), jsx(C, { name: "C_5V", value: "2.2uF", pcbX: 5.7, pcbY: 0.0, schSectionName: "Driver", schX: 4.59, schY: 5, connections: { pin2: "net.GND" } }), jsx(C, { name: "C_VIO", value: "100nF", pcbX: 2.9, pcbY: 4.5, schSectionName: "Driver", schX: 6, schY: 5, connections: { pin2: "net.GND" } }), jsx("trace", { name: "U_DRV_CLK_GND", from: `${driverSelector} > .CLK`, to: ".C_VIO > .pin2", thickness: "0.15mm", maxViaCount: 0, pcbPathRelativeTo: `${driverSelector} > .CLK`, pcbPath: [
{ x: 4.3, y: 1.0 }, { x: 4.3, y: 2.6 },
{ x: 6.3, y: 2.6 }, { x: 6.3, y: 3.5 },
] }), jsx(PT1206FR_7W0R33L, { name: "R_SENSE_A", layer: "bottom", pcbX: -7, pcbY: 4.3, pcbRotation: 180, schSectionName: "Driver", schSheetName: "main", schX: 1, schY: -5.5, connections: { pin2: "net.GND" } }), jsx(PT1206FR_7W0R33L, { name: "R_SENSE_B", layer: "bottom", pcbX: -8.5, pcbY: 0.6, pcbRotation: 90, schSectionName: "Driver", schSheetName: "main", schX: 3.6, schY: -5.5, connections: { pin2: "net.GND" } }), jsx(R, { name: "R_VREF_TOP", resistance: "10k", pcbX: 4.9, pcbY: 4.4, schSectionName: "Driver", schX: 0, schY: -3 }), jsx(R, { name: "R_VREF_BOTTOM", resistance: "10k", pcbX: 6.8, pcbY: 3.5, schSectionName: "Driver", schX: 3, schY: -3, connections: { pin2: "net.GND" } }), jsx(C, { name: "C_VREF", value: "100nF", pcbX: 8.8, pcbY: 3.5, schSectionName: "Driver", schX: 6, schY: -3, connections: { pin2: "net.GND" } }), jsx("trace", { name: "VREF_TOP_TO_BOTTOM", from: ".R_VREF_TOP > .pin2", to: ".R_VREF_BOTTOM > .pin1", thickness: "0.15mm", maxViaCount: 0 }), jsx("trace", { name: "V5_TO_VREF_TOP", from: ".C_5V > .pin1", to: ".R_VREF_TOP > .pin1", thickness: "0.15mm", maxViaCount: 2, pcbPathRelativeTo: ".C_5V > .pin1", pcbPath: [
{ x: -1.9, y: 0 },
{ x: -1.9, y: 0, via: true, fromLayer: "top", toLayer: "inner2" },
{ x: -1.9, y: 0 }, { x: -1.9, y: 3.8 }, { x: -1.31, y: 3.8 },
{ x: -1.31, y: 3.8, via: true, fromLayer: "inner2", toLayer: "top" },
{ x: -1.31, y: 3.8 }, { x: -1.31, y: 4.4 },
] }), jsx("trace", { name: "VREF_BOTTOM_TO_CAP", from: ".R_VREF_BOTTOM > .pin1", to: ".C_VREF > .pin1", thickness: "0.15mm", maxViaCount: 0, pcbPathRelativeTo: ".R_VREF_BOTTOM > .pin1", pcbPath: [{ x: 0, y: -0.8 }, { x: 2.0, y: -0.8 }, { x: 2.0, y: 0 }] }), jsx(BM04B_SRSS_TB_LF__SN_, { name: "J_MOTOR", pcbX: 0, pcbY: 7.6, pcbRotation: 0, schSectionName: "Driver", schSheetName: "main", schX: 6.4, schY: -5.5, noConnect: ["pin5"], pcbPinLabels: { pin1: "B-", pin2: "B+", pin3: "A+", pin4: "A-" } }), jsx("trace", { name: "PWR_USB_TO_FUSE", from: ".J_USB > .VBUS2", to: ".F1 > .pin1", thickness: "1mm" }), jsx("trace", { name: "PWR_FUSE_TO_BLOCK", from: ".F1 > .pin2", to: ".D_BLOCK > .anode", thickness: "1mm" }), jsx("trace", { name: "VM_PROTECTED", from: ".D_BLOCK > .cathode", to: ".C_VM_BULK > .pin1", thickness: "1mm" }), jsx("trace", { name: "PWR_VM_TO_TVS", from: ".C_VM_BULK > .pin1", to: ".D_VM_TVS > .pin1", thickness: "1mm" }), jsx("trace", { name: "PWR_VM_TO_HF1", from: ".C_VM_BULK > .pin1", to: ".C_VM_HF1 > .pin1", thickness: "0.8mm" }), jsx("trace", { name: "PWR_HF1_TO_HF2", from: ".C_VM_HF1 > .pin1", to: ".C_VM_HF2 > .pin1", thickness: "0.8mm" }), jsx("trace", { name: "PWR_HF2_TO_VCP", from: ".C_VM_HF2 > .pin1", to: ".C_VCP > .pin2", thickness: "0.8mm" }), jsx("trace", { name: "PWR_VM_TO_DRIVER1", from: ".C_VM_HF1 > .pin1", to: `${driverSelector} > .VS1`, thickness: "0.8mm" }), jsx("trace", { name: "PWR_VM_TO_DRIVER2", from: ".C_VM_HF2 > .pin1", to: `${driverSelector} > .VS2`, thickness: "0.8mm" }), jsx("bus", { name: "POWER_OUTER", pcbAllowedLayers: ["top", "bottom"], connections: ["PWR_USB_TO_FUSE", "PWR_FUSE_TO_BLOCK", "VM_PROTECTED", "PWR_VM_TO_TVS",
"PWR_VM_TO_HF1", "PWR_HF1_TO_HF2", "PWR_HF2_TO_VCP", "PWR_VM_TO_DRIVER1", "PWR_VM_TO_DRIVER2"] }), jsx("testpoint", { name: "TP_MOTOR_B_NEG", footprintVariant: "pad", padShape: "circle", padDiameter: "0.6mm", layer: "top", pcbX: -6.3, pcbY: -1.4, schSheetName: "implementation", schX: -15, schY: 4, pcbStyle: { silkscreenTextVisibility: "hidden" } }), jsx("testpoint", { name: "TP_MOTOR_B_POS", footprintVariant: "pad", padShape: "circle", padDiameter: "0.6mm", layer: "top", pcbX: -6.3, pcbY: 0.65, schSheetName: "implementation", schX: -10, schY: 4, pcbStyle: { silkscreenTextVisibility: "hidden" } }), jsx("testpoint", { name: "TP_MOTOR_A_POS", footprintVariant: "pad", padShape: "circle", padDiameter: "0.6mm", layer: "top", pcbX: -7.1, pcbY: 1.35, schSheetName: "implementation", schX: -5, schY: 4, pcbStyle: { silkscreenTextVisibility: "hidden" } }), jsx("testpoint", { name: "TP_MOTOR_A_NEG", footprintVariant: "pad", padShape: "circle", padDiameter: "0.6mm", layer: "top", pcbX: -4.8, pcbY: 4.8, schSheetName: "implementation", schX: 0, schY: 4, pcbStyle: { silkscreenTextVisibility: "hidden" } }), jsx("trace", { name: "B_NEG", from: `${driverSelector} > .OB2`, to: ".TP_MOTOR_B_NEG > .pin1", thickness: "0.15mm", maxViaCount: 0, pcbPathRelativeTo: `${driverSelector} > .OB2`, pcbPath: [{ x: -3.8, y: -2.4 }] }), jsx("trace", { name: "B_POS", from: `${driverSelector} > .OB1`, to: ".TP_MOTOR_B_POS > .pin1", thickness: "0.15mm", maxViaCount: 0, pcbPathRelativeTo: `${driverSelector} > .OB1`, pcbPath: [{ x: -3.8, y: -0.35 }] }), jsx("trace", { name: "A_POS", from: `${driverSelector} > .OA1`, to: ".TP_MOTOR_A_POS > .pin1", thickness: "0.15mm", maxViaCount: 0, pcbPathRelativeTo: `${driverSelector} > .OA1`, pcbPath: [{ x: -4.6, y: 0.35 }] }), jsx("trace", { name: "A_NEG", from: `${driverSelector} > .OA2`, to: ".TP_MOTOR_A_NEG > .pin1", thickness: "0.15mm", maxViaCount: 0, pcbPathRelativeTo: `${driverSelector} > .OA2`, pcbPath: [{ x: -2.3, y: 3.8 }] }), jsx("trace", { name: "MOTOR_B_NEG_ROUTE", from: ".TP_MOTOR_B_NEG > .pin1", to: ".J_MOTOR > .pin1", thickness: "0.6mm" }), jsx("trace", { name: "MOTOR_B_POS_ROUTE", from: ".TP_MOTOR_B_POS > .pin1", to: ".J_MOTOR > .pin2", thickness: "0.6mm" }), jsx("trace", { name: "MOTOR_A_POS_ROUTE", from: ".TP_MOTOR_A_POS > .pin1", to: ".J_MOTOR > .pin3", thickness: "0.6mm" }), jsx("trace", { name: "MOTOR_A_NEG_ROUTE", from: ".TP_MOTOR_A_NEG > .pin1", to: ".J_MOTOR > .pin4", thickness: "0.6mm" }), jsx("bus", { name: "MOTOR_OUTER", pcbAllowedLayers: ["top", "bottom"], pcbTraceWidth: "0.6mm", connections: ["MOTOR_B_NEG_ROUTE", "MOTOR_B_POS_ROUTE", "MOTOR_A_POS_ROUTE", "MOTOR_A_NEG_ROUTE"] }), jsx("testpoint", { name: "TP_SENSE_A_BREAK", footprintVariant: "pad", padShape: "circle", padDiameter: "0.6mm", layer: "top", pcbX: -6.8, pcbY: 2.9, schSheetName: "implementation", schX: -15, schY: 0, pcbStyle: { silkscreenTextVisibility: "hidden" } }), jsx("testpoint", { name: "TP_SENSE_B_BREAK", footprintVariant: "pad", padShape: "circle", padDiameter: "0.6mm", layer: "top", pcbX: -6.8, pcbY: -0.6, schSheetName: "implementation", schX: -10, schY: 0, pcbStyle: { silkscreenTextVisibility: "hidden" } }), jsx("trace", { name: "ISENSE_A", from: `${driverSelector} > .BRA`, to: ".TP_SENSE_A_BREAK > .pin1", thickness: "0.15mm", maxViaCount: 0, pcbPathRelativeTo: `${driverSelector} > .BRA`, pcbPath: [{ x: -3.8, y: 1.0 }, { x: -4.3, y: 1.9 }] }), jsx("trace", { name: "ISENSE_B", from: `${driverSelector} > .BRB`, to: ".TP_SENSE_B_BREAK > .pin1", thickness: "0.15mm", maxViaCount: 0, pcbPathRelativeTo: `${driverSelector} > .BRB`, pcbPath: [{ x: -3.8, y: -1 }, { x: -4.3, y: -1.6 }] }), jsx("trace", { name: "SENSE_A_ROUTE", from: ".TP_SENSE_A_BREAK > .pin1", to: ".R_SENSE_A > .pin1", thickness: "0.6mm", maxViaCount: 1, pcbPathRelativeTo: ".TP_SENSE_A_BREAK > .pin1", pcbPath: [
{ x: 0, y: 0, via: true, fromLayer: "top", toLayer: "bottom" },
{ x: 0, y: 0 }, { x: 0, y: 0.6 }, { x: -2.6, y: 0.6 },
{ x: -2.6, y: 1.4 },
] }), jsx("trace", { name: "SENSE_B_ROUTE", from: ".TP_SENSE_B_BREAK > .pin1", to: ".R_SENSE_B > .pin1", thickness: "0.6mm", maxViaCount: 1, pcbPathRelativeTo: ".TP_SENSE_B_BREAK > .pin1", pcbPath: [
{ x: 0, y: 0, via: true, fromLayer: "top", toLayer: "bottom" },
{ x: 0, y: 0 }, { x: 0.6, y: 0 }, { x: 0.6, y: 2.68 },
] }), jsx("bus", { name: "SENSE_OUTER", pcbAllowedLayers: ["top", "bottom"], pcbTraceWidth: "0.6mm", connections: ["SENSE_A_ROUTE", "SENSE_B_ROUTE"] }), thermalViaOffsets.flatMap((x) => thermalViaOffsets.filter((y) => x !== 0 || y !== 0).map((y) => (jsx(Fragment, { children: jsx("via", { name: `U_DRV_THERMAL_${x}_${y}`, pcbX: -2.5 + x, pcbY: driverY + y, fromLayer: "top", toLayer: "bottom", holeDiameter: "0.3mm", outerDiameter: "0.45mm", connectsTo: "net.GND", tented: "bottom_tented" }) }, `thermal-${x}-${y}`)))), jsx("testpoint", { name: "TP_GND", layer: "bottom", footprintVariant: "pad", padShape: "circle", padDiameter: "0.8mm", pcbX: -4.8, pcbY: 6.5, schSectionName: "Control", schSheetName: "main", schX: -1, schY: -7 }), jsx("testpoint", { name: "TP_VIO", layer: "bottom", footprintVariant: "pad", padShape: "circle", padDiameter: "0.8mm", pcbX: -1.8, pcbY: 6.5, schSectionName: "Control", schSheetName: "main", schX: 1, schY: -7, connections: { pin1: "net.VIO" } }), jsx("testpoint", { name: "TP_STEP", layer: "bottom", footprintVariant: "pad", padShape: "circle", padDiameter: "0.8mm", pcbX: -0.6, pcbY: 6.5, schSectionName: "Control", schSheetName: "main", schX: 3, schY: -7, connections: { pin1: "net.STEP" } }), jsx("testpoint", { name: "TP_DIR", layer: "bottom", footprintVariant: "pad", padShape: "circle", padDiameter: "0.8mm", pcbX: 0.6, pcbY: 6.5, schSectionName: "Control", schSheetName: "main", schX: 5, schY: -7, connections: { pin1: "net.DIR" } }), jsx("testpoint", { name: "TP_UART", layer: "bottom", footprintVariant: "pad", padShape: "circle", padDiameter: "0.8mm", pcbX: 1.8, pcbY: 6.5, schSectionName: "Control", schSheetName: "main", schX: 7, schY: -7, connections: { pin1: "net.UART_DRV" } }), jsx("testpoint", { name: "TP_ENN", layer: "bottom", footprintVariant: "pad", padShape: "circle", padDiameter: "0.8mm", pcbX: 3.0, pcbY: 6.5, schSectionName: "Control", schSheetName: "main", schX: 9, schY: -7, connections: { pin1: "net.ENN" } }), jsx("trace", { name: "CTRL_STEP_ROUTE", from: ".TP_STEP_BREAK > .pin1", to: ".TP_STEP > .pin1", thickness: "0.15mm", maxViaCount: 2, pcbPathRelativeTo: ".TP_STEP_BREAK > .pin1", pcbPath: [
{ x: 0, y: 0, via: true, fromLayer: "top", toLayer: "inner2" },
{ x: 0, y: 0 }, { x: 0, y: 0.8 }, { x: -1.9, y: 0.8 },
{ x: -1.9, y: 2.3 },
{ x: -1.9, y: 2.3, via: true, fromLayer: "inner2", toLayer: "bottom" },
{ x: -1.9, y: 2.3 },
] }), jsx("trace", { name: "CTRL_DIR_ROUTE", from: ".TP_DIR_BREAK > .pin1", to: ".TP_DIR > .pin1", thickness: "0.15mm", maxViaCount: 1, pcbPathRelativeTo: ".TP_DIR_BREAK > .pin1", pcbPath: [
{ x: 0.5, y: 0 }, { x: 0.5, y: 1.15 }, { x: 2.8, y: 1.15 },
{ x: 2.8, y: 1.15, via: true, fromLayer: "top", toLayer: "bottom" },
{ x: 2.8, y: 1.15 }, { x: 2.8, y: 1.2 }, { x: 6.9, y: 1.2 },
{ x: 6.9, y: 2.3 },
] }), jsx("trace", { name: "CTRL_UART_ROUTE", from: ".TP_UART_BREAK > .pin1", to: ".TP_UART > .pin1", thickness: "0.15mm", maxViaCount: 2, pcbPathRelativeTo: ".TP_UART_BREAK > .pin1", pcbPath: [
{ x: 0, y: 0, via: true, fromLayer: "top", toLayer: "inner2" },
{ x: 0, y: 0 }, { x: 1.1, y: 0 }, { x: 1.1, y: 3.0 },
{ x: 1.1, y: 3.0, via: true, fromLayer: "inner2", toLayer: "bottom" },
{ x: 1.1, y: 3.0 }, { x: 1.1, y: 4.0 }, { x: 0.5, y: 4.0 },
] }), jsx("trace", { name: "VIO_PAD_ROUTE", from: ".C_VIO > .pin1", to: ".TP_VIO > .pin1", thickness: "0.15mm", maxViaCount: 2, pcbPathRelativeTo: ".C_VIO > .pin1", pcbPath: [
{ x: -1.2, y: 0.3 },
{ x: -1.2, y: 0.3, via: true, fromLayer: "top", toLayer: "inner1" },
{ x: -1.2, y: 0.3 }, { x: -7.1, y: 0.3 },
{ x: -7.1, y: 0.3, via: true, fromLayer: "inner1", toLayer: "bottom" },
{ x: -7.1, y: 0.3 }, { x: -7.1, y: 1.3 }, { x: -5.1, y: 1.3 },
{ x: -5.1, y: 1.5 }, { x: -4.7, y: 1.5 }, { x: -4.7, y: 2.0 },
] }), jsx("trace", { name: "TP_GND_ROUTE", from: ".TP_GND > .pin1", to: ".R_SENSE_A > .pin2", thickness: "0.3mm", maxViaCount: 2, pcbPathRelativeTo: ".TP_GND > .pin1", pcbPath: [
{ x: 0, y: 0, via: true, fromLayer: "bottom", toLayer: "inner2" },
{ x: 0, y: 0 }, { x: 0, y: -1.3 }, { x: -0.7, y: -1.3 },
{ x: -0.7, y: -1.3, via: true, fromLayer: "inner2", toLayer: "bottom" },
{ x: -0.7, y: -1.3 }, { x: -0.7, y: -2.2 },
] }), jsx("hole", { name: "MOTOR_M2_LEFT", pcbX: -7.7, pcbY: 7.7, diameter: "2.2mm" }), jsx("hole", { name: "MOTOR_M2_RIGHT", pcbX: 7.7, pcbY: 7.7, diameter: "2.2mm" }), jsx("silkscreentext", { text: "NEMA8 20x20", pcbX: 5.7, pcbY: 6.2, pcbRotation: 90, fontSize: "0.55mm" }), jsx("silkscreentext", { text: "USB-C PD", pcbX: 0, pcbY: -6.2, fontSize: "0.55mm" }), jsx("silkscreentext", { text: "B- B+ A+ A-", pcbX: 0, pcbY: 5.9, fontSize: "0.45mm" }), jsx("silkscreentext", { text: "0.60A MAX", layer: "bottom", pcbX: -5.2, pcbY: -8.7, pcbRotation: 180, fontSize: "0.5mm" })] }));
}
export { Nema8TwentyMillimeterController as default };