Ehemalige Uranmine in Příbram, Tschechien

IoT-Geigerzähler mit dem Raspberry Pi Pico

1. Einleitung

Ein einfaches (IoT-)Strahlungsmessgerät mit Geiger-Müller-Zählrohr selbst zu bauen ist weder sonderlich schwer noch mit hohen Kosten verbunden.

Im folgenden Artikel dokumentiere ich den Bau einfacher wie fortgeschrittener Prototypen ohne jedoch sehr ins Detail zu gehen.

Viele Details sowie eine Bauteilliste gibt es auf meiner hackaday.io-Projektseite (in Englisch). Dort besteht auch die Möglichkeit Kommentare abzugeben oder Fragen zu stellen.

2. Projekt Geigerzähler

2.1 Schaltungskonzept

Das Steuersignal zur Generierung der Zählrohrspannung bildet beim gewählten Schaltungskonzept (ein an sich wenig origineller Aufwärtswandler oder engl. boost converter) eine PWM (Pulsweitenmodulation oder engl. Puls Width Modulation) mit Frequenzen im Bereich von 1-10 Kilohertz.

Diese PWM steuert einen hochvoltverträglichen Bipolartransistor (T2 im Schaltplan) mit ebenjenen Frequenzen in schneller Folge auf/zu.

Schaltplan Geigerzähler
Schaltplan Geigerzähler

Für die schiere PWM-Generierung wäre ein schlichter IC wie der weit verbreitete NE555 sicher ausreichend. Da ich den Geigerzähler jedoch nach und nach mit Funktionalität erweitern will verwendete ich von Anfang ein komplettes Mikrocontroller Board (Raspberry Pi Pico mit RP2040).

Der RP2040 besitzt zur Erzeugung der PWM dedizierte HW, somit besteht keine Notwendigkeit diese per SW zu implementieren (etwa durch DMA etc.) und die Bibliotheken des Pi Pico C/C++ SDK stellen alles Notwendige bereit.

Die Spule L1 ist das eigentlich hochspannungserzeugende Bauteil der Schaltung. Aufgrund rascher Stromänderungen – bedingt durch das Aufsteuern/Schließen des Transistors – entsteht eine hohe Selbstinduktionsspannung (hier >400V). Unterschiedliche Induktivitätswerte beeinflussen diese Spannung in gewissen Grenzen, wenn auch nicht so gezielt wie die PWM-Parameter.

Kondensator C1 sorgt in Kombination mit Diode D1 für die Energiespeicherung. Bipolartransistor T1 ist Bestandteil der Zähllogik, FET Q1 mit Zener-Dioden D2-D5 Teil der Spannungsregelung.

Der Aufbau der Hochspannung im Aufwärtswandler (Simulationsergebnisse)
Der Aufbau der Hochspannung im Aufwärtswandler (Simulationsergebnisse)

Experimentelle Codebeispiele (in C) und kompilierte Programme mit empirischen Werten für die PWM-Parameter Frequenz und Tastgrad liegen in meinem RasPi Github-Repository ab.

2.2 Zählrohre

Ich nutzte während der Entwicklung zwei verschiedene Zählrohre die sich in ihren geometrischen Dimensionen, der Empfindlichkeit und dem Preis unterscheiden.

Ganz okay und gut verfügbar für erste Tests ist ein Z1A Zählrohr vom Elektronikversand, welches Stand April ’22 fünfzehn Euro kostete.

Wesentlich besser sind SBM-201 Zählrohre aus alten UdSSR-Beständen, welche ich bei Händlern aus Osteuropa für ca. dreißig Euro (Stand Mai ’22) erstehen konnte.

Geiger-Müller-Zählrohre Z1A (rechts) und SBM-20; ganz links ein rundes Stück Uranglas
Geiger-Müller-Zählrohre Z1A (rechts) und SBM-20; ganz links ein rundes Stück Uranglas

1 ich erhielt den Hinweis dass es sich bei dem abgebildeten Zählrohr nicht um ein SBM-20, sondern um das Vorgängermodell STS-5 mit sehr ähnlicher Spezifikation handelt; die aufgedruckten kyrillischen Buchstaben verraten in der Tat das Zählrohrmodell (“CTC-5”)

2.3 Philosophie für den Prototypenbau

Frühe Prototypen sind auf kleinen, billigen Lochrasterplatinen mit aus Elektroschrott ausgeschlachteten Bauelementen aufgebaut.

Rascher Wechsel auf ein Printed Circuit Board (PCB) inklusive Gehäuse ist ratsam, da das EMV-Verhalten bei windigen Bastelaufbauten nicht sonderlich gut sowie ein Berührschutz angeraten ist (die Hochspannung auf der Platine ist nicht gefährlich, es ist aber unangenehm wenn z. B. ein Kondensatorbeinchen versehentlich angefasst wird).

Auch sind bei solider Geometrie und Verdrahtung Ergebnisse leichter reproduzierbar. Ohnehin sollte sich Anodenwiderstand R2 nah am Zählrohr befinden (Vermeidung Streukapazitäten) und so groß wie möglich gewählt werden (mindestens so groß wie das Datenblatt vorschreibt).

Aus persönlicher Neigung bevorzuge ich beim Prototypenbau wenn möglich “Durchsteck-“, das heißt bedrahtete Bauelemente zu SMD-Komponenten, insbesondere da Abmessungen, Gewicht und auch Ästhetik hier (noch) keine entscheidende Rolle spielen.

Als Strahler verwende ich frei im Handel erhältliches Uranglas. Aus naheliegenden Gründen strahlt dieser Stoff nicht sehr stark; zum Testen von Prototypen ist er jedoch gut geeignet.

Ein elektrischer Kurzschluss der Rohranschlüsse, realisiert mit z. B. zwei Klemmprüfspitzen und einer Messleitung, kann darüber hinausgehend eine starke Strahlungsquelle emulieren und stellt einen Robustheitstest dar.

3. Entwicklungshistorie und Produktive Tests

Im Folgenden eine Historie der Geigerzähler-Prototypen in den verschiedenen Entwicklungsständen.

3.1 Visualisierung mit einzelner LED

Stand April ’22

Der erste funktionsfähige Versuchsaufbau. Ergebnis ist wie zu erwarten noch wenig beeindruckend.

Allererste Prototypen auf Lochrasterplatinen für Parameterevaluierungen
Allererste Prototypen auf Lochrasterplatinen für Parameterevaluierungen

Der BC337 Kollektor-Emitter “Lastkreis” besitzt eine LED incl. Vorwiderstand und ist an USB +5V angeschlossen. Neben dieser simplen optischen Indikation gibt es keine Zählung oder Auswertung von Impulsen.

Die Krokolemmen bieten Flexibilität für die zwei unterschiedlichen Rohrgeometrien. Man muss jedoch in jedem Fall darauf achten dass das Zählrohr nicht verpolt ist.

3.2 Anschluss einer Flüssigkristallanzeige

Stand Mai ’22

Mit einem für das SBM-20/STS-5 Rohr zugeschnittenen vorläufigem PCB-Design und einer etwa zehn Euro teuren 16×2 Flüssigkristallanzeige (LCD), sowie zwei extra LEDs.

Das LCD ist an den I2C-Bus angeschlossen (gewählt I2C0 Controller mit Pins GP4 – SDA, GP5 – SCL). Zur Sicherstellung der Funktion des I2C sind zwei interne Pull-Up-Widerstände des Mikrocontrollers via SW aktiviert, wobei es aber besser wäre hier zwei externe Pull-Up-Widerstände zu benutzen (z. B. mit 3,9 kOhm). Grüne und gelbe Leitung sollten in jedem Fall so kurz wie möglich sein.

Für den dauerhaften Batteriebetrieb sind Flüssigkristallanzeigen aufgrund des vergleichsweise hohen Energiebedarfs eher nicht geeignet. Bei dem abgebildeten Modell ist aber die Hintergrundbeleuchtung über einen Jumper deaktivierbar (auf Kosten der Lesbarkeit versteht sich).

Die Zählrohrspannung ist hier noch ungeregelt, auch akustisch über ein ununterbrochenes Fiepen wahrnehmbar.

3.3 Zählrohrspannungsregelung und OLED-Anzeige

Stand Januar ’23

Die mit einem wesentlich verbesserten PCB aufgebauten Prototypen sind nun mit einer Zweipunktregelung versehen (siehe Schaltplan in Absatz 2.2), womit auch die SW grundlegende Änderungen erfahren hat.

Überschreitet die Hochspannung einen bestimmten Schwellwert wird die PWM abgeschaltet, was aufgrund der Regelung zyklisch geschieht. Dies hat mehrere Vorteile, aber der entscheidende Vorteil ist die insgesamt größere Stabilität der elektrischen Kenngrößen.

“Counts Per Minute” (CPM)

Der auf dem Display angezeigte Wert für CPM entspräche einheitentechnisch der Maßeinheit Becquerel, wenn man diesen durch 60 dividiert. Es ist jedoch zu beachten, dass CPM nur ein (unbereinigter) Messwert ist welcher sich vom tatsächlichen Zerfall (geringfügig?) unterschiedet.

Da radioaktiver Zerfall nicht vorhersagbar ist und zufällig abläuft gibt es unterschiedliche Möglichkeiten, den CPM-Wert aussagekräftig darzustellen. Zum Beispiel kann man das arithmetische Mittel extrapolierter CPM Werte über ein bestimmtes Zeitfenster berechnen. Sprich, zwei Sekunden Messung, Extrapolation, dann mit fünf extrapolierten Werten einen Mittelwert bilden.

Beispielcode:

(...)
for (int i=0; i < ringbuffer_elements; i++)
{
sum += ringbuffer[i];
}
mean = sum/ringbuffer_elements;
(...)

Der neuste Wert ersetzt dabei fortlaufend den ältesten Wert (FIFO), was einem Ringpuffer Prinzip entspricht.

OLED-Anzeige

Anstelle der Flüssigkristallanzeige hängt eine OLED-Anzeige am I2C-Bus (die Pin-Anschlüsse sind identisch).

Das abgebildete Modul (0.96” OLED SSD1306) ist nicht nur hinsichtlich der geringen Stromaufnahme und dem weiten Temperaturbereich interessant (selbst -25°C sind kein Problem), sondern hat auch eigene Pull-Up-Widerstände auf der Platine aufgelötet (die 16×2 LCD Platine besitzt diese Pull-Up-Widerstände nicht).

Reduktion der Stromaufnahme durch verschiedene Maßnahmen wie z. B. Tausch des Displays; 11mA stellt bei Weitem noch keine Untergrenze dar
Reduktion der Stromaufnahme durch verschiedene Maßnahmen wie z. B. Tausch des Displays; 11mA stellt bei Weitem noch keine Untergrenze dar

Die internen Widerstände des RP2040 Mikrocontrollers (bzw. Open-Drain-Schaltungen im Allgemeinen; der I2C ist Open-Drain) sind wohl vor Allem aufgrund ihrer hohen Werte (50k-80k lt. RP2040 Datenblatt) anfällig für Rauschen und Einstrahlungen2, was zu Funktionsausfällen der Flüssigkristallanzeige führt sind Kabel unsauber verlegt.

Da man bei OLED-Anzeigen einzelne Pixel ansteuern kann sind auch kleine Grafiken darstellbar. Da mehr angesteuerte Pixel mehr Batteriestrom bedeuten habe ich davon aber keinen Gebrauch gemacht.

2 diese Widerstände sind eigentlich FETs die im linearen Bereich ihrer ID-zu-VDS Kennlinie arbeiten, somit ist erwähntes Rauschen nicht nur rein thermischer Natur wie bei einem ohmschen Widerstand; die große Bandbreite an Werten entsteht durch “Fehler” im Fertigungsprozess

3.4 IoT-Fähigkeit

Stand Februar ’24

Die IoT-Fähigkeit (Internet of Things) ist ein nützliches Feature welches in diesen Tagen nicht mehr schwierig zu implementieren ist. Verwendbar sind externe WiFi- (ESP8266 oder ein Klon hiervon) und BLE- (Bluetooth Low Energy) Module.

Im Video wird die Verwendung des RN4870 BLE IC von Microchip demonstriert. Rohwerte sind abrufbar in einer Smartphone App (“BLE Scanner”).

Oder man nutzt ohne Umschweife den Raspberry Pi Pico W der seit Februar ’23 neben WiFi- auch Bluetooth fähig ist und identische Geometrie aufweist, somit problemlos in mein PCB einzulöten wäre.

3.5 GPS-Ankopplung

Stand Juli ’24

Erweiterung mit einem Pico-GPS-L76B GNSS Modul das sich einfach auf den Pico Standard Header aufstecken lässt.

Die Idee ist, CPM-Werte zusammen mit einem geographischen Standort anzuzeigen.

Für ein bequemes Testen des Aufbaus verwende ich zwei Raspberry Pi Pico die über die UART Schnittstelle verbunden sind (auf dem zweiten Pico läuft MicroPython, eine Programmiersprache die sich bekanntermaßen für das schnelle Testen gut eignet).

Die Konfiguration ist dabei noch etwas abenteuerlich, da eine Polling-Schleife CPM-Werte abfragt: eine extra Leitung signalisiert ein UART-Startbit an einem separatem GPIO, Zeichen werden einzeln aus dem Puffer gelesen und sofort auf der (zweiten) OLED-Anzeige dargestellt.

Ein Beispielcode findet sich in meinem Github-Repository.

4. Technische Erweiterungen und Ausblick

Ergänzend zur IoT- und GPS-Fähigkeit können Messdaten auf einer SD-Karte am SPI-Bus gespeichert werden, eine weitere Schnittstelle des RP2040.

Die Versorgung über Linearregler wie dem LP2950, oder mehr noch dem L7805CV ist ineffizient, und kann unter der Prämisse der Stromersparnis anders gestaltet sein (Abwärtswandler).

Einige Vorgaben für robustes Design sind bei meinen frühen PCBs nicht eingehalten, etwa mit der Positionierung des Anodenwiderstandes nicht wirklich nah am Zählrohr oder durch Masseflächen im Bereich der Hochspannung (Gefahr von Kriechströmen die den Leiterplatten-Kunststoff schädigen).

Nützlich neben elektrischen Modifikationen und Verbesserungen der SW wäre außerdem ein Gehäuse aus dem 3D-Drucker, und generell Anbauten für eine gute Handhabbarkeit und den Berührschutz.

5. Weiterführende Informationen

5.1 Literatur

1. Programming the Raspberry Pi Pico in C – Harry Fairhead, I/O Press; ISBN 9781871962680 (First Edition)

2. Physik für Ingenieure – Hering, Martin, Stohrer, Springer Lehrbuch; ISBN 978-3-540-71855-0 (10. Auflage)

3. The Art of Electronics – Paul Horowitz/Winfield Hill, Cambridge University Press; ISBN 978-0-521-80926-9 (Third Edition)

5.2 Online Ressourcen

hackaday.io Projekte des Autors (englisch)

Featured image: ehemalige Uranmine in Příbram, Tschechien