Inhoudsopgave:

Arduino DIY Geigerteller - Ajarnpa
Arduino DIY Geigerteller - Ajarnpa

Video: Arduino DIY Geigerteller - Ajarnpa

Video: Arduino DIY Geigerteller - Ajarnpa
Video: DIY Arduino Geiger Counter (Video 1) 2024, Juli-
Anonim
Arduino DIY Geigerteller
Arduino DIY Geigerteller
Arduino DIY Geigerteller
Arduino DIY Geigerteller

Je hebt dus een doe-het-zelf geigerteller besteld en je wilt deze aansluiten op je Arduino. Je gaat online en probeert te dupliceren hoe anderen hun geigerteller op Arduino hebben aangesloten om te ontdekken dat er iets mis is. Hoewel je geigerteller lijkt te werken, werkt niets zoals beschreven in de DIY die je volgt wanneer je je geigerteller aansluit op je Arduino.

In deze Instructable zal ik bespreken hoe u enkele van deze problemen kunt oplossen.

Onthouden; assembleer en codeer Arduino stap voor stap, als je rechtstreeks naar een voltooid project gaat en er is een gemiste draad of regel code, kan het een eeuwigheid duren om het probleem te vinden.

Stap 1: Gereedschap en onderdelen

Gereedschappen en onderdelen
Gereedschappen en onderdelen

Prototype doos Ik gebruikte een Ferrero Rocher snoepdoos.

Kleine broodplank

16x2 LCD

Arduino board ether een UNO of Nano

220 weerstand

Pot 10 kΩ instelbare weerstand.

DIY Geigerteller Kit

Doorverbindingsdraden

Batterijconnector of harnas

Oscilloscoop

Fijnbektang

Kleine standaard schroevendraaier

Stap 2: monteer uw geigerteller

Stel uw geigerteller samen
Stel uw geigerteller samen

Eventuele schade aan uw Geiger Tube; en je geigerteller werkt niet, dus gebruik de beschermende acrylkap om schade aan je geigerbuis te voorkomen.

Deze Instructable gaat over hoe ik dezelfde geigerteller heb gerepareerd met een kapotte geigerbuis en de beschermende acrylafdekking heb aangebracht om breuk in de toekomst te voorkomen.

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

Stap 3: Elektrisch testen van de geigerteller

Elektrisch testen van de geigerteller
Elektrisch testen van de geigerteller
Elektrisch testen van de geigerteller
Elektrisch testen van de geigerteller
Elektrisch testen van de geigerteller
Elektrisch testen van de geigerteller

Gebruik eerst de juiste spanning voor de voeding; de USB-kabel levert 5 volt gelijkstroom vanaf uw computer, maar de 3 AA-batterijhouder is voor 1,5 volt alkalinebatterijen, wat een totale spanning van 4,5 volt oplevert. Als u 1,2 volt oplaadbare NI-Cd- of NI-MH-batterijen gebruikt, hebt u een 4 AA-batterijhouder nodig voor een totale spanning van 4,8 volt. Als u minder dan 4,5 volt gebruikt, werkt de geigerteller mogelijk niet zoals zou moeten.

Er is heel weinig circuit op de uitgang van de geigerteller; dus zolang de luidspreker een tikkend geluid maakt en de LED knippert, zou u een signaal op de VIN-pin moeten krijgen.

Om zeker te zijn van het uitgangssignaal; sluit een oscilloscoop aan op de uitgang door de positieve kant van de oscilloscoop-sonde aan te sluiten op de VIN en de negatieve kant van de oscilloscoop-sonde op de grond.

In plaats van alleen maar te wachten op achtergrondstraling om de geigerteller te activeren, gebruikte ik americium-241 uit een ionenkamer van een rookdetector om de reacties van de geigerteller te verhogen. De output van de geigerteller begon bij +3 volt en zakte naar 0 volt telkens als de geigerbuis reageerde op de alfadeeltjes en keerde even later terug naar +3 volt. Dit is het signaal dat je gaat opnemen met Arduino.

Stap 4: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading

Er zijn twee manieren waarop u de geigerteller op uw Arduino en uw computer kunt aansluiten.

Verbind de GND op Arduino met de GND op de geigerteller.

Verbind de 5V op Arduino met de 5V op de geigerteller.

Verbind het VIN op de geigerteller met de D2 op Arduino.

Met onafhankelijke voeding aangesloten op de geigerteller.

Verbind de GND op Arduino met de GND op de geigerteller.

Verbind het VIN op de geigerteller met de D2 op Arduino.

Sluit Arduino aan op uw computer.

Stap 5: Coderen

Code
Code
Code
Code
Code
Code

Open Arduino IDE en laad de code.

// Deze schets telt het aantal pulsen per minuut.

// Verbind de GND op Arduino met de GND op de geigerteller.

// Verbind de 5V op Arduino met de 5V op de geigerteller.

// Verbind het VIN op de geigerteller met de D2 op Arduino.

ongetekende lange tellingen; //variabele voor GM Tube-evenementen

ongetekende lange vorigeMillis; //variabele voor het meten van tijd

void impulse () {// dipanggil setiap ada sinyal FALLING di pin 2

telt++;

}

#define LOG_PERIOD 60000 // telsnelheid

void setup () { // setup

telt = 0;

Serieel.begin(9600);

pinMode(2, INPUT);

attachInterrupt(digitalPinToInterrupt(2), impuls, FALLING); //definieer externe interrupts

Serial.println("Start teller");

}

void loop () { // hoofdcyclus

unsigned long currentMillis = millis();

if (currentMillis - previousMillis > LOG_PERIOD) {

vorigeMillis = huidigeMillis;

Serial.println(tellingen);

telt = 0;

}

}

Selecteer in Tools de Arduino of een ander bord dat u gebruikt.

Selecteer in Extra de Poort en Com

Upload de code.

Zodra de code is geüpload in Tools, selecteert u Serial Monitor en ziet u hoe uw geigerteller werkt.

Zoek naar storingen. Het enige aan deze code is dat het een beetje vervelend is, je moet 1 minuut wachten voor elke telling.

Stap 6: Serial.println versus Serial.print

Serial.println versus Serial.print
Serial.println versus Serial.print
Serial.println versus Serial.print
Serial.println versus Serial.print

Dit is een van de eerste glitches die ik in de code vond; dus let erop in uw code, "Serial.println(cpm);" en "Serial.print(cpm);".

Serieel.println(cpm); zal elke telling op zijn eigen regel afdrukken.

Seriële.afdruk (cpm); zal eruitzien als één groot getal dat elke telling op dezelfde regel afdrukt, waardoor het onmogelijk is om te vertellen wat de telling is.

Stap 7: J305 Achtergrondstralingsmeting

J305 Achtergrondstralingsmeting
J305 Achtergrondstralingsmeting
J305 Achtergrondstralingsmeting
J305 Achtergrondstralingsmeting

De eerste is het meten van achtergrondstraling, de natuurlijke straling die van nature al bestaat. Het vermelde getal is de CPM (count per minute), dat is een totaal van gemeten radioactieve deeltjes per minuut.

Het gemiddelde aantal op de achtergrond van de J305 was 15,6 CPM.

Stap 8: J305 Meting van de straling van de rooksensor

J305 Meting van de straling van de rooksensor
J305 Meting van de straling van de rooksensor
J305 Meting van de straling van de rooksensor
J305 Meting van de straling van de rooksensor

Het is niet ongebruikelijk dat een geigerteller u herhaaldelijk dezelfde telling geeft, dus controleer deze met een stralingsbron. Ik gebruikte de stralingsmeting van Americium een ionenkamer van een rookmelder. De rooksensor gebruikt Americium als bron van alfadeeltjes die rookdeeltjes in de lucht ioniseren. Ik heb de metalen dop van de sensor verwijderd zodat de alfa- en bètadeeltjes samen met de gammadeeltjes in de Geigerbuis kunnen komen.

Als alles in orde is, moeten de tellingen veranderen.

Americium-241 van een rookmelders ionenkamer gemiddelde telling was 519 CPM.

Stap 9: SBM-20

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

Deze Arduino-schets is een aangepaste versie geschreven door Alex Boguslavsky.

Deze schets telt het aantal pulsen in 15 seconden en zet dit om in tellingen per minuut, waardoor het minder vervelend wordt.

Code Ik heb "Serial.println ("Start counter");”.

Code die ik heb gewijzigd; “Serial.print(cpm);” naar "Serial.println(cpm);".

“#define LOG_PERIOD 15000”; zet de teltijd op 15 seconden, ik heb het veranderd in "#define LOG_PERIOD 5000" of 5 seconden. Ik vond geen merkbaar verschil in het gemiddelde tussen 1 minuut tellen, of 15 seconden en 5 seconden.

#erbij betrekken

#define LOG_PERIOD 15000 // Loggingsperiode in milliseconden, aanbevolen waarde 15000-60000.

#define MAX_PERIOD 60000 //Maximale logperiode zonder deze schets te wijzigen

ongetekende lange tellingen; //variabele voor GM Tube-evenementen

ongetekende lange cpm; //variabele voor CPM

niet-ondertekende int multiplier; //variabele voor berekening CPM in deze schets

