tscircuit/ti

ti tscircuit library

Version
1.0.192
License
unset
Stars
0

lib/subcircuits/VoltageRegulator_LM73605.circuit.tsx

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

const SOURCE_ORIGIN = { x: 22.225, y: 7.62 } as const;
const sx = (x: number) => Number((x - SOURCE_ORIGIN.x).toFixed(6));
const sy = (y: number) => Number((y - SOURCE_ORIGIN.y).toFixed(6));
const inputSectionX = (x: number) => sx(x + 2.5);
const leftControlSectionX = (x: number) => sx(x + 1.5);
const outputSectionX = (x: number) => sx(x - 1.2);
const feedbackSectionX = (x: number) => sx(x + 0.8);
const biasSectionX = (x: number) => sx(x - 1.5);
const outputConnectorX = (x: number) => sx(x - 2.5);

const NetTie = () => (
  <>
    <chip
      name="NTGND1"
      manufacturerPartNumber="Net-Tie"
      footprint="kicad:NetTie/NetTie-2_SMD_Pad0.5mm"
      pinLabels={{ pin1: "GND", pin2: "AGND" }}
      internallyConnectedPins={[[1, 2]]}
      schX={sx(22.86)}
      schY={sy(3.048)}
    />
    <schematictext
      text="Net-Tie"
      schX={sx(22.86)}
      schY={sy(2.54)}
      fontSize={0.12}
    />
  </>
);

/**
 * 3.3-V off-battery regulator section from sheet 2 of TI TIDA-050008 (native
 * Altium archive TIDRXT8).
 *
 * Coordinate transform: Altium mil coordinates are converted to millimeters
 * with 0.0254 mm/mil, then translated as
 * (x_tsx, y_tsx) = (x_mm - 22.225, y_mm - 7.620). No scale or reflection is
 * applied. Native-symbol packing translations preserve every source Y
 * coordinate and every component's orientation: the input bank is +2.5 mm,
 * left controls are +1.5 mm, the switch/output bank is -1.2 mm, the complete
 * FB1 feedback network is +0.8 mm, the bias branch is -1.5 mm, and the output
 * connectors are -2.5 mm in X. These section-level translations bring the
 * larger native symbols together while keeping each source circuit intact.
 */
export const VoltageRegulator_LM73605 = (props: SubcircuitProps) => (
  <subcircuit schMaxTraceDistance="25mm" routingDisabled {...props}>
    <net name="GND" isPowerNet isGroundNet />
    <net name="AGND" isPowerNet isGroundNet />
    <net name="V3_3" isPowerNet />

    <schematictext
      text="3.3-V System Supply"
      schX={sx(23.495)}
      schY={sy(12.446)}
      fontSize={0.3}
    />

    <capacitor
      name="Cbulk1"
      capacitance="100uF"
      maxVoltageRating="50V"
      footprint="kicad:Capacitor_SMD/CP_Elec_10x10"
      manufacturerPartNumber="HHXB500ARA101MJA0G"
      schX={inputSectionX(9.398)}
      schY={sy(9.3599)}
      schRotation={270}
    />
    <capacitor
      name="CI1"
      capacitance="0.47uF"
      maxVoltageRating="50V"
      footprint="0805"
      manufacturerPartNumber="GRM21BR71H474KA88L"
      schX={inputSectionX(10.922)}
      schY={sy(9.271)}
      schRotation={90}
    />
    <capacitor
      name="CI2"
      capacitance="10uF"
      maxVoltageRating="50V"
      footprint="1210"
      manufacturerPartNumber="GRM32ER71H106KA12L"
      schX={inputSectionX(11.938)}
      schY={sy(9.271)}
      schRotation={90}
    />
    <capacitor
      name="CI3"
      capacitance="2.2uF"
      maxVoltageRating="50V"
      footprint="0805"
      manufacturerPartNumber="C2012X5R1H225K125AB"
      schX={inputSectionX(12.954)}
      schY={sy(9.271)}
      schRotation={270}
    />
    <capacitor
      name="CI4"
      capacitance="2.2uF"
      maxVoltageRating="50V"
      footprint="0805"
      manufacturerPartNumber="C2012X5R1H225K125AB"
      schX={inputSectionX(13.97)}
      schY={sy(9.271)}
      schRotation={270}
    />

    <LM73605QRNPRQ1 name="U2" schX={sx(19.812)} schY={sy(7.62)} />

    <capacitor
      name="CB"
      capacitance="0.47uF"
      maxVoltageRating="25V"
      footprint="0603"
      manufacturerPartNumber="GRM188R61E474KA12D"
      schX={outputSectionX(22.606)}
      schY={sy(10.16)}
      schOrientation="horizontal"
    />
    <inductor
      name="L1"
      inductance="2.2uH"
      footprint="kicad:Inductor_SMD/L_Coilcraft_XAL5030-XXX"
      manufacturerPartNumber="XAL5030-222MEB"
      schX={outputSectionX(24.892)}
      schY={sy(10.4775)}
      schOrientation="horizontal"
    />
    <capacitor
      name="CO"
      capacitance="0.47uF"
      maxVoltageRating="50V"
      footprint="0805"
      manufacturerPartNumber="GRM21BR71H474KA88L"
      schX={outputSectionX(26.289)}
      schY={sy(9.525)}
      schRotation={90}
    />
    {[
      ["CO1", 27.813],
      ["CO2", 28.829],
      ["CO3", 29.972],
      ["CO4", 31.115],
      ["CO5", 32.131],
    ].map(([name, x]) => (
      <capacitor
        key={String(name)}
        name={String(name)}
        capacitance="22uF"
        maxVoltageRating="16V"
        footprint="1210"
        manufacturerPartNumber="GRM32ER71C226KE18L"
        schX={outputSectionX(Number(x))}
        schY={sy(9.525)}
        schRotation={270}
      />
    ))}

    <capacitor
      name="CVCC"
      capacitance="2.2uF"
      maxVoltageRating="10V"
      footprint="0603"
      manufacturerPartNumber="GRM188C81A225KE34D"
      schX={leftControlSectionX(14.224)}
      schY={sy(6.731)}
      schRotation={270}
    />
    <resistor
      name="RT"
      resistance="17.4kohm"
      tolerance="1%"
      footprint="0603"
      manufacturerPartNumber="CRCW060317K4FKEA"
      schX={leftControlSectionX(15.748)}
      schY={sy(7.112)}
      schRotation={270}
    />
    <capacitor
      name="CSS"
      capacitance="0.01uF"
      maxVoltageRating="100V"
      footprint="0603"
      manufacturerPartNumber="06031C103MAT2A"
      schX={sx(23.622)}
      schY={sy(6.096)}
      schRotation={270}
    />
    <resistor
      name="RPG"
      resistance="100kohm"
      tolerance="1%"
      footprint="0603"
      manufacturerPartNumber="CRCW0603100KFKEA"
      schX={outputSectionX(24.13)}
      schY={sy(8.128)}
      schOrientation="horizontal"
    />
    <capacitor
      name="CFF"
      capacitance="4.7pF"
      maxVoltageRating="50V"
      footprint="0603"
      manufacturerPartNumber="06035A4R7CAT2A"
      schX={feedbackSectionX(25.908)}
      schY={sy(6.223)}
      schRotation={270}
    />
    <resistor
      name="RFBT"
      resistance="100kohm"
      tolerance="1%"
      footprint="0603"
      manufacturerPartNumber="CRCW0603100KFKEA"
      schX={feedbackSectionX(27.178)}
      schY={sy(6.096)}
      schRotation={90}
    />
    <resistor
      name="RFBB"
      resistance="43.2kohm"
      tolerance="1%"
      footprint="0603"
      manufacturerPartNumber="CRCW060343K2FKEA"
      schX={feedbackSectionX(27.178)}
      schY={sy(4.318)}
      schRotation={90}
    />
    <resistor
      name="R20"
      resistance="562kohm"
      tolerance="1%"
      footprint="0603"
      manufacturerPartNumber="CRCW0603562KFKEA"
      schX={feedbackSectionX(28.956)}
      schY={sy(4.572)}
      schRotation={90}
    />
    <capacitor
      name="Cbias1"
      capacitance="0.1uF"
      maxVoltageRating="16V"
      footprint="0603"
      manufacturerPartNumber="GCM188R71C104KA37J"
      schX={biasSectionX(32.512)}
      schY={sy(4.953)}
      schRotation={270}
    />
    <resistor
      name="Rbias1"
      resistance="3ohm"
      tolerance="5%"
      footprint="0402"
      manufacturerPartNumber="CRCW04023R00JNED"
      schX={biasSectionX(33.401)}
      schY={sy(6.096)}
      schOrientation="horizontal"
    />

    <NetTie />
    <testpoint
      name="TP5"
      displayName="V_CTRL1"
      manufacturerPartNumber="5012"
      footprint="kicad:TestPoint/TestPoint_Keystone_5010-5014_Multipurpose"
      schX={feedbackSectionX(30.48)}
      schY={sy(3.4036)}
      schRotation={90}
    />
    <testpoint
      name="TP18"
      displayName="3.3V"
      manufacturerPartNumber="5010"
      footprint="kicad:TestPoint/TestPoint_Keystone_5010-5014_Multipurpose"
      schX={outputConnectorX(36.83)}
      schY={sy(10.5156)}
      schRotation={90}
    />
    <testpoint
      name="TP19"
      displayName="GND"
      manufacturerPartNumber="5011"
      footprint="kicad:TestPoint/TestPoint_Keystone_5010-5014_Multipurpose"
      schX={outputConnectorX(36.83)}
      schY={sy(8.9916)}
      schRotation={90}
    />
    <testpoint
      name="P3"
      displayName="3.3Vout"
      manufacturerPartNumber="6091"
      footprint="kicad:TestPoint/TestPoint_Plated_Hole_D3.0mm"
      schX={outputConnectorX(37.592)}
      schY={sy(10.16)}
    />
    <testpoint
      name="P4"
      displayName="GND"
      manufacturerPartNumber="6092"
      footprint="kicad:TestPoint/TestPoint_Plated_Hole_D3.0mm"
      schX={outputConnectorX(37.592)}
      schY={sy(8.636)}
    />

    <trace
      name="VIN1"
      schDisplayLabel="VIN1"
      path={[
        ".Cbulk1 > .pin1",
        ".CI1 > .pin2",
        ".CI2 > .pin2",
        ".CI3 > .pin1",
        ".CI4 > .pin1",
        ".U2 > .pin18",
        ".U2 > .pin20",
        ".U2 > .pin21",
        ".U2 > .pin22",
        "net.VIN1",
      ]}
    />
    <trace
      name="SW"
      schDisplayLabel="SW"
      path={[
        ".U2 > .pin1",
        ".U2 > .pin2",
        ".U2 > .pin3",
        ".U2 > .pin4",
        ".U2 > .pin5",
        ".CB > .pin2",
        ".L1 > .pin1",
      ]}
    />
    <trace path={[".U2 > .pin6", ".CB > .pin1"]} />
    <trace
      name="VCC"
      schDisplayLabel="VCC"
      path={[".U2 > .pin7", ".CVCC > .pin1"]}
    />
    <trace
      name="BIAS"
      schDisplayLabel="BIAS"
      path={[".U2 > .pin8", ".Cbias1 > .pin1", ".Rbias1 > .pin1"]}
    />
    <trace
      name="RT"
      schDisplayLabel="RT"
      path={[".U2 > .pin9", ".RT > .pin1"]}
    />
    <trace
      name="SS_TRK"
      schDisplayLabel="SS/TRK"
      path={[".U2 > .pin10", ".CSS > .pin1"]}
    />
    <trace
      name="FB1"
      schDisplayLabel="FB1"
      path={[
        ".U2 > .pin11",
        ".CFF > .pin2",
        ".RFBT > .pin1",
        ".RFBB > .pin2",
        ".R20 > .pin2",
      ]}
    />
    <trace
      name="PGOOD_NET"
      schDisplayLabel="PGOOD"
      path={[".U2 > .pin16", ".RPG > .pin1"]}
    />
    <trace
      name="V3_3"
      schDisplayLabel="+3.3V"
      path={[
        ".L1 > .pin2",
        ".CO > .pin2",
        ".CO1 > .pin1",
        ".CO2 > .pin1",
        ".CO3 > .pin1",
        ".CO4 > .pin1",
        ".CO5 > .pin1",
        ".RPG > .pin2",
        ".CFF > .pin1",
        ".RFBT > .pin2",
        ".Rbias1 > .pin2",
        ".TP18 > .pin1",
        ".P3 > .pin1",
        "net.V3_3",
      ]}
    />
    <trace
      name="V_CTRL1"
      schDisplayLabel="V_CTRL1"
      path={[".R20 > .pin1", ".TP5 > .pin1"]}
    />
    <trace
      name="AGND"
      schDisplayLabel="AGND"
      path={[
        ".U2 > .pin19",
        ".CSS > .pin2",
        ".RFBB > .pin1",
        ".NTGND1 > .pin2",
        "net.AGND",
      ]}
    />
    <trace
      name="GND"
      path={[
        ".Cbulk1 > .pin2",
        ".CI1 > .pin1",
        ".CI2 > .pin1",
        ".CI3 > .pin2",
        ".CI4 > .pin2",
        ".U2 > .pin12",
        ".U2 > .pin13",
        ".U2 > .pin14",
        ".U2 > .pin15",
        ".U2 > .pin17",
        ".U2 > .pin23",
        ".U2 > .pin24",
        ".U2 > .pin25",
        ".U2 > .pin26",
        ".U2 > .pin27",
        ".U2 > .pin28",
        ".U2 > .pin29",
        ".U2 > .pin30",
        ".U2 > .pin31",
        ".CO > .pin1",
        ".CO1 > .pin2",
        ".CO2 > .pin2",
        ".CO3 > .pin2",
        ".CO4 > .pin2",
        ".CO5 > .pin2",
        ".CVCC > .pin2",
        ".RT > .pin2",
        ".Cbias1 > .pin2",
        ".NTGND1 > .pin1",
        ".TP19 > .pin1",
        ".P4 > .pin1",
        "net.GND",
      ]}
    />

    <port name="VIN1" direction="left" connectsTo="Cbulk1.pin1" />
    <port name="V3_3" direction="right" connectsTo="P3.pin1" />
    <port name="GND" direction="right" connectsTo="P4.pin1" />
    <port name="V_CTRL1" direction="right" connectsTo="TP5.pin1" />
  </subcircuit>
);

export default VoltageRegulator_LM73605;