Innholdsfortegnelse:

Arduino DIY Geiger Counter: 12 trinn (med bilder)
Arduino DIY Geiger Counter: 12 trinn (med bilder)

Video: Arduino DIY Geiger Counter: 12 trinn (med bilder)

Video: Arduino DIY Geiger Counter: 12 trinn (med bilder)
Video: #162 Build your own 50$ connected Geiger Counter (ESP32) 2024, November
Anonim
Arduino DIY Geiger -teller
Arduino DIY Geiger -teller
Arduino DIY Geiger -teller
Arduino DIY Geiger -teller

Så du har bestilt en DIY Geiger -teller og du vil koble den til din Arduino. Du går på nettet og prøver å kopiere hvordan andre har koblet Geiger -telleren til Arduino bare for å finne ut at noe er galt. Selv om Geiger -telleren ser ut til å fungere, fungerer ingenting som beskrevet i DIY -en du følger når du kobler Geiger -telleren til Arduino.

I denne instruksen vil jeg dekke hvordan du feilsøker noen av disse feilene.

Huske; sett sammen og kode Arduino ett trinn om gangen, hvis du går rett til et ferdig prosjekt og det er en ledning eller kode som er savnet, kan det ta deg evig tid å finne problemet.

Trinn 1: Verktøy og deler

Verktøy og deler
Verktøy og deler

Prototype -boks Jeg brukte en godteriboks fra Ferrero Rocher.

Lite brødbrett

16x2 LCD

Arduino bord eter en UNO eller Nano

220 Ω motstand

Pot 10 kΩ justerbar motstand.

DIY Geiger Counter Kit

Jumper Wires

Batterikontakt eller sele

Oscilloskop

Fin nesetang

Liten standard skrutrekker

Trinn 2: Sett sammen din Geiger -teller

Sett sammen din Geiger -teller
Sett sammen din Geiger -teller

Eventuelle skader på Geiger Tube; og din Geiger -teller fungerer ikke, så bruk det beskyttende akryldekselet for å forhindre skade på Geiger -røret.

Denne instruksen handler om hvordan jeg reparerte den samme Geiger -telleren med et ødelagt Geiger -rør og monterte det beskyttende akryldekselet for å forhindre brudd i fremtiden.

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

Trinn 3: Elektrisk testing av Geiger -telleren

Elektrisk testing av Geiger -telleren
Elektrisk testing av Geiger -telleren
Elektrisk testing av Geiger -telleren
Elektrisk testing av Geiger -telleren
Elektrisk testing av Geiger -telleren
Elektrisk testing av Geiger -telleren

Bruk først riktig spenning for strømforsyningen; USB -kabelen gir 5 volt likestrøm rett fra datamaskinen din, men 3 AA -batteriholderen er for 1,5 volt alkaliske batterier som gir en total spenning på 4,5 volt. Hvis du bruker 1,2 volt oppladbare NI-Cd eller NI-MH batterier trenger du en 4 AA batteriholder for en total spenning på 4,8 volt. Hvis du bruker mindre enn 4,5 volt, kan det hende at Geiger -telleren ikke fungerer som den skal.

Det er veldig lite kretsløp på Geiger -tellernes utgang; så så lenge høyttaleren gir en tikkende lyd og LED -en blinker, bør du få et signal på VIN -pinnen.

For å være sikker på utgangssignalet; koble et oscilloskop til utgangen ved å koble den positive siden av oscilloskopproben til VIN og den negative siden av oscilloskopproben til bakken.

Snarere enn å bare vente på bakgrunnsstråling for å utløse Geigertelleren, brukte jeg americium-241 fra et røykdetektorer-ionekammer for å øke Geiger-tellerreaksjonene. Utgangen fra Geiger -telleren startet på +3 volt og falt til 0 volt hver gang Geiger -røret reagerte på alfapartiklene og kom tilbake til +3 volt et øyeblikk senere. Dette er signalet du vil spille inn med Arduino.

Trinn 4: Kabling

Kabling
Kabling
Kabling
Kabling
Kabling
Kabling
Kabling
Kabling

Det er to måter du kan koble Geiger -telleren til deg Arduino og datamaskinen din.

Koble GND på Arduino til GND på Geiger -telleren.

Koble 5V på Arduino til 5V på Geiger -telleren.

Koble VIN på Geiger -telleren til D2 på Arduino.

