tscircuit/ti

ti tscircuit library

Version
1.0.192
License
unset
Stars
0

lib/subcircuits/PowerSupply_LM5050_TIDA00992.circuit.tsx

import type { SubcircuitProps } from "@tscircuit/props";
import "tscircuit";
import { CSD19532Q5B } from "../chips/CSD19532Q5B.circuit.tsx";
import { LM5050Q1MKX_1_NOPB } from "../chips/LM5050Q1MKX_1_NOPB.circuit.tsx";
import { NTR5198NLT1G } from "../chips/NTR5198NLT1G.circuit.tsx";

const bidirectionalTvsSymbol = (
  <symbol>
    <port
      name="pin2"
      pinNumber={2}
      schX={0}
      schY={0.72}
      direction="up"
      schStemLength={0.48}
    />
    <schematicpath
      points={[
        { x: -0.24, y: 0.24 },
        { x: 0.24, y: 0.24 },
        { x: 0, y: 0.04 },
        { x: -0.24, y: 0.24 },
      ]}
      strokeWidth={0.025}
      strokeColor="#840000"
      fillColor="#840000"
      isFilled
    />
    <schematicpath
      points={[
        { x: 0.24, y: -0.24 },
        { x: 0, y: -0.04 },
        { x: -0.24, y: -0.24 },
        { x: 0.24, y: -0.24 },
      ]}
      strokeWidth={0.025}
      strokeColor="#840000"
      fillColor="#840000"
      isFilled
    />
    <schematicpath
      points={[
        { x: -0.24, y: -0.12 },
        { x: -0.13, y: 0.04 },
        { x: 0.17, y: 0.04 },
      ]}
      strokeWidth={0.035}
      strokeColor="#840000"
    />
    <schematicpath
      points={[
        { x: 0.13, y: -0.04 },
        { x: 0.24, y: 0.12 },
      ]}
      strokeWidth={0.035}
      strokeColor="#840000"
    />
    <port
      name="pin1"
      pinNumber={1}
      schX={0}
      schY={-0.72}
      direction="down"
      schStemLength={0.48}
    />
    <schematictext
      text="{NAME}"
      schX={0.12}
      schY={-0.5}
      fontSize={0.18}
      anchor="left"
    />
  </symbol>
);

const singlePinTerminalSymbol = (facing: "left" | "right") => {
  const terminalX = facing === "right" ? 0.65 : -0.65;
  const bodyEdgeX = facing === "right" ? 0.3 : -0.3;

  return (
    <symbol>
      <schematicrect
        schX={0}
        schY={0}
        width={0.6}
        height={0.6}
        strokeWidth={0.02}
        color="#840000"
      />
      <schematiccircle
        center={{ x: 0, y: 0 }}
        radius={0.19}
        strokeWidth={0.02}
        color="#840000"
      />
      <schematicline
        x1={-0.13}
        y1={0}
        x2={0.13}
        y2={0}
        strokeWidth={0.02}
        color="#840000"
      />
      <schematicline
        x1={0}
        y1={-0.13}
        x2={0}
        y2={0.13}
        strokeWidth={0.02}
        color="#840000"
      />
      <schematicline
        x1={bodyEdgeX}
        y1={0}
        x2={terminalX}
        y2={0}
        strokeWidth={0.02}
        color="#840000"
      />
      <port
        name="pin1"
        pinNumber={1}
        schX={terminalX}
        schY={0}
        direction={facing}
        schStemLength={0}
      />
      <schematictext
        text="{NAME}"
        schX={-0.28}
        schY={0.37}
        fontSize={0.18}
        anchor="bottom_left"
      />
    </symbol>
  );
};

