ShiboSoftwareDev/magsafe-spin-counter
A 48 mm round, battery-powered MagSafe spin counter PCB featuring an nRF52840 BLE module, TMAG5273 magnetic sensor, 32.768 kHz crystal, 3 V coin cell, pushbutton, pull-ups, decoupling capacitors, and SWD test points.
- Version
- 1.0.2
- License
- unset
- Stars
- 0
index.circuit.tsx
PCB
Schematic
import { E73_2G4M08S1C } from "./imports/E73_2G4M08S1C"
import { TMAG5273A2QDBVR } from "./imports/TMAG5273A2QDBVR"
import { TS_1185_W_4P_H1_8_160 } from "./imports/TS_1185_W_4P_H1_8_160"
import { X1A0000610002 } from "./imports/X1A0000610002"
import { XDCR_1220_006 } from "./imports/XDCR_1220_006"
import { CL05B104KO5NNNC } from "./imports/CL05B104KO5NNNC"
import { A_0402CG120J500NT } from "./imports/A_0402CG120J500NT"
import { A_0402WGF4701TCE } from "./imports/A_0402WGF4701TCE"
import { A_0402WGF1002TCE } from "./imports/A_0402WGF1002TCE"
const jlc = (partNumber: string) => ({ jlcpcb: [partNumber] })
const pogoTestPointFootprint = () => (
<footprint>
<smtpad
shape="circle"
radius="0.75mm"
pcbX={0}
pcbY={0}
portHints={["pin1"]}
/>
<courtyardcircle pcbX={0} pcbY={0} radius="0.9mm" />
</footprint>
)
export default () => (
<board
title="MagSafe Spin Counter"
width="48mm"
height="48mm"
borderRadius="24mm"
thickness="1.2mm"
layers={2}
material="fr4"
fabricatorPreset="jlcpcb_economy_20260912"
doubleSidedAssembly
solderMaskColor="black"
silkscreenColor="white"
minTraceWidth="0.15mm"
defaultTraceWidth="0.18mm"
nominalTraceWidth="0.18mm"
minTraceToPadEdgeClearance="0.15mm"
minTraceToHoleEdgeClearance="0.2mm"
minPadEdgeToPadEdgeClearance="0.15mm"
minBoardEdgeClearance="0.25mm"
minViaEdgeToPadEdgeClearance="0.13mm"
minViaHoleEdgeToViaHoleEdgeClearance="0.2mm"
minPlatedHoleDrillEdgeToDrillEdgeClearance="0.2mm"
minViaHoleDiameter="0.3mm"
minViaPadDiameter="0.45mm"
defaultViaTenting="top_and_bottom_tented"
autorouter="auto_local"
autorouterEffortLevel="10x"
schTraceAutoLabelEnabled
schMaxTraceDistance={5}
>
<hole name="H1" diameter="5.5mm" pcbX={0} pcbY={0} />
<keepout
shape="rect"
width="15.5mm"
height="7mm"
pcbX={0}
pcbY={-20.4}
layers={["top", "bottom"]}
excludeRefs={[".U1"]}
/>
<schematicsheet
name="Main"
displayName="MagSafe Spin Counter"
sheetIndex={0}
sheetSize="A4"
/>
<XDCR_1220_006
name="BT1"
schSheetName="Main"
layer="bottom"
pcbX={0}
pcbY={11}
schX={-14}
schY={5}
schRotation={-90}
/>
<capacitor
name="C1"
schSheetName="Main"
capacitance="47uF"
footprint="1206"
supplierPartNumbers={jlc("C68361")}
pcbX={-11}
pcbY={-1}
schX={-11}
schY={5}
schRotation={-90}
/>
<capacitor
name="C2"
schSheetName="Main"
capacitance="4.7uF"
footprint="0603"
supplierPartNumbers={jlc("C8032")}
pcbX={-11}
pcbY={1.2}
schX={-9.5}
schY={5}
schRotation={-90}
/>
<CL05B104KO5NNNC
name="C3"
schSheetName="Main"
pcbX={-8.1}
pcbY={1.2}
schX={-8}
schY={5}
schRotation={-90}
/>
<E73_2G4M08S1C
name="U1"
schSheetName="Main"
pcbX={0}
pcbY={-13.3}
schX={0}
schY={0}
/>
<X1A0000610002
name="Y1"
schSheetName="Main"
pcbX={5.1}
pcbY={-2}
pcbRotation={180}
schX={3.9}
schY={-5.9}
schOrientation="horizontal"
/>
<A_0402CG120J500NT
name="C4"
schSheetName="Main"
pcbX={6.4}
pcbY={0.2}
schX={2.08}
schY={-6.2}
schRotation={-90}
/>
<A_0402CG120J500NT
name="C5"
schSheetName="Main"
pcbX={4}
pcbY={0.2}
pcbRotation={180}
schX={5.72}
schY={-6.2}
schRotation={-90}
/>
<TMAG5273A2QDBVR
name="U2"
schSheetName="Main"
pcbX={15}
pcbY={0}
pcbRotation={90}
schX={10}
schY={0}
/>
<CL05B104KO5NNNC
name="C6"
schSheetName="Main"
pcbX={11.9}
pcbY={-2.5}
schX={-6.5}
schY={5}
schRotation={-90}
/>
<A_0402WGF4701TCE
name="R1"
schSheetName="Main"
pcbX={10.5}
pcbY={4.5}
schX={7}
schY={-2.5}
schRotation={-90}
/>
<A_0402WGF4701TCE
name="R2"
schSheetName="Main"
pcbX={13.5}
pcbY={4.5}
schX={9}
schY={-2.5}
schRotation={-90}
/>
<A_0402WGF1002TCE
name="R3"
schSheetName="Main"
pcbX={17}
pcbY={4.5}
schX={11}
schY={-2.5}
schRotation={-90}
/>
<TS_1185_W_4P_H1_8_160
name="SW1"
schSheetName="Main"
pcbX={-13.5}
pcbY={12}
schX={-11}
schY={-4}
/>
<testpoint
name="TP1"
schSheetName="Main"
footprint={pogoTestPointFootprint()}
pcbX={-18}
pcbY={-6}
schX={-6}
schY={-4}
connections={{ pin1: "net.GND" }}
/>
<testpoint
name="TP2"
schSheetName="Main"
footprint={pogoTestPointFootprint()}
pcbX={-18}
pcbY={-3}
schX={-4.5}
schY={-4}
connections={{ pin1: "net.VBAT" }}
/>
<testpoint
name="TP3"
schSheetName="Main"
footprint={pogoTestPointFootprint()}
pcbX={-18}
pcbY={0}
schX={-3}
schY={-4}
connections={{ pin1: "net.SWDIO" }}
/>
<testpoint
name="TP4"
schSheetName="Main"
footprint={pogoTestPointFootprint()}
pcbX={-18}
pcbY={3}
schX={-1.5}
schY={-4}
connections={{ pin1: "net.SWDCLK" }}
/>
<testpoint
name="TP5"
schSheetName="Main"
footprint={pogoTestPointFootprint()}
pcbX={-18}
pcbY={6}
schX={0}
schY={-4}
connections={{ pin1: "net.RESET" }}
/>
<trace from="BT1.pin1" to="net.VBAT" width="0.4mm" />
<trace from="BT1.pin2" to="net.GND" width="0.4mm" />
<trace from="U1.VDD" to="net.VBAT" width="0.3mm" />
<trace from="U1.VDDH" to="net.VBAT" width="0.3mm" />
<trace from="U1.GND1" to="net.GND" width="0.3mm" />
<trace from="U1.GND2" to="net.GND" width="0.3mm" />
<trace from="U1.GND3" to="net.GND" width="0.3mm" />
<trace from="C1.pin1" to="net.VBAT" width="0.3mm" />
<trace from="C1.pin2" to="net.GND" width="0.3mm" />
<trace from="C2.pin1" to="net.VBAT" width="0.3mm" />
<trace from="C2.pin2" to="net.GND" width="0.3mm" />
<trace from="C3.pin1" to="net.VBAT" width="0.25mm" />
<trace from="C3.pin2" to="net.GND" width="0.25mm" />
<trace from="U1.SCL" to="net.SCL" />
<trace
from="U1.SDA"
to="net.SDA"
pcbRouteHints={[{ x: 3.25, y: -8.55, via: true, to_layer: "bottom" }]}
/>
<trace
from="U1.HALL_INT"
to="net.HALL_INT"
pcbRouteHints={[{ x: 0.55, y: -8.55, via: true, to_layer: "bottom" }]}
/>
<trace from="U2.SCL" to="net.SCL" />
<trace from="U2.SDA" to="net.SDA" />
<trace from="U2.N_INT" to="net.HALL_INT" />
<trace from="U2.VCC" to="net.VBAT" width="0.25mm" />
<trace from="U2.GND" to="net.GND" width="0.25mm" />
<trace from="U2.TEST" to="net.GND" width="0.25mm" />
<trace from="C6.pin1" to="net.VBAT" width="0.25mm" />
<trace from="C6.pin2" to="net.GND" width="0.25mm" />
<trace from="R1.pin1" to="net.VBAT" />
<trace from="R1.pin2" to="net.SCL" />
<trace from="R2.pin1" to="net.VBAT" />
<trace from="R2.pin2" to="net.SDA" />
<trace from="R3.pin1" to="net.VBAT" />
<trace from="R3.pin2" to="net.HALL_INT" />
<trace name="XL1_CORE" from="U1.XL1" to="Y1.pin1" pcbStraightLine width="0.15mm" />
<trace name="XL2_CORE" from="U1.XL2" to="Y1.pin2" pcbStraightLine width="0.15mm" />
<trace name="XL1_LOAD" from="Y1.pin1" to="C4.pin1" pcbStraightLine width="0.15mm" />
<trace name="XL2_LOAD" from="Y1.pin2" to="C5.pin1" pcbStraightLine width="0.15mm" />
<trace from="C4.pin2" to="net.GND" />
<trace from="C5.pin2" to="net.GND" />
<trace from="U1.SWDIO" to="net.SWDIO" />
<trace from="U1.SWDCLK" to="net.SWDCLK" />
<trace from="U1.RESET" to="net.RESET" />
<trace from="SW1.pin1" to="net.RESET" />
<trace from="SW1.pin2" to="net.GND" />
<copperpour
name="GND_TOP"
connectsTo="net.GND"
layer="top"
clearance="0.2mm"
boardEdgeMargin="0.3mm"
cutoutMargin="0.25mm"
/>
<copperpour
name="GND_BOTTOM"
connectsTo="net.GND"
layer="bottom"
clearance="0.2mm"
boardEdgeMargin="0.3mm"
cutoutMargin="0.25mm"
/>
<silkscreentext
text="MAGSAFE SPIN COUNTER"
pcbX={0}
pcbY={20.5}
fontSize="1mm"
anchorAlignment="center"
/>
<silkscreentext
text="TMAG5273 r=15mm"
pcbX={14}
pcbY={6}
fontSize="0.7mm"
anchorAlignment="center"
/>
<silkscreentext
text="G V D C R"
pcbX={-20}
pcbY={0}
pcbRotation={90}
fontSize="0.7mm"
anchorAlignment="center"
/>
</board>
)