Med uavhengig kraft koblet til Geiger -telleren.

Koble GND på Arduino til GND på Geiger -telleren.

Koble VIN på Geiger -telleren til D2 på Arduino.

Koble Arduino til datamaskinen.

Trinn 5: Kode

Kode
Kode
Kode
Kode
Kode
Kode

Åpne Arduino IDE og last inn koden.

// Denne skissen teller antall pulser i minuttet.

// Koble GND på Arduino til GND på Geiger -telleren.

// Koble 5V på Arduino til 5V på Geiger -telleren.

// Koble VIN på Geiger -telleren til D2 på Arduino.

usignerte lange tellinger; // variabel for GM Tube -hendelser

unsigned long previousMillis; // variabel for måling av tid

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

teller ++;

}

#define LOG_PERIOD 60000 // tellehastighet

ugyldig oppsett () {// oppsett

teller = 0;

Serial.begin (9600);

pinMode (2, INNGANG);

attachInterrupt (digitalPinToInterrupt (2), impuls, FALLING); // definere eksterne avbrudd

Serial.println ("Startteller");

}

void loop () {// hovedsyklus

usignert langstrømMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = currentMillis;

Serial.println (tellinger);

teller = 0;

}

}

Velg verktøyet Arduino eller et annet brett du bruker.

Velg Verktøy og port i Verktøy

Last opp koden.

Når koden er lastet opp i Verktøy, velger du Seriell skjerm og ser hvordan Geiger -telleren fungerer.

Se etter feil. Det eneste med denne koden er at det er litt kjedelig at du må vente 1 minutt for hver telling.

Trinn 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

Dette er en av de første feilene jeg fant i koden; så se etter det i koden din, "Serial.println (cpm);" og "Serial.print (cpm);".

Serial.println (cpm); vil skrive ut hver telling på sin egen linje.

Serial.print (cpm); vil se ut som et stort tall som skrives ut hver teller på samme linje, noe som gjør det umulig å vite hva antallet er.

Trinn 7: J305 Måling av bakgrunnsstråling

J305 Måling av bakgrunnsstråling
J305 Måling av bakgrunnsstråling
J305 Måling av bakgrunnsstråling
J305 Måling av bakgrunnsstråling

Først er måling av bakgrunnsstråling, den naturlige strålingen som allerede eksisterer naturlig. Det oppførte tallet er CPM (telling per minutt), som er totalt målte radioaktive partikler hvert minutt.

J305 bakgrunnsgjennomsnittstall var 15,6 CPM.

Trinn 8: J305 Måling av røykfølerstråling

J305 Måling av røykfølerstråling
J305 Måling av røykfølerstråling
J305 Måling av røykfølerstråling
J305 Måling av røykfølerstråling

Det er ikke uvanlig at en Geiger -teller gir deg det samme antallet gjentatte ganger, så sjekk det med en strålekilde. Jeg brukte strålingsmåling fra Americium, et ionekammer fra en røykdetektor. Røyksensoren bruker Americium som en kilde til alfapartikler som ioniserer røykpartikler i luften. Jeg fjernet metallhetten på sensoren slik at alfa- og betapartiklene kan komme til Geiger -røret sammen med gammapartiklene.

Hvis alt er i orden, bør tallene endres.

Americium-241 fra et røykdetektorer ionekammer gjennomsnittlig antall var 519 CPM.

Trinn 9: SBM-20

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

Denne Arduino -skissen er modifisert versjon skrevet av Alex Boguslavsky.

Denne skissen teller antall pulser på 15 sekunder og konverterer den til tellinger per minutt, noe som gjør den mindre kjedelig.

Kode jeg la til "Serial.println (" Startteller ");".

Kode I endret; "Serial.print (cpm);" til "Serial.println (cpm);".

“#Define LOG_PERIOD 15000”; setter telletiden til 15 sekunder, jeg endret den til “#define LOG_PERIOD 5000” eller 5 sekunder. Jeg fant ingen merkbar forskjell i gjennomsnittet mellom å telle i 1 minutt, eller 15 sekunder og 5 sekunder.

#inkludere

#define LOG_PERIOD 15000 // Loggperiode i millisekunder, anbefalt verdi 15000-60000.

#define MAX_PERIOD 60000 // Maksimal loggperiode uten å endre denne skissen

usignerte lange tellinger; // variabel for GM Tube -hendelser

