Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Einen eigenen Geiger-Müller-Zähler mit Arduino, HV-Boost und 20x4-LCD bauen

Komponenten und Zubehör

Komponente Menge Hinweise
Arduino UNO (oder kompatibles Board) 1 Jedes Arduino-Board funktioniert, muss kein UNO sein.
DC-DC 1,5-3V auf 300-400V 380V High-Voltage Boost Step-Up Spannungswandler Modul 1 Ideale Endspannung 400V, Betriebsbereich 350-450V (Arbeitsspannungsbereich des GM-Röhrchens).
STS-5 Geiger-Müller-Röhrchen 1 Günstig auf eBay erhältlich; Versand oft aus der Ukraine (2-3 Wochen Lieferzeit).
SunFounder IIC I2C TWI Serial 2004 20x4 LCD Modul Shield für Arduino Uno Mega2560 1 Weniger Verkabelung durch I2C; jedes 20x4-Display funktioniert.

Benötigte Werkzeuge

Projektbeschreibung

WICHTIGE SICHERHEITSHINWEIS: Dieses Gerät arbeitet mit Hochspannung (400 V). Obwohl die Ströme gering sind, kann jede Spannung oder jeder Strom, der in den menschlichen Körper gelangt, Herzrhythmusstörungen auslösen, die zum Tod führen können. Nur Personen mit Elektronikerfahrung und strikter Beachtung aller Sicherheitsvorkehrungen sollten dieses Projekt nachbauen.

Ziel war es, die Arbeit von AdNovea zu übernehmen und einen frei programmierbaren Geiger-Müller-Zähler zu schaffen. Der ursprüngliche Code ließ sich nicht anpassen, daher wurde eine eigene Firmware entwickelt, die sowohl die Physik der Röhre verständlich macht als auch individuelle Erweiterungen erlaubt.

Der Schaltplan wurde gegenüber AdNovea vereinfacht: Auf Ethernet, Buzzer und den Vorwiderstand zur GM-Röhre wurde verzichtet, da letzterer den Strom zu stark begrenzte und die Röhre nicht zündete. Der Aufbau erfolgte zunächst auf dem Steckbrett, danach auf einer gelöteten Lochrasterplatine.

Einen eigenen Geiger-Müller-Zähler mit Arduino, HV-Boost und 20x4-LCD bauen
Vereinfachter Schaltplan
Einen eigenen Geiger-Müller-Zähler mit Arduino, HV-Boost und 20x4-LCD bauen
Gelöteter Aufbau

Als Gehäuse diente der Karton des Arduino-Starterkits. Ausschnitte für das LCD und den USB-Anschluss wurden hineingeschnitten und mit Klebeband verstärkt. Die GM-Röhre und die Hochspannungsmodul-Anschlüsse wurden mit Isolierband gesichert. Ein 9V-Block hielt nicht lange; die Stromversorgung erfolgt schließlich per USB.

Einen eigenen Geiger-Müller-Zähler mit Arduino, HV-Boost und 20x4-LCD bauen
Gehäuse mit Display-Ausschnitt
Einen eigenen Geiger-Müller-Zähler mit Arduino, HV-Boost und 20x4-LCD bauen
USB-Stromversorgung

Firmware-Funktionen

Weitere Ideen (Alarm bei erhöhter Strahlung, kürzere Log-Intervalle) wurden aus Zeitgründen nicht umgesetzt, können aber leicht ergänzt werden.

Code

#include <LiquidCrystal_I2C.h>
#include <Wire.h>

unsigned long counts = 0;
unsigned long previousMillis = 0;
float averageCPM = 0;
float sdCPM = 0;
int currentCPM = 0;
float calcCPM = 0;

LiquidCrystal_I2C lcd(0x27, 20, 4);
float CPMArray[100];

#define LOG_PERIOD 30000 // 30 Sekunden

void setup() {
  counts = 0;
  currentCPM = 0;
  averageCPM = 0;
  sdCPM = 0;
  calcCPM = 0;
  lcd.init();
  lcd.backlight();
  Serial.begin(9600);
  pinMode(2, INPUT);
  attachInterrupt(digitalPinToInterrupt(2), impulse, FALLING);
}

void loop() {
  lcd.setCursor(0, 2);
  lcd.print("CPM Count: ");
  lcd.print(counts);

  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis > LOG_PERIOD) {
    previousMillis = currentMillis;
    CPMArray[currentCPM] = counts * 2; // CPM
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("uSv/hr: ");
    lcd.print(outputSieverts(CPMArray[currentCPM]));
    counts = 0;

    // Mittelwert & Standardfehler berechnen
    averageCPM = 0;
    sdCPM = 0;
    for (int x = 0; x < currentCPM + 1; x++) {
      averageCPM += CPMArray[x];
    }
    averageCPM /= (currentCPM + 1);
    for (int x = 0; x < currentCPM + 1; x++) {
      sdCPM += sq(CPMArray[x] - averageCPM);
    }
    sdCPM = sqrt(sdCPM / currentCPM) / sqrt(currentCPM + 1);

    Serial.println("Avg: " + String(averageCPM) + " +/- " + String(sdCPM) + " ArrayVal: " + String(CPMArray[currentCPM]));
    currentCPM++;
    displayAverageCPM();
  }
}

void impulse() {
  counts++;
}

void displayAverageCPM() {
  lcd.setCursor(0, 1);
  lcd.print("Avg: ");
  lcd.print(outputSieverts(averageCPM));
  lcd.print("+/-");
  lcd.print(outputSieverts(sdCPM));
}

float outputSieverts(float x) {
  return x * 0.0057; // CPM → µSv/h
}

Schaltplan

Die Fritzing-Datei (geiger_counter_4LAnJvZEpC.fzz) liegt bei. Beim Öffnen in Fritzing können Bauteile verschoben erscheinen.

Herstellungsprozess

  1. Raspberry Pi Geigerzähler bauen – Open-Hardware Strahlungssensor Tutorial
  2. Echtzeit-Solarmonitoring mit Arduino: Low-Cost Datenerfassungssystem
  3. Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
  4. FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
  5. DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
  6. Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
  7. Sichere Warmwasserbereitung: Thermospannungs-Monitor für Zündflamme (Arduino & Raspberry Pi)
  8. Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
  9. Selbstbau: Schlagbare, anpassbare Tasten mit Arduino und Piezo-Element
  10. Valentinstags-Geschenk: DIY Tage-zusammen-Zähler