Arduino DIIG Geigerjev števec: 12 korakov (s slikami)
Arduino DIIG Geigerjev števec: 12 korakov (s slikami)
Anonim
Arduino DIIG Geigerjev števec
Arduino DIIG Geigerjev števec
Arduino DIIG Geigerjev števec
Arduino DIIG Geigerjev števec

Naročili ste torej Geigerjev števec DIY in ga želite povezati s svojim Arduinom. Pojdite na povezavo in poskušajte podvojiti, kako so drugi povezali svoj Geigerjev števec z Arduinom, da bi ugotovili, da je kaj narobe. Čeprav se zdi, da vaš Geigerjev števec ne deluje, nič ne deluje, kot je opisano v DIY, ki ga spremljate, ko povežete svoj Geigerjev števec z vašim Arduinom.

V tem navodilu bom obravnaval, kako odpraviti nekatere od teh napak.

Zapomni si; sestavite in kodirajte Arduino korak za korakom, če greste naravnost do končanega projekta in je prišlo do zgrešene žice ali vrstice kode, ki vam lahko vzame večno, da odkrijete težavo.

Korak: Orodja in deli

Orodja in deli
Orodja in deli

Prototipna škatla Uporabil sem škatlo za sladkarije Ferrero Rocher.

Majhna plošča

16x2 LCD

Arduino plošča eter UNO ali Nano

220 Ω upor

Ločljivost 10 kΩ nastavljiv upor.

Komplet števcev Geiger za DIY

Mostične žice

Priključek baterije ali kabelski snop

Osciloskop

Klešče za fin nos

Standardni majhen izvijač

2. korak: Sestavite svoj Geigerjev števec

Sestavite svoj Geigerjev števec
Sestavite svoj Geigerjev števec

Kakršne koli poškodbe vaše Geigerjeve cevi; in vaš Geigerjev števec ne bo deloval, zato uporabite zaščitno akrilno prevleko, da preprečite poškodbe vaše Geigerjeve cevi.

V tem navodilu je opisano, kako sem popravil isti Geigerjev števec z zlomljeno Geigerjevo cevjo in namestil zaščitno akrilno prevleko, da se v prihodnje prepreči zlom.

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

3. korak: Električno testiranje Geigerjevega števca

Električno testiranje Geigerjevega števca
Električno testiranje Geigerjevega števca
Električno testiranje Geigerjevega števca
Električno testiranje Geigerjevega števca
Električno testiranje Geigerjevega števca
Električno testiranje Geigerjevega števca

Najprej uporabite ustrezno napetost za napajanje; kabel USB napaja 5 voltov enosmernega toka neposredno iz vašega računalnika, vendar je držalo za baterije 3 AA namenjeno 1,5 voltnim alkalnim baterijam, kar daje skupno napetost 4,5 volta. Če uporabljate 1,2-voltne NI-Cd ali NI-MH baterije za ponovno polnjenje, boste potrebovali držalo za baterije 4 AA za skupno napetost 4,8 volta. Če uporabljate manj kot 4,5 voltov, Geigerjev števec morda ne bo deloval tako, kot bi moral.

Na izhodu Geigerjevih števcev je zelo malo vezja; tako da, dokler zvočnik oddaja tiktakanje in LED utripa, bi morali dobiti signal na pin VIN.

Če želite biti prepričani o izhodnem signalu; na izhod priključite osciloskop tako, da pozitivno stran osciloskopske sonde povežete z VIN, negativno stran sonde osciloskopa pa na tla.

Namesto da bi samo čakal na sevanje v ozadju, da bi sprožil Geigerjev števec, sem uporabil americij-241 iz ionske komore detektorjev dima za povečanje reakcij Geigerjevih števcev. Izhod Geigerjevega števca se je začel pri +3 voltih in padel na 0 voltov vsakič, ko je Geigerjeva cev reagirala na delce alfa in se trenutek kasneje vrnila na +3 volte. To je signal, ki ga boste snemali z Arduinom.

4. korak: Ožičenje

Ožičenje
Ožičenje
Ožičenje
Ožičenje
Ožičenje
Ožičenje
Ožičenje
Ožičenje

Geigerjev števec lahko povežete z Arduinom in računalnikom na dva načina.

Povežite GND na Arduinu z GND na Geigerjevem števcu.

Priključite 5V na Arduinu na 5V na Geigerjevem števcu.

Priključite VIN na Geigerjevem števcu na D2 na Arduinu.

Z neodvisnim napajanjem, priključenim na Geigerjev števec.

Povežite GND na Arduinu z GND na Geigerjevem števcu.

