ShiboSoftwareDev/solar-battery-charger

This code defines various surface-mount and through-hole electronic components (like diodes, voltage regulators, and ICs) with detailed footprints, 3D models, and pin configurations for PCB design.

Version
1.0.2
License
unset
Stars
0

index.circuit.tsx

PCBPCB preview for index.circuit.tsx
SchematicSchematic preview for index.circuit.tsx
import type { ChipProps } from "@tscircuit/props"
import { B2B_PH_SM4_TBT_LF__SN_ } from "./imports/B2B_PH_SM4_TBT_LF__SN_"
import { B5819W_SL } from "./imports/B5819W_SL"
import { BQ24650RVAR } from "./imports/BQ24650RVAR"
import { CL10A106MA8NRNC } from "./imports/CL10A106MA8NRNC"
import { CL31A107MQHNNNE } from "./imports/CL31A107MQHNNNE"
import { DMG3404L_7 } from "./imports/DMG3404L_7"
import { LT1129CS8_3_3_PBF } from "./imports/LT1129CS8_3_3_PBF"
import { MCP73113T_06SI_MF } from "./imports/MCP73113T_06SI_MF"
import { SPH202012H100MT } from "./imports/SPH202012H100MT"
import { STC3117IJT } from "./imports/STC3117IJT"

const p = (x: number, y: number, pcbRotation = 0) => ({
  pcbX: Number((x - 120.2).toFixed(3)),
  pcbY: Number((79 - y).toFixed(3)),
  pcbRotation,
})

const refRect = (x1: number, y1: number, x2: number, y2: number) => ({
  width: `${x1}mm`,
  height: `${y1}mm`,
  pcbX: `${x2}mm`,
  pcbY: `${y2}mm`,
})

const edgeHole = (x: number, y: number) => ({
  radius: "0.9mm",
  pcbX: `${Number((x - 120.2).toFixed(3))}mm`,
  pcbY: `${Number((79 - y).toFixed(3))}mm`,
})

const referenceDiodePinLabels = {
  pin1: ["CATHODE"],
  pin2: ["ANODE"],
} as const

const jlcpcb = (partNumber: string) => ({
  supplierPartNumbers: {
    jlcpcb: [partNumber],
  },
})

const ReferenceDiode0201 = (
  props: ChipProps<typeof referenceDiodePinLabels>,
) => (
  <chip
    pinLabels={referenceDiodePinLabels}
    manufacturerPartNumber="TPMEG3005AESFYL"
    {...jlcpcb("C22435167")}
    footprint={
      <footprint>
        <smtpad portHints={["pin1"]} pcbX="-0.32mm" pcbY="0mm" width="0.46mm" height="0.4mm" shape="rect" />
        <smtpad portHints={["pin2"]} pcbX="0.32mm" pcbY="0mm" width="0.46mm" height="0.4mm" shape="rect" />
        <silkscreenpath route={[{ x: -0.3, y: -0.15 }, { x: -0.3, y: 0.15 }]} />
        <silkscreenpath route={[{ x: -0.2, y: -0.15 }, { x: -0.2, y: 0.15 }]} />
        <silkscreenpath route={[{ x: -0.3, y: 0.15 }, { x: 0.3, y: 0.15 }]} />
        <silkscreenpath route={[{ x: -0.3, y: -0.15 }, { x: 0.3, y: -0.15 }]} />
        <courtyardoutline
          outline={[
            { x: -0.7, y: 0.35 },
            { x: 0.7, y: 0.35 },
            { x: 0.7, y: -0.35 },
            { x: -0.7, y: -0.35 },
            { x: -0.7, y: 0.35 },
          ]}
        />
      </footprint>
    }
    {...props}
  />
)

const ModulePad = ({
  name,
  label,
  pcbX,
  pcbY,
  side,
}: {
  name: string
  label: string
  pcbX: number
  pcbY: number
  side: "left" | "right"
}) => {
  const padX = side === "left" ? -0.5 : 0.5

  return (
    <chip
      name={name}
      pcbX={pcbX}
      pcbY={pcbY}
      footprint={
        <footprint>
          <smtpad
            layer="top"
            shape="rect"
            pcbX={`${padX}mm`}
            pcbY="0mm"
            width="2mm"
            height="6mm"
            portHints={["pin1"]}
          />
          <smtpad
            layer="bottom"
            shape="rect"
            pcbX={`${padX}mm`}
            pcbY="0mm"
            width="2mm"
            height="6mm"
            portHints={["pin1"]}
          />
        </footprint>
      }
      pinLabels={{ pin1: label }}
    />
  )
}

export default () => (
  <board
    width="34.8mm"
    height="30mm"
    autorouterVersion="v6"
    layers={2}
    minViaPadDiameter={0.45}
    minViaHoleDiameter={0.3}
  >
    <autoroutingphase phaseIndex={1} connections={["IC1.B2"]} />

    <copperpour connectsTo="net.GND" layer="top" clearance="0.15mm" />
    <copperpour connectsTo="net.GND" layer="bottom" clearance="0.15mm" />

    <cutout shape="rect" {...refRect(2.4, 1.1, -16.2, 7.5)} />
    <cutout shape="rect" {...refRect(2.4, 1.1, -16.2, 0)} />
    <cutout shape="rect" {...refRect(2.4, 1.1, -16.2, -7.5)} />
    <cutout shape="rect" {...refRect(2.4, 1.1, 16.2, 7.5)} />
    <cutout shape="rect" {...refRect(2.4, 1.1, 16.2, 0)} />
    <cutout shape="rect" {...refRect(2.4, 1.1, 16.2, -7.5)} />
    <cutout shape="circle" {...edgeHole(102.8, 67.7)} />
    <cutout shape="circle" {...edgeHole(102.9, 75.2)} />
    <cutout shape="circle" {...edgeHole(102.9, 82.6)} />
    <cutout shape="circle" {...edgeHole(102.8, 90.2)} />
    <cutout shape="circle" {...edgeHole(137.4, 67.7)} />
    <cutout shape="circle" {...edgeHole(137.6, 75.2)} />
    <cutout shape="circle" {...edgeHole(137.6, 82.8)} />
    <cutout shape="circle" {...edgeHole(137.5, 90.2)} />

    <ModulePad name="J8" label="VIN" pcbX={-15.7} pcbY={11.25} side="left" />
    <ModulePad name="J1" label="nCE" pcbX={-15.7} pcbY={3.75} side="left" />
    <ModulePad name="J6" label="ON_OFF" pcbX={-15.7} pcbY={-3.75} side="left" />
    <ModulePad name="J7" label="ALM" pcbX={-15.7} pcbY={-11.25} side="left" />
    <ModulePad name="J2" label="VOUT" pcbX={15.7} pcbY={11.25} side="right" />
    <ModulePad name="J3" label="GND" pcbX={15.7} pcbY={3.75} side="right" />
    <ModulePad name="J5" label="SDA" pcbX={15.7} pcbY={-3.75} side="right" />
    <ModulePad name="J4" label="SCL" pcbX={15.7} pcbY={-11.25} side="right" />

    <B2B_PH_SM4_TBT_LF__SN_ name="SLPWR1" {...p(112.2, 71)} />
    <B2B_PH_SM4_TBT_LF__SN_ name="SLPWR2" {...p(128.2, 71)} />

    <BQ24650RVAR name="U3" {...p(112.2, 86)} />

    <MCP73113T_06SI_MF name="U2" {...p(129.2, 82, 270)} />

    <STC3117IJT name="IC1" {...p(130, 76.8, 270)} />

    <LT1129CS8_3_3_PBF name="U1" {...p(122.6, 89.8)} />

    <DMG3404L_7 name="Q1" {...p(117, 78.2, 90)} />
    <DMG3404L_7 name="Q2" {...p(120.6, 78.2, 90)} />
    <DMG3404L_7 name="Q3" {...p(109, 78.3, 270)} />

    <resistor name="R1" resistance="100k" footprint="0201" {...jlcpcb("C270364")} {...p(122, 84.38, 270)} />
    <resistor name="R2" resistance="499k" footprint="0201" {...jlcpcb("C138138")} {...p(121.55, 81.1, 270)} />
    <resistor name="R3" resistance="499k" footprint="0201" {...jlcpcb("C138138")} {...p(110.6, 82.5, 270)} />
    <resistor name="R4" resistance="36k" footprint="0201" {...jlcpcb("C295796")} {...p(109.2, 84, 270)} />
    <resistor name="R5" resistance="2ohm" footprint="0201" {...jlcpcb("C240147")} {...p(112.6, 76, 180)} />
    <resistor name="R6" resistance="10ohm" footprint="0201" {...jlcpcb("C270817")} {...p(114, 79.7, 180)} />
    <resistor name="R7" resistance="1k" footprint="0201" {...jlcpcb("C270365")} {...p(129.3, 86, 270)} />
    <resistor name="R8" resistance="1k" footprint="0201" {...jlcpcb("C270365")} {...p(131.8, 86.2, 90)} />
    <resistor name="R9" resistance="1k" footprint="0201" {...jlcpcb("C270365")} {...p(126.6, 75.2, 180)} />
    <resistor name="R10" resistance="1k" footprint="0201" {...jlcpcb("C270365")} {...p(108.9, 88.8, 270)} />
    <resistor name="R11" resistance="1k" footprint="0201" {...jlcpcb("C270365")} {...p(108, 85.2, 270)} />
    <resistor name="RS1" resistance="0.005ohm" footprint="0201" {...jlcpcb("C2981420")} {...p(131.5, 75.2)} />
    <resistor name="RSR1" resistance="0.02ohm" footprint="0201" {...jlcpcb("C76748")} {...p(119.95, 81.1, 90)} />

    <capacitor name="C1" capacitance="2.2uF" footprint="0201" {...jlcpcb("C319184")} {...p(111, 76, 180)} />
    <capacitor name="C2" capacitance="1uF" footprint="0201" {...jlcpcb("C53067")} {...p(113, 83, 90)} />
    <capacitor name="C3" capacitance="1uF" footprint="0201" {...jlcpcb("C53067")} {...p(127.4, 76.2, 180)} />
    <capacitor name="C4" capacitance="1uF" footprint="0201" {...jlcpcb("C53067")} {...p(115.75, 85.8, 270)} />
    <capacitor name="C5" capacitance="0.1uF" footprint="0201" {...jlcpcb("C76928")} {...p(114.5, 82.9)} />
    <CL10A106MA8NRNC name="C6" {...p(113, 81.2)} />
    <capacitor name="C7" capacitance="0.1uF" footprint="0201" {...jlcpcb("C76928")} {...p(117.62, 83.7, 180)} />
    <CL10A106MA8NRNC name="C8" {...p(120.3, 83.68, 270)} />
    <capacitor name="C9" capacitance="4.7uF" footprint="0201" {...jlcpcb("C335103")} {...p(118.5, 85.08, 270)} />
    <capacitor name="C10" capacitance="22pF" footprint="0201" {...jlcpcb("C57783")} {...p(122.6, 81.98, 270)} />
    <capacitor name="C11" capacitance="220nF" footprint="0201" {...jlcpcb("C76932")} {...p(125.12, 75.2, 180)} />
    <capacitor name="Cin1" capacitance="22pF" footprint="0201" {...jlcpcb("C57783")} {...p(131.8, 80.6, 90)} />
    <capacitor name="Cout1" capacitance="22pF" footprint="0201" {...jlcpcb("C57783")} {...p(131.6, 79.0, 180)} />
    <CL31A107MQHNNNE name="C_VOLT1" {...p(127.2, 88.725, 90)} />
    <CL31A107MQHNNNE name="C_VOLT2" {...p(114.7, 91.45, 90)} />

    <SPH202012H100MT name="L1" {...p(117.52, 81.7, 180)} />
    <SPH202012H100MT name="L2" {...p(111.8, 90.3, 270)} />

    <ReferenceDiode0201 name="D1" {...p(114.8, 78.6, 90)} />
    <ReferenceDiode0201 name="D2" {...p(114.95, 86.95, 90)} />
    <ReferenceDiode0201 name="D3" {...p(133.2, 76.1, 270)} />
    <B5819W_SL name="D5" {...p(117.6, 89.25, 270)} />

    <ReferenceDiode0201 name="D4" {...p(128.6, 84.5, 180)} />
    <ReferenceDiode0201 name="D6" {...p(109.7, 90.15, 90)} />
    <ReferenceDiode0201 name="D7" {...p(107, 84, 90)} />

    <pcbnotetext pcbX={2.8} pcbY={9} text="Battery Connector" fontSize={0.7} anchorAlignment="center" pcbRotation={270} />
    <pcbnotetext pcbX={-2.5} pcbY={10.2} text="Solar Panel" fontSize={0.7} anchorAlignment="center" pcbRotation={90} />
    <pcbnotetext pcbX={13.4} pcbY={11.2} text="Vout" fontSize={0.5} anchorAlignment="center" pcbRotation={90} />
    <pcbnotetext pcbX={13.4} pcbY={4} text="GND" fontSize={0.5} anchorAlignment="center" pcbRotation={90} />
    <pcbnotetext pcbX={13.2} pcbY={-3.7} text="SDA" fontSize={0.5} anchorAlignment="center" pcbRotation={90} />
    <pcbnotetext pcbX={13.2} pcbY={-10.7} text="SCL" fontSize={0.5} anchorAlignment="center" pcbRotation={90} />
    <pcbnotetext pcbX={-13.4} pcbY={-11.3} text="Alarm" fontSize={0.5} anchorAlignment="center" pcbRotation={270} />
    <pcbnotetext pcbX={-13.4} pcbY={-3.5} text="Power ON/OFF" fontSize={0.5} anchorAlignment="center" pcbRotation={270} />
    <pcbnotetext pcbX={-13.4} pcbY={4.6} text="nCE" fontSize={0.5} anchorAlignment="center" pcbRotation={270} />
    <pcbnotetext pcbX={-13.3} pcbY={10.3} text="Vin" fontSize={0.5} anchorAlignment="center" pcbRotation={270} />
    <chip
      name="LOGO1"
      pcbX={0.1}
      pcbY={-0.2}
      pcbRotation={180}
      layer="bottom"
      footprint={
        <footprint>
          <silkscreentext text="OSHW" fontSize="2.4mm" anchorAlignment="center" />
        </footprint>
      }
    />

    <trace from="SLPWR1.pin1" to="net.VCC" />
    <trace from="SLPWR1.pin2" to="net.GND" />
    <trace from="SLPWR2.pin1" to="net.BATD" />
    <trace from="SLPWR2.pin2" to="net.CS" />

    <trace from="U3.VCC" to="net.VCC" />
    <trace from="U3.MPPSET" to="net.MPPSET" />
    <trace from="U3.STAT1" to="net.STAT_1" />
    <trace from="U3.STAT2" to="net.STAT_2" />
    <trace from="U3.VREF" to="net.VREF" />
    <trace from="U3.TERM_EN" to="net.VREF" />
    <trace from="U3.VFB" to="net.VFB" />
    <trace from="U3.SRN" to="net.BATTERY" />
    <trace from="U3.SRP" to="net.SRP" />
    <trace from="U3.GND" to="net.GND" />
    <trace from="U3.REGN" to="net.REGN" />
    <trace from="U3.LODRV" to="net.LODRV" />
    <trace from="U3.PH" to="net.PH" />
    <trace from="U3.HIDRV" to="net.HIDRV" />
    <trace from="U3.BTST" to="net.BTST" />
    <trace from="U3.EP" to="net.GND" />

    <trace from="Q1.G" to="net.HIDRV" />
    <trace from="Q1.S" to="net.PH" />
    <trace from="Q1.D" to="net.VCC_BOOT" />
    <trace from="Q2.G" to="net.LODRV" />
    <trace from="Q2.S" to="net.GND" />
    <trace from="Q2.D" to="net.PH" />
    <trace from="Q3.G" to="net.nCE" />
    <trace from="Q3.S" to="net.GND" />
    <trace from="Q3.D" to="net.MPPSET" />

    <trace from="R3.pin1" to="net.VCC" />
    <trace from="R3.pin2" to="net.MPPSET" />
    <trace from="R4.pin1" to="net.MPPSET" />
    <trace from="R4.pin2" to="net.GND" />
    <trace from="R5.pin1" to="net.VCC" />
    <trace from="R5.pin2" to="net.C1_FILTER" />
    <trace from="C1.pin1" to="net.C1_FILTER" />
    <trace from="C1.pin2" to="net.GND" />
    <trace from="R6.pin1" to="net.VCC_BOOT" />
    <trace from="R6.pin2" to="net.VCC" />
    <trace from="C2.pin1" to="net.VCC" />
    <trace from="C2.pin2" to="net.GND" />
    <trace from="C6.pin1" to="net.VCC_BOOT" />
    <trace from="C6.pin2" to="net.GND" />
    <trace from="D1.pin1" to="net.VCC_BOOT" />
    <trace from="D1.pin2" to="net.VCC" />

    <trace from="U3.REGN" to="D2.pin2" />
    <trace from="D2.pin2" to="C4.pin1" />
    <trace from="C4.pin2" to="net.GND" />
    <trace from="C5.pin1" to="net.PH" />
    <trace from="U3.BTST" to="D2.pin1" />
    <trace from="D2.pin1" to="C5.pin2" />

    <trace from="L1.pin1" to="net.SRP" />
    <trace from="L1.pin2" to="net.PH" />
    <trace from="RSR1.pin1" to="net.SRP" />
    <trace from="RSR1.pin2" to="net.BATTERY" />
    <trace from="C7.pin1" to="net.BATTERY" />
    <trace from="C7.pin2" to="net.SRP" />
    <trace from="C8.pin1" to="net.BATTERY" />
    <trace from="C8.pin2" to="net.GND" />
    <trace from="C9.pin1" to="net.BATTERY" />
    <trace from="C9.pin2" to="net.GND" />
    <trace from="R2.pin1" to="net.BATTERY" />
    <trace from="R2.pin2" to="net.VFB" />
    <trace from="R1.pin1" to="net.VFB" />
    <trace from="R1.pin2" to="net.GND" />
    <trace from="C10.pin1" to="net.BATTERY" />
    <trace from="C10.pin2" to="net.VFB" />

    <trace from="D7.pin1" to="net.STAT1_LED" />
    <trace from="D7.pin2" to="net.VCC" />
    <trace from="R11.pin1" to="net.STAT_1" />
    <trace from="R11.pin2" to="net.STAT1_LED" />
    <trace from="D6.pin1" to="net.STAT2_LED" />
    <trace from="D6.pin2" to="net.VCC" />
    <trace from="R10.pin1" to="net.STAT_2" />
    <trace from="R10.pin2" to="net.STAT2_LED" />

    <trace from="U2.VDD1" to="net.BATTERY" />
    <trace from="U2.VDD2" to="net.BATTERY" />
    <trace from="U2.VBAT1" to="net.BATD" />
    <trace from="U2.VBAT2" to="net.BATD" />
    <trace from="U2.STAT" to="net.U2_STAT" />
    <trace from="U2.VSS1" to="net.GND" />
    <trace from="U2.VSS2" to="net.GND" />
    <trace from="U2.PROG" to="net.U2_PROG" />
    <trace from="D4.pin1" to="net.U2_STAT_LED" />
    <trace from="D4.pin2" to="net.BATTERY" />
    <trace from="R7.pin1" to="net.U2_STAT" />
    <trace from="R7.pin2" to="net.U2_STAT_LED" />
    <trace from="R8.pin1" to="net.U2_PROG" />
    <trace from="R8.pin2" to="net.GND" />

    <trace from="IC1.A2" to="net.SDA" />
    <trace from="IC1.A3" to="net.GND" />
    <trace from="IC1.B1" to="net.BATD" />
    <trace
      name="IC1_B2_SCL_CENTER_PAD"
      from="IC1.B2"
      to="net.SCL"
      routingPhaseIndex={1}
      thickness="0.06mm"
    />
    <trace from="IC1.B3" to="net.CS" />
    <trace from="IC1.C1" to="net.IC1_VIN" />
    <trace from="IC1.C2" to="net.BATD" />
    <trace from="IC1.C3" to="net.ALM" />
    <trace from="R9.pin1" to="net.BATD" />
    <trace from="R9.pin2" to="net.IC1_VIN" />
    <trace from="C11.pin1" to="net.IC1_VIN" />
    <trace from="C11.pin2" to="net.GND" />
    <trace from="RS1.pin1" to="net.CS" />
    <trace from="RS1.pin2" to="net.GND" />

    <trace from="C3.pin1" to="net.BATD" />
    <trace from="C3.pin2" to="net.GND" />
    <trace from="Cout1.pin1" to="net.GND" />
    <trace from="Cout1.pin2" to="net.BATD" />
    <trace from="Cin1.pin1" to="net.GND" />
    <trace from="Cin1.pin2" to="net.BATTERY" />
    <trace from="D3.pin1" to="net.BATTERY" />
    <trace from="D3.pin2" to="net.VIN_RAW" />

    <trace from="U1.OUTPUT" to="net.VOUT" />
    <trace from="U1.SENSE" to="net.D5_SW" />
    <trace from="U1.GND1" to="net.GND" />
    <trace from="U1.NC" to="net.D5_SW" />
    <trace from="U1.SHDN" to="net.ON_OFF" />
    <trace from="U1.GND2" to="net.GND" />
    <trace from="U1.GND3" to="net.GND" />
    <trace from="U1.VIN" to="net.BATD" />
    <trace from="L2.pin1" to="net.D5_SW" />
    <trace from="L2.pin2" to="net.VOUT" />
    <trace from="D5.pin1" to="net.D5_SW" />
    <trace from="D5.pin2" to="net.GND" />
    <trace from="C_VOLT1.pin1" to="net.GND" />
    <trace from="C_VOLT1.pin2" to="net.BATD" />
    <trace from="C_VOLT2.pin1" to="net.GND" />
    <trace from="C_VOLT2.pin2" to="net.VOUT" />

    <trace from="J8.VIN" to="net.VIN_RAW" />
    <trace from="J1.nCE" to="net.nCE" />
    <trace from="J6.ON_OFF" to="net.ON_OFF" />
    <trace from="J7.ALM" to="net.ALM" />
    <trace from="J2.VOUT" to="net.VOUT" />
    <trace from="J3.GND" to="net.GND" />
    <trace from="J5.SDA" to="net.SDA" />
    <trace from="J4.SCL" to="net.SCL" />
  </board>
)