Skip to content

// project log

Iterventions

A chronicle of engineering by repeated mistakes.

There are plenty of websites that show the finished project.

This isn't one of them.

This is where the ugly prototypes live. The burned components. The backwards connectors. The notebook pages. The scope captures. The measurements that contradicted the assumptions.

Projects are intentionally unfinished. The goal was never to build the thing — it was to become the engineer capable of building Version N+1.

Iteration isn't just the journey.
Iteration is the destination.

// site conventions

Every project documents the evolution of understanding — not the evolution of hardware. Six blocks, every time.

01
Prototype Passport
Version, date, hypothesis, major change, unexpected discovery, next experiment. One card per build.
02
Failure Gallery
Each failure gets a card: expected, actual, lesson, would I repeat it. Celebrated, not hidden.
03
Data Notebook
Bench photos, scope captures, CAD revisions, measurements, trend plots — chronological.
04
AI Lab Notebook
Question → dataset → analysis → decision → next experiment, for every major experiment.
05
Current Understanding
What is believed true right now, stated plainly. Subject to revision on contact with data.
06
Next Iteration
The next engineering question — not the next hardware revision. Written before anything is built.

Active Projects

// 3 logged · 0 finished
Workbench with an oscilloscope, a log-viewer monitor, a 450 volt capacitor bank and a three-coil launcher rail wired up under scope probes. ACTIVE
PROJECT #001

Gauss Sequencer

A three-stage coil gun — three coils, three optical gates, and a capacitor bank that took four versions to stop being the interesting problem. It is a timing project wearing a physics project's clothes.

5
VERSIONS
4
FAILURES
33
DATA PTS
open →
Red 3D-printed pan-tilt turret on a patio table carrying a gel blaster with a drum magazine, wired to a labelled stepper-driver frame. MOTHBALLED
PROJECT #002

Residential Ordinance Platform

A dual-axis pan-tilt platform that has to hit what the camera is looking at, inside a constraint set written by a city council. Shelved at v06 — but its pan-tilt controller is next door running PROJECT #001, which is the actual result.

7
VERSIONS
3
FAILURES
18
DATA PTS
open →
MOTHBALLED
PROJECT #003

Next Mistake

Mothballed before it was started, which is a personal best. The parts are in a box with a label on it and that counts as documentation.

← ALL PROJECTS
PROJECT #001 ACTIVE V04 CURRENT

Gauss Sequencer

A three-stage coil gun, built to find out where the velocity actually goes. It is a coil gun and not a rail gun — establishing that took one whole version and a mislabelled keycap. Four versions in, the answer has moved from "the capacitors" to "the gate timing" to "the coil resistance," which is three different projects wearing the same enclosure. The coil gun is the tuition.

01

The Question

A single-stage coil gun can throw a slug. Can three coils, fired in sequence off optical gates, throw it faster — or does every stage after the first just brake what the one before it built?
02

Evolution Timeline

v00 Proof of Concept — and a name that was wrong 2025-12-08
HYPOTHESIS
10,000 µF at 35 V through one coil will move a steel slug down an acrylic barrel far enough to be worth continuing.
WHAT ACTUALLY HAPPENED
It moved. Barely — about as hard as a strong exhale. The bank stored roughly 6 J and most of that went into heating copper rather than accelerating iron.
UNEXPECTED DISCOVERY
The build is labelled RAIL GUN. There is not a rail in it. A rail gun needs two conducting rails and an armature that shorts across them; this is a coil and a barrel, which is a coil gun. Getting the name wrong was the cheapest mistake in this project and the only one that cost nothing to fix.
WHAT CHANGED
Re-spec the bank for voltage, not capacitance — energy is ½CV² and V is the squared term. The illuminated red FIRE button stays. It is load-bearing morale infrastructure.
Small first-build launcher on a white 3D-printed base: a coil and driver PCB, two 10,000 microfarad capacitors, a red illuminated fire button, a clear acrylic barrel and keycaps labelled RAIL GUN and AMMO, lit by colour-changing LEDs.
v01 Kickback — and a breadboard that had no business being there 2026-01-24
HYPOTHESIS
A freewheel path across the coil will clamp the inductive kick and keep the switch alive through repeated discharges.
WHAT ACTUALLY HAPPENED
The clamp worked. It worked on a solderless breadboard, six inches from cables I had already labelled FIRING CURRENT!!! with three exclamation marks. Both facts are in the same photograph and it took a week to notice they were arguing with each other.
UNEXPECTED DISCOVERY
If a wire needs a warning label, the layout is already the safety system and the label is a confession. Spring contacts on a breadboard are a few milliohms each until they are a few hundred, and there is no warning between those two states.
WHAT CHANGED
Coil potted and clamped to a printed rail. Barrel became a fixture instead of something held. Protection circuit off the breadboard and onto lever connectors and terminal blocks.
Hand holding a solderless breadboard carrying the coil kickback protection circuit — diode, resistors and terminal blocks — surrounded by yellow and red silicone wire and lever-nut connectors, with a green label reading Coil Kickback Protection Circuit.
Green 3D-printed rail holding a potted red coil, a clear barrel tube and a capacitor, on a bench where several cables carry paper flags reading FIRING CURRENT.
v02 Three coils, three gates, and no number 2026-02-24 → 2026-04-04
HYPOTHESIS
Sequencing three stages off optical gates beats one large stage at the same stored energy.
WHAT ACTUALLY HAPPENED
Built the entire sequencer — arm coil 1, 2 or 3, a FIRE button, a gate chain, a run counter. By run 11 the GATE 1 TRANSIT VELOCITY field still read two dashes. Eleven firings, zero measurements.
UNEXPECTED DISCOVERY
An instrument reading -- is not broken; it is reporting. Gate spacing was shorter than the sensor's own response time, so the transit was over before the second edge existed. The measurement chain was the experiment and nobody had tested it.
WHAT CHANGED
Scope permanently on the gate outputs. A log viewer, so runs stop being anecdotes. Bank rebuilt at 1000 µF / 450 V — a sixth of the capacitance and sixteen times the energy.
Full bench: a Hantek oscilloscope showing traces, a monitor running the Coil Gun Log Viewer, a touchscreen controller, a 1000 microfarad 450 volt capacitor bank in a printed enclosure, and a clear rail carrying three labelled coils and two gates under scope probes.
v03 Packaging, polarity, and a row of dead controllers 2026-07-08 → 2026-07-19
HYPOTHESIS
If the sequencer stops being a pile of loose modules, it will stop being intermittent.
WHAT ACTUALLY HAPPENED
Packaging fixed the intermittent faults and exposed a steadier one underneath. The shelf now holds an RPi Stepper PT Controller v1 and three v2s, which is two more v2s than the design called for. Two of them are on the shelf because they stopped working, not because they were spares.
UNEXPECTED DISCOVERY
The coil measures 4.3 Ω. Against a characteristic impedance of about 1.4 Ω, that makes the discharge overdamped — the coil is braking the current before the field gets interesting. This is a resistance problem that has been wearing a timing problem's coat since v01.
WHAT CHANGED
One enclosure, one connector standard, XT60 throughout. Coils marked NORTH, because polarity is not decorative. Gates moved out past the sensor response window.
Black 3D-printed enclosure labelled COIL GUN SEQUENCER holding a Raspberry Pi, a driver shield and a touchscreen, with an XT60 power lead, lit magenta.
v04 A supply of its own 2026-07-26
HYPOTHESIS
The last surviving false trigger is conducted through the shared sensor supply, not radiated into the gate line. If it were radiated, the enclosure would have killed it in v03.
UNEXPECTED DISCOVERY
Pending. The dual supply went in this morning and the rail has not been scoped under discharge yet.
WHAT CHANGED
A dedicated 15 V 50 mA dual supply for the gate sensors, battery-protected, with a 0.1 A ultra-fast-recovery diode on the rail. Scope probes now live permanently on gate 1 and the coil return instead of being clipped on when something goes wrong.
Current rig close-up: white printed chassis, a touchscreen showing READY and ARM with per-gate run statistics, a COIL GUN SEQUENCER shield, two oscilloscope probes clipped in, and a copper coil labelled with its resistance.
03

Prototype Passport

// PROTOTYPE PASSPORT GAUSS · v04
Version
v04
Date
2026-07-26
Hypothesis
The surviving false trigger is conducted through the shared sensor supply rail, not radiated into the gate line.
Major Change
Dedicated 15 V 50 mA dual supply for the gate sensors — battery-protected, 0.1 A ultra-fast-recovery diode on the rail.
Unexpected Discovery
Coil DC resistance of 4.3 Ω against a 1.4 Ω characteristic impedance puts the discharge well into overdamped. The coil brakes itself.
Next Experiment
Scope the 5 V sensor rail during discharge. Rewind stage 1 for lower DC resistance and re-run the same 11-shot series.
iterventions.com · project #001 · not finished, on purpose
04

Failure Gallery

It Says Rail Gun
v00 · 2025-12-08
EXPECTED
A rail gun, as printed on the keycap.
ACTUALLY HAPPENED
A coil gun. There are no rails. There is no armature bridging any rails. There is a solenoid and a tube, which is a different machine operating on a different principle, confidently mislabelled in three places.
Lesson: if you can't name the mechanism, you can't predict it. Every wrong intuition for the first month came from reasoning about Lorentz force on a conductor when the actual physics was reluctance pulling iron toward a field maximum.
Repeat it? Already did. The keycaps still say it.
Firing Current, Meet Breadboard
v01 · 2026-01-24
EXPECTED
A temporary test fixture, used carefully, retired quickly.
ACTUALLY HAPPENED
It stayed for weeks, six inches from cables I had personally labelled FIRING CURRENT!!! Spring contacts rated for signal-level current sat directly in a discharge path, and the only thing stopping an incident was that the bank was still small enough to be forgiving.
Lesson: the label you wrote is evidence about what you already knew. Writing FIRING CURRENT!!! on a wire and then routing it past a breadboard is not a safety measure, it's a signed confession.
Repeat it? No. Nothing solderless carries discharge current now.
Eleven Runs, No Velocity
v02 · 2026-02-24
EXPECTED
A velocity in metres per second, at gate 1, on the first shot.
ACTUALLY HAPPENED
Two dashes. Then two dashes, eleven times. The sequencer armed, fired, logged the run and reported nothing, because gate spacing was tighter than the sensor's own response time.
Touchscreen controller showing the coil gun interface: arm coil selector, a large FIRE button, run number 11, a gate chain G1 to G2 to G3, and a Gate 1 Transit Velocity field reading two dashes instead of a number.
Lesson: build the measurement chain first and test it with something whose speed you already know. Eleven shots of nothing is the same data as zero shots, at eleven times the wear.
Repeat it? Yes — but on purpose, with a known reference next time.
Three v2s and a v1
v03 · 2026-07-19
EXPECTED
One controller, revised once.
ACTUALLY HAPPENED
Four boards on a shelf. Two of the v2s are there because they died, and both died the same way — sensor side, not power side, which was the clue that took another two months to act on.
Lesson: a rev graveyard is a dataset. Two identical failures on the low-voltage side of a high-voltage machine was the answer to the false-trigger question, sitting in plain view, unread because it looked like clutter.
Repeat it? No. v2 is frozen and the dead ones got autopsied.
05

Data Notebook

CH1 · GATE DRIVE · 2 V/div5 µs/div
run_009_gate1_drive — rendered from log
Gate drive during a false-trigger event. Ringing crosses the trigger threshold twice on one edge, so one projectile transit gets counted as two.
XY · VELOCITY vs CHARGE V6 trials
runs_001_011_exit_velocity — rendered from log
Exit velocity plateaus above roughly 360 V. Whatever limits it, it isn't stored energy — which is what sent the investigation to the coil's own resistance.
Night bench under blue light: the sequencer enclosure and touchscreen beside the launcher rail, with a coil labelled 4.3 ohm and NORTH, gate flags, and a row of printed pedestals labelled RPi Stepper PT Controller v1 and v2.
gauss_v03_20260719_img_01.jpg
Stage 1 coil, marked with its measured DC resistance and its field polarity. Both marks exist because both were guessed wrong once.
Label on a frosted enclosure reading 15V 50mA DUAL PS, VERSION 20260726, BATT PROTECT, 0.1A UFR DIODE.
gauss_v04_20260726_img_01.jpg
The v04 sensor supply. Dated in the version field because a rev number would have been a lie by the second build.
The original v00 build again, shown small for scale: one coil, two 10,000 microfarad capacitors and an acrylic barrel on a printed base.
gauss_v00_20251208_img_01.jpg
v00, kept on the shelf for scale. Six joules, one stage, and a name that was wrong.
// BENCH NOTEBOOK · p.312026-07-19
Why the coil is its own brake
v00: E = ½CV² = ½(10000 µF)(35 V)² ≈ 6.1 J
v02: E = ½(1000 µF)(450 V)² ≈ 101 J  ← 1/10 the C, 16× the E
Z₀ = √(L/C) = √(2 mH / 1000 µF) ≈ 1.41 Ω
Rcoil = 4.3 Ω  → ζ = (R/2)√(C/L) ≈ 1.52
ζ > 1 → overdamped — no ring, slow rise
MARGIN NOTE

Four versions spent on switching and gate timing, and the discharge was never oscillating to begin with. At ζ = 1.52 the current creeps up and decays with no reversal, so the field peaks late — after the slug has already passed the coil centre. That is the suck-back, and it is caused by resistance, not by leaving the switch on a moment too long.

→ v05: rewind stage 1 in heavier wire for R < 2.8 Ω and re-run the same 11-shot series.

06

AI Lab Notebook

EXPERIMENT 01 Why gate 1 reported nothing for eleven runs
QUESTION
The sequencer logged 11 complete runs and every transit-velocity field came back empty. Is the sensor dead, the firmware wrong, or the geometry impossible?
DATASET
11 run logs with timestamps at each stage trigger, plus the gate sensor's own datasheet rise and fall times.
AI ANALYSIS
Gate separation divided by even a conservative slug speed gives a transit shorter than the sensor's specified output rise time. The firmware was waiting for a second edge that physically could not form. Nothing was broken; the geometry was asking for a measurement the parts cannot make.
DECISION
Move the gates apart until predicted transit exceeds 5× the sensor rise time, then re-run the same 11-shot series before changing anything else.
EXPERIMENT 02 Where the velocity plateau actually comes from
QUESTION
Exit velocity stops improving above about 360 V. Is the limit the switch, the coil, or the slug?
DATASET
Measured coil DC resistance and inductance per stage, bank capacitance, and the exit velocities from the 11-shot series across charge voltages.
AI ANALYSIS
The damping ratio computes to about 1.52 — comfortably overdamped. In that regime peak current arrives late and falls slowly, so the field is still substantial after the slug passes the coil centre. The plateau is consistent with resistive damping, not with switch speed. Adding voltage to an overdamped circuit mostly adds heat.
DECISION
Stop tuning timing. Rewind stage 1 in heavier wire targeting R below 2.8 Ω — the critical-damping threshold for this L and C — and re-measure before touching the sequencer again.
NEXT EXPERIMENT Is the last false trigger conducted or radiated?
QUESTION
The enclosure removed two of three false-trigger modes. If the survivor were radiated, shielding should have caught it too — so is it riding in on the shared sensor supply?
DATASET
Pending. The v04 isolated supply went in on 2026-07-26; the 5 V rail has not been scoped under discharge yet.
AI ANALYSIS
Pending. Prior evidence in favour: both dead v2 controllers failed on the sensor side, not the power side.
DECISION
Pending.
07

Current Understanding

For four versions this was filed as a timing problem. It is a resistance problem. At a damping ratio near 1.5 the discharge never oscillates — current rises slowly, peaks late and decays without reversing — so the field is still pulling backwards when the slug is past the coil centre. No amount of switch timing fixes a waveform shaped like that.

Stored energy has not been the constraint since v02. Going from 10,000 µF at 35 V to 1000 µF at 450 V bought sixteen times the joules with a tenth of the capacitance, and exit velocity barely noticed. That is the clearest evidence that the loss is downstream of the bank.

The measurement chain has to be commissioned before it is trusted. Eleven runs were spent firing into an instrument that could not, in principle, produce a reading. That was not a sensor fault — it was never testing the sensor against something of known speed.

What is still unknown: whether the surviving false trigger is conducted through the shared sensor supply or radiated into the gate line. The v04 isolated supply is the experiment that answers it, and it went in this morning.

08

Next Iteration

← ALL PROJECTS
PROJECT #002 MOTHBALLED V06 LAST

Residential Ordinance Platform

A dual-axis pan-tilt platform that has to put a soft projectile where the camera says it is looking. The pun is load-bearing: the binding constraint here has never been physics, it has been a municipal ordinance and a property line. Seven versions in, the projectile got softer every single time and the pan-tilt pointing got better every single time, in that order. Mothballed at v06 — not because it failed, but because the part worth keeping turned out to be the pan-tilt controller, and that has moved next door to PROJECT #001.

01

The Question

Can a dual-axis pan-tilt platform put a projectile where the camera says it is looking — repeatably — when every part of the aiming chain is 3D-printed, and the acceptable failure mode is defined not by a spec but by where the neighbour's fence is?
02

Evolution Timeline