ongetekende lange vorigeMillis; //variabele voor tijdmeting

void tube_impulse() {//subprocedure voor het vastleggen van gebeurtenissen van Geiger Kit

telt++;

}

void setup () { // setup-subprocedure

telt = 0;

cpm = 0;

vermenigvuldiger = MAX_PERIOD / LOG_PERIOD; // berekenen vermenigvuldiger, afhankelijk van uw logperiode

Serieel.begin(9600);

attachInterrupt(0, tube_impulse, FALLING); //definieer externe interrupts

Serial.println("Start teller"); // code die ik heb toegevoegd

}

void loop () { // hoofdcyclus

unsigned long currentMillis = millis();

if(currentMillis - previousMillis > LOG_PERIOD){

vorigeMillis = huidigeMillis;

cpm = telt * vermenigvuldiger;

Serieel.println(cpm); // code die ik heb gewijzigd

telt = 0;

}

}

De gemiddelde telling van de SBM-20 op de achtergrond was 23,4 CPM.

Stap 10: Bedrading van de geigerteller met een LCD

Bedrading van de geigerteller met een lcd
Bedrading van de geigerteller met een lcd

LCD-verbinding:

LCD K-pin naar GND

LCD A pin naar 220 Ω weerstand naar Vcc

LCD D7 pin naar digitale pin 3

LCD D6 pin naar digitale pin 5

LCD D5 pin naar digitale pin 6

LCD D4-pin naar digitale pin 7

LCD Schakel pin naar digitale pin 8. in

LCD R/W-pin naar aarde

LCD RS-pin naar digitale pin 9

LCD VO-pin om 10 kΩ pot aan te passen

LCD Vcc-pin naar Vcc

LCD Vdd-pin naar GND

Pot 10 kΩ instelbare weerstand.

Vcc, Vo, Vdd

Geigerteller

VIN naar digitale pin 2

5 V tot +5 V

GND naar aarde

Stap 11: Geigerteller met LCD

Geigerteller met LCD
Geigerteller met LCD
Geigerteller met LCD
Geigerteller met LCD
Geigerteller met LCD
Geigerteller met LCD

// voeg de bibliotheekcode toe:

#erbij betrekken

#erbij betrekken

#define LOG_PERIOD 15000 // Loggingsperiode in milliseconden, aanbevolen waarde 15000-60000.

#define MAX_PERIOD 60000 //Maximale logperiode zonder deze schets te wijzigen

#define PERIOD 60000.0 // (60 sec) meetperiode van één minuut

vluchtige niet-ondertekende lange CNT; // variabele voor het tellen van interrupts van dosimeter

ongetekende lange tellingen; //variabele voor GM Tube-evenementen

ongetekende lange cpm; //variabele voor CPM

niet-ondertekende int multiplier; //variabele voor berekening CPM in deze schets

ongetekende lange vorigeMillis; //variabele voor tijdmeting

niet-ondertekende lange dispPeriod; // variabele voor het meten van tijd

niet-ondertekende lange CPM; // variabele voor het meten van CPM

// initialiseer de bibliotheek met de nummers van de interface-pinnen

LiquidCrystal lcd (9, 8, 7, 6, 5, 3);

void setup() { // setup

lcd.begin (16, 2);

CNT = 0;

CPM = 0;

dispPeriode = 0;

lcd.setCursor(0, 0);

lcd.print(" RH Electronics ");

lcd.setCursor(0, 1);

lcd.print(" Geigerteller ");

vertraging (2000);

schoonDisplay();

attachInterrupt(0, GetEvent, FALLING); // Gebeurtenis op pin 2

}

lege lus() {

lcd.setCursor(0, 0); // print tekst en CNT op het LCD

lcd.print("CPM:");

lcd.setCursor(0, 1);

lcd.print("CNT:");

lcd.setCursor(5, 1);

lcd.print (CNT);

if (millis() >=dispPeriod + PERIOD) { // Als een minuut voorbij is

schoonDisplay(); // Helder LCD-scherm

// Doe iets aan de verzamelde CNT-gebeurtenissen….

lcd.setCursor (5, 0);

CPM = CNT;

lcd.print (CPM); //CPM weergeven

CNT = 0;

dispPeriod = millis();

}

}

void GetEvent(){ // Evenement ophalen van apparaat

CNT++;

}

void cleanDisplay (){ // Clear LCD-routine

lcd.wissen();

lcd.setCursor(0, 0);

lcd.setCursor(0, 0);

}

Stap 12: Bestanden

Download en installeer deze bestanden op uw Arduino.

Plaats elk.ino-bestand in een map met dezelfde naam.

Aanbevolen: