INHOUDSOPGAWE:
- Stap 1: Gereedskap en onderdele
- Stap 2: Monteer u Geiger -toonbank
- Stap 3: Toets die Geiger -toonbank elektries
- Stap 4: Bedrading
- Stap 5: Kode
- Stap 6: Serial.println Vs Serial.print
- Stap 7: J305 Meting van agtergrondstraling
- Stap 8: J305 Meting van rooksensorstraling
- Stap 9: SBM-20
- Stap 10: Bedrading van die Geiger -toonbank met 'n LCD
- Stap 11: Geiger -toonbank met LCD
- Stap 12: lêers
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
U het dus 'n DIY Geiger -toonbank bestel en u wil dit aan u Arduino koppel. U gaan aanlyn en probeer om te dupliseer hoe ander hul Geiger -toonbank met Arduino verbind het om te sien dat iets verkeerd is. Alhoewel dit lyk asof u Geiger -toonbank werk, werk niks soos beskryf in die DIY wat u volg wanneer u u Geiger -toonbank aan u Arduino koppel nie.
In hierdie instruksies sal ek bespreek hoe u sommige van hierdie foute kan oplos.
Onthou; Monteer en kodeer Arduino een stap op 'n slag, as u direk na 'n voltooide projek gaan en daar 'n draad of 'n kodelyn is, kan dit vir ewig neem om die probleem op te spoor.
Stap 1: Gereedskap en onderdele
Prototipe boks Ek het 'n Ferrero Rocher snoepboks gebruik.
Klein broodbord
16x2 LCD
Arduino bord eter 'n UNO of Nano
220 Ω weerstand
Pot 10 kΩ verstelbare weerstand.
DIY Geiger -toonbankstel
Jumper Wires
Battery -aansluiting of harnas
Ossilloskoop
Fyn neus tang
Klein standaard skroewedraaier
Stap 2: Monteer u Geiger -toonbank
Enige skade aan u Geiger -buis; en u Geiger -toonbank werk nie, dus gebruik die beskermende akrielbedekking om skade aan u Geiger -buis te voorkom.
Hierdie instruksie handel oor hoe ek dieselfde Geiger -toonbank herstel het met 'n gebreekte Geiger -buis en die beskermende akrielbedekking aangebring het om in die toekoms te breek.
www.instructables.com/id/Repairing-a-DIY-G…
Stap 3: Toets die Geiger -toonbank elektries
Gebruik eers die regte spanning vir die kragtoevoer; die USB -koord verskaf 5 volt DC direk vanaf u rekenaar, maar die 3 AA -batteryhouer is geskik vir 1,5 volt alkaliese batterye, wat 'n totale spanning van 4,5 volt lewer. As u 1,2 volt herlaaibare NI-Cd- of NI-MH-batterye gebruik, benodig u 'n 4 AA-batteryhouer vir 'n totale spanning van 4,8 volt. As u minder as 4,5 volt gebruik, werk die Geiger -toonbank moontlik nie soos dit moet nie.
Daar is baie min stroombane op die uitvoer van die Geiger -tellers; so solank die luidspreker 'n tikkende geluid maak en die LED knipper, moet u 'n sein op die VIN -pen kry.
Om seker te wees van die uitsetsein; verbind 'n ossilloskoop met die uitset deur die positiewe kant van die ossilloskoop -sonde aan die VIN en die negatiewe kant van die ossilloskoop -sonde aan die grond te koppel.
Eerder as om net op agtergrondstraling te wag om die Geiger-toonbank te aktiveer, het ek americium-241 uit 'n rookdetektor-ioonkamer gebruik om die Geiger-tellers se reaksies te verhoog. Die uitset van die Geiger -toonbank begin by +3 volt en daal tot 0 volt elke keer as die Geiger -buis op die alfa -deeltjies reageer en 'n oomblik later terugkeer na +3 volt. Dit is die sein wat u met Arduino gaan opneem.
Stap 4: Bedrading
Daar is twee maniere waarop u die Geiger -toonbank aan u Arduino en u rekenaar kan koppel.
Koppel die GND op Arduino aan die GND op die Geiger -toonbank.
Koppel die 5V op Arduino aan die 5V op die Geiger -toonbank.
Koppel die VIN op die Geiger -toonbank aan die D2 op Arduino.
Met onafhanklike krag gekoppel aan die Geiger -toonbank.
Koppel die GND op Arduino aan die GND op die Geiger -toonbank.
Koppel die VIN op die Geiger -toonbank aan die D2 op Arduino.
Koppel Arduino aan op u rekenaar.
Stap 5: Kode
Maak Arduino IDE oop en laai die kode.
// Hierdie skets tel die aantal pulse per minuut.
// Koppel die GND op Arduino aan die GND op die Geiger -toonbank.
// Koppel die 5V op Arduino aan die 5V op die Geiger -toonbank.
// Koppel die VIN op die Geiger -toonbank aan op die D2 op Arduino.
ongetekende lang tellings; // veranderlike vir GM Tube -geleenthede
ongetekende lang vorigeMillis; // veranderlike vir die meting van tyd
void impulse () {// dipanggil setiap ada sinyal FALLING deur pen 2
tellings ++;
}
#definieer LOG_PERIOD 60000 // telkoers
ongeldige opstelling () {// opstelling
tellings = 0;
Serial.begin (9600);
pinMode (2, INVOER);
attachInterrupt (digitalPinToInterrupt (2), impuls, FALLING); // definieer eksterne onderbrekings
Serial.println ("Begin toonbank");
}
leemte -lus () {// hoofsiklus
ongetekende lang stroomMillis = millis ();
if (currentMillis - previousMillis> LOG_PERIOD) {
vorigeMillis = currentMillis;
Serial.println (tellings);
tellings = 0;
}
}
Kies in Tools die Arduino of ander bord wat u gebruik.
Kies in Poortgereedskap die poort en kom
Laai die kode op.
Sodra die kode in Tools opgelaai is, kies Serial Monitor en kyk hoe u Geiger -toonbank werk.
Soek foute. Die enigste ding met hierdie kode is dat dit 'n bietjie vervelig is; u moet 1 minuut wag vir elke telling.
Stap 6: Serial.println Vs Serial.print
Dit is een van die eerste foute wat ek in die kode gevind het; kyk dus daarna in u kode, “Serial.println (cpm);” en "Serial.print (cpm);".
Serial.println (cpm); sal elke telling op sy eie reël druk.
Serial.print (cpm); Dit sal lyk soos een groot getal wat elke telling op dieselfde lyn druk, wat dit onmoontlik maak om te weet wat die telling is.
Stap 7: J305 Meting van agtergrondstraling
Eerstens is die meting van agtergrondstraling, die natuurlike bestraling wat reeds natuurlik bestaan. Die gelyste getal is die CPM (telling per minuut), wat 'n totaal van gemeet radioaktiewe deeltjies is elke minuut.
Die gemiddelde J305 -agtergrondtelling was 15,6 CPM.
Stap 8: J305 Meting van rooksensorstraling
Dit is nie ongewoon dat 'n Geiger -toonbank herhaaldelik dieselfde telling gee nie, dus kyk met 'n bestralingsbron. Ek het die stralingsmeting van Americium gebruik, 'n ioonkamer van 'n rookmelder. Die rooksensor gebruik Americium as 'n bron van alfa -deeltjies wat rookdeeltjies in die lug ioniseer. Ek het die metaaldop van die sensor verwyder sodat die alfa- en beta -deeltjies saam met die gamma -deeltjies by die Geiger -buis kan uitkom.
As alles reg is, moet die tellings verander.
Americium-241 van 'n rookdetektor se ioonkamer se gemiddelde telling was 519 CPM.
Stap 9: SBM-20
Hierdie Arduino -skets is 'n gewysigde weergawe wat deur Alex Boguslavsky geskryf is.
Hierdie skets tel die aantal pulse in 15 sekondes en skakel dit om in tellings per minuut, wat dit minder vervelig maak.
Kode wat ek bygevoeg het "Serial.println (" Start counter ");".
Kode I verander; "Serial.print (cpm);" na "Serial.println (cpm);".
“#Defineer LOG_PERIOD 15000”; stel die tel tyd op 15 sekondes, ek het dit verander na "#define LOG_PERIOD 5000" of 5 sekondes. Ek het geen merkbare verskil in die gemiddelde gevind tussen tel vir 1 minuut, of 15 sekondes en 5 sekondes nie.
#insluit
#define LOG_PERIOD 15000 // Tekenperiode in millisekondes, aanbevole waarde 15000-60000.
#define MAX_PERIOD 60000 // Maksimum aanmeldperiode sonder om hierdie skets te verander
ongetekende lang tellings; // veranderlike vir GM Tube -geleenthede
ongetekende lang cpm; // veranderlike vir CPM
ongetekende int vermenigvuldiger; // veranderlike vir berekening van CPM in hierdie skets
ongetekende lang vorigeMillis; // veranderlike vir tydmeting
void tube_impulse () {// subprosedure vir die vaslegging van gebeure vanuit Geiger Kit
tellings ++;
}
ongeldige opstelling () {// opstel subprosedure
tellings = 0;
cpm = 0;
vermenigvuldiger = MAX_PERIOD / LOG_PERIOD; // die vermenigvuldiger bereken, hang af van u logtydperk
Serial.begin (9600);
attachInterrupt (0, tube_impulse, FALLING); // definieer eksterne onderbrekings
Serial.println ("Begin toonbank"); // kode wat ek bygevoeg het
}
leemte -lus () {// hoofsiklus
ongetekende lang stroomMillis = millis ();
if (currentMillis - previousMillis> LOG_PERIOD) {
vorigeMillis = currentMillis;
cpm = tellings * vermenigvuldiger;
Serial.println (cpm); // kode wat ek verander het
tellings = 0;
}
}
Die gemiddelde SBM-20-agtergrondtelling was 23,4 CPM.
Stap 10: Bedrading van die Geiger -toonbank met 'n LCD
LCD -verbinding:
LCD K -pen na GND
LCD 'n Speld tot 220 Ω weerstand teen Vcc
LCD D7 -pen na digitale pen 3
LCD D6 -pen na digitale pen 5
LCD D5 -pen na digitale pen 6
LCD D4 -pen na digitale pen 7
LCD Aktiveer pen tot digitale pen 8
LCD R/W -pen teen die grond
LCD RS -pen na digitale pen 9
LCD VO -pen om die pot van 10 kΩ aan te pas
LCD Vcc -pen na Vcc
LCD Vdd -pen na GND
Pot 10 kΩ verstelbare weerstand.
Vcc, Vo, Vdd
Geiger Counter
VIN na digitale pen 2
5 V tot +5 V.
GND tot op die grond
Stap 11: Geiger -toonbank met LCD
// sluit die biblioteekkode in:
#insluit
#insluit
#define LOG_PERIOD 15000 // Tekenperiode in millisekondes, aanbevole waarde 15000-60000.
#define MAX_PERIOD 60000 // Maksimum aanmeldperiode sonder om hierdie skets te verander
#define PERIOD 60000.0 // (60 sek) meetperiode van een minuut
vlugtige ongetekende lang CNT; // veranderlike vir die tel van onderbrekings vanaf dosimeter
ongetekende lang tellings; // veranderlike vir GM Tube -geleenthede
ongetekende lang cpm; // veranderlike vir CPM
ongetekende int vermenigvuldiger; // veranderlike vir berekening van CPM in hierdie skets
ongetekende lang vorigeMillis; // veranderlike vir tydmeting
ongetekende lang dispPeriod; // veranderlike vir die meting van tyd
ongetekende lang CPM; // veranderlike vir die meting van CPM
// initialiseer die biblioteek met die nommers van die koppelvlakpenne
LiquidCrystal lcd (9, 8, 7, 6, 5, 3);
ongeldige opstelling () {// opstelling
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");
vertraging (2000);
cleanDisplay ();
attachInterrupt (0, GetEvent, FALLING); // Gebeurtenis op pen 2
}
leemte -lus () {
lcd.setCursor (0, 0); // druk teks en CNT op die LCD
lcd.print ("CPM:");
lcd.setCursor (0, 1);
lcd.print ("CNT:");
lcd.setCursor (5, 1);
lcd.print (CNT);
if (millis ()> = dispPeriod + PERIOD) {// As 'n minuut verby is
cleanDisplay (); // Duidelike LCD
// Doen iets aan opgehoopte CNT -geleenthede …
lcd.setCursor (5, 0);
CPM = CNT;
lcd.print (CPM); // Vertoon CPM
CNT = 0;
dispPeriod = millis ();
}
}
ongeldig GetEvent () {// Kry geleentheid vanaf toestel
CNT ++;
}
void cleanDisplay () {// Duidelike LCD -roetine
lcd.clear ();
lcd.setCursor (0, 0);
lcd.setCursor (0, 0);
}
Stap 12: lêers
Laai hierdie lêers af en installeer dit op u Arduino.
Plaas elke.ino -lêer in 'n gids met dieselfde naam.