Priključite VIN na Geigerjevem števcu na D2 na Arduinu.

Arduino povežite z računalnikom.

5. korak: Koda

Koda
Koda
Koda
Koda
Koda
Koda

Odprite Arduino IDE in naložite kodo.

// Ta skica šteje število impulzov na minuto.

// Povežite GND na Arduinu z GND na Geigerjevem števcu.

// Priključite 5V na Arduinu na 5V na Geigerjevem števcu.

// Povežite VIN na Geigerjevem števcu z D2 na Arduinu.

dolgo podpisano štetje; // spremenljivka za dogodke GM Tube

nepodpisani dolgi prejšnjiMillis; // spremenljivka za merjenje časa

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

šteje ++;

}

#define LOG_PERIOD 60000 // stopnja štetja

void setup () {// nastavitev

šteje = 0;

Serial.begin (9600);

pinMode (2, INPUT);

attachInterrupt (digitalPinToInterrupt (2), impulz, FALLING); // definiramo zunanje prekinitve

Serial.println ("Začni števec");

}

void loop () {// glavni cikel

nepodpisani dolgi tokMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = trenutniMillis;

Serial.println (šteje);

šteje = 0;

}

}

V orodjih izberite Arduino ali drugo ploščo, ki jo uporabljate.

V orodju izberite vrata in Com

Naložite kodo.

Ko je koda naložena v Orodja, izberite Serijski monitor in opazujte, kako deluje vaš Geigerjev števec.

Poiščite napake. Edina stvar pri tej kodi je, da je nekoliko dolgočasna, na vsako štetje morate počakati 1 minuto.

6. korak: 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

To je ena prvih napak, ki sem jih našel v kodi; zato bodite pozorni na to v svoji kodi »Serial.println (cpm);« in “Serial.print (cpm);”.

Serial.println (cpm); bo vsako število natisnilo v svoji vrstici.

Serijski.tisk (cpm); bo videti kot eno veliko število, ki natisne vsako število na isti vrstici, zaradi česar ni mogoče povedati, kaj je štetje.

7. korak: J305 Merjenje sevanja v ozadju

J305 Merjenje sevanja v ozadju
J305 Merjenje sevanja v ozadju
J305 Merjenje sevanja v ozadju
J305 Merjenje sevanja v ozadju

Najprej je merjenje sevanja ozadja, naravno sevanje, ki že obstaja naravno. Navedeno število je CPM (število na minuto), ki je skupaj izmerjeni radioaktivni delci vsako minuto.

Povprečno število J305 v ozadju je bilo 15,6 CPM.

8. korak: J305 Merjenje sevanja senzorja dima

J305 Merjenje sevanja senzorja dima
J305 Merjenje sevanja senzorja dima
J305 Merjenje sevanja senzorja dima
J305 Merjenje sevanja senzorja dima

Ni redkost, da vam Geigerjev števec vedno znova daje enako število, zato ga preverite pri viru sevanja. Uporabil sem merjenje sevanja iz Americiuma, ionsko komoro iz detektorja dima. Senzor dima uporablja Americij kot vir alfa delcev, ki ionizirajo delce dima v zraku. Odstranil sem kovinski pokrovček na senzorju, da lahko delci alfa in beta pridejo do Geigerjeve cevi skupaj z gama delci.

Če je vse v redu, se štetje spremeni.

Americij-241 iz ionske komore detektorjev dima je povprečno število 519 CPM.

9. korak: SBM-20

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

Ta skica Arduino je spremenjena različica, ki jo je napisal Alex Boguslavsky.

Ta skica šteje število impulzov v 15 sekundah in jih pretvori v štetje na minuto, zaradi česar je manj dolgočasno.

Koda I je dodala "Serial.println (" Začni števec ");".

Kodo sem spremenil; "Serial.print (cpm);" na »Serial.println (cpm);«.

“#Define LOG_PERIOD 15000”; čas štetja nastavi na 15 sekund, spremenil sem ga na "#define LOG_PERIOD 5000" ali 5 sekund. Med povprečnim štetjem 1 minuto ali 15 sekund in 5 sekund nisem našel opazne razlike v povprečju.

#vključi

#define LOG_PERIOD 15000 // Obdobje beleženja v milisekundah, priporočena vrednost 15000-60000.

#define MAX_PERIOD 60000 // Najdaljše obdobje beleženja brez spreminjanja te skice

dolgo podpisano štetje; // spremenljivka za dogodke GM Tube

nepodpisani dolgi CPM; // spremenljivka za CPM

množilec brez podpisa int; // spremenljivka za izračun CPM na tej skici

nepodpisani dolgi prejšnjiMillis; // spremenljivka za merjenje časa

void tube_impulse () {// podproces za zajemanje dogodkov iz Geigerjevega kompleta

šteje ++;

}

void setup () {// podproces namestitve

šteje = 0;

cpm = 0;

množitelj = MAX_PERIOD / LOG_PERIOD; // izračunavanje množitelja, odvisno od vašega dnevnika

Serial.begin (9600);

attachInterrupt (0, tube_impulse, FALLING); // definiramo zunanje prekinitve

Serial.println ("Začni števec"); // koda, ki sem jo dodal

}

void loop () {// glavni cikel

nepodpisani dolgi tokMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = trenutniMillis;

cpm = šteje * množitelj;

Serial.println (cpm); // kodo sem spremenil

šteje = 0;

}

}

Povprečno število SBM-20 je bilo 23,4 CPM.

10. korak: Ožičenje Geigerjevega števca z LCD -zaslonom

Ožičenje Geigerjevega števca z LCD -zaslonom
Ožičenje Geigerjevega števca z LCD -zaslonom

Povezava LCD:

LCD K pin na GND

LCD Pin na 220 Ω upor do Vcc

LCD D7 pin na digitalni pin 3

LCD D6 pin na digitalni pin 5

LCD D5 pin na digitalni pin 6

LCD D4 pin na digitalni pin 7

LCD Omogoči pin na digitalni pin 8

R/W pin LCD na maso

LCD RS pin na digitalni pin 9

LCD VO pin za nastavitev lonca 10 kΩ

LCD Vcc pin na Vcc

LCD Vdd pin za GND

Ločljivost 10 kΩ nastavljiv upor.

Vcc, Vo, Vdd

Geigerjev števec

VIN na digitalni pin 2

5 V do +5V

GND na tla

11. korak: Geigerjev števec z LCD -zaslonom

Geigerjev števec z LCD zaslonom
Geigerjev števec z LCD zaslonom
Geigerjev števec z LCD zaslonom
Geigerjev števec z LCD zaslonom
Geigerjev števec z LCD zaslonom
Geigerjev števec z LCD zaslonom

// vključi kodo knjižnice:

#vključi

#vključi

#define LOG_PERIOD 15000 // Obdobje beleženja v milisekundah, priporočena vrednost 15000-60000.

#define MAX_PERIOD 60000 // Najdaljše obdobje beleženja brez spreminjanja te skice

#define PERIOD 60000.0 // (60 sec) enominutno merilno obdobje

hlapni nepodpisani dolgi CNT; // spremenljivka za štetje prekinitev iz dozimetra

dolgo podpisano štetje; // spremenljivka za dogodke GM Tube

nepodpisani dolgi CPM; // spremenljivka za CPM

množilec brez podpisa int; // spremenljivka za izračun CPM na tej skici

nepodpisani dolgi prejšnjiMillis; // spremenljivka za merjenje časa

dolgo podpisano obdobje brez podpisa; // spremenljivka za merjenje časa

nepodpisani dolgi CPM; // spremenljivka za merjenje CPM

// inicializiramo knjižnico s številkami vmesnikov

LCD tekoči kristal (9, 8, 7, 6, 5, 3);

void setup () {// nastavitev

lcd.begin (16, 2);

CNT = 0;

CPM = 0;

dispPeriod = 0;

lcd.setCursor (0, 0);

lcd.print ("RH Electronics");

lcd.setCursor (0, 1);

lcd.print ("Geigerjev števec");

zamuda (2000);

cleanDisplay ();

attachInterrupt (0, GetEvent, FALLING); // Dogodek na pin 2

}

void loop () {

lcd.setCursor (0, 0); // natisnemo besedilo in CNT na LCD

lcd.print ("CPM:");

lcd.setCursor (0, 1);

lcd.print ("CNT:");

lcd.setCursor (5, 1);

lcd.tisk (CNT);

if (millis ()> = dispPeriod + PERIOD) {// Če je ena minuta končana

cleanDisplay (); // Čist LCD

// Naredite nekaj glede nabranih dogodkov CNT….

lcd.setCursor (5, 0);

CPM = CNT;

lcd.print (CPM); // Prikaz CPM

CNT = 0;

dispPeriod = millis ();

}

}

void GetEvent () {// Pridobite dogodek iz naprave

CNT ++;

}

void cleanDisplay () {// Počisti rutino LCD

lcd.clear ();

lcd.setCursor (0, 0);

lcd.setCursor (0, 0);

}

12. korak: Datoteke

Prenesite in namestite te datoteke v svoj Arduino.

Vsako datoteko.ino postavite v istoimensko mapo.