ShiboSoftwareDev/clip-on-battery-meter-2
The code defines virtual representations of various electronic components—such as a BAT54WS Schottky diode and LM339 and LM393 voltage comparators—with physical pin configurations, footprints, and 3D models for PCB design.
- Version
- 1.0.13
- License
- unset
- Stars
- 0
index.circuit.tsx
PCB
Schematic
import { BAT54WS } from "./imports/BAT54WS"
import { LM4040D25FTA } from "./imports/LM4040D25FTA"
import { LMV331IDBVR } from "./imports/LMV331IDBVR"
import { LMV339IDR } from "./imports/LMV339IDR"
import { MY_18650_02 } from "./imports/MY_18650_02"
export default function ClipOnBatteryMeter() {
return (
<board
width="108mm"
height="40mm"
layers={2}
minViaHoleDiameter={0.3}
minViaPadDiameter={0.45}
>
<silkscreentext text="1S LI-ION METER" pcbX={-31} pcbY={16.5} fontSize="1.6mm" anchorAlignment="center" />
<MY_18650_02
name="J_BAT_POS"
pcbX={-43}
pcbY={0}
pinAttributes={{
pin1: { providesPower: true, mustBeConnected: true, includeInBoardPinout: true },
pin2: { providesPower: true, mustBeConnected: true, includeInBoardPinout: true },
pin3: { providesPower: true, mustBeConnected: true, includeInBoardPinout: true },
pin4: { providesPower: true, mustBeConnected: true, includeInBoardPinout: true },
} as any}
/>
<MY_18650_02
name="J_BAT_NEG"
pcbX={13.25}
pcbY={0}
pcbRotation={180}
pinAttributes={{
pin1: { requiresGround: true, mustBeConnected: true, includeInBoardPinout: true },
pin2: { requiresGround: true, mustBeConnected: true, includeInBoardPinout: true },
pin3: { requiresGround: true, mustBeConnected: true, includeInBoardPinout: true },
pin4: { requiresGround: true, mustBeConnected: true, includeInBoardPinout: true },
} as any}
/>
<BAT54WS name="D_PROT" pcbX={-28} pcbY={-13} schX={-6} schY={2} />
<BAT54WS name="D_SENSE_CLAMP" pcbX={9} pcbY={-15.5} pcbRotation={90} schX={0} schY={2} />
<LM4040D25FTA
name="U_REF"
pcbX={-15}
pcbY={11.5}
pinAttributes={{
CAT: { requiresPower: true, mustBeConnected: true },
AN: { requiresGround: true, mustBeConnected: true },
} as any}
/>
<LMV339IDR
name="U1"
pcbX={39}
pcbY={12.5}
pinAttributes={{
VCC: { requiresPower: true, mustBeConnected: true },
GND: { requiresGround: true, mustBeConnected: true },
OUT1: { mustBeConnected: true },
OUT2: { mustBeConnected: true },
OUT3: { mustBeConnected: true },
OUT4: { mustBeConnected: true },
IN1_NEG: { mustBeConnected: true },
IN1_POS: { mustBeConnected: true },
IN2_NEG: { mustBeConnected: true },
IN2_POS: { mustBeConnected: true },
IN3_NEG: { mustBeConnected: true },
IN3_POS: { mustBeConnected: true },
IN4_NEG: { mustBeConnected: true },
IN4_POS: { mustBeConnected: true },
} as any}
/>
<LMV331IDBVR
name="U2"
pcbX={50.5}
pcbY={15.6}
pcbRotation={180}
pinAttributes={{
VCC_POS: { requiresPower: true, mustBeConnected: true },
GND: { requiresGround: true, mustBeConnected: true },
OUT: { mustBeConnected: true },
IN_NEG: { mustBeConnected: true },
IN_POS: { mustBeConnected: true },
} as any}
/>
<capacitor name="C1" capacitance="100nF" footprint="0603" pcbX={44.8} pcbY={18} />
<capacitor name="C2" capacitance="100nF" footprint="0603" pcbX={33} pcbY={17.6} />
<capacitor
name="C_SENSE"
capacitance="100nF"
footprint="0603"
supplierPartNumbers={{ jlcpcb: ["C14663"] }}
pcbX={18}
pcbY={-14.5}
pcbRotation={90}
schX={-2}
schY={-2}
/>
<resistor
name="RREF"
resistance="3.9k"
footprint="0603"
supplierPartNumbers={{ jlcpcb: ["C23018"] }}
pcbX={-23}
pcbY={12.5}
pcbRotation={90}
/>
<resistor
name="R_TOP"
resistance="100k"
footprint="0603"
supplierPartNumbers={{ jlcpcb: ["C14675"] }}
pcbX={13}
pcbY={-11.5}
pcbRotation={90}
/>
<resistor
name="R_BOT"
resistance="82k"
footprint="0603"
supplierPartNumbers={{ jlcpcb: ["C137678"] }}
pcbX={22}
pcbY={-11.5}
pcbRotation={90}
/>
<resistor
name="RTH_TOP"
resistance="26k"
footprint="0603"
supplierPartNumbers={{ jlcpcb: ["C844150"] }}
pcbX={26}
pcbY={17}
pcbRotation={90}
/>
<resistor
name="RTH_100"
resistance="3.6k"
footprint="0603"
supplierPartNumbers={{ jlcpcb: ["C22980"] }}
pcbX={26}
pcbY={13.6}
pcbRotation={90}
/>
<resistor
name="RTH_80"
resistance="3.6k"
footprint="0603"
supplierPartNumbers={{ jlcpcb: ["C22980"] }}
pcbX={26}
pcbY={9}
pcbRotation={90}
/>
<resistor
name="RTH_60"
resistance="2.7k"
footprint="0603"
supplierPartNumbers={{ jlcpcb: ["C13167"] }}
pcbX={26}
pcbY={5}
pcbRotation={90}
/>
<resistor
name="RTH_40"
resistance="4.7k"
footprint="0603"
supplierPartNumbers={{ jlcpcb: ["C23162"] }}
pcbX={26}
pcbY={1}
pcbRotation={90}
/>
<resistor
name="RTH_20"
resistance="59k"
footprint="0603"
supplierPartNumbers={{ jlcpcb: ["C309564"] }}
pcbX={24.5}
pcbY={-10.2}
pcbRotation={90}
/>
<resistor
name="RHYS1"
resistance="3.3M"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C470023"] }}
pcbX={31}
pcbY={6.5}
pcbRotation={0}
schX={1}
schY={-1}
/>
<resistor
name="RHYS2"
resistance="3.3M"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C470023"] }}
pcbX={35}
pcbY={6}
pcbRotation={0}
schX={3}
schY={-1}
/>
<resistor
name="RHYS3"
resistance="3.3M"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C470023"] }}
pcbX={41}
pcbY={6}
pcbRotation={0}
schX={7}
schY={-1}
/>
<resistor
name="RHYS4"
resistance="3.3M"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C470023"] }}
pcbX={47}
pcbY={6}
pcbRotation={0}
schX={9}
schY={-1}
/>
<resistor
name="RHYS5"
resistance="3.3M"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C470023"] }}
pcbX={52}
pcbY={6}
pcbRotation={0}
schX={-1}
schY={6}
/>
<resistor
name="RPU1"
resistance="1M"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C138033"] }}
pcbX={29}
pcbY={3.5}
pcbRotation={0}
/>
<resistor name="RPU2" resistance="1M" footprint="0402" supplierPartNumbers={{ jlcpcb: ["C138033"] }} pcbX={35} pcbY={3.5} pcbRotation={0} />
<resistor name="RPU3" resistance="1M" footprint="0402" supplierPartNumbers={{ jlcpcb: ["C138033"] }} pcbX={41} pcbY={3.5} pcbRotation={0} />
<resistor name="RPU4" resistance="1M" footprint="0402" supplierPartNumbers={{ jlcpcb: ["C138033"] }} pcbX={47} pcbY={3.5} pcbRotation={0} />
<resistor name="RPU5" resistance="1M" footprint="0402" supplierPartNumbers={{ jlcpcb: ["C138033"] }} pcbX={52} pcbY={3.5} pcbRotation={0} />
<led name="LED1" footprint="0603" color="red" pcbX={28} pcbY={-12.5} />
<resistor name="RLED1" resistance="1k" footprint="0603" pcbX={28} pcbY={-10} pcbRotation={90} />
<silkscreentext text="20%" pcbX={28} pcbY={-6.5} fontSize="1.7mm" anchorAlignment="center" />
<led name="LED2" footprint="0603" color="yellow" pcbX={34} pcbY={-12.5} />
<resistor name="RLED2" resistance="1k" footprint="0603" pcbX={34} pcbY={-10} pcbRotation={90} />
<silkscreentext text="40%" pcbX={34} pcbY={-6.5} fontSize="1.7mm" anchorAlignment="center" />
<led name="LED3" footprint="0603" color="yellow" pcbX={40} pcbY={-12.5} />
<resistor name="RLED3" resistance="1k" footprint="0603" pcbX={40} pcbY={-10} pcbRotation={90} />
<silkscreentext text="60%" pcbX={40} pcbY={-6.5} fontSize="1.7mm" anchorAlignment="center" />
<led name="LED4" footprint="0603" color="green" pcbX={46} pcbY={-12.5} />
<resistor name="RLED4" resistance="1k" footprint="0603" pcbX={46} pcbY={-10} pcbRotation={90} />
<silkscreentext text="80%" pcbX={46} pcbY={-6.5} fontSize="1.7mm" anchorAlignment="center" />
<led name="LED5" footprint="0603" color="green" pcbX={52} pcbY={-12.5} />
<resistor name="RLED5" resistance="1k" footprint="0603" pcbX={52} pcbY={-10} pcbRotation={90} />
<silkscreentext text="100%" pcbX={52} pcbY={-6.5} fontSize="1.7mm" anchorAlignment="center" />
<trace from="J_BAT_POS.pin1" to="net.BAT_RAW" />
<trace from="J_BAT_POS.pin2" to="net.BAT_RAW" />
<trace from="J_BAT_POS.pin3" to="net.BAT_RAW" />
<trace from="J_BAT_POS.pin4" to="net.BAT_RAW" />
<trace from="J_BAT_NEG.pin1" to="net.GND" />
<trace from="J_BAT_NEG.pin2" to="net.GND" />
<trace from="J_BAT_NEG.pin3" to="net.GND" />
<trace from="J_BAT_NEG.pin4" to="net.GND" />
<trace from="net.BAT_RAW" to="D_PROT.A" />
<trace from="D_PROT.C" to="net.BAT_POS" />
<trace from="net.BAT_POS" to="RREF.pin1" />
<trace from="RREF.pin2" to="U_REF.CAT" />
<trace from="U_REF.AN" to="net.GND" />
<trace from="net.BAT_RAW" to="R_TOP.pin1" />
<trace from="R_TOP.pin2" to="net.SENSE_DIV" />
<trace from="R_BOT.pin1" to="net.SENSE_DIV" />
<trace from="R_BOT.pin2" to="net.GND" />
<trace from="net.SENSE_DIV" to="C_SENSE.pin1" />
<trace from="C_SENSE.pin2" to="net.GND" />
<trace from="net.GND" to="D_SENSE_CLAMP.A" />
<trace from="net.SENSE_DIV" to="D_SENSE_CLAMP.C" />
<trace from="U_REF.CAT" to="RTH_TOP.pin1" />
<trace from="RTH_TOP.pin2" to="net.TH_100" />
<trace from="RTH_100.pin1" to="net.TH_100" />
<trace from="RTH_100.pin2" to="net.TH_80" />
<trace from="RTH_80.pin1" to="net.TH_80" />
<trace from="RTH_80.pin2" to="net.TH_60" />
<trace from="RTH_60.pin1" to="net.TH_60" />
<trace from="RTH_60.pin2" to="net.TH_40" />
<trace from="RTH_40.pin1" to="net.TH_40" />
<trace from="RTH_40.pin2" to="net.TH_20" />
<trace from="RTH_20.pin1" to="net.TH_20" />
<trace from="RTH_20.pin2" to="R_BOT.pin2" />
<trace from="net.BAT_POS" to="U1.VCC" />
<trace from="net.BAT_POS" to="U2.VCC_POS" />
<trace from="net.GND" to="U1.GND" />
<trace from="net.GND" to="U2.GND" />
<trace from="net.BAT_POS" to="C1.pin1" />
<trace from="C1.pin2" to="net.GND" />
<trace from="net.BAT_POS" to="C2.pin1" />
<trace from="C2.pin2" to="net.GND" />
<trace from="net.SENSE_DIV" to="U1.IN1_NEG" />
<trace from="net.SENSE_DIV" to="U1.IN2_NEG" />
<trace from="net.SENSE_DIV" to="U1.IN3_NEG" />
<trace from="net.SENSE_DIV" to="U1.IN4_NEG" />
<trace from="net.SENSE_DIV" to="U2.IN_NEG" />
<trace from="net.TH_20" to="U1.IN1_POS" />
<trace from="net.TH_40" to="U1.IN2_POS" />
<trace from="net.TH_60" to="U1.IN3_POS" />
<trace from="net.TH_80" to="U1.IN4_POS" />
<trace from="net.TH_100" to="U2.IN_POS" />
<trace from="U1.OUT1" to="RHYS1.pin1" />
<trace from="RHYS1.pin2" to="net.TH_20" />
<trace from="net.BAT_POS" to="RPU1.pin1" />
<trace from="RPU1.pin2" to="U1.OUT1" />
<trace from="U1.OUT2" to="RHYS2.pin1" />
<trace from="RHYS2.pin2" to="net.TH_40" />
<trace from="net.BAT_POS" to="RPU2.pin1" />
<trace from="RPU2.pin2" to="U1.OUT2" />
<trace from="U1.OUT3" to="RHYS3.pin1" />
<trace from="RHYS3.pin2" to="net.TH_60" />
<trace from="net.BAT_POS" to="RPU3.pin1" />
<trace from="RPU3.pin2" to="U1.OUT3" />
<trace from="U1.OUT4" to="RHYS4.pin1" />
<trace from="RHYS4.pin2" to="net.TH_80" />
<trace from="net.BAT_POS" to="RPU4.pin1" />
<trace from="RPU4.pin2" to="U1.OUT4" />
<trace from="U2.OUT" to="RHYS5.pin1" />
<trace from="RHYS5.pin2" to="net.TH_100" />
<trace from="net.BAT_POS" to="RPU5.pin1" />
<trace from="RPU5.pin2" to="U2.OUT" />
<trace from="net.BAT_POS" to="RLED1.pin1" />
<trace from="RLED1.pin2" to="LED1.anode" />
<trace from="LED1.cathode" to="U1.OUT1" />
<trace from="net.BAT_POS" to="RLED2.pin1" />
<trace from="RLED2.pin2" to="LED2.anode" />
<trace from="LED2.cathode" to="U1.OUT2" />
<trace from="net.BAT_POS" to="RLED3.pin1" />
<trace from="RLED3.pin2" to="LED3.anode" />
<trace from="LED3.cathode" to="U1.OUT3" />
<trace from="net.BAT_POS" to="RLED4.pin1" />
<trace from="RLED4.pin2" to="LED4.anode" />
<trace from="LED4.cathode" to="U1.OUT4" />
<trace from="net.BAT_POS" to="RLED5.pin1" />
<trace from="RLED5.pin2" to="LED5.anode" />
<trace from="LED5.cathode" to="U2.OUT" />
</board>
)
}