Inhaltsverzeichnis:

Arduino DIY Geigerzähler - Gunook
Arduino DIY Geigerzähler - Gunook

Video: Arduino DIY Geigerzähler - Gunook

Video: Arduino DIY Geigerzähler - Gunook
Video: DIY geiger counter with arduino - Geigerzähler mit Arduino 2024, November
Anonim
Arduino DIY-Geigerzähler
Arduino DIY-Geigerzähler
Arduino DIY-Geigerzähler
Arduino DIY-Geigerzähler

Sie haben also einen DIY-Geigerzähler bestellt und möchten ihn mit Ihrem Arduino verbinden. Sie gehen online und versuchen zu duplizieren, wie andere ihren Geigerzähler mit Arduino verbunden haben, nur um festzustellen, dass etwas nicht stimmt. Obwohl Ihr Geigerzähler zu funktionieren scheint, funktioniert nichts wie in dem DIY beschrieben, dem Sie folgen, wenn Sie Ihren Geigerzähler mit Ihrem Arduino verbinden.

In diesem Instructable werde ich behandeln, wie man einige dieser Störungen beheben kann.

Erinnern; Arduino Schritt für Schritt zusammenbauen und codieren. Wenn Sie direkt zu einem fertigen Projekt gehen und ein Kabel oder eine Codezeile fehlt, kann es ewig dauern, das Problem zu finden.

Schritt 1: Werkzeuge und Teile

Werkzeuge und Teile
Werkzeuge und Teile

Prototypenbox Ich habe eine Ferrero Rocher Bonbonbox verwendet.

Kleines Steckbrett

16x2 LCD

Arduino Board Ether ein UNO oder Nano

220 Ω Widerstand

Pot 10 kΩ einstellbarer Widerstand.

DIY-Geigerzähler-Kit

Überbrückungsdrähte

Batteriestecker oder Kabelbaum

Oszilloskop

Spitzzange

Kleiner Standard-Schraubendreher

Schritt 2: Bauen Sie Ihren Geigerzähler zusammen

Bauen Sie Ihren Geigerzähler zusammen
Bauen Sie Ihren Geigerzähler zusammen

Schäden an Ihrem Geiger Tube; und Ihr Geigerzähler funktioniert nicht, verwenden Sie also die schützende Acrylabdeckung, um Schäden an Ihrer Geigerröhre zu vermeiden.

Dieses Instructable ist, wie ich den gleichen Geigerzähler mit einem gebrochenen Geigerrohr repariert und die schützende Acrylabdeckung angebracht habe, um in Zukunft einen Bruch zu verhindern.

www.instructables.com/id/Repairing-a-DIY-G…

Schritt 3: Elektrischer Test des Geigerzählers

Geigerzähler elektrisch testen
Geigerzähler elektrisch testen
Geigerzähler elektrisch testen
Geigerzähler elektrisch testen
Geigerzähler elektrisch testen
Geigerzähler elektrisch testen

Verwenden Sie zuerst die richtige Spannung für die Stromversorgung; Das USB-Kabel liefert 5 Volt Gleichstrom direkt von Ihrem Computer, jedoch ist der 3 AA-Batteriehalter für 1,5-Volt-Alkalibatterien mit einer Gesamtspannung von 4,5 Volt geeignet. Wenn Sie wiederaufladbare 1,2 Volt NI-Cd- oder NI-MH-Akkus verwenden, benötigen Sie einen 4 AA-Batteriehalter für eine Gesamtspannung von 4,8 Volt. Wenn Sie weniger als 4,5 Volt verwenden, funktioniert der Geigerzähler möglicherweise nicht wie er sollte.

Es gibt sehr wenig Schaltkreise am Ausgang des Geigerzählers; Solange der Lautsprecher ein tickendes Geräusch macht und die LED blinkt, sollten Sie ein Signal am VIN-Pin erhalten.

Um sich des Ausgangssignals zu vergewissern; Schließen Sie ein Oszilloskop an den Ausgang an, indem Sie die positive Seite des Oszilloskop-Tastkopfs an die VIN und die negative Seite des Oszilloskop-Tastkopfs an Masse anschließen.

