Engineering Journal

← all posts

We grew the electrodes by feel

Hardware & PCBInstrumentationSoftware & tooling
Mouse engineers inside a glowing translucent pole adjust four copper touch
pads toward the tube wall while a hand grips it and faint field lines reach
the fingers.

The touch electrodes on our poles got their shape the honest way: we kept making the copper bigger and touch kept getting better, so we kept going. No math, no simulation, just iteration. With a board revision now open we finally did the math we skipped, using the actual fabrication files and a hundred-line field solver. The model's verdict: the pads we grew by feel are good, and the things worth engineering next are not made of copper. They are an air gap, a plastic wall, a return path that appears on no schematic, and a sheet of copper the fabrication files do not contain. Everything in this post is a model, computed on 2026-08-02; the measurement plan to check it is at the end.

Where the charge actually sits on one electrode, solved from the fabrication geometry. Left: no hand. Right: hand gripping the tube. Either way, the edges do almost all the work and the middle of each pad is nearly idle. Hover any tile for its share of the peak. This one picture explains most of what follows.

The stack nobody drew

A touch channel on our boards is four copper rectangles wired together. The board is a 200 mm strip that lies on top of the LED strip, and the LEDs poke up through holes in it, which is why each electrode is four rectangles instead of one plate: the copper has to dodge the light. The whole assembly rides inside the pole's plastic tube, recessed below the tops of the LEDs, so a finger never touches the board. Between skin and copper there is roughly a millimeter of air and then two millimeters of plastic.

The path a touch actually takes. The chip measures the electrode's capacitance; a hand changes it from the far side of an air gap and a plastic wall, and the resulting current has to find its way back to board ground through the dancer's body.

That stack matters more than the copper does. Plastic has a relative permittivity around 2.7, meaning the field crosses it 2.7 times more easily than air, so 2 mm of wall behaves like 0.74 mm of air. The air gap gets no such discount. Add them up and the hand is electrically about 1.7 mm of pure air away from the copper. Every additional millimeter of recess costs signal at full price, which makes the mechanical seating of the board in the tube a first-order design input, not a detail.

A capacitance meter made of arithmetic

The solver is a boundary element method, BEM for short, and it is less exotic than the name suggests. Chop the copper into about nine hundred small tiles. Charge on any tile raises the voltage of every other tile by an amount geometry alone determines: near tiles strongly, far tiles weakly. That gives you nine hundred equations in nine hundred unknowns. Ask for the one charge arrangement that holds the entire surface at exactly one volt, let the computer grind the matrix, and add up the charge it took. Charge divided by voltage is capacitance, by definition. No field mesh, no FEM license, just numpy.linalg.solve on a laptop, and the whole thing runs in under a second.

The same trick handles a hand. A grounded conducting plane near a charged surface behaves exactly as if a mirror-image copy of the surface, oppositely charged, sat an equal distance behind it. Physicists call it the method of images. Add the mirror term to the matrix and the solver returns the capacitance from electrode to hand through the stack.

Three model caveats, stated up front. The hand is an infinite flat plane, which is a fair description of a grip and an overestimate for a fingertip. The air-plus-plastic sandwich is folded into that single equivalent air distance, which is exact for the face-to-face part of the field and approximate for the fringes, since the image-charge trick assumes one uniform medium and this stack is two. And the panel grid was sized for speed: quadrupling it moves every number below up by about a percent, and none of it has been checked against an independent field solver. The committed scripts carry the first two assumptions in their comments.

What the numbers say

Solving the shipping geometry through the real stack, with the air gap assumed at 1 mm:

quantity computed
electrode baseline, board floating in free space 0.6 pF
the same, with LED strip copper 0.5 mm below 2.9 pF
the same, with LED strip copper 0.1 mm below 7.3 pF
coupling from electrode to a gripping hand 1.5 pF
the same, if the copper were doubled 2.4 pF
the same, with the air gap closed to 0.2 mm 2.1 pF

Read the first row for what it is. The fabrication files show no ground pour on either layer of this board, and with nothing else in the geometry that makes the electrode's own load very small. But the files do not contain the board's nearest neighbor. The board lies directly on the LED strip, and the LED strip is full of copper. Put a grounded conductor where that copper actually sits and the computed baseline lands at 2.9 pF over a half-millimeter bond line and 7.3 pF over a tenth of one, five times the free-space figure or more, varying with how hard the assembly is pressed together. All of it stays far under the touch controller's 32 pF ceiling, so nothing breaks. What breaks is the tempting shortcut "no ground pour, so the baseline is negligible." One missing conductor moved the answer by a factor of five, and the rest of this model is still missing the pole tube, the cabling, the overlay, the adjacent channels, and the controller's own pin capacitance. Every other number here, including the coupling figures, was solved in the same plane-free geometry, so read them as the shape of the answer rather than its exact magnitude. The follow-up post, Route now, decide later, works through what the missing plane changes; the short version is that the next board wants a driven shield on its bottom layer.

The other surprise is the shape of the area curve. Growing these pads, we assumed wordlessly that capacitance scales with area. For the baseline it does not come close: charge repels charge, so it crowds into the pad edges like passengers along a ferry railing, and the interior copper we kept adding was nearly free. That is the left half of the charge picture above. For the hand coupling, area does pay, because a hand three millimeters away turns the electrode into a genuine parallel-plate capacitor where the middle finally participates.

The sweep that explains the trial-and-error years, after the fact and in a model. Growing the copper buys signal about four times faster than it costs baseline, so every size bump should have helped, and the curve keeps going past where we stopped. Solved, not measured.

So the empirical rule "bigger kept working better" now has a mechanism behind it rather than luck: the gap between two scaling laws. The model also says we had not exhausted it, and that filling the copper we can reach adds another 15 to 45 percent of hand coupling for pennies of baseline, with the top of that range costing the LEDs their holes. Both of those are solver output. Nobody has yet measured a pad of either size.

Could it be all edge?

Once you see the charge crowding into the edges, a tempting idea follows: if edges do the work, replace the filled pad with a long meandering trace, so the whole electrode is nothing but edge. We ran it through the solver. In the solid plate's footprint, a seven-finger meander of 0.7 mm trace, both shapes solved in free space so the two rows compare like with like:

shape, same footprint copper baseline to the hand
solid plate 272 mm² 0.68 pF 2.19 pF
meander, 0.7 mm fingers 99 mm² 0.64 pF 1.84 pF

The meander does not win, and the reason is the same physics read in the other direction. Edges only carry extra charge when they face open space. Fold a trace back and forth and every edge now faces another edge a millimeter away at the same voltage, and they screen each other almost completely. Capacitance follows the overall outline of the shape, not the length of its perimeter; you cannot stack edges any more than you can get rich photocopying money.

But look at the numbers again, because the useful version of the idea is hiding in them: the meander reaches 94 percent of the solid plate's baseline and 84 percent of its hand coupling using about a third of the copper. From three millimeters away, the hand cannot resolve millimeter-scale gaps; a mesh looks like a sheet. So hatched or fingered copper is nearly as good as solid fill, which is exactly the freedom a board covered in LED holes needs: the electrode of the next revision does not have to be solid, it just has to reach.

The series chain, or why copper stops mattering

Here is the part no amount of pad-growing can fix. The chip does not measure the hand coupling. It measures the hand coupling in series with the return path: charge flows from pad to hand, through the body, and must somehow get back to the board's ground to be counted. That return is really a mesh of paths, skin to LED copper, skin to power wiring, body to floor to mains earth, and calling it one capacitor is a caricature; it is the caricature the rest of this section runs on. Two capacitors in series combine to less than the smaller one. If the return path is worth 1 pF, a 1.5 pF hand coupling reads as 0.6 pF, and doubling the copper improves the reading by seventeen percent instead of sixty.

The same two electrodes, plotted against the quality of the return path. On the right side, area pays in full. In the shaded region, the return path throttles everything and the two curves nearly collapse onto each other. Sweep the cursor across the chart to read both curves and what doubling the copper is worth at that point.

Which regime are we in? Probably a favorable one, and for a reason that is easy to miss: a dancer is not lightly tapping this surface. They are wrapped around a pole with hands, thighs, and torso, and the pole is full of our own electronics: hundreds of LEDs, their copper strips, power wiring, all referenced to board ground and all a few millimeters from their skin. The body is capacitively strapped to our ground along the entire contact length. But "probably" is a model word, and this particular number, the return path, is the one the model genuinely cannot compute. It depends on the person, the grip, the shoes, and the venue wiring. It has to be measured.

Poke the model yourself

The simulator below runs the same boundary element solve as the committed Python, live in the page (checked against it to within two percent). Like the tables above, its baseline readout is the free-space solve, so treat that figure as a lower bound and the strip's copper as the missing few picofarads. Drag the copper bigger, open up the air gap, thicken the tube wall, and watch what the chip would see. The fastest way to build intuition for the series chain is to slide the return path back and forth with the copper held still.

Three things worth trying. First, drop the air gap from 1 mm to 0.2 mm and watch the coupling jump by 40 percent: that is a mechanical change, not an electrical one, and it is the cheapest signal on the menu. Second, click "gaps filled" and note you gain about the same amount by merging the pads into bars, except that this costs the LEDs their holes, so it is really a question about optics. Third, park the return path at its bottom and watch both of those improvements stop mattering.

Recess depth is a signal budget. The tube wall is fixed by the product; the air gap is ours to engineer.

What this changes about the new board

The revision now in progress moves the touch boards to a newer microcontroller. The electrode plan that falls out of this analysis, in order of expected payoff:

  1. Close the air gap. Seat the copper as close to the tube wall as the LED clearances allow. Every half millimeter recovered is worth more than any copper change on the table.
  2. Fill reachable copper. Grow the pads toward the LED keep-outs. The baseline penalty is negligible; the model prices the available gain at 15 to 45 percent depending on how much the optics will tolerate.
  3. Keep the sense traces short and away from the grip. Trace copper adds baseline and, worse, it couples to the hand from under other channels' territory, smearing position. On the current board the longest channel carries 122 mm of trace against 48 mm for the shortest.
  4. Put a driven shield on the bottom layer. Hatched copper under the electrodes, driven at the sense potential, so the LED strip's copper stops setting the baseline and stops varying it with assembly pressure. That is the follow-up post's subject, and it is the direct consequence of the first row of the table above being the wrong row to design against.
  5. Stop optimizing copper past the return path. Once the measured return path is known, the saturation chart above says exactly when additional area stops buying detection margin.

None of that requires exotic tooling. The geometry comes straight out of the CAM files the fab already gets, and the solver is a hundred lines that any of these decisions can be replayed through in seconds.

Measuring it for real

The model earns its keep by being checkable. Three tiers, cheapest first.

Ask the chip. The touch controller already computes a compensation capacitance for every channel on every measurement cycle; the shipped firmware just never put it on the wire. A firmware branch now adds it to the protocol (built but not yet flashed as of 2026-08-02). That gives per-channel capacitance in the chip's own units, in situ, at zero hardware cost. The units need calibrating once: solder known 1 percent NP0 capacitors, 1 to 22 pF, from one channel's pad to ground and record the reading against each. The slope converts code to picofarads and the intercept is the channel's own load, so one soldering session yields both, and the same points show whether the code is linear in load at all. Note what this does not calibrate: a discrete part to board ground is not a hand on the far side of a tube, so it prices the baseline and leaves the coupling model untested.

Falsifiable prediction, written down before the data comes in: the channels with the longest traces should read the highest baseline and the shortest should read the lowest, in the order the trace-length table predicts. If instead every channel reads the same, the model is wrong somewhere and we want to know.

Ask the oscilloscope. Our bench scope cannot read one picofarad directly, and a 10x probe hangs 15 pF on whatever it touches, which would bury the thing being measured. The trick is substitution: drive the electrode through a known large resistor with a square wave, measure the exponential settling time, then swap the electrode for a known capacitor and measure again. The probe's loading and every stray in the fixture appear identically in both readings and cancel in the ratio. Done across the states we care about (bare board on the bench, board in the tube, tube on a pole, pole held by a person) it turns each layer of the stack into a number. The touched states are the interesting ones, because that is where the return path, the quantity the model cannot compute, finally shows itself.

Then close the loop. With a strip on a real pole and the firmware readout flashed, log the per-channel signals untouched and gripped, compute delta over noise, and lay the results against the charts above. Where they agree, the simulator becomes a design tool we can trust for the next question. Where they disagree, that disagreement is the next post.