Skip to the content
2 layers76 × 70 mmHeads panel, the printed circuit board in 3D

Open, low-cost torsion balance for measuring the spurious forces (supply-lead Lorentz forces, heating, convection) that dominate small-force and thrust experiments: printable CadQuery mechanics, a validated force-noise model, and JLCPCB-assembled RP2040 electronics designed in KiCad and ngspice.

Size
76 × 70 mm
Copper layers
2
Thickness
1.6 mm
Parts
58
Nets
18
Pads
142
Tracks, vias
315, 29
Pours
8
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
24 Oct 2026
Updated
7 Nov 2026

Overview

Heads panel is an open-source printed circuit board by arcticoder, from the arcticoder/spurious-force-balance repository on GitHub, published under the MIT licence. It is a 2-layer board of 76 × 70 mm with 58 parts on 18 nets, routed with 315 tracks and 29 vias.

Its parts include 10 capacitors, 6 ICs and 4 connectors. It belongs with the sensors and measurement boards and the RP2040 boards of this library.

README

README.md

spurious-force-balance

An open, low-cost torsion balance for measuring the spurious forces that dominate small-force and thrust experiments, with printable mechanics, a validated force-noise model and fab-assembled electronics.

The question. On an open, fully SMT-assembled, low-cost torsion balance operating in air, quantify the forces that usually pass for thrust: the Lorentz force of supply-lead currents in the ambient magnetic field, and the thermal and convective forces of a dissipating device. Measure them as functions of current, lead geometry and dissipated power, with the balance's force noise floor, calibration constant and drift fully characterized. The instrument claim is a resolution of 0.4 nN or better (5σ on a 20 nN term) in a 1000 s measurement, at a parts cost to be filled in from the final bill of materials.

Status

PieceState
G1 measurement goalconfirmed 2026-10-23
G2 mechanicsan FR4 arm board on edge hung from a torsion head, collision-free over the swing, centre of mass solved onto the axis; JLC mechanical boards (Gerbers and DRC done); stock-size acrylic enclosure; field-modelled eddy damper; cutting jigs; fabrication decisions, assembly steps
G3 force-noise prediction0.108 nN (1σ, 1000 s, in air): a conditional go
WP1–WP3: requirements, 48 JLC-stocked parts, analog block simulationsdone
WP4 schematicdone as checked netlists (main board + four head boards, 50 JLC parts); sheet rendering and WP5 layout wait
A5: prototype noise measurementnext; it decides layout and the board order

The prediction is dominated by air currents (4.8 nN/√Hz), so the verdict flips at about 4 mm/s of air-speed fluctuation; the enclosure is the biggest noise control. The model reproduces six published numbers, from Soni and Roy (Rev. Sci. Instrum. 84, 095103, 2013) and the cryogenic torsion balance of arXiv:2206.02890.

Layout

PathWhat
docs/plan.mdthe plan: goal, mechanics, noise budget, environment control, calibration
docs/fabrication.md, docs/assembly.mdhow each part is made (fab boards, PLA, bought; JLC orders, coupons and parcels) and how to build it
docs/bringup.md, docs/procedures.mdpowering up the electronics step by step; the prototype check, calibration and measurement campaign
docs/paper/the paper skeleton (LaTeX; results are placeholders)
hardware/balance/parametric CAD (balance.py, STL and STEP in cad/), the FR4 boards for JLC (boards.py, boards/fab/), jigs, analytic model, parameters, checks
hardware/instrument/the electronics: requirements, pin map, parts table, ngspice simulations, checks
hardware/tools/jlc_query.pysearch of the JLCPCB parts snapshot
tools/force_noise_budget.pythe force-noise prediction and the anchor checks
docs/TODO-agent.md, docs/TODO-arcticoder.mdthe work lists (TODO-BLOCKED.md, TODO-backlog.md, TODO-completed.md beside them)

Running the checks

Setup (Linux/WSL) is in hardware/README.md: KiCad 9, a Python venv with CadQuery, SKiDL and ngspice.

text
python3 tools/force_noise_budget.py                       # the noise prediction and anchor checks
~/.venvs/lab-hw/bin/python tools/run_all_smoke_tests.py   # CAD, pin map, power budget, simulations

Construction rules

  • Every electronic part is a machine-placed SMT part from JLCPCB's own library; nothing is hand-soldered and nothing is mailed to the fab.
  • USB power only; nothing above 50 V DC or 30 V AC. The device current is capped at 300 mA by the USB budget.
  • The balance carries no permanent magnet on the moving arm (a 6 × 3 mm N42 disc alone would add about 7 nN/√Hz of field noise); masses on the arm are brass or plastic.

Companion circuits

The bench circuits this experiment uses for its prototype check (lock-in amplifier, optical shadow readout, R-2R signal generator) live in arcticoder/lab, which also holds the shared parts inventory and order ledger.

License

  • Code (MIT, LICENSE): the Python sources, including the CadQuery scripts and the noise model.
  • Hardware designs and their documentation (CERN-OHL-P v2, LICENSE-HARDWARE): the CAD outputs (STL, STEP), KiCad files when they exist, SPICE netlists, parts tables and BOMs, and the assembly and design documents. A CadQuery .py file is code (MIT) whose output is hardware (CERN-OHL-P).

Parts

58
QtyValueFootprintReferences
38FID1, FID2, FID3, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB, MB +22
8C0603C0603C1, C3, C4, C5, C7, C8, C9, C10
4CONN-SMD_4P-P1.00_SM04B-SRSS-TB-LF-SNCONN-SMD_4P-P1.00_SM04B-SRSS-TB-LF-SNJ1, J2, J3, J4
4WSON-6_L2.0-W2.0-P0.65-TL-EPWSON-6_L2.0-W2.0-P0.65-TL-EPU1, U3, U5, U6
2C0805C0805C2, C6
2LGA-16_L3.0-W3.0-P0.50-BL_SQLGA-16_L3.0-W3.0-P0.50-BL_SQU2, U4

More from arcticoder/spurious-force-balance

2
  • 2 layers36 × 96.5 mmSmall panel, the printed circuit board in 3D

    Small panel

    arcticoder/spurious-force-balance

    Open, low-cost torsion balance for measuring the spurious forces (supply-lead Lorentz forces, heating, convection) that dominate small-force and thrust experiments: printable CadQuery mechanics, a validated force-noise…

    41 partsMIT
  • 2 layers24 × 34 mmElec board, the printed circuit board in 3D

    Elec board

    arcticoder/spurious-force-balance

    Open, low-cost torsion balance for measuring the spurious forces (supply-lead Lorentz forces, heating, convection) that dominate small-force and thrust experiments: printable CadQuery mechanics, a validated force-noise…

    2 partsMIT

Similar boards

  • 2 layers252.9 × 77.6 mmSteno, the printed circuit board in 3D

    Steno

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    58 parts915
  • 2 layers50 × 50 mmAvrcraft poed, the printed circuit board in 3D

    Avrcraft poed

    cnlohr/avrcraft

    Minecraft server optimized for 8-bit devices.

    58 parts471
  • 2 layers97.3 × 71 mmZynScreen v1.5, the printed circuit board in 3D

    ZynScreen v1.5

    zynthian/zynthian-hw

    Zynthian hardware stuff: PCBs, schemes, parts specifications, pin assignment, ...

    58 parts156
  • 2 layers34 × 46 mmNfcemu, the printed circuit board in 3D

    Nfcemu

    solosky/nfc-emu

    NFC模拟器

    58 parts117Apache-2.0
  • 2 layers148 × 81 mmCommunicator pcb, the printed circuit board in 3D

    Communicator pcb

    Hack-a-Day/2025-Communicator_Badge

    The 2025 Hackaday Supercon RF Communicator Badge

    58 parts107MIT
  • 2 layers53.3 × 36.3 mmMcu holder, the printed circuit board in 3D

    Mcu holder

    AlaaSaadAbdo/Rommana

    A 30 key well powered by Xiao BLE

    58 parts105
  • 2 layers70 × 30.3 mmPico 2HP Audio, the printed circuit board in 3D

    Pico 2HP Audio

    rheslip/2HPico-Eurorack-Module-Hardware

    2HP Eurorack module based on Raspberry Pi Pico 2

    58 parts84
  • 2 layers35.7 × 34.2 mmWideband controller, the printed circuit board in 3D

    Wideband controller

    mck1117/wideband

    The firmware/boards directory contains configuration for each board this firmware supports.

    58 parts81MIT

Questions

How big is the Heads panel PCB?

It measures 76 × 70 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Heads panel use?

58 parts. 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 Heads panel KiCad files?

From the arcticoder/spurious-force-balance repository on GitHub, at the commit this page was made from: the board is hardware/instrument/heads_panel/out/heads_panel.kicad_pcb and its schematic hardware/instrument/schematic/out/sensor_head_2.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Heads panel design in my own project?

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