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/EnergyDump.tsx

import { productPlacement } from "./product-placement"
import { AO3400A } from "../imports/AO3400A"
import { BZT52C10 } from "../imports/BZT52C10"
import { A_0603WAF1001T5E } from "../imports/A_0603WAF1001T5E"
import { RPL_12K10R0FT } from "../imports/RPL_12K10R0FT"
import { MMBT3906LT1G } from "../imports/MMBT3906LT1G"
import { MMBT3904 } from "../imports/MMBT3904"
import { CRCW060310K0FKEA } from "../imports/CRCW060310K0FKEA"

export function EnergyDump() {
  return (
    <>
      {/* Dump MOSFET gate driver */}
      <MMBT3906LT1G
        name="Q2"
        pcbRotation={productPlacement.Q2.ccwRotationDegrees}
        schSheetName="dump"
        schX={-11.0}
        schY={8}
        connections={{
          B: "net.DUMP_BASE",
          E: "net.VM",
          C: "net.DUMP_DRIVE",
        }}
      />
      <schematictext
        text="Q2 · MMBT3906"
        schX={-10.2}
        schY={7.35}
        fontSize={0.15}
        anchor="bottom_left"
      />
      {/* PNP default off */}
      <CRCW060310K0FKEA
        name="R41"
        pcbRotation={productPlacement.R41.ccwRotationDegrees}
        schSheetName="dump"
        schX={-5.5}
        schY={8}
        schRotation={-90.0}
        connections={{
          pin1: "net.VM",
          pin2: "net.DUMP_BASE",
        }}
      />
      {/* Comparator sink-current limit */}
      <CRCW060310K0FKEA
        name="R42"
        pcbRotation={productPlacement.R42.ccwRotationDegrees}
        schSheetName="dump"
        schX={0.0}
        schY={8}
        connections={{
          pin1: "net.DUMP_BASE",
          pin2: "net.OV_ACTIVE_N",
        }}
      />
      {/* Dump gate slew and zener-current limit */}
      <A_0603WAF1001T5E
        name="R43"
        pcbRotation={productPlacement.R43.ccwRotationDegrees}
        schSheetName="dump"
        schX={5.5}
        schY={8}
        connections={{
          pin1: "net.DUMP_DRIVE",
          pin2: "net.DUMP_GATE",
        }}
      />
      {/* Dump gate default low */}
      <CRCW060310K0FKEA
        name="R44"
        pcbRotation={productPlacement.R44.ccwRotationDegrees}
        schSheetName="dump"
        schX={11.0}
        schY={8}
        schRotation={-90.0}
        connections={{
          pin1: "net.DUMP_GATE",
          pin2: "net.GND",
        }}
      />
      {/* 10 V gate protection */}
      <BZT52C10
        name="D9"
        pcbRotation={productPlacement.D9.ccwRotationDegrees}
        schSheetName="dump"
        schX={-11.0}
        schY={4}
        schRotation={90.0}
        connections={{
          cathode: "net.DUMP_GATE",
          anode: "net.GND",
        }}
      />
      {/* Switched regenerative energy dump */}
      <AO3400A
        name="Q3"
        pcbRotation={productPlacement.Q3.ccwRotationDegrees}
        schSheetName="dump"
        schX={-5.5}
        schY={4}
        connections={{
          G: "net.DUMP_GATE",
          S: "net.GND",
          D: "net.DUMP_LOAD",
        }}
      />
      <schematictext
        text="Q3 · AO3400A"
        schX={-4.6}
        schY={3.35}
        fontSize={0.15}
        anchor="bottom_left"
      />
      {/* 10 ohm/2 W; four 20 ohm parallel branches */}
      <RPL_12K10R0FT
        name="R45"
        pcbRotation={productPlacement.R45.ccwRotationDegrees}
        schSheetName="dump"
        schX={0.0}
        schY={4}
        schRotation={-90.0}
        connections={{
          pin1: "net.VM",
          pin2: "net.DUMP_MID_A",
        }}
      />
      {/* 10 ohm/2 W; four 20 ohm parallel branches */}
      <RPL_12K10R0FT
        name="R46"
        pcbRotation={productPlacement.R46.ccwRotationDegrees}
        schSheetName="dump"
        schX={5.5}
        schY={4}
        schRotation={-90}
        connections={{
          pin1: "net.DUMP_MID_A",
          pin2: "net.DUMP_LOAD",
        }}
      />
      {/* 10 ohm/2 W; four 20 ohm parallel branches */}
      <RPL_12K10R0FT
        name="R47"
        pcbRotation={productPlacement.R47.ccwRotationDegrees}
        schSheetName="dump"
        schX={11.0}
        schY={4}
        schRotation={-90.0}
        connections={{
          pin1: "net.VM",
          pin2: "net.DUMP_MID_B",
        }}
      />
      {/* 10 ohm/2 W; four 20 ohm parallel branches */}
      <RPL_12K10R0FT
        name="R48"
        pcbRotation={productPlacement.R48.ccwRotationDegrees}
        schSheetName="dump"
        schX={-11.0}
        schY={0}
        schRotation={-90}
        connections={{
          pin1: "net.DUMP_MID_B",
          pin2: "net.DUMP_LOAD",
        }}
      />
      {/* 10 ohm/2 W; four 20 ohm parallel dump branches */}
      <RPL_12K10R0FT
        name="R69"
        pcbRotation={productPlacement.R69.ccwRotationDegrees}
        schSheetName="dump"
        schX={-11}
        schY={-4}
        schRotation={-90}
        connections={{ pin1: "net.VM", pin2: "net.DUMP_MID_C" }}
      />
      {/* 10 ohm/2 W; four 20 ohm parallel dump branches */}
      <RPL_12K10R0FT
        name="R70"
        pcbRotation={productPlacement.R70.ccwRotationDegrees}
        schSheetName="dump"
        schX={-5.5}
        schY={-4}
        schRotation={-90}
        connections={{ pin1: "net.DUMP_MID_C", pin2: "net.DUMP_LOAD" }}
      />
      {/* 10 ohm/2 W; four 20 ohm parallel dump branches */}
      <RPL_12K10R0FT
        name="R71"
        pcbRotation={productPlacement.R71.ccwRotationDegrees}
        schSheetName="dump"
        schX={0}
        schY={-4}
        schRotation={-90}
        connections={{ pin1: "net.VM", pin2: "net.DUMP_MID_D" }}
      />
      {/* 10 ohm/2 W; four 20 ohm parallel dump branches */}
      <RPL_12K10R0FT
        name="R72"
        pcbRotation={productPlacement.R72.ccwRotationDegrees}
        schSheetName="dump"
        schX={5.5}
        schY={-4}
        schRotation={-90}
        connections={{ pin1: "net.DUMP_MID_D", pin2: "net.DUMP_LOAD" }}
      />
      {/* Disable bridge while energy clamp conducts */}
      <MMBT3904
        name="Q4"
        pcbRotation={productPlacement.Q4.ccwRotationDegrees}
        schSheetName="dump"
        schX={-5.5}
        schY={0}
        connections={{
          B: "net.OV_INHIBIT",
          E: "net.GND",
          C: "net.MOTOR_READY",
        }}
      />
      <schematictext
        text="Q4 · MMBT3904"
        schX={-4.6}
        schY={-0.65}
        fontSize={0.15}
        anchor="bottom_left"
      />
      {/* OV inhibit base-current limit */}
      <CRCW060310K0FKEA
        name="R49"
        pcbRotation={productPlacement.R49.ccwRotationDegrees}
        schSheetName="dump"
        schX={0.0}
        schY={0}
        connections={{
          pin1: "net.DUMP_GATE",
          pin2: "net.OV_INHIBIT",
        }}
      />
      {/* Disable buck during motor overvoltage */}
      <MMBT3904
        name="Q5"
        pcbRotation={productPlacement.Q5.ccwRotationDegrees}
        schSheetName="dump"
        schX={5.5}
        schY={0}
        connections={{
          B: "net.OV_INHIBIT",
          E: "net.GND",
          C: "net.BUCK_EN",
        }}
      />
      <schematictext
        text="Q5 · MMBT3904"
        schX={6.3}
        schY={-0.65}
        fontSize={0.15}
        anchor="bottom_left"
      />
    </>
  )
}