v00 Valve first — everything else later 2025-04-25 → 2025-05-05
HYPOTHESIS
A 24 V solenoid valve on a 150 psi line can dump a chamber fast enough to launch something usefully.
WHAT ACTUALLY HAPPENED
It can — the valve was never the limiting part. The limiting part was that a single switch between 150 psi and open air is not a design. It is an accident with a schedule.
UNEXPECTED DISCOVERY
Two switches in series, Safety then Trigger, painted straight onto the photograph — because at that point the photograph was the documentation, and it was still the fastest way to think.
WHAT CHANGED
Safety and trigger interlocked in series. Barrel and chamber onto a stand, so the thing has one defined direction instead of whichever way it was set down.
Overhead photo of a 24 volt solenoid valve wired into brass quick-connect air fittings, hand-annotated with the words Safety, Trigger and 150psi pointing at the relay, the switch line and the red regulator fitting.
Black pressure chamber and steel barrel assembled on a low stand on a workbench, next to a bench power supply.
v01 Pick the projectile before you pick the barrel 2025-05-13
HYPOTHESIS
Bore diameter is downstream of the projectile, so choose the projectile and let the rest follow.
UNEXPECTED DISCOVERY
A foam toy rocket has an appalling ballistic coefficient and excellent neighbourly relations. Only one of those two properties appears in a textbook, and on this project the other one is the harder constraint.
LESSONS LEARNED
Two candidate barrels were cut before the ammunition was chosen. One of them is still on the shelf, correct for a projectile that was never adopted.
WHAT CHANGED
Bore sized to the rocket rather than to available tube stock. Cradle printed to hold it at a known angle.
Workbench with a foam-tipped toy rocket beside two candidate barrels, a red printed cradle, and the solenoid valve assembly plumbed to a polished air chamber.
v02 Dual-axis, and an opinion about where to look 2025-05-20 → 2025-05-26
HYPOTHESIS
A pan-tilt stage — one stepper per axis — plus a webcam turns a launcher into a platform.
WHAT ACTUALLY HAPPENED
The pan-tilt moved. It moved past the commanded position and settled somewhere near it. Printed gear teeth and a long cantilevered barrel produce backlash, and the controller experiences backlash as an encoder that lies to it in one direction only.
UNEXPECTED DISCOVERY
The camera is bolted to the tilt axis, so pointing error is invisible to the camera — the instrument moves with the fault it is supposed to measure. The sensor and the error share a mounting bracket.
WHAT CHANGED
Bench integration: pneumatic column, stepper driver stack and gimbal onto one frame instead of three piles.
Red 3D-printed pan and tilt yoke on a large printed turntable, carrying a webcam and a steel barrel, mounted on a cork board with an orange coiled air hose behind it.
Bench integration: the red turret beside a vertical pneumatic column with brass manifold and blue tubing, wired to a heatsinked stepper driver stack.
v03 Off the bench, into the residential 2025-05-31
HYPOTHESIS
If it works on the bench it will work on a patio table.
WHAT ACTUALLY HAPPENED
Mostly. Everything that was a cable on the bench became a trip hazard on a lawn, and the first genuinely field-caused fault was a brownout that bench power had been quietly papering over for a month.
UNEXPECTED DISCOVERY
Untethering it — power-tool battery through an inverter, a portable air tank, the controller riding along on the same board — did not just change the packaging. It changed which failures are reachable. A bench supply with amps to spare hides every current-related fault you have.
WHAT CHANGED
Portable air tank, battery and inverter, and everything mounted on a single board that can be carried outside with two hands and no toolbox.
The turret rig set up on a mesh patio table in a fenced back garden, plumbed with blue tubing and a red air hose, aimed across the lawn.
The same field setup annotated in text: Turret Platform, RPi plus Stepper Drivers, Firing Capacitor Tank, EGO battery with inverter, and a portable air tank with pressure gauge.
v04 Ammunition, reconsidered 2025-06-01 → 2025-06-14
HYPOTHESIS
A commercial gel blaster is a better payload than a bespoke pneumatic launcher.
WHAT ACTUALLY HAPPENED
It is, comprehensively, and admitting that took a fortnight. It feeds from a drum, it fires repeatably, and it had already solved the sealing problem I was three weekends from solving badly. Two months of pneumatics went onto a shelf.
UNEXPECTED DISCOVERY
Swapping the payload for an off-the-shelf one moved the entire project's difficulty into the gimbal — which is where it had belonged since v02. The gel beads also evaporate, which is the correct behaviour for anything that might land in someone else's garden.
WHAT CHANGED
Gel blaster mounted to the tilt yoke. Pan and tilt each get their own labelled driver, because chasing a wiring fault across two identical unlabelled cables happened exactly once.
An orange and white camouflaged gel blaster on cardboard beside its black drum magazine and a tub of blue hydrated gel beads.
The red turret yoke carrying a graffiti-patterned gel blaster with drum magazine and a clear bead feeder, wired to a blue terminal breakout board.
Field configuration outdoors: the turret with gel blaster beside an aluminium extrusion frame whose cables are labelled GIMBAL PAN and GIMBAL TILT.
v05 The JK-47 2025-08-17 → 2025-09-21
HYPOTHESIS
The platform should be agnostic to payload. Prove it by fitting the least serious payload available.
UNEXPECTED DISCOVERY
Every version has made the projectile softer and the pointing more accurate. Foam rocket, then gel beads, then pool-noodle segments from colour-coded magazines. That ordering was not planned and it is exactly the right ordering, and I would like credit for it anyway.
LESSONS LEARNED
A pneumatic nailer off the shop wall has a faster trigger valve than the solenoid, for eleven dollars and no design work. Some parts of this hobby are solved and the correct move is to notice.
WHAT CHANGED
Quick-change magazine interface, so the payload is a fixture rather than a rebuild. Air-tool valve in place of the solenoid on the pneumatic path.
Pneumatic air tools hanging on a red pegboard above the project's aluminium extrusion frame and labelled gimbal wiring.
Brightly coloured 3D-printed magazine frames stamped JK-47, each loaded with foam pool-noodle segments, flanking a printed launcher with a blue pistol grip.
v06 The controller outlived the payload 2026-07-26
HYPOTHESIS
Pan-tilt control is general. The same controller should drive this platform and the stage sequencer on the coil gun next door.
UNEXPECTED DISCOVERY
It does, and that is the actual result of this project. The payload has changed four times; the controller has changed once. The thing treated as scaffolding turned out to be the deliverable, and the launchers turned out to be interchangeable accessories.
WHAT CHANGED
Pan-tilt controller v2 frozen after three builds. Pan and tilt drivers split onto separate boards so a failure takes out one axis instead of the machine. A v2 now runs stage timing next door on the coil gun.
RGB-lit shelf of Raspberry Pi stepper controller assemblies standing on printed pedestals labelled RPi Stepper PT Controller v1 and three labelled v2, with one board marked PAN DRIVER.
03

Prototype Passport

// PROTOTYPE PASSPORT ORDINANCE · v06
Version
v06
Date
2026-07-26
Hypothesis
Pan/tilt control is general enough to be shared across projects; the payload is an accessory, not the platform.
Major Change
RPi Stepper PT Controller v2 frozen. Pan and tilt drivers split onto separate boards.
Unexpected Discovery
The controller is the product. Four payloads have come and gone; the controller has revised once and is now running a second project.
Next Experiment
Preload the pan gear train, re-measure backlash, and only then re-tune the loop that was compensating for it.
iterventions.com · project #002 · not finished, on purpose
04

Failure Gallery

One Switch Between 150 PSI and Open Air
v00 · 2025-04-25
EXPECTED
A test fixture. Press the button, the valve opens, air goes somewhere.
ACTUALLY HAPPENED
Exactly that — including twice when the button was bumped rather than pressed. A charged chamber and a single momentary switch means the only interlock in the system is attention, and attention is not a component you can buy a datasheet for.
Lesson: stored energy needs two independent actions to release, and the second one should be the boring one. Safety in series with Trigger costs one switch and removes an entire class of afternoon.
Repeat it? No. Nothing gets charged without an arming step now.
The Camera Rides the Error
v02 · 2025-05-20
EXPECTED
A camera on the tilt axis gives the controller ground truth about where the barrel is pointing.
ACTUALLY HAPPENED
It gives the controller ground truth about where the camera is pointing, which is the same lie the steppers are already telling. Backlash moves the barrel and the camera together, so the loop closes perfectly around an error it cannot see.
The red pan-tilt yoke with the webcam bolted to the same tilt axis as the barrel, so both move together.
Lesson: never mount the instrument to the thing it is measuring. A sensor rigidly attached downstream of the fault will report zero error forever, and it will be telling the truth about the wrong question.
Repeat it? Still mounted that way. The fix is a fixed reference and it isn't built.
Bench Power Was Hiding a Brownout
v03 · 2025-05-31
EXPECTED
Moving outside changes the scenery, not the electronics.
ACTUALLY HAPPENED
On battery and inverter, a simultaneous pan and tilt move dropped the rail far enough to reset the controller mid-motion. The bench supply had been absorbing that inrush without comment since v02, so the fault had existed for a month with no symptom.
Lesson: a generous bench supply is a debugging tool that removes evidence. Test on the power you will actually ship on, as early as it is embarrassing to do so.
Repeat it? No. Field power first now, bench supply only for diagnosis.
05

Data Notebook

XY · PAN · COMMANDED vs MEASURED1.8° backlash
pan_backlash_sweep — rendered from log
Sweep out, sweep back. The two traces do not overlay — the gap between them is the backlash, and it is the same gap the controller has been trying to close with gain.
Annotated field rig showing the turret platform, the RPi and stepper drivers, the firing tank, the battery with inverter, and the portable air tank.
ordinance_v03_20250531_img_02.jpg
The whole untethered system, annotated in the field. Every label here is a subsystem that failed differently once mains power was gone.
Colour-coded printed magazines stamped JK-47 loaded with foam pool-noodle rounds beside the printed launcher.
ordinance_v05_20250921_img_01.jpg
The JK-47 and its magazines. Payload number four, and the softest thing this platform has ever pointed at anything.
The controller shelf lit in colour: one v1 and three v2 Raspberry Pi stepper controllers on labelled pedestals.
ordinance_v06_20260726_img_01.jpg
One v1, three v2s. The same board revision is now sequencing coil stages on PROJECT #001.
// BENCH NOTEBOOK · p.072025-05-26
What 1.8° of backlash actually costs
backlash θb = 1.8° (measured, pan)
miss @ 3 m = 3000 · tan(1.8°) ≈ 94 mm
miss @ 8 m = 8000 · tan(1.8°) ≈ 251 mm
stepper step = 1.8° / 16 µsteps = 0.1125°
→ backlash = 16 microsteps of pure fiction
MARGIN NOTE

The resolution is sixteen times finer than the error. Every microstep past the first sixteen is the controller confidently commanding a position the gear train has not agreed to yet. Raising the gain to close that gap faster is how you build an oscillator instead of a tracker — which is precisely what happened, and it looked like a tuning problem for three weeks.

→ v07: preload the pan gear train, re-measure θb, then re-tune. In that order.

06

AI Lab Notebook

EXPERIMENT 01 Is the hunting a tuning problem or a mechanical one?
QUESTION
The gimbal oscillates around the target on a moving track but holds lock on a stationary one. Is the loop badly tuned, or is it compensating for something mechanical?
DATASET
Commanded versus measured pan angle over sweeps in both directions, plus the oscillation frequency at three different proportional gains.
AI ANALYSIS
The out-sweep and back-sweep do not overlay; they are offset by a near-constant angle regardless of speed, which is the signature of backlash rather than lag. Oscillation frequency tracks gain in the way a limit cycle around a deadband does, not the way an underdamped second-order system does. No gain setting removes a deadband — it only changes how fast you cross it.
DECISION
Stop tuning. Preload the gear train to remove the deadband mechanically, re-measure, and only then revisit the loop.
EXPERIMENT 02 Which subsystem browned out first in the field
QUESTION
On battery power the controller resets during simultaneous pan and tilt moves. Is it inverter capacity, inrush, or a wiring drop?
DATASET
Rail voltage during single-axis and dual-axis moves, on bench supply and on battery-plus-inverter, with the reset events timestamped against the motion profile.
AI ANALYSIS
Resets cluster on simultaneous acceleration, not on sustained motion, and the same profile is clean on the bench supply. That points at inrush against source impedance rather than average power — the inverter is adequately sized and inadequately stiff.
DECISION
Stagger the pan and tilt acceleration ramps by a few tens of milliseconds and add bulk capacitance at the driver, before buying a larger inverter.
NEXT EXPERIMENT Pointing accuracy against a reference the turret cannot move
QUESTION
With the camera bolted to the tilt axis, every pointing measurement so far has been self-referential. What does the error look like against a fixed external reference?
DATASET
Pending. Needs a second camera off the platform, or a target board with known geometry at a measured distance.
AI ANALYSIS
Pending. Prediction on record: the true error is larger than the on-board camera has ever reported, because the on-board camera structurally cannot report it.
DECISION
Pending.
07

Current Understanding

This was never a controls project. It is a gear-train project that has been wearing a controls project's clothes since v02. Backlash of 1.8° on the pan axis against a microstep of 0.1125° means the pan-tilt's position resolution is sixteen times finer than its position error, and no amount of loop tuning closes a deadband.

Mounting the camera to the tilt axis was the single most expensive decision in the project. It makes the pointing error structurally invisible to the only instrument on board, which is why the error survived four versions without ever being measured properly.

The payload does not matter and never did. Pneumatic launcher, gel blaster, foam noodles — each swap took a weekend and none of them changed the accuracy. The platform is the project; the ordnance is a fixture.

The genuinely useful output of this project is the controller. It has revised once in fifteen months, it now drives a completely different machine on PROJECT #001, and it was built as scaffolding. That is why this platform is mothballed rather than finished: it answered its question, the answer was "you were building the wrong thing," and the right thing walked off to another bench. What is still unknown is how big the pointing error actually is, and that cannot be answered until there is a reference the turret is not bolted to. The rig is on a shelf, intact, waiting for someone to build that reference.

08

Next Iteration

// log

Bench Log

Reverse chronological. Every entry is something that happened at the bench, not something that got finished.

v04
GAUSS

Gate sensors get a supply of their own

A 15 V 50 mA dual rail with battery protection and a 0.1 A ultra-fast-recovery diode, built and labelled this morning. Both dead v2 controllers failed on the sensor side rather than the power side, which is the whole argument for suspecting a conducted path rather than a radiated one.

v06
ORDINANCE

Mothballed, and the controller emigrated

Four payloads, one controller revision, fifteen months. The v2 board is now sequencing coil stages on PROJECT #001, which means the scaffolding outlived every single thing it was holding up. Platform goes on the shelf intact.

v03
GAUSS

The coil is its own brake

Stage 1 measures 4.3 Ω against a characteristic impedance of about 1.4 Ω. That is a damping ratio near 1.52 — overdamped, no ring, current peaking late. Four versions of gate timing spent on a waveform that was never oscillating.

v03
GAUSS

It stopped being a pile

Everything into one enclosure, one connector standard, XT60 throughout. Two of the three intermittent faults disappeared on the way in and I cannot tell you which connection fixed them, which is the price of changing six things at once.

v02
GAUSS

Runs stop being anecdotes

Scope permanently on the gate outputs, log viewer up on the second monitor, bank rebuilt at 1000 µF and 450 V. A sixth of the capacitance for sixteen times the energy, and exit velocity barely noticed — which was the first real clue that the bank was never the problem.

v02
GAUSS

Eleven runs, no velocity

The sequencer armed, fired and logged eleven complete runs. Gate 1 transit velocity read two dashes for every one of them. The gates were closer together than the sensor's own rise time, so the measurement was impossible before the first shot.

v01
GAUSS

Firing current, meet breadboard

The kickback clamp works. It works on a solderless breadboard six inches from cables I had personally labelled FIRING CURRENT with three exclamation marks. Both facts are in the same photograph and it took a week to notice they were arguing.

v00
GAUSS

The keycap says RAIL GUN

It is not a rail gun. No rails, no armature bridging them — it is a coil and a tube, which is a coil gun operating on reluctance rather than Lorentz force. A month of wrong intuitions came from reasoning about the wrong machine. About 6 J stored, and the slug moved roughly as hard as a strong exhale.

v05
ORDINANCE

The JK-47

Pool-noodle segments from colour-coded printed magazines, quick-change interface, stamped JK-47. Payload number four and the softest thing this platform has ever pointed at anything. Every version has made the projectile safer and the pointing better, in that order, entirely by accident.

v05
ORDINANCE

An eleven dollar valve beat the designed one

The trigger valve off a pneumatic nailer on the shop wall is faster than the solenoid I specified, sourced, wired and mounted. Some parts of this hobby are solved and the skill is noticing which ones.

v04
ORDINANCE

Field day with the new payload

Gel blaster on the yoke, pan and tilt on separately labelled drivers, everything on one carryable board. The labels exist because chasing a wiring fault across two identical unlabelled cables happened exactly once and lasted an afternoon.

v04
ORDINANCE

Buying the thing I was about to build badly

A commercial gel blaster feeds from a drum, fires repeatably, and had already solved the sealing problem I was three weekends from solving worse. Two months of pneumatics went on a shelf. The beads evaporate, which is correct behaviour for anything that might land in a neighbour's garden.

v03
ORDINANCE

Bench power was hiding a brownout

First run on battery and inverter. A simultaneous pan and tilt move dropped the rail far enough to reset the controller mid-motion — a fault that had existed for a month with no symptom, because the bench supply had amps to spare and absorbed every inrush without comment.

v02
ORDINANCE

1.8 degrees of nothing

Measured backlash on the pan axis. The microstep is 0.1125°, so the resolution is sixteen times finer than the error — every microstep past the first sixteen is the controller commanding a position the gear train has not agreed to. Raising the gain to close it faster is how you build an oscillator.

v01
ORDINANCE

Pick the ammunition first

Two barrels cut before choosing a projectile. One of them is still on the shelf, perfectly correct for a foam rocket that was never adopted. Bore diameter is downstream of the payload and I did it in the other order.

v00
ORDINANCE

One switch between 150 psi and open air

The valve was never the limiting part. The limiting part was that a charged chamber behind a single momentary switch means the only interlock in the system is attention. It fired twice on a bump rather than a press before that sank in.

↻ end of log · next entry when something breaks