Final days of testing, and doesn't everything all seem to go wrong at the end!
It turned out that when the high power LEDs are running, they drag the supply voltage down by about 0.2V. Which would normally be OK, but the Hall sensors are giving voltages in the mV range, so the changing supply voltage gives a bigger signal than the actual magnetic signal.
We tried a bunch of things, mostly involving big capacitors, but nothing worked really well. In the end it turned out that putting the sensor near the magnets (as it will be when it's mounted properly) and biasing it correctly gave a usable signal: since we're only interested in movement one way, we can bias it to full output while the light is on. When the light is off, we get higher gain, so it saturates when nothing is happening, and moves more when magnets come close. It's a bit of a hack, but it seems to work mostly OK. I also ended up cutting two of the resistors going to the LED, so it should be drawing less current. It didn't seem to make much of a visual difference, but the signal got a bit less noisy. There's definitely a bit of hysteresis - when the light goes on, the signal increases, so it tends to come on sharply when a magnet gets near it, and then stay on until the magnet's gone quite a long way away. Fortunately, that makes a kind of visual sense. It's not possible to have the LEDs fading in and out nicely, as the signal from the sensors is too choppy, and also the switching totally destroys the signal with noise.
Then we glued the magnets into the glass pods with glazing silicone, and vacuum formed holders to get them nicely in place. It was really useful to be able to hold the magnets in place with magnets on the outside of the pod - have to remember magnets next time I'm gluing something.
Finally, took everything down to the glasshouse to set it up. Spent a while testing the pods, and they were all working OK. Glued in the sensors with hot glue (hadn't realised you can just use a lighter to melt it - much easier for this than using the gun!). Lots of fiddling about to get the electronics in there reasonably solidly. It's still quite ugly, but we'll survive. It's really good to finally have magnets and sensors glued solidly in place so the adjustments can be finalised.
Had a lot of hassle getting the pods working right again - they all needed rebiasing after being fiddled with. Hopefully now they'll work correctly, although I'm a little worried! Epoxied a couple of magnets into the bob, and fitted a piece of wood to attach the string to. So physically, it's all in place.
Now we just need to make Max behave itself when talking to the Arduino!