Anstatt nur auf die Hintergrundstrahlung zu warten, um den Geigerzähler auszulösen, habe ich Americium-241 aus einer Ionenkammer eines Rauchmelders verwendet, um die Reaktionen des Geigerzählers zu erhöhen. Der Ausgang des Geigerzählers begann bei +3 Volt und fiel jedes Mal auf 0 Volt, wenn die Geigerröhre auf die Alphateilchen reagierte, und kehrte einen Moment später auf +3 Volt zurück. Dies ist das Signal, das Sie mit Arduino aufnehmen.

Schritt 4: Verkabelung

Verdrahtung
Verdrahtung
Verdrahtung
Verdrahtung
Verdrahtung
Verdrahtung
Verdrahtung
Verdrahtung

Es gibt zwei Möglichkeiten, den Geigerzähler mit Ihrem Arduino und Ihrem Computer zu verbinden.

Verbinden Sie den GND von Arduino mit dem GND des Geigerzählers.

Verbinden Sie die 5V auf Arduino mit den 5V auf dem Geigerzähler.

Verbinden Sie die VIN des Geigerzählers mit dem D2 auf Arduino.

Mit unabhängiger Stromversorgung an den Geigerzähler angeschlossen.

Verbinden Sie den GND von Arduino mit dem GND des Geigerzählers.

Verbinden Sie die VIN des Geigerzählers mit dem D2 auf Arduino.

Verbinden Sie Arduino mit Ihrem Computer.

Schritt 5: Code

Code
Code
Code
Code
Code
Code

Öffnen Sie die Arduino IDE und laden Sie den Code.

// Diese Skizze zählt die Anzahl der Impulse pro Minute.

// Verbinden Sie die GND von Arduino mit der GND des Geigerzählers.

// Verbinden Sie die 5V auf Arduino mit den 5V auf dem Geigerzähler.

// Verbinden Sie die VIN des Geigerzählers mit dem D2 auf Arduino.

lange Zählungen ohne Vorzeichen; //variabel für GM Tube-Events

unsigned lange vorherigeMillis; // variabel für Messzeit

Void Impuls () {// dipanggil setiap ada sinyal FALLING di Pin 2

zählt++;

}

#define LOG_PERIOD 60000 // Zählrate

Void setup () {//Setup

zählt = 0;

Serial.begin (9600);

pinMode (2, EINGANG);

attachInterrupt (digitalPinToInterrupt(2), Impuls, FALLING); // externe Interrupts definieren

Serial.println ("Startzähler");

}

Void Schleife () {//Hauptzyklus

unsigned long currentMillis = millis();

if (currentMillis - previousMillis > LOG_PERIOD) {

vorherigeMillis = aktuelleMillis;

Serial.println (zählt);

zählt = 0;

}

}

Wählen Sie in Tools das Arduino oder ein anderes Board aus, das Sie verwenden.

Wählen Sie in Tools den Port und Com

Laden Sie den Code hoch.

Sobald der Code in Tools hochgeladen wurde, wählen Sie Serial Monitor und beobachten Sie, wie Ihr Geigerzähler arbeitet.

Suchen Sie nach Störungen. Das einzige an diesem Code ist, dass es etwas mühsam ist, dass Sie für jede Zählung 1 Minute warten müssen.

Schritt 6: Serial.println Vs Serial.print

Serial.println Vs Serial.print
Serial.println Vs Serial.print
Serial.println Vs Serial.print
Serial.println Vs Serial.print

Dies ist einer der ersten Fehler, die ich im Code gefunden habe; Achten Sie also in Ihrem Code darauf, „Serial.println(cpm);“und „Seriendruck (cpm);“.

Serial.println (cpm); wird jede Zählung in einer eigenen Zeile ausgeben.

Serial.print (cpm); sieht aus wie eine große Zahl, die jede Zählung in derselben Zeile druckt, so dass es unmöglich ist, zu sagen, was die Zählung ist.

