AnasSarkiz/usb-c-pd-brushed-motor

USB-C PD-powered motor controller with protected input, selectable 5/9/12 V buck supply, MCU qualification, PWM H-bridge drive, overvoltage sensing, regenerative energy-dump resistors, and safety interlocks.

Version
0.0.1-a48-cloud-pipeline9-unrouted-c41d79a-305b1e7a
License
unset
Stars
0

circuit/product-placement.ts

// A22: board-level numeric millimetre placements; supplier imports unchanged.
export const productPlacement = {
  TP1: {
    x: -28.1,
    y: -3,
    ccwRotationDegrees: 0,
  },
  TP2: {
    x: -28.1,
    y: -7,
    ccwRotationDegrees: 0,
  },
  TP3: {
    x: -19.75,
    y: 3.25,
    ccwRotationDegrees: 90,
  },
  TP4: {
    x: -23,
    y: -12.5,
    ccwRotationDegrees: 0,
  },
  TP5: {
    x: -20,
    y: 18,
    ccwRotationDegrees: 90,
  },
  TP6: {
    x: -20,
    y: 12.5,
    ccwRotationDegrees: 90,
  },
  TP7: {
    x: 20,
    y: 12,
    ccwRotationDegrees: 90,
  },
  C29: {
    x: 25,
    y: 11,
    ccwRotationDegrees: 0,
  },
  C28: {
    x: 28.3,
    y: 5.9,
    ccwRotationDegrees: 270,
  },
  C27: {
    x: 26.0,
    y: 5.9,
    ccwRotationDegrees: 90,
  },
  C26: {
    x: 23.1,
    y: 5.5,
    ccwRotationDegrees: 0,
  },
  C22: {
    x: 7.9,
    y: 13.25,
    ccwRotationDegrees: 0,
  },
  C23: {
    x: -1.15,
    y: 13.5,
    ccwRotationDegrees: 90,
  },
  C34: {
    x: -8.4,
    y: 2,
    ccwRotationDegrees: 0,
  },
  R67: {
    x: -12,
    y: 2,
    ccwRotationDegrees: 0,
  },
  R66: {
    x: -12,
    y: 0,
    ccwRotationDegrees: 180,
  },
  C33: {
    x: -10,
    y: -7.2,
    ccwRotationDegrees: 0,
  },
  R61: {
    x: -10.5,
    y: -4.8,
    ccwRotationDegrees: 0,
  },
  R60: {
    x: -11.5,
    y: -2,
    ccwRotationDegrees: 0,
  },
  C32: {
    x: -12.9,
    y: -4.35,
    ccwRotationDegrees: 90,
  },
  C31: {
    x: -14.2,
    y: -10.7,
    ccwRotationDegrees: 90,
  },
  C30: {
    x: -13.8,
    y: -7,
    ccwRotationDegrees: 0,
  },
  C15: {
    x: -7.2,
    y: -13.75,
    ccwRotationDegrees: 0,
  },
  C12: {
    x: -3.2,
    y: -16,
    ccwRotationDegrees: 270,
  },
  J1: {
    // GCT recommended PCB edge: 7.35 mm in front of the SMT pad row.
    x: -34.7650644,
    y: 4,
    ccwRotationDegrees: -90,
  },
  J2: {
    x: 34,
    y: 8,
    ccwRotationDegrees: 90,
  },
  RV1: {
    x: -9,
    y: 17,
    ccwRotationDegrees: 0,
  },
  SW1: {
    x: 10,
    y: 21,
    ccwRotationDegrees: 0,
  },
  SW2: {
    x: -23,
    y: 24,
    ccwRotationDegrees: 90,
  },
  U1: {
    x: -24.4,
    y: 4.0,
    ccwRotationDegrees: 0,
  },
  U2: {
    x: -32,
    y: 15,
    ccwRotationDegrees: 90,
  },
  U3: {
    x: -25,
    y: 15,
    ccwRotationDegrees: 90,
  },
  U11: {
    x: -20,
    y: -6,
    ccwRotationDegrees: 90,
  },
  U4: {
    x: -22,
    y: -19,
    ccwRotationDegrees: 0,
  },
  U5: {
    x: -8.7,
    y: -19,
    ccwRotationDegrees: 180,
  },
  U6: {
    x: 3,
    y: 9,
    ccwRotationDegrees: 0,
  },
  U8: {
    x: 13,
    y: -3,
    ccwRotationDegrees: 0,
  },
  U9: {
    x: 13,
    y: 5,
    ccwRotationDegrees: 0,
  },
  U10: {
    x: 25,
    y: 0,
    ccwRotationDegrees: 0,
  },
  L1: {
    x: 5.3,
    y: -18.5,
    ccwRotationDegrees: 0,
  },
  C18: {
    x: 25.5,
    y: -14.0,
    ccwRotationDegrees: 0,
  },
  D1: {
    x: -33,
    y: -7,
    ccwRotationDegrees: 90,
  },
  D4: {
    x: -32,
    y: -17,
    ccwRotationDegrees: 90,
  },
  D5: {
    x: -3.7,
    y: -22.5,
    ccwRotationDegrees: 90,
  },
  D10: {
    x: 31,
    y: 18,
    ccwRotationDegrees: 90,
  },
  D11: {
    x: 33,
    y: -3,
    ccwRotationDegrees: 90,
  },
  C13: {
    x: -9.2,
    y: -10.6,
    ccwRotationDegrees: 180,
  },
  C14: {
    x: -13.5,
    y: -19,
    ccwRotationDegrees: 90,
  },
  Q3: {
    x: 35.5,
    y: -15.0,
    ccwRotationDegrees: 180,
  },
  R45: {
    x: 17,
    y: -29,
    ccwRotationDegrees: 0,
  },
  R46: {
    x: 26.5,
    y: -29,
    ccwRotationDegrees: 0,
  },
  R47: {
    x: 17,
    y: -24,
    ccwRotationDegrees: 0,
  },
  R48: {
    x: 26.5,
    y: -24,
    ccwRotationDegrees: 0,
  },
  R69: {
    x: -22.0,
    y: -29.5,
    ccwRotationDegrees: 0,
  },
  R70: {
    x: -12.5,
    y: -29.5,
    ccwRotationDegrees: 0,
  },
  R71: {
    x: -2.0,
    y: -29.5,
    ccwRotationDegrees: 0,
  },
  R72: {
    x: 7.5,
    y: -29.5,
    ccwRotationDegrees: 0,
  },
  LED1: {
    x: 25,
    y: 24,
    ccwRotationDegrees: 0,
  },
  LED2: {
    x: 20,
    y: 24,
    ccwRotationDegrees: 0,
  },
  LED3: {
    x: 20,
    y: 19,
    ccwRotationDegrees: 0,
  },
  C16: {
    x: 15.2,
    y: -16.0,
    ccwRotationDegrees: 0,
  },
  C17: {
    x: 15.2,
    y: -19.5,
    ccwRotationDegrees: 0,
  },
  D2: {
    x: -23.25,
    y: 8.75,
    ccwRotationDegrees: 0,
  },
  Q6: {
    x: 1,
    y: 2,
    ccwRotationDegrees: 0,
  },
  Q7: {
    x: -3.5,
    y: -11.25,
    ccwRotationDegrees: 0,
  },
  Q8: {
    x: -16,
    y: 1,
    ccwRotationDegrees: 0,
  },
  Q1: {
    x: -29,
    y: -24,
    ccwRotationDegrees: 0,
  },
  Q2: {
    x: 35.5,
    y: -11.0,
    ccwRotationDegrees: 0,
  },
  Q4: {
    x: 8,
    y: 2,
    ccwRotationDegrees: 0,
  },
  Q5: {
    x: 5,
    y: -10,
    ccwRotationDegrees: 180,
  },
  R68: {
    x: -4,
    y: -8,
    ccwRotationDegrees: 0,
  },
  D3: {
    x: -17.0,
    y: 6.0,
    ccwRotationDegrees: 270,
  },
  D9: {
    x: 35.0,
    y: -20.0,
    ccwRotationDegrees: 90,
  },
  C1: {
    x: -30,
    y: 19,
    ccwRotationDegrees: 0,
  },
  C6: {
    x: -29.2,
    y: 6.5,
    ccwRotationDegrees: 90,
  },
  C7: {
    x: -29.2,
    y: 1.6,
    ccwRotationDegrees: 270,
  },
  C11: {
    x: -18.0,
    y: -13.8,
    ccwRotationDegrees: 0,
  },
  D6: {
    x: -2,
    y: 9,
    ccwRotationDegrees: 90,
  },
  D7: {
    x: -5,
    y: 9,
    ccwRotationDegrees: 270,
  },
  D8: {
    x: 8,
    y: 7,
    ccwRotationDegrees: 90,
  },
  R1: {
    x: -11,
    y: 6,
    ccwRotationDegrees: 90,
  },
  R2: {
    x: -14.0,
    y: 6.0,
    ccwRotationDegrees: 180,
  },
  R3: {
    x: -13.0,
    y: 8.5,
    ccwRotationDegrees: 90,
  },
  R4: {
    x: -21.0,
    y: 0.0,
    ccwRotationDegrees: 0,
  },
  R56: {
    x: -17.25,
    y: -10.7,
    ccwRotationDegrees: 0,
  },
  R57: {
    x: -8,
    y: -2,
    ccwRotationDegrees: 90,
  },
  R58: {
    x: -24,
    y: 19,
    ccwRotationDegrees: 0,
  },
  R59: {
    x: -8,
    y: 6,
    ccwRotationDegrees: 90,
  },
  R62: {
    x: -28,
    y: -14,
    ccwRotationDegrees: 0,
  },
  R63: {
    x: -5,
    y: -3,
    ccwRotationDegrees: 90,
  },
  R64: {
    x: -5,
    y: 1,
    ccwRotationDegrees: 90,
  },
  R5: {
    x: -32,
    y: -12,
    ccwRotationDegrees: 180,
  },
  R6: {
    x: -25,
    y: -24,
    ccwRotationDegrees: 180,
  },
  R7: {
    x: -28.3,
    y: -18.65,
    ccwRotationDegrees: 180,
  },
  R8: {
    x: -32.0,
    y: -22.75,
    ccwRotationDegrees: 270,
  },
  R9: {
    x: -30.25,
    y: -27.75,
    ccwRotationDegrees: 90,
  },
  R10: {
    x: -28,
    y: -28,
    ccwRotationDegrees: 270,
  },
  R11: {
    x: -36,
    y: -22,
    ccwRotationDegrees: 180,
  },
  R12: {
    x: -36,
    y: -19,
    ccwRotationDegrees: 0,
  },
  R13: {
    x: -35,
    y: -16,
    ccwRotationDegrees: 270,
  },
  R16: {
    x: -2,
    y: -4,
    ccwRotationDegrees: 270,
  },
  R17: {
    x: -13.45,
    y: -14.3,
    ccwRotationDegrees: 180,
  },
  R18: {
    x: -16.7,
    y: -17.0,
    ccwRotationDegrees: 270,
  },
  R55: {
    x: -16.7,
    y: -20.6,
    ccwRotationDegrees: 270,
  },
  R19: {
    x: -17.05,
    y: -24.0,
    ccwRotationDegrees: 180,
  },
  R20: {
    x: -20.05,
    y: -25.4,
    ccwRotationDegrees: 270,
  },
  R21: {
    x: -16.1,
    y: -26.1,
    ccwRotationDegrees: 180,
  },
  R22: {
    x: -9.5,
    y: -24.95,
    ccwRotationDegrees: 270,
  },
  R23: {
    x: 9,
    y: -2,
    ccwRotationDegrees: 270,
  },
  R24: {
    x: 11,
    y: -7,
    ccwRotationDegrees: 270,
  },
  R25: {
    x: -8,
    y: 10,
    ccwRotationDegrees: 90,
  },
  R26: {
    x: -4,
    y: 5,
    ccwRotationDegrees: 0,
  },
  R29: {
    x: 12,
    y: 13,
    ccwRotationDegrees: 0,
  },
  R30: {
    x: 16,
    y: 13,
    ccwRotationDegrees: 0,
  },
  R31: {
    x: 13,
    y: 0,
    ccwRotationDegrees: 0,
  },
  R32: {
    x: 17,
    y: -1,
    ccwRotationDegrees: 90,
  },
  R33: {
    x: 18,
    y: 2,
    ccwRotationDegrees: 180,
  },
  R34: {
    x: 8,
    y: 11,
    ccwRotationDegrees: 0,
  },
  R39: {
    x: 18,
    y: 5,
    ccwRotationDegrees: 180,
  },
  R65: {
    x: 18,
    y: 8,
    ccwRotationDegrees: 0,
  },
  R40: {
    x: 22,
    y: 8,
    ccwRotationDegrees: 0,
  },
  R51: {
    x: 20,
    y: -1,
    ccwRotationDegrees: 270,
  },
  R41: {
    x: 28,
    y: -7,
    ccwRotationDegrees: 180,
  },
  R42: {
    x: 24,
    y: -7,
    ccwRotationDegrees: 180,
  },
  R43: {
    x: 20,
    y: -7,
    ccwRotationDegrees: 180,
  },
  R44: {
    x: 16,
    y: -7,
    ccwRotationDegrees: 0,
  },
  R49: {
    x: 14,
    y: -10,
    ccwRotationDegrees: 270,
  },
  C2: {
    x: -36.25,
    y: 14.0,
    ccwRotationDegrees: 90,
  },
  C3: {
    x: -26.25,
    y: 8.5,
    ccwRotationDegrees: 270,
  },
  C4: {
    x: -28.6,
    y: 11.5,
    ccwRotationDegrees: 0,
  },
  C5: {
    x: -23.25,
    y: 11.75,
    ccwRotationDegrees: 180,
  },
  C8: {
    x: -25.2,
    y: -0.2,
    ccwRotationDegrees: 0,
  },
  C9: {
    x: -28.05,
    y: -21.0,
    ccwRotationDegrees: 180,
  },
  C10: {
    x: -28.0,
    y: -16.2,
    ccwRotationDegrees: 180,
  },
  C19: {
    x: -12.35,
    y: -25.05,
    ccwRotationDegrees: 180,
  },
  C20: {
    x: -13.3,
    y: -22.8,
    ccwRotationDegrees: 180,
  },
  C21: {
    x: 4.9,
    y: 14.65,
    ccwRotationDegrees: 90,
  },
  C25: {
    x: 11.5,
    y: 9.95,
    ccwRotationDegrees: 180,
  },
  R50: {
    x: 29,
    y: 0,
    ccwRotationDegrees: 270,
  },
  R54: {
    x: 25,
    y: 29,
    ccwRotationDegrees: 270,
  },
}

export const pcbPlacements = Object.entries(productPlacement).map(
  ([selector, placement]) => ({
    selector,
    center: { x: placement.x, y: placement.y },
  }),
)