Skip to content

Repository files navigation

Helmholtz Rig

Helmholtz rig License

Umbrella project for a 3-axis Helmholtz coil rig: it generates a controlled magnetic field on the X/Y/Z axes, calibrates the coils against a wireless magnetometer, and programs target fields in open loop.

This repository groups the four components of the system as git submodules and documents how they fit together. Each component lives in its own repository.

Components

Component Role Tech Interface
HelmMagControl Drives 3 Wanptek KPS3020D power supplies (one per axis) over Modbus RTU Delphi / Lazarus (Pascal) TCP text server, port 4444
HelmCalib Fits the field model B = M·I + b and solves currents for a target field Lazarus/FPC + Delphi (Pascal) TCP text server, port 4445
SensorCastFMX Wireless magnetometer (also accelerometer + gyroscope) on an Android phone, with 3D view Delphi FireMonkey UDP, ports 51042/51043
python-client-for-helmholtz-rig Control hub: clients for all of the above + automatic calibration Python

Architecture

flowchart LR
    PY["python-client<br/>(control hub)"]
    HC["HelmCalib<br/>TCP 4445"]
    HM["HelmMagControl<br/>TCP 4444"]
    PS["3x Wanptek KPS3020D<br/>(Modbus RTU)"]
    COILS["Helmholtz coils<br/>X / Y / Z"]
    PH["SensorCastFMX<br/>(Android, UDP)"]

    PY -- "SETCURRENTS / SETFIELD / CALIB" --> HC
    PY -- "SET I/V, OUT, READ ALL" --> HM
    PY -- "HOLA / JSON" --> PH
    HC -- "READ ALL / set currents" --> HM
    HM -- "Modbus RTU" --> PS
    PS --> COILS
    COILS -. "magnetic field" .-> PH
Loading

Calibration loop (HelmholtzRig.auto_calibrate in the Python client): for each target current triple → HelmCalib applies it to the coils (via HelmMagControl) → the field settles → the phone measures the mean field (UDP JSON) → the point (I, B) is accumulated → finally the model B = M·I + b is fitted by least squares.

Cloning

This repo references the components as submodules. To clone everything at once:

git clone --recurse-submodules https://github.com/ebalvis/helmholtz-rig.git

If you already cloned without --recurse-submodules:

git submodule update --init --recursive

To pull the latest of every component:

git submodule update --remote --merge

License

MIT. Each component carries its own LICENSE file.

About

Umbrella project for the Helmholtz coil rig: 3-axis magnetic field generation, calibration and wireless magnetometer. Links the four components as submodules.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors