Bhangmeter V3
GitHub link: https://github.com/bigcrimping/bhangmeterV3
An open-source optical bhangmeter — a fast photodetector that recognises the unique two-peaked light curve of a nuclear detonation and estimates its yield from the timing of that signature. This repository holds the complete build: firmware, host software, PCB, and enclosure.
A bhangmeter estimates yield from the optical waveform alone. No other natural or artificial event reproduces the double-pulse signature, which makes the waveform both the detection trigger and the measurement.
The double-pulse signature
A high-yield fireball radiates ~35–45% of its energy as light, but not smoothly. Three phases produce two distinct optical peaks:
- First pulse — radiative fireball. Short (~1 ms) and nearly independent of yield.
- The minimum. A hydrodynamic shock detaches and ionises the air into an opaque shell, dropping visible emission about one order of magnitude.
- Second pulse — shock breakaway. Lower peak, but lasting hundreds of ms to seconds, carrying ~99% of the integrated thermal yield.
The gap between the two peaks scales with yield — and that gap is what the instrument measures, using standard low-altitude Glasstone & Dolan scaling. The device reports a yield only when the timing lands in the valid window (t_inter 90–1050 ms, t_min 5–130 ms), i.e. the 10 kt – 1 Mt design envelope.
| Yield | T_min (peak→min) | T_inter (peak→peak) |
|---|---|---|
| 10 kt | 7 ms | 115 ms |
| 50 kt | 18 ms | 233 ms |
| 100 kt | 26 ms | 316 ms |
| 250 kt | 45 ms | 473 ms |
| 500 kt | 67 ms | 642 ms |
| 1 Mt | 100 ms | 871 ms |
How the instrument works
The comparator captures the sub-µs leading edge and triggers the ADC capture. Both t_min and t_inter are then measured from the ADC waveform. A detection requires all of: a fast leading edge, then a peak → shallow-minimum → second-peak shape, with t_inter falling in the valid band. That combination rejects the plausible impostors — lightning (single peak), camera flashes (no second peak), and meteors (one broad envelope).
Hardware at a glance
| Block | Part | Why |
|---|---|---|
| Photodiode | VEMD2704 (Si PIN, ~400–1100 nm) | Captures the broadband thermal flash, left unfiltered to gather as much light as possible. |
| Logarithmic amp | AD8304 | Log-compresses the photodiode current so one fixed-gain front-end spans several decades — no gain switching mid-event. |
| Edge timing | LT1711 comparator | Sub-µs timestamp of the leading edge regardless of amplitude. |
| Waveform capture | AD7091R ADC (SPI) | Records the analogue shape so peak/minimum/second-peak can be analysed. |
| Compute / comms | RP2350 (Pico 2 W) | Detection + control on core 0, WiFi/NTP/HTTPS upload on core 1. |
Repository layout
- code/ — firmware (RP2350 / Pico 2 W) and the companion app (a PySide6 desktop operator console)
- PCB/ — the carrier board and the BHG-3000 sensor head: schematics, assembly drawings, BOMs and Gerbers
- mech/ — 3D-printable enclosure and optical mount
Getting started
- Build the hardware from
PCB/andmech/. - Flash the firmware — a prebuilt
.uf2is included, or build from source. - Configure on first boot over USB serial (WiFi + a GitHub repo to publish to). No credentials live in the firmware.
- Drive and view the device with the companion app, or read the published JSON from your GitHub repo.
Status & scope
Work in progress. Yield estimation from timing is intrinsically coarse, so the sharp t_inter feature is the primary estimate and t_min only a coarse cross-check. The firmware’s TLS upload path does not yet verify the server certificate; use a dedicated, fine-grained GitHub token.