imrishabh18/rp2040-motor-controller
An RP2040-based NEMA17 stepper-motor controller with USB-C programming and PD motor-power negotiation, DRV8825 dual H-bridge drive, current/temperature telemetry, protected power filtering, status RGB LED, buzzer alarm, and optional magnetic encoder.
- Version
- 1.0.42
- License
- unset
- Stars
- 3
tests/helpers/checkJlcClearances.ts
import {
checkEachPcbTraceNonOverlapping,
checkPadPadClearance,
checkPadTraceClearance,
checkViaPadClearance,
checkViaTraceClearance,
} from "@tscircuit/checks";
import type { CircuitJson } from "circuit-json";
import rules from "../../engineering/jlcpcb-clearance-rules.json";
/** Explicit rules avoid silently inheriting a checker's lower defaults. */
export function checkJlcClearances(json: CircuitJson) {
const min = rules.minimumMm;
const powerSources = new Set(json.flatMap(e =>
e.type === "source_trace" && (e.min_trace_thickness ?? 0) >= 0.5
? [e.source_trace_id] : []));
const powerRoutes = new Set(json.flatMap(e =>
e.type === "pcb_trace" && powerSources.has(e.source_trace_id ?? "")
? [e.pcb_trace_id] : []));
return {
padToPad: checkPadPadClearance(json, { minClearance: min.padToPad }),
padToTrace: checkPadTraceClearance(json, { minClearance: min.padToTrace }),
traceToTrace: checkEachPcbTraceNonOverlapping(json, { minClearance: min.traceToTrace }),
viaToPad: checkViaPadClearance(json, { minClearance: min.viaToPad }),
viaToTrace: checkViaTraceClearance(json, { minClearance: min.viaToTrace }),
motorPowerToPad: checkPadTraceClearance(json, { minClearance: min.motorPowerToPad })
.filter(e => powerRoutes.has(e.pcb_trace_id)),
};
}