const twoPinHeaderSymbol = (
  <symbol>
    <schematicrect
      schX={0}
      schY={0}
      width={0.62}
      height={0.72}
      strokeWidth={0.02}
      color="#840000"
    />
    <schematiccircle
      center={{ x: 0, y: 0.18 }}
      radius={0.08}
      strokeWidth={0.02}
      color="#840000"
      isFilled
      fillColor="#840000"
    />
    <schematicrect
      schX={0}
      schY={-0.18}
      width={0.16}
      height={0.16}
      strokeWidth={0.02}
      color="#840000"
      isFilled
      fillColor="#840000"
    />
    <schematicline
      x1={0.31}
      y1={0.18}
      x2={0.65}
      y2={0.18}
      strokeWidth={0.02}
      color="#840000"
    />
    <schematicline
      x1={0.31}
      y1={-0.18}
      x2={0.65}
      y2={-0.18}
      strokeWidth={0.02}
      color="#840000"
    />
    <port
      name="pin1"
      pinNumber={1}
      schX={0.65}
      schY={0.18}
      direction="right"
      schStemLength={0}
    />
    <port
      name="pin2"
      pinNumber={2}
      schX={0.65}
      schY={-0.18}
      direction="right"
      schStemLength={0}
    />
    <schematictext
      text="{NAME}"
      schX={-0.28}
      schY={0.43}
      fontSize={0.18}
      anchor="bottom_left"
    />
  </symbol>
);

const terminalFootprint = () => (
  <footprint insertionDirection="from_above">
    <platedhole
      portHints={["pin1"]}
      pcbX="0mm"
      pcbY="0mm"
      shape="circle"
      holeDiameter="3.6mm"
      outerDiameter="5.1mm"
    />
  </footprint>
);

const twoPinHeaderFootprint = (
  <footprint insertionDirection="from_above">
    <platedhole
      portHints={["pin1"]}
      pcbX="0mm"
      pcbY="1.27mm"
      shape="circle"
      holeDiameter="1mm"
      outerDiameter="1.8mm"
    />
    <platedhole
      portHints={["pin2"]}
      pcbX="0mm"
      pcbY="-1.27mm"
      shape="circle"
      holeDiameter="1mm"
      outerDiameter="1.8mm"
    />
  </footprint>
);

/** TIDA-00992 automotive reverse-polarity protection reference schematic. */
export const PowerSupply_LM5050_TIDA00992 = (props: SubcircuitProps) => (
  <subcircuit width="42mm" height="30mm" schMaxTraceDistance="6mm" {...props}>
    <net name="GND" isGroundNet />
    <net name="VBATT" isPowerNet />
    <net name="V_OUT" />
    <net name="ENABLE" />
    <autoroutingphase name="C3 decoupling" phaseIndex={0} />

    <CSD19532Q5B
      name="Q1"
      internallyConnectedPins={[
        [1, 2, 3],
        [5, 6, 7, 8, 9],
      ]}
      schX={2.8}
      schY={4.05}
      pcbX={0}
      pcbY={8}
      pcbRotation={90}
      symbol={
        <symbol>
          <schematicpath
            points={[
              { x: -0.1, y: -0.42 },
              { x: -0.11, y: 0.05 },
            ]}
            strokeColor="#880000"
            strokeWidth={0.02}
          />
          <schematicpath
            points={[
              { x: 0.55, y: 0.3 },
              { x: 0.11, y: 0.3 },
            ]}
            strokeColor="#880000"
            strokeWidth={0.02}
          />
          <schematicpath
            points={[
              { x: -0.55, y: 0.31 },
              { x: -0.01, y: 0.31 },
            ]}
            strokeColor="#880000"
            strokeWidth={0.02}
          />
          <schematicpath
            points={[
              { x: 0.11, y: 0.09 },
              { x: 0.11, y: 0.31 },
            ]}
            strokeColor="#880000"
            strokeWidth={0.02}
          />
          <schematicpath
            points={[
              { x: 0.15, y: 0.09 },
              { x: 0.07, y: 0.09 },
            ]}
            strokeColor="#880000"
            strokeWidth={0.02}
          />
          <schematicpath
            points={[
              { x: -0.1, y: 0.09 },
              { x: -0.1, y: 0.31 },
            ]}
            strokeColor="#880000"
            strokeWidth={0.02}
          />
          <schematicpath
            points={[
              { x: -0.08, y: 0.09 },
              { x: -0.15, y: 0.09 },
            ]}
            strokeColor="#880000"
            strokeWidth={0.02}
          />
          <schematicpath
            points={[
              { x: 0.03, y: 0.09 },
              { x: -0.04, y: 0.09 },
            ]}
            strokeColor="#880000"
            strokeWidth={0.02}
          />
          <schematicpath
            points={[
              { x: -0.04, y: 0.27 },
              { x: 0.03, y: 0.27 },
              { x: 0, y: 0.2 },
              { x: -0.04, y: 0.27 },
            ]}
            strokeColor="#880000"
            strokeWidth={0.02}
            fillColor="#880000"
            isFilled
          />
          <schematicpath
            points={[
              { x: 0, y: 0.09 },
              { x: -0.01, y: 0.31 },
            ]}
            strokeColor="#880000"
            strokeWidth={0.02}
          />
          <schematicpath
            points={[
              { x: 0.11, y: 0.05 },
              { x: -0.11, y: 0.05 },
            ]}
            strokeColor="#880000"
            strokeWidth={0.02}
          />
          <port
            name="pin1"
            pinNumber={1}
            aliases={["S3"]}
            direction="left"
            schX={-0.55}
            schY={0.31}
            schStemLength={0}
          />
          <port
            name="pin2"
            pinNumber={2}
            aliases={["S2"]}
            direction="left"
            schX={-0.55}
            schY={0.31}
            schStemLength={0}
          />
          <port
            name="pin3"
            pinNumber={3}
            aliases={["S1"]}
            direction="left"
            schX={-0.55}
            schY={0.31}
            schStemLength={0}
          />
          <port
            name="pin4"
            pinNumber={4}
            aliases={["G"]}
            direction="down"
            schX={-0.1}
            schY={-0.42}
            schStemLength={0}
          />
          <port
            name="pin5"
            pinNumber={5}
            aliases={["D5"]}
            direction="right"
            schX={0.55}
            schY={0.3}
            schStemLength={0}
          />
          <port
            name="pin6"
            pinNumber={6}
            aliases={["D4"]}
            direction="right"
            schX={0.55}
            schY={0.3}
            schStemLength={0}
          />
          <port
            name="pin7"
            pinNumber={7}
            aliases={["D3"]}
            direction="right"
            schX={0.55}
            schY={0.3}
            schStemLength={0}
          />
          <port
            name="pin8"
            pinNumber={8}
            aliases={["D2"]}
            direction="right"
            schX={0.55}
            schY={0.3}
            schStemLength={0}
          />
          <port
            name="pin9"
            pinNumber={9}
            aliases={["D1"]}
            direction="right"
            schX={0.55}
            schY={0.3}
            schStemLength={0}
          />
        </symbol>
      }
    />
    <schematictext schX={3.28} schY={4.45} text="Q1" fontSize={0.18} />
    <schematictext schX={2.8} schY={4.8} text="100V" fontSize={0.22} />
    <schematictext schX={1.9} schY={3.82} text="1,2,3" fontSize={0.18} />
    <schematictext schX={3.63} schY={3.82} text="7,8" fontSize={0.18} />
    <schematictext schX={3.18} schY={3.5} text="5,6," fontSize={0.18} />

    <LM5050Q1MKX_1_NOPB
      name="U1"
      schX={2.4}
      schY={1.45}
      pcbX={0}
      pcbY={1.5}
      schWidth={2.3}
      schHeight={2.7}
      schPinArrangement={{
        leftSide: {
          direction: "top-to-bottom",
          pins: [1, 4, 3],
        },
        rightSide: {
          direction: "top-to-bottom",
          pins: [5, 6, 2],
        },
      }}
      schPinStyle={{
        pin1: { marginBottom: 0.55 },
        pin4: { marginBottom: 0.55 },
        pin5: { marginBottom: 0.55 },
        pin6: { marginBottom: 0.55 },
      }}
    />

    <NTR5198NLT1G
      name="Q2"
      schX={2.75}
      schY={-2.9}
      pcbX={5.4}
      pcbY={0.869}
      pcbRotation={90}
    />
    <schematictext schX={3.38} schY={-2.98} text="60V" fontSize={0.22} />

    <connector
      name="J1"
      pinCount={1}
      manufacturerPartNumber="7693"
      symbol={singlePinTerminalSymbol("right")}
      footprint={terminalFootprint()}
      schX={-8.85}
      schY={4.1}
      pcbX={-16.8}
      pcbY={11}
    />
    <connector
      name="J2"
      pinCount={1}
      manufacturerPartNumber="7693"
      symbol={singlePinTerminalSymbol("left")}
      footprint={terminalFootprint()}
      schX={8.7}
      schY={4.1}
      pcbX={16.8}
      pcbY={11}
    />
    <connector
      name="J3"
      pinCount={1}
      manufacturerPartNumber="7693"
      symbol={singlePinTerminalSymbol("right")}
      footprint={terminalFootprint()}
      schX={-8.85}
      schY={0.5}
      pcbX={-16.8}
      pcbY={-11}
    />
    <connector
      name="J4"
      pinCount={1}
      manufacturerPartNumber="7693"
      symbol={singlePinTerminalSymbol("left")}
      footprint={terminalFootprint()}
      schX={8.7}
      schY={0}
      pcbX={16.8}
      pcbY={-11}
    />
    <connector
      name="J5"
      pinCount={2}
      manufacturerPartNumber="HTSW-102-07-G-S"
      symbol={twoPinHeaderSymbol}
      footprint={twoPinHeaderFootprint}
      schX={-8}
      schY={-3.15}
      pcbX={-2.05}
      pcbY={-5.81}
    />

    <testpoint
      name="TP1"
      symbolName="testpoint_up"
      manufacturerPartNumber="5000"
      footprintVariant="through_hole"
      holeDiameter="1mm"
      padDiameter="1.8mm"
      schX={0.75}
      schY={3.4}
      pcbX={5.85}
      pcbY={-5.81}
    />
    <testpoint
      name="TP2"
      symbolName="testpoint_up"
      manufacturerPartNumber="5000"
      footprintVariant="through_hole"
      holeDiameter="1mm"
      padDiameter="1.8mm"
      schX={4.85}
      schY={3.4}
      pcbX={-7}
      pcbY={4.5}
    />
    <testpoint
      name="TP3"
      symbolName="testpoint_up"
      manufacturerPartNumber="5004"
      footprintVariant="through_hole"
      holeDiameter="1mm"
      padDiameter="1.8mm"
      schX={0.2}
      schY={2.65}
      pcbX={10.34}
      pcbY={-0.68}
    />
    <testpoint
      name="TP4"
      symbolName="testpoint_up"
      manufacturerPartNumber="5004"
      footprintVariant="through_hole"
      holeDiameter="1mm"
      padDiameter="1.8mm"
      schX={-2.25}
      schY={-2.65}
      pcbX={-11}
      pcbY={-4.57}
    />

    <capacitor
      name="C1"
      capacitance="0.1uF"
      footprint="1206"
      manufacturerPartNumber="VJ1206Y104KBBAT4X"
      schX={-8.1}
      schY={2.95}
      pcbX={-13}
      pcbY={6}
      pcbRotation={90}
      schOrientation="vertical"
    />
    <capacitor
      name="C2"
      capacitance="0.1uF"
      footprint="1206"
      manufacturerPartNumber="VJ1206Y104KBBAT4X"
      schX={-7.15}
      schY={1.8}
      pcbX={-13}
      pcbY={-6}
      pcbRotation={90}
      schOrientation="horizontal"
    />
    <capacitor
      name="C3"
      capacitance="0.1uF"
      footprint="0603"
      manufacturerPartNumber="GRM188R72A104KA35J"
      maxDecouplingTraceLength="6mm"
      schX={-3.2}
      schY={0.75}
      pcbX={2.915}
      pcbY={1.025}
      pcbRotation={90}
      schOrientation="vertical"
    />
    <capacitor
      name="C4"
      capacitance="4.7uF"
      footprint="1210"
      manufacturerPartNumber="GRM32ER71K475KE14L"
      schX={7.4}
      schY={0.4}
      pcbX={13}
      pcbY={1}
      pcbRotation={90}
      schOrientation="vertical"
    />

    <diode
      name="D1"
      tvs
      symbol={bidirectionalTvsSymbol}
      footprint="smc"
      manufacturerPartNumber="1.5SMC33CA-E3/57T"
      schX={-5.55}
      schY={1.93}
      pcbX={-9}
      pcbY={0}
      schOrientation="vertical"
    />
    <diode
      name="D2"
      symbolName="schottky_diode"
      footprint="sod323"
      manufacturerPartNumber="BAS 170W E6327"
      schX={-2.45}
      schY={0.25}
      pcbX={-8.5}
      pcbY={-4.5}
      schOrientation="neg_top"
    />
    <led
      name="D3"
      color="green"
      schDisplayValue="Green"
      footprint="0603"
      manufacturerPartNumber="LNJ337W83RA"
      schX={-0.33}
      schY={-0.24}
      pcbX={8}
      pcbY={-4}
      pcbRotation={90}
      schOrientation="pos_top"
    />
    <diode
      name="D4"
      symbolName="schottky_diode"
      footprint="sod323"
      manufacturerPartNumber="PMEG6010CEJ,115"
      schX={2.75}
      schY={-1.65}
      pcbX={1}
      pcbY={-4.5}
      schOrientation="pos_top"
    />
    <diode
      name="D5"
      symbolName="zener_diode"
      footprint="sod323"
      manufacturerPartNumber="BZT52C9V1S-7-F"
      schX={1.6}
      schY={-3.85}
      pcbX={-2.5}
      pcbY={-9.7}
      schOrientation="neg_top"
    />

    <schematictext
      schX={-5.12}
      schY={2.15}
      text="28.2V"
      fontSize={0.22}
      anchor="center_left"
    />
    <schematictext
      schX={-2.02}
      schY={-0.13}
      text="70V"
      fontSize={0.22}
      anchor="center_left"
    />
    <schematictext
      schX={3.18}
      schY={-1.73}
      text="60V"
      fontSize={0.22}
      anchor="center_left"
    />
    <schematictext
      schX={1.15}
      schY={-3.75}
      text="9.1V"
      fontSize={0.22}
      anchor="center_right"
    />

    <resistor
      name="R1"
      resistance="10kohm"
      footprint="0402"
      manufacturerPartNumber="CRCW040210K0FKED"
      schX={6.0}
      schY={1.75}
      pcbX={8.8}
      pcbY={3}
      schRotation={90}
    />
    <resistor
      name="R2"
      resistance="10kohm"
      footprint="0402"
      manufacturerPartNumber="CRCW040210K0FKED"
      schX={-0.88}
      schY={0.97}
      pcbX={10}
      pcbY={-4}
      pcbRotation={270}
      schRotation={90}
    />
    <resistor
      name="R3"
      resistance="20kohm"
      footprint="0603"
      manufacturerPartNumber="RG1608P-203-B-T5"
      schX={-3.55}
      schY={-2.9}
      pcbX={-7}
      pcbY={-10.5}
    />
    <resistor
      name="R4"
      resistance="10kohm"
      footprint="0402"
      manufacturerPartNumber="CRCW040210K0FKED"
      schX={-2.15}
      schY={-3.6}
      pcbX={-5.5}
      pcbY={-8}
      schRotation={90}
    />

    <schematictext
      schX={-7.4}
      schY={-1.88}
      text="Open = Diable LM5050-Q1"
      fontSize={0.22}
      anchor="center_right"
    />
    <schematictext
      schX={-7.4}
      schY={-2.16}
      text="Close = Enable LM5050-Q1"
      fontSize={0.22}
      anchor="center_right"
    />

    {/* Input and output rails from the reference schematic. */}
    <trace from=".J1 > .pin1" to=".C1 > .pin1" />
    <trace from=".C1 > .pin1" to=".D1 > .pin2" />
    <trace from=".D1 > .pin2" to=".D2 > .cathode" />
    <trace from=".D2 > .cathode" to=".R2 > .pin2" />
    <trace from=".D2 > .cathode" to=".U1 > .IN" />
    <trace from=".U1 > .IN" to=".Q1 > .pin1" />

    <trace from=".Q1 > .pin5" to=".J2 > .pin1" />
    <trace from=".Q1 > .pin5" to=".U1 > .OUT" />
    <trace from=".U1 > .OUT" to=".R1 > .pin1" />
    <trace from=".R1 > .pin1" to=".C4 > .pin1" />
    <trace from=".C4 > .pin1" to="net.V_OUT" schDisplayLabel="V_OUT" />

    {/* Input transient protection and series capacitors. */}
    <trace from=".C1 > .pin2" to=".C2 > .pin2" />
    <trace from=".J3 > .pin1" to=".C2 > .pin1" />
    <trace from=".C2 > .pin1" to=".D1 > .pin1" />
    <trace from=".D1 > .pin1" to="net.GND" schDisplayLabel="GND" />

    {/* VS bypass and MOSFET gate drive. */}
    <trace from=".U1 > .VS" to=".C3 > .pin1" routingPhaseIndex={0} />
    <trace from=".C3 > .pin1" to=".R1 > .pin2" maxLength="14mm" />
    <trace from=".U1 > .GATE" to=".Q1 > .pin4" />
    <trace from=".TP1 > .pin1" to=".U1 > .VS" />
    <trace from=".TP2 > .pin1" to=".U1 > .GATE" />
    <trace from=".TP3 > .pin1" to=".U1 > .OFF" />

    {/* Switched controller-ground network. */}
    <trace from=".R2 > .pin1" to=".D3 > .anode" />
    <trace from=".D2 > .anode" to=".D3 > .cathode" />
    <trace from=".D3 > .cathode" to=".U1 > .GND" />
    <trace from=".U1 > .GND" to=".D4 > .anode" />
    <trace from=".D4 > .cathode" to=".Q2 > .D" />

    {/* Functional enable input and Q2 gate clamp. */}
    <trace from=".J5 > .pin1" to=".R3 > .pin1" />
    <trace from=".J5 > .pin2" to="net.V_OUT" schDisplayLabel="V_OUT" />
    <trace from=".TP4 > .pin1" to=".R3 > .pin2" />
    <trace from=".R3 > .pin2" to=".Q2 > .G" />
    <trace from=".Q2 > .G" to=".R4 > .pin2" />
    <trace from=".Q2 > .G" to=".D5 > .cathode" />
    <trace from=".R4 > .pin1" to=".D5 > .anode" />
    <trace from=".D5 > .anode" to=".Q2 > .S" />
    <trace from=".Q2 > .S" to=".C4 > .pin2" />
    <trace from=".C4 > .pin2" to=".J4 > .pin1" />
    <trace from=".C4 > .pin2" to="net.GND" schDisplayLabel="GND" />
    <trace
      from=".C3 > .pin2"
      to="net.GND"
      schDisplayLabel="GND"
      routingPhaseIndex={0}
    />
  </subcircuit>
);

export default PowerSupply_LM5050_TIDA00992;