Schritt 7: J305 Hintergrundstrahlungsmessung

J305 Hintergrundstrahlungsmessung
J305 Hintergrundstrahlungsmessung
J305 Hintergrundstrahlungsmessung
J305 Hintergrundstrahlungsmessung

Erstens die Messung der Hintergrundstrahlung, der natürlichen Strahlung, die bereits in der Natur vorhanden ist. Die aufgeführte Zahl ist der CPM (Count per Minute), der die Summe der gemessenen radioaktiven Partikel pro Minute darstellt.

Der durchschnittliche J305-Hintergrundzähler betrug 15,6 CPM.

Schritt 8: J305 Messung der Rauchsensorstrahlung

J305 Messung der Rauchsensorstrahlung
J305 Messung der Rauchsensorstrahlung
J305 Messung der Rauchsensorstrahlung
J305 Messung der Rauchsensorstrahlung

Es ist nicht ungewöhnlich, dass ein Geigerzähler wiederholt den gleichen Wert anzeigt, also überprüfen Sie ihn mit einer Strahlungsquelle. Ich habe die Strahlungsmessung von Americium und eine Ionenkammer von einem Rauchmelder verwendet. Der Rauchsensor verwendet Americium als Quelle für Alphapartikel, die Rauchpartikel in der Luft ionisieren. Ich habe die Metallkappe vom Sensor entfernt, damit die Alpha- und Beta-Partikel zusammen mit den Gamma-Partikeln in die Geigerröhre gelangen können.

Wenn alles in Ordnung ist, sollten sich die Zählungen ändern.

Americium-241 aus einer Ionenkammer eines Rauchmelders betrug im Durchschnitt 519 CPM.

Schritt 9: SBM-20

SBM-20
SBM-20
SBM-20
SBM-20

Diese Arduino-Skizze ist eine modifizierte Version, die von Alex Boguslavsky geschrieben wurde.

Diese Skizze zählt die Anzahl der Impulse in 15 Sekunden und wandelt sie in Zählungen pro Minute um, was es weniger mühsam macht.

Code, den ich hinzugefügt habe "Serial.println ("Startzähler");".

Code habe ich geändert; "Seriendruck (cpm);" zu „Serial.println(cpm);“.

„#define LOG_PERIOD 15000“; setzt die Zählzeit auf 15 Sekunden, ich habe sie auf „#define LOG_PERIOD 5000“oder 5 Sekunden geändert. Ich fand keinen nennenswerten Unterschied im Durchschnitt zwischen dem Zählen von 1 Minute oder 15 Sekunden und 5 Sekunden.

#enthalten

#define LOG_PERIOD 15000 //Logging-Zeitraum in Millisekunden, empfohlener Wert 15000-60000.

#define MAX_PERIOD 60000 //Maximale Protokollierungsdauer ohne diese Skizze zu ändern

lange Zählungen ohne Vorzeichen; //variabel für GM Tube-Events

lange cpm ohne Vorzeichen; //variabel für CPM

unsigned int Multiplikator; //Variable zur Berechnung des CPM in dieser Skizze

unsigned lange vorherigeMillis; // variabel für Zeitmessung

void tube_impulse(){//Unterprozedur zum Erfassen von Ereignissen aus dem Geiger-Kit

zählt++;

}

Void setup () {//Setup-Unterprozedur

zählt = 0;

cpm = 0;

Multiplikator = MAX_PERIOD / LOG_PERIOD; // Berechnungsmultiplikator, abhängig von Ihrem Log-Zeitraum

Serial.begin (9600);

attachInterrupt(0, tube_impulse, FALLING); // externe Interrupts definieren

Serial.println ("Startzähler"); // Code, den ich hinzugefügt habe

}

Void Schleife () {//Hauptzyklus

unsigned long currentMillis = millis();

if(currentMillis - previousMillis > LOG_PERIOD){

vorherigeMillis = aktuelleMillis;

cpm = zählt * Multiplikator;

Serial.println (cpm); // Code habe ich geändert

zählt = 0;

}

}

Die durchschnittliche Hintergrundzählung von SBM-20 betrug 23,4 CPM.

Schritt 10: Verdrahten des Geigerzählers mit einem LCD

Verkabelung des Geigerzählers mit einem LCD
Verkabelung des Geigerzählers mit einem LCD

LCD-Anschluss:

LCD-K-Pin an GND

LCD A-Pin an 220 Ω Widerstand an Vcc

LCD D7-Pin zu digitalem Pin 3

LCD D6-Pin auf Digital-Pin 5

LCD D5-Pin auf Digital-Pin 6

LCD D4-Pin zu digitalem Pin 7

LCD-Enable-Pin zu digitalem Pin 8

LCD-R/W-Pin auf Masse

LCD-RS-Pin zu digitalem Pin 9

LCD VO-Pin zum Einstellen von 10 kΩ Pot

LCD-Vcc-Pin zu Vcc

LCD Vdd-Pin an GND

Pot 10 kΩ einstellbarer Widerstand.

Vcc, Vo, Vdd

Geigerzähler

VIN zu digitalem Pin 2

5 V bis +5 V

GND an Masse

Schritt 11: Geigerzähler mit LCD

Geigerzähler mit LCD
Geigerzähler mit LCD
Geigerzähler mit LCD
Geigerzähler mit LCD
Geigerzähler mit LCD
Geigerzähler mit LCD

// den Bibliothekscode einfügen:

#enthalten

#enthalten

#define LOG_PERIOD 15000 //Logging-Zeitraum in Millisekunden, empfohlener Wert 15000-60000.

#define MAX_PERIOD 60000 //Maximale Protokollierungsdauer ohne diese Skizze zu ändern

#define PERIOD 60000.0 // (60 Sek.) eine Minute Messzeit

flüchtige unsignierte lange CNT; // Variable zum Zählen von Interrupts vom Dosimeter

lange Zählungen ohne Vorzeichen; //variabel für GM Tube-Events

lange cpm ohne Vorzeichen; //variabel für CPM

unsigned int Multiplikator; //Variable zur Berechnung des CPM in dieser Skizze

unsigned lange vorherigeMillis; // variabel für Zeitmessung

unsigned long dispPeriod; // variabel für die Zeitmessung

unsignierter langer CPM; // Variable zur Messung von CPM

// die Bibliothek mit den Nummern der Schnittstellenpins initialisieren

Flüssigkristallanzeige (9, 8, 7, 6, 5, 3);

Void setup () {// setup

lcd.begin(16, 2);

CNT = 0;

CPM = 0;

dispPeriod = 0;

lcd.setCursor(0, 0);

lcd.print("RH-Elektronik");

lcd.setCursor(0, 1);

lcd.print("Geigerzähler");

Verzögerung (2000);

cleanDisplay();

attachInterrupt(0, GetEvent, FALLING); // Ereignis an Pin 2

}

Leere Schleife () {

lcd.setCursor(0, 0); // Text und CNT auf dem LCD drucken

lcd.print("CPM:");

lcd.setCursor(0, 1);

lcd.print("CNT:");

lcd.setCursor(5, 1);

lcd.print (CNT);

if (millis() >=dispPeriod + PERIOD) { // Wenn eine Minute vorbei ist

cleanDisplay(); // LCD löschen

// Etwas gegen angesammelte CNT-Ereignisse unternehmen….

lcd.setCursor(5, 0);

CPM = CNT;

lcd.print (CPM); //CPM anzeigen

CNT = 0;

dispPeriod = millis();

}

}

void GetEvent(){ // Hole Ereignis vom Gerät

CNT++;

}

void cleanDisplay () {// LCD-Routine löschen

lcd.clear();

lcd.setCursor(0, 0);

lcd.setCursor(0, 0);

}

Schritt 12: Dateien

Laden Sie diese Dateien herunter und installieren Sie sie auf Ihrem Arduino.

Legen Sie jede.ino-Datei in einem Ordner mit demselben Namen ab.

Empfohlen: