Description
Mu is a small standalone particle detector built for the UL Aeronautics Society Ogma flight computer stack. The idea is to put a muon detector in a rocket and see whether the count rate changes as it climbs through less atmosphere. It doesn't need the rest of the stack: it has its own battery input, onboard flash, pressure sensor, and firmware logger, so worst case it can fly as a blackbox wrapped in electrical tape.
The detector is a 50x50x20mm BC-408 plastic scintillator coupled to an OnSemi MicroFC-60035 6x6mm SiPM. The SiPM is biased at about 30V, filtered through small 50 ohm resistors and local capacitors, then read by an OPA656/OPA814-class transimpedance stage sitting around a 2.5V virtual reference. The STM32 samples the output using ADC DMA into a circular buffer, watches for negative-going dips from the rolling baseline, and logs pulse records to flash: timestamp, baseline, amplitude, and a short waveform snapshot. It also logs MS5607 barometric pressure and altitude once a second, so the particle data can be lined up with the flight profile afterwards.
Progress
The schematic was only half the work. The physical detector fought back constantly. SiPMs are absurdly sensitive, so small light leaks through bolt holes, washers, and even the plastic battery connector were enough to saturate the readout. At one point the board sat at a normal ~48mA in darkness and jumped to 200mA under a microscope light. Covering one spot with my finger fixed it — not analogue instability, just light getting in through places I'd mentally filed under "mechanical parts" instead of "optical paths."
Two nights before Mach26, in my student accommodation, I filed down the four mounting bolts into a wastebin because light was leaking in around them. They had to be short enough to fully cover. I also coloured in the Molex battery connector with a black Sharpie, because the plastic was just translucent enough to act as a tiny window.
The first version of the feedback network was also too optimistic. With the real dark current of a 6x6mm SiPM, the high feedback resistance let the amplifier pull the baseline down toward the negative rail. I added shunt feedback resistors, bringing the effective feedback resistance down to roughly 264k, which kept the baseline inside the STM32's ADC range instead of relying on the MCU's clamp diodes to survive it.
There were board-level mistakes too. I had to reroute SPI data lines after a swap, and because the flash and MS5607 shared the same bus, fixing one meant checking the other. Assembly became a hands-on optics problem: file the mounting bolts, reseat the crystal, wrap the scintillator in PTFE tape, wrap the whole thing in electrical tape, test it, find another leak, repeat.
The first real capture made it worth it. Mu started recording clean negative-going charge pulses, around 18-31 events per minute across a few sessions — close enough to the rough 25/min estimate for that scintillator area at sea level that it felt like the thing had actually come alive.
It didn't get a clean run at Mach26. In the payload bay it was mounted too close to a Raspberry Pi 5 heatsink, hit around 70°C, and the scintillator expanded enough to over-compress the SiPM against the board. Afterward I could reproduce the fault by tightening and loosening the crystal screws: too much pressure bent the board and shorted it, so the cause was mechanical preload and thermal expansion, not a dead design. After reseating the detector and repairing the disturbed analogue parts, Mu came back.
Next up is a solo L1 flight in mid-August, where Mu flies as its own payload. Mach26 wasn't a failed science run so much as a lesson that a particle detector isn't just a circuit — it's an optical seal, a thermal stackup, a mechanical clamp, and a sensitive analogue front-end that doesn't appreciate living next to bolts, tape, connectors, and a hot Raspberry Pi.
Documentation
Repo: Mu.