Radioaktivitäts-Monitoring

Aus HRW FabLab MediaWiki
Wechseln zu: Navigation, Suche
Radioaktivitäts-Monitoring

Entwickler

Raphael Burkert, Jonas van Hagen, Maximilian Wehrmann

Projektdateien

GitLab

Verwendete Programmiersprachen

C++

Eingesetzte Software

VSCodium, make

Eingesetzte Hardware

Raspberry Pi

Allgemeines[Bearbeiten]

Im Rahmen der Projektarbeit des Moduls "Hardwarenahe Programmierung" wurde von unserer Gruppe (Raphael Burkert, Jonas van Hagen, Maximilian Wehrmann) ein Add-on Board für das Raspberry Pi entwickelt. Dieses Add-on Board basiert auf dem Paper "Smartphone and Tablet-Based Sensing of Environmental Radioactivity: Mobile Low-Cost Measurements for Monitoring, Citizen Science, and Educational Purposes", welches eine originelle Idee beinhaltet, in der pin-Dioden zur Radioaktivitätsmessung verwendet werden. Der Einsatz dieser Dioden wird als kostengünstige Alternative zum Geiger-Müller-Zählrohr vorgeschlagen.

Diese Idee wurde bei uns auf einem selbst entwickelten Raspberry Pi Add-on Board umgesetzt und erweitert. Die vom Sensor gelieferten Daten werden in einem C++ Programm verarbeitet und mithilfe einer Anbindung an openHAB dem Benutzer bereitgestellt.

Funktion[Bearbeiten]

Wir haben uns in diesem Projekt dazu entschieden die Schaltung aus dem hier verfügbaren Projekt, für unser Projekt als Grundlage zu verwenden, da es sich um die Referenzschaltung aus dem Paper handelt, diese sehr gut dokumentiert ist und zusätzliche Informationen zur Kalibrierung und Fehlerbehebung bereitstellt werden. Eine Kalibrierung der Schaltung ist jedoch nicht zwingend notwendig, sollte das Projekt nur nach gebaut werden.

Das Ziel unseres Projekts ist eine weitreichende Erweiterung der zugrunde liegenden Schaltung, damit diese mittels SPI von jeglichem Mikrocontroller angesprochen werden kann. Um dieses Ziel zu erreichen, muss das Signal der Schaltung verschoben und verstärkt werden, um nachträglich von einem Analog-Digital-Wandler (A/D-Wandler) umgewandelt werden zu können. Dieser A/D-Wandler wird dann von dem Mikrocontroller über SPI angesprochen.

Hardware[Bearbeiten]

Planung[Bearbeiten]

Das Signal des originalen Detektors ist für den Mikrofon-Eingang eines Computers ausgelegt und weist laut der Dokumentation Spannungen zwischen -100 und 100 mV auf. Da das Signal von einem kostengünstigen A/D-Wandler eingelesen werden soll, und der von uns ausgewählte MCP3004 keine Bipolare A/D Wandlung unterstützt, muss das Signal so verschoben werden, dass es in einem Bereich von 0V bis maximal zur Referenzspannung des A/D-Wandler liegt. Durch die Verschiebung des Signals würde eine Spannung von 0 V bis 200 mV an dem Eingang des A/D-Wandler anliegen.

Um die benötigte Signalauflösung zu erhalten, haben wir zusätzlich zu der Verschiebung des Signals dieses auch verstärkt, damit das Signal einen Bereich von 0 V bis 1.1 V abdeckt und somit bei einer Referenzspannung von 3.3 V am A/D-Wandler eine ausreichende Auflösung gegeben ist. Da der Detektor mit einer 9V-Batterie betrieben wird, um elektronisches Rauschen der Spannungsquelle und damit eine Beeinflussung des Detektors auszuschließen, wurde von uns ebenfalls ein von dem Mikrocontroller steuerbares Relais vorgesehen. Damit kann die Batterie von der Schaltung getrennt werden, wenn keine Messungen vorgenommen werden.

Bereiche der Schaltung

Umsetzung[Bearbeiten]

Die finale Schaltung unseres Projekts lässt sich in drei Bereiche Unterteilen, den Detektor, den Verstärker und die digitalen Interfaces. Bei dem Detektor handelt es sich um die Referenzschaltung, die von dem Paper vorgestellt wird. Diese Schaltung wurde von uns bewusst nicht verändert, da sie für ein Partikel einen speziellen Signalverlauf erzeugt, welcher von der Software erkannt werden soll. Das Signal liegt als Eingang an der Verstärkungsschaltung an und wird wie zuvor in der Planung beschrieben auf einen von dem A/D-Wandler unterstützten Bereich verschoben. Da der OpAmp sowohl eine positive als auch eine negative Versorgungsspannung benötigt, gehört zu diesem Teil auch ein Baustein, der aus der 5V Versorgungsspannung eine negative Spannung erzeugen kann - ein sogenannter Switched-Capacitor Voltage Converter. Die letzte Stufe sind die digitalen Interfaces, welche direkt von dem Controller angesprochen werden können, darunter zählen das Relais und der A/D-Wandler.

Achtung[Bearbeiten]

Da der Sensor extrem empfindlich auf Licht und Elektromagnetische Strahlung reagiert, sollte dieser in einem metallenen Gehäuse betrieben werden. Es ist ratsam, sämtliche kabellosen Funktionen des Raspberry Pi während des Betriebs des Sensors auszuschalten.

Software[Bearbeiten]

Softwareablauf

Für das Projekt wurde anfangs eine Software mit Python umgesetzt. Auf Basis von ausgiebigen Tests des Analog-Digital-Konverter im Zusammenspiel mit dem Modul spidev, welches auf der gleichnamigen Linux-Schnittstelle aufbaut, wurde eine zu geringe Geschwindigkeit erreicht. Grund dafür ist ein Overhead des generischen SPI Treibers von Linux für das Raspberry Pi. Für die finale Implementation der Software wurde auf Basis dieser Erkenntnisse C++ herangezogen. Dadurch kann die gewünschte Mindestgeschwindigkeit von 48 kSPS am A/D-Wandler ohne Probleme erreicht werden. Der Quellcode für das Projekt kann hier gefunden werden. Aufgrund der Funktionsweise der SPI-Bibliothek muss das Programm als Superuser ausgeführt werden.

Anforderungen[Bearbeiten]

Die Software zu diesem Projekt muss mehreren Anforderungen gerecht werden. Auf Basis der Dokumentation des zugrunde liegenden Sensors konnte eine Mindestgeschwindigkeit von 48 kSPS für die Analog-Digital Wandlung festgestellt werden, um das Signal möglichst genau auszuwerten. Ebenfalls wurde für den A/D-Wandler eine Auflösung von 10 Bit gefordert. Die Verarbeitung von 48000 Datenpunkten pro Sekunde ist daher eine Mindestanforderung. Die Speicherung und zeitliche Auswertung der Daten wurde durch eine Anbindung an openHAB nicht in der von uns erstellten Software geplant.

Externe Bibliotheken[Bearbeiten]

Da wie zuvor beschrieben der SPI Systemtreiber von Linux zu einem zu großen Overhead führt und dadurch nicht die gewünschten Geschwindigkeiten erreicht werden konnten, wurde die Treiberbibliothek für den Prozessor des Raspberry Pi eingebunden. Diese ist kompatibel mit allen Versionen des Raspberry Pi, einschließlich der Version 4, und bietet einen direkten Zugriff auf die SPI-Schnittstelle des Prozessors, als auch auf die GPIO-Pins.

Da die Software die Ergebnisse der verarbeiteten Daten an eine Web-Schnittstelle übertragen soll, wurde zusätzlich noch die Bibliothek cpp-httlib für die Anbindung an openHAB verwendet.

Aufbau[Bearbeiten]

Um ein kontinuierliches Auslesen und Verarbeiten der Daten zu ermöglichen wurde die Software in zwei Threads aufgeteilt. Ein Thread dient zum Einlesen der Daten aus dem Sensor, der andere Thread verarbeitet die ausgelesenen Daten und überträgt die Ergebnisse der Auswertung an openHAB.

Partikelerkennung[Bearbeiten]

Signalverlauf - Beispiel

Das Signal des Sensors hat einen einfach zu charakterisierenden Verlauf, der sich je nach der Energie des Partikels nur in der Amplitude des Signals verändert. Diese Charakteristik macht es möglich, ein Partikel mit wenig Rechenaufwand zu detektieren. Das Signal lässt sich in zwei Phasen unterteilen: zum einen den negativen Ausschlag mit einer Dauer zwischen 50 und 75 us, und zum anderen in den positiven Ausschlag mit einer Dauer zwischen 200 und 250 us. Die erste Phase lässt sich einfach an dem Unterschreiten des Trigger-Werts erkennen, das Ende der Phase ist erreicht, wenn das Signal aus dem negativen in den positiven Bereich wechselt. Die zweite Phase beginnt sofort nach dem Ende der ersten Phase und endet, sobald das Signal das übliche Rauschen des Sensors erreicht hat.

Konfiguration[Bearbeiten]

Da das Programm kompiliert werden muss, sind schnelle Anpassungen der Parameter für die Verbindung zu openHAB im Code nicht möglich. Aus diesem Grund wurde eine Konfiguration der wichtigsten Parameter anhand einer Konfigurationsdatei vorgesehen. Diese Datei wird beim ersten Start des Programms generiert. Vorrangig müssen die Einstellungen für die zuvor an openHAB genannte Anbindung von dem Benutzer getroffen werden, genauer sind das:

  • Der Name des Items in openHAB
  • Die openHAB Server Url
  • Der ApiKey zur Übertragung der Werte

Eine Anpassung der Detektionsparameter ist zwar nicht zwingend nötig, kann aber durch den Benutzer vorgenommen werden.

Zusammenarbeit in Zeiten von Corona[Bearbeiten]

Durch das Anhalten der Coronakriese sind einige Teile unserer Projektarbeit stark erschwert bzw. unmöglich gewesen:

  • Direktes Zusammenarbeiten außerhalb von Online-Meetings
  • Eingeschränkte Möglichkeiten mit Elektromessgeräten Komponenten zu testen
  • Zusenden benötigter Artikel dauert länger
  • Explodierende Preise für öfter benötigte Chips