Skip to the content
PCBKitNew board
2 layers284 × 54.7 mmAdc board, the printed circuit board in 3D

Open source force plates for golf performance

Size
284 × 54.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
115
Nets
86
Pads
386
Tracks, vias
1,052, 294
Pours
18
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
24 Sep 2026
Updated
5 Nov 2026

Overview

Adc board is an open-source printed circuit board by open-flight, from the open-flight/open-fp repository on GitHub, published under the AGPL-3.0 licence. It is a 2-layer board of 284 × 54.7 mm with 115 parts on 86 nets, routed with 1,052 tracks and 294 vias.

It is built around the RG1608P-152-B-T5, GRM1885C1H102JA01D and S3B-XH-SM4-TB(LF)(SN), with the M2.5 and TSM-108-01-T-SV-P among its other parts. Its parts include 58 capacitors, 33 resistors, 12 connectors and 8 ICs. It belongs with the sensors and measurement boards of this library.

Main components

5

README

hardware/pcb/adc-board/README.md

ADC board (8 × ADS1220, UNO Q shield)

One assembled PCB that replaces the two stripboard ADC carriers, the eight ADS1220 breakouts, the bridge resistors and the whole wire harness. It plugs straight onto the UNO Q like any UNO shield. Each load-cell cable plugs into its own JST-XH socket. PCBWay assembles every part, so you don't solder anything.

Firmware doesn't change. The pin map and the ADC configuration (0E C4 40 00: AIN0−AIN1, gain 128, PGA on, 1 kSPS turbo, continuous, external reference REFP0/REFN0) are the same as on the stripboard build.

Board284 × 50 mm (54.7 mm at the header tabs), 2 layers, 1.6 mm FR4, 1 oz
Parts8 × ADS1220IPWR (on the board itself, not modules), 8 × JST-XH 3-pin side-entry SMT, 4 SMD shield headers, 0603/0805 passives. All on the underside. The top has copper and silkscreen only
Rendersrenders/: top, bottom, 3D
Schematicadc-board-schematic.pdf
Order filesadc-board-gerbers.zip, assembly/adc-board-bom.csv, assembly/adc-board-centroid.csv
ChecksERC 0 errors 0 warnings; DRC 0 errors, 0 unconnected, schematic parity clean (kicad-cli, KiCad 10.0.4)

Circuit (one channel; there are eight)

The same circuit as the proven breakout build, with the chip on the board:

  • ADS1220IPWR (TSSOP-16). AVDD and DVDD go to 3V3, AVSS and DGND to GND. A 100 nF X7R sits at each supply pin, plus 10 µF per channel.
  • Ratiometric reference: REFP0 goes to 3V3 (the same rail as the cell's E+) and REFN0 to GND, with 100 nF across them at the pins.
  • CLK goes to GND (internal oscillator). AIN2 and AIN3 are not connected.
  • AIN0 = cell S. AIN1 is the midpoint of a 1.5 kΩ / 1.5 kΩ divider (Susumu RG1608P, 0.1 %, 25 ppm/°C thin film, 0603). The two resistors sit side by side next to their ADC, so they share its temperature. AIN1 is about 1.65 V, the same as the stripboard's 1 kΩ pair. Each channel draws about 3.3 mA in total (cell 1.65 mA, divider 1.1 mA, ADC ~0.4 mA), so the whole board draws about 30 mA from the Q's 3V3 pin.
  • Input RC filter (new): 100 Ω in series with AIN0 and AIN1, 10 nF C0G across them, 1 nF C0G from each to GND. That's a differential corner of about 76 kHz and a common-mode corner of about 1.6 MHz. It keeps RF and SPI edges out of the PGA without touching the 1 kSPS signal.
  • JST-XH 3-pin per channel. Pin 1 = E+ (white), pin 2 = E− (black), pin 3 = S (red), the same order as the cradle-end JST in docs/wiring.md §3–4. The silkscreen shows the channel name, pin 1 and W/B/R next to every socket, on both sides.
  • Shared SPI. SCLK, DIN and DOUT/DRDY go to all eight chips; SCLK has a 33 Ω series resistor at the Q. Only L1's DRDY pin goes to D2. The other seven DRDY pins are left unconnected (they are push-pull outputs and must never be joined). DOUT goes high-Z while CS is high, so all eight share MISO.
  • 3V3 entry: 10 µF + 100 nF next to the header's 3V3 pin. There's no power LED.

UNO Q pin map (unchanged)

Q pinNetQ pinNet
D3CS L1D13SCLK (via R1 33 Ω)
D4CS L2D11MOSI → DIN
D5CS L3D12MISO ← DOUT
D6CS L4D2DRDY of L1 only
D7CS R13V33V3
D8CS R2GNDGND (three header pins)
D9CS R3D0, D1, D10not connected
A2CS R4everything elsenot connected (pins are still fitted, for strength)

Layout

  • All four shield headers are fitted (1×10, 2× 1×8, 1×6), at the UNO R3 positions (including the 0.16" offset between D7 and D8). The generator checks every pin against the UNO R3 grid.
  • Each channel sits beside its wall slot. From the board centre outwards: the ADC, then the RC network and divider, then the JST, whose mouth points along the board toward the slot. The plug lies flat under the board, in a strip kept free of parts.
  • SPI and the chip selects run in the middle of the board. Over each channel's analog end (AIN pair, divider, RC, JST), keepouts stop tracks on the top layer and along the board edge, so no SPI line runs over or past AIN0/AIN1. The top layer there is solid ground.
  • GND pours on both layers, stitched with about 195 vias. The Gerbers were re-read and rasterized with pygerber 2.4 as a check (outline 284.0 × 54.7 mm, both copper layers).
  • Rules: 0.2 mm tracks and clearance (0.4 mm for power). The only exception is tracks entering the ADS1220's 0.65 mm-pitch pins, which may come within 0.15 mm (adc-board.kicad_dru). Vias are 0.6/0.3 mm. Copper stays ≥ 0.3 mm from the edge.

Channel → connector → slot

Slot x positions are in the enclosure frame (+x = toe). The JST mouth is where the plug goes in. The plug body then runs about 10 mm further toward the slot (VERIFY).

ChRefCSPlate cornerWallSlot xADC at xJST mouth at x
L1J1, U1D3toe, outer+y+125+88+110, facing +x
L2J2, U2D4toe, inner+y+85+48+70, facing +x
L3J3, U3D5heel, inner+y−85−48−70, facing −x
L4J4, U4D6heel, outer+y−125−88−110, facing −x
R1J5, U5D7toe, inner−y+85+48+70, facing +x
R2J6, U6D8toe, outer−y+125+88+110, facing +x
R3J7, U7D9heel, outer−y−125−88−110, facing −x
R4J8, U8A2heel, inner−y−85−48−70, facing −x

Each JST is centred 17.8 mm from the board's centreline, on the same side as its wall.

Stack-up (enclosure frame, z in mm)

The board sits on the Q's headers, so its height is set by the Q. Nothing fits under the current lid, so the enclosure has to grow by 2.4 mm. That's within the 2.6 mm the ramps allow.

zWhat
0base underside
2.4floor top
5.4ADC pad tops (standoffs start here)
7.4 – 9.0UNO Q PCB (on its 5 mm bosses)
~12.5tallest Q top-side parts (USB-C)
17.5top of the Q's female headers (8.5 mm; VERIFY)
17.5 – 20.0our SMD male headers' plastic body (2.54 mm); posts go down into the Q's headers
20.0 – 21.6this board
~13.9 – 20.0underside parts: JST-XH side-entry (~6.1 mm high, VERIFY) and the plug beside it; the TSSOP and passives reach only 18.8 – 20.0
21.6board top: copper and silkscreen only, no parts, no through-hole pins
22.3lid underside after the change below (0.7 mm air gap)
24.3lid top after the change (ceiling 24.5)

Support: four M2.5 holes at (±54.5, 0) and (±129.5, 0), on the ADC pads' insert grid. Use standoffs 14.5 mm long (board underside 20.0 − pad top 5.4 = 14.6). Male-female hex standoffs work if the male thread fits the 2.5 mm-deep insert; otherwise use F-F standoffs with a short M2.5 set screw (VERIFY the insert depth). There's no room for screw heads on top (0.7 mm gap), so the standoffs only carry the board. The 32 header pins hold it down, and the lid stops it lifting more than 0.7 mm. If you want it clamped, stick a 0.5–0.7 mm rubber or foam dot on the board top over each standoff.

The USB-C cable to the Q runs along the floor/pads under the board (z 5.4 – ~10). Route it beside the two heel standoffs at y = 0. Nothing else under the board comes below z ≈ 13.9.

Enclosure changes (applied to the STEP/STL on 2026-10-12, see docs/VERIFIED.md)

  1. Raise the base walls by 2.4 mm: wall top z 19.9 → 22.3. Lid posts (±140, ±23) grow by the same amount, so the M2.5 inserts stay at the top. The lid plate stays 2.0 mm thick, so the outer height goes 21.9 → 24.3 (ramps rise 24.5). The Q bosses, ADC pads and inserts stay as they are.
  2. Cut the lid's locating lip away along both long sides for x −20 … +34 (applied as x −34 … +34, so the lid fits either way round). The board has tabs out to y ±27.35 under the shield headers (x −18 … +32). The SMD header pads need them, because the Q's headers sit only 2.5 mm from its edge. Elsewhere the board stays inside y ±25.0, clear of the lip ring (inner edge ±25.3). After the raise, the lip spans z 20.8 – 22.3 and would hit the tabs (board top 21.6).
  3. Make the eight cable slots taller: z 2.4 … 9.4 → z 2.4 … 19.0, same 6 mm width, at x ±85 and ±125 in both long walls. The plug and cable leave the JST at about z 15 – 18 (just under the board), 7 mm in from the wall, so a tall slot lets the cable run straight out instead of kinking down to the floor. If you'd rather keep the slots, the cable needs an S-bend of about 8 mm in the last 10 mm (VERIFY with a real plug).
  4. Board corner notches (x beyond ±135.5, |y| beyond 18.5) clear the lid posts. Nothing to change there.

What changes for you, compared with the stripboard build

  • Nothing in the firmware or config. Same pins, same registers, same channel order. signs in the config still covers E+/E− swaps.
  • No soldering. At each cable's board end, crimp a 3-way JST XHP-3 housing (pin 1 white E+, 2 black E−, 3 red S), the same pinout as the cradle end, then thread the cable through its slot. Plug it in before you lower the board onto the Q (the plugs go in sideways, under the board).
  • The cable shield/drain has no pin on the 3-way XH. Cut it back and insulate it at both ends. If noise turns out worse than on the stripboard, ground the drain at the board end under a standoff screw (VERIFY on the bench).
  • The bridge resistors are 1.5 kΩ instead of 1 kΩ (same 0.1 % class, now 25 ppm/°C thin film). AIN1 sits at the same ~1.65 V, so the calibration procedure is the same. Recalibrate anyway, as with any new hardware.
  • No breakout modules, no headers to solder, no harness, no strip cuts. The bring-up checks in docs/harness.md §4–5 still apply. The bench/spi_diag sketch and tools/bench/multi_cell.py work unchanged.

Ordering at PCBWay

PCB: 2 layers, 284 × 54.7 mm, FR-4 TG150, 1.6 mm, 1 oz outer copper, min track/space 6/6 mil (0.15 mm), min hole 0.3 mm, lead-free HASL (or ENIG for a flatter TSSOP land, about +$10), green mask, white silk, quantity 5. Upload adc-board-gerbers.zip (Gerber X2 + separate PTH/NPTH Excellon, origin at the board's lower-left corner).

Assembly: turnkey, quantity 2 (or 3), single side: bottom (every part is on the bottom; there are no through-hole parts). Upload assembly/adc-board-bom.csv and assembly/adc-board-centroid.csv. In the notes:

  • "All components on the bottom side. Centroid file is KiCad's, viewed from the top. Please send the placement review (DFM) before production."
  • "Samtec TSM headers: please use the -P (pick-and-place pad) version, or an equivalent 2.54 mm SMT male header with 0.64 mm square posts, 2.54 mm body, posts ≥ 5.8 mm, tails alternating."
  • "U1–U8 pin 1: dot on silkscreen/fab. J1–J8: JST S3B-XH-SM4-TB(LF)(SN), mouth facing the board end."

Rough cost (prices vary): PCBs about $30–60 for 5. Parts about $110–140 per board (8 × ADS1220 ≈ $55–75, 16 Susumu 0.1 % ≈ $10–15, 4 Samtec TSM ≈ $15–25, JSTs ≈ $5, passives ≈ $3). Assembly setup plus labour about $50–90 for 2 boards. Expect about $350–450 for 2 assembled boards plus shipping.

BOM (12 lines; the full file is assembly/adc-board-bom.csv)

RefsQtyPartMPN
U1–U88ADC, TSSOP-16TI ADS1220IPWR
R101, R102, … R801, R802161.5 kΩ 0.1 % 25 ppm 0603Susumu RG1608P-152-B-T5 (alt. Panasonic ERA-3AEB152V)
R103, R104, …16100 Ω 1 % 0603Yageo RC0603FR-07100RL
R1133 Ω 1 % 0603Yageo RC0603FR-0733RL
C?01–C?03, C225100 nF X7R 50 V 0603Murata GRM188R71H104KA93D
C?04810 nF C0G 50 V 0603Murata GRM1885C1H103JA01D
C?05, C?06161 nF C0G 50 V 0603Murata GRM1885C1H102JA01D
C?07, C1910 µF X5R 16 V 0805Murata GRM21BR61C106KE15L
J1–J88JST-XH 3-pin side-entry SMTJST S3B-XH-SM4-TB(LF)(SN)
J1211×10 SMT male headerSamtec TSM-110-01-T-SV-P
J9, J1121×8 SMT male headerSamtec TSM-108-01-T-SV-P
J1011×6 SMT male headerSamtec TSM-106-01-T-SV-P

Mating parts you need (not on the board): 8 × JST XHP-3 housings + 24 × SXH-001T-P0.6 crimp terminals (in the XH kit you already have).

Regenerating

Everything is generated from scripts/design.py, which holds the parts, nets and MPNs. The .kicad_pro, .kicad_sch and .kicad_pcb open and edit as a normal KiCad 10 project. If you edit by hand, don't rerun the generators.

sh
# KiCad 10 (macOS paths are the defaults; override KICAD_CLI / KPY), Java 21+, Freerouting 2.x
hardware/pcb/adc-board/scripts/build.sh /path/to/freerouting.jar   # sch, ERC, netlist check, place, route, DRC
hardware/pcb/adc-board/scripts/export.sh                           # gerbers, drill, zip, BOM, centroid, renders, PDF

build.sh reruns Freerouting (non-deterministic) until DRC reports zero errors.

VERIFY before ordering / on arrival

  1. UNO Q female header height. This assumes 8.5 mm (tops at z 17.5). Measure it. Every z above depends on it.
  2. Samtec TSM-1xx-01-T-SV-P: body 2.54 mm, post length ≥ 5.8 mm, and the land pattern. KiCad's PinHeader_1x..._Vertical_SMD_Pin1Left uses alternating 2.51 × 1.0 mm pads at ±1.655 mm; check it against Samtec's drawing. PCBWay may suggest an equivalent part.
  3. JST S3B-XH-SM4-TB: mouth on the side away from the signal pads (toward the MP tabs), body height ~6 mm, and how far the mated XHP-3 plug and its crimps stick out (~10 mm assumed). KiCad has no 3D model for this part, so the renders don't show it.
  4. Cable route from plug to slot. Do it with a real plug and cable. Ideally make the slots taller first (change 3).
  5. Noise, chip-on-board vs breakout module. It should be equal or better: same die, decoupling at the pins, plus an RC filter. Confirm with tools/bench/single_cell.py and the 4-cell live view before calibrating.
  6. Standoff length (14.5 mm) and the insert depth (2.5 mm).
  7. Lid fit: 0.7 mm between the board top and the raised lid. The board has no top-side parts and no through-hole pins, but check the board isn't bowed.
  8. Shield drain left unconnected (see above).

Parts

115
QtyValueFootprintReferences
25100nCapacitor_SMD:C_0603_1608MetricC2, C101, C102, C103, C201, C202, C203, C301, C302, C303, C401, C402, C403, C501, C502, C503 +9
161.5k 0.1% 25ppmResistor_SMD:R_0603_1608MetricR101, R102, R201, R202, R301, R302, R401, R402, R501, R502, R601, R602, R701, R702, R801, R802
16100Resistor_SMD:R_0603_1608MetricR103, R104, R203, R204, R303, R304, R403, R404, R503, R504, R603, R604, R703, R704, R803, R804
161n C0GCapacitor_SMD:C_0603_1608MetricC105, C106, C205, C206, C305, C306, C405, C406, C505, C506, C605, C606, C705, C706, C805, C806
910uCapacitor_SMD:C_0805_2012MetricC1, C107, C207, C307, C407, C507, C607, C707, C807
810n C0GCapacitor_SMD:C_0603_1608MetricC104, C204, C304, C404, C504, C604, C704, C804
8ADS1220IPWRPackage_SO:TSSOP-16_4.4x5mm_P0.65mmU1, U2, U3, U4, U5, U6, U7, U8
8S3B-XH-SM4-TBConnector_JST:JST_XH_S3B-XH-SM4-TB_1x03-1MP_P2.50mm_HorizontalJ1, J2, J3, J4, J5, J6, J7, J8
4M2.5MountingHole:MountingHole_2.7mm_M2.5H1, H2, H3, H4
21x08 SMD maleConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical_SMD_Pin1LeftJ9, J11
11x06 SMD maleConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical_SMD_Pin1LeftJ10
11x10 SMD maleConnector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_Vertical_SMD_Pin1LeftJ12
133Resistor_SMD:R_0603_1608MetricR1

Questions

How big is the Adc board PCB?

It measures 284 × 54.7 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Adc board use?

115 parts, built around the RG1608P-152-B-T5, GRM1885C1H102JA01D, S3B-XH-SM4-TB(LF)(SN) and M2.5. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Adc board KiCad files?

From the open-flight/open-fp repository on GitHub, at the commit this page was made from: the board is hardware/pcb/adc-board/adc-board.kicad_pcb and its schematic hardware/pcb/adc-board/adc-board.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Adc board design in my own project?

Its repository publishes it under the AGPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers129 × 79.5 mmStimjim, the printed circuit board in 3D

    Stimjim

    open-ephys/stimjim

    A precise intra and extracellular electrical stimulator

    236 parts7
  • 4 layers54 × 42 mmNmos ldo board, the printed circuit board in 3D

    Nmos ldo board

    ChenSiyun1234/nmos-ldo-board

    Discrete NMOS LDO, 1.0 V at 1 A. 4-layer KiCad board, ngspice and thermal sims.

    59 parts
  • 6 layers160 × 100 mmCourant.before colored actual models 20260918T190457, the printed circuit board in 3D

    Courant.before colored actual models 20260918T190457

    KrasForge/Courant

    A 2D finite-difference physical-modeling synthesis engine in structural VHDL: a vibrating membrane/plate/gong solved on FPGA fabric, with a nonlinear chaos term, playable polyphonically over MIDI/CV.

    199 partsMIT
  • 2 layers14 × 9 mmTelephone Buddy, the printed circuit board in 3D

    Telephone Buddy

    weaslepalace/boards

    Monorepo for PCB design stuff

    130 parts
  • 4 layers65 × 56 mmRbphat, the printed circuit board in 3D

    Rbphat

    zcrawling/LOONARover

    2026 LOONAR Rover project

    77 parts
  • 6 layers24.9 × 51.5 mmDM0001, the printed circuit board in 3D

    DM0001

    dioderobot/demo

    Demo for diode boards

    147 parts3