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)),
  };
}