usignerte lange cpm; // variabel for CPM

usignert int multiplikator; // variabel for beregning av CPM i denne skissen

unsigned long previousMillis; // variabel for tidsmåling

void tube_impulse () {// delprosedyre for å fange hendelser fra Geiger Kit

teller ++;

}

ugyldig oppsett () {// delprosedyre for oppsett

teller = 0;

cpm = 0;

multiplikator = MAX_PERIOD / LOG_PERIOD; // beregner multiplikator, avhenger av loggperioden din

Serial.begin (9600);

attachInterrupt (0, tube_impulse, FALLING); // definere eksterne avbrudd

Serial.println ("Startteller"); // kode jeg la til

}

void loop () {// hovedsyklus

usignert langstrømMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = currentMillis;

cpm = teller * multiplikator;

Serial.println (cpm); // kode jeg endret

teller = 0;

}

}

SBM-20 bakgrunnsgjennomsnittstall var 23,4 CPM.

Trinn 10: Kabling av Geigertelleren med en LCD

Kabling av Geigertelleren med LCD
Kabling av Geigertelleren med LCD

LCD -tilkobling:

LCD K pin til GND

LCD En pinne til 220 Ω motstand til Vcc

LCD D7 pin til digital pin 3

LCD D6 -pin til digital pin 5

LCD D5 pin til digital pin 6

LCD D4 -pinne til digital pinne 7

LCD Aktiver pin til digital pin 8

LCD R/W pin til bakken

LCD RS -pin til digital pin 9

LCD VO -pin for å justere 10 kΩ potten

LCD Vcc pin til Vcc

LCD Vdd pin til GND

Pot 10 kΩ justerbar motstand.

Vcc, Vo, Vdd

Geiger-teller

VIN til digital pin 2

5 V til +5 V.

GND til bakken

Trinn 11: Geigerteller med LCD

Geiger -teller med LCD
Geiger -teller med LCD
Geiger -teller med LCD
Geiger -teller med LCD
Geiger -teller med LCD
Geiger -teller med LCD

// inkludere bibliotekskoden:

#inkludere

#inkludere

#define LOG_PERIOD 15000 // Loggperiode i millisekunder, anbefalt verdi 15000-60000.

#define MAX_PERIOD 60000 // Maksimal loggperiode uten å endre denne skissen

#define PERIOD 60000.0 // (60 sek) ett minutt måleperiode

flyktig usignert lang CNT; // variabel for å telle avbrudd fra dosimeter

usignerte lange tellinger; // variabel for GM Tube -hendelser

usignerte lange cpm; // variabel for CPM

usignert int multiplikator; // variabel for beregning av CPM i denne skissen

unsigned long previousMillis; // variabel for tidsmåling

usignert lang dispPeriod; // variabel for måling av tid

usignert lang CPM; // variabel for måling av CPM

// initialiser biblioteket med tallene på grensesnittpinnene

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

ugyldig oppsett () {// oppsett

lcd.begin (16, 2);

CNT = 0;

CPM = 0;

dispPeriod = 0;

lcd.setCursor (0, 0);

lcd.print ("RH Electronics");

lcd.setCursor (0, 1);

lcd.print ("Geiger Counter");

forsinkelse (2000);

cleanDisplay ();

attachInterrupt (0, GetEvent, FALLING); // Hendelse på pin 2

}

void loop () {

lcd.setCursor (0, 0); // skriv ut tekst og CNT på LCD -skjermen

lcd.print ("CPM:");

lcd.setCursor (0, 1);

lcd.print ("CNT:");

lcd.setCursor (5, 1);

lcd.print (CNT);

if (millis ()> = dispPeriod + PERIOD) {// Hvis ett minutt er over

cleanDisplay (); // Klar LCD

// Gjør noe med akkumulerte CNT -hendelser….

lcd.setCursor (5, 0);

CPM = CNT;

lcd.print (CPM); // Vis CPM

CNT = 0;

dispPeriod = millis ();

}

}

void GetEvent () {// Få hendelse fra enhet

CNT ++;

}

void cleanDisplay () {// Klar LCD -rutine

lcd.clear ();

lcd.setCursor (0, 0);

lcd.setCursor (0, 0);

}

Trinn 12: Filer

Last ned og installer disse filene til Arduino.

Plasser hver.ino -fil i en mappe med samme navn.

Anbefalt: