Sisällysluettelo:

Arduino DIY Geiger -laskuri: 12 vaihetta (kuvilla)
Arduino DIY Geiger -laskuri: 12 vaihetta (kuvilla)

Video: Arduino DIY Geiger -laskuri: 12 vaihetta (kuvilla)

Video: Arduino DIY Geiger -laskuri: 12 vaihetta (kuvilla)
Video: DIY Arduino Geiger Counter (Video 1) 2024, Marraskuu
Anonim
Arduino DIY Geiger -laskuri
Arduino DIY Geiger -laskuri
Arduino DIY Geiger -laskuri
Arduino DIY Geiger -laskuri

Joten olet tilannut DIY Geiger -laskurin ja haluat yhdistää sen Arduinoosi. Menet verkossa ja yrität toistaa, miten muut ovat yhdistäneet Geiger -laskurinsa Arduinoon vain löytääkseen jotain vikaa. Vaikka Geiger -laskurisi ei näytä toimivan, mikään ei toimi seuraamasi DIY -ohjeiden mukaisesti, kun liität Geiger -laskurin Arduinoosi.

Tässä Instructable -ohjelmassa käsittelen joidenkin näiden häiriöiden vianmääritystä.

Muistaa; koota ja koodata Arduino askel kerrallaan, jos menet suoraan valmiiseen projektiin ja johto tai koodirivi puuttuu, ongelman löytäminen voi viedä sinut ikuisesti.

Vaihe 1: Työkalut ja osat

Työkalut ja osat
Työkalut ja osat

Prototyyppilaatikko Käytin Ferrero Rocher -karkkirasiaa.

Pieni leipälauta

16x2 LCD

Arduino -levyn eetteri UNO tai Nano

220 Ω vastus

Potti 10 kΩ säädettävä vastus.

DIY Geiger -laskurisarja

Hyppyjohdot

Akun liitin tai johtosarja

Oskilloskooppi

Hieno nenäpihdit

Pieni vakio ruuvimeisseli

Vaihe 2: Kokoa Geiger -laskuri

Kokoa Geiger -laskuri
Kokoa Geiger -laskuri

Vauriot Geiger -putkessasi; ja Geiger -laskurisi ei toimi, joten käytä suojaavaa akryylisuojusta estääksesi Geiger -putken vaurioitumisen.

Tässä ohjeessa kerrotaan, kuinka korjasin saman Geiger -laskurin rikkoutuneella Geiger -putkella ja asensin akryylisuojuksen, jotta estettäisiin rikkoutuminen tulevaisuudessa.

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

Vaihe 3: Geiger -laskurin sähköinen testaus

Geiger -laskurin sähköinen testaus
Geiger -laskurin sähköinen testaus
Geiger -laskurin sähköinen testaus
Geiger -laskurin sähköinen testaus
Geiger -laskurin sähköinen testaus
Geiger -laskurin sähköinen testaus

Käytä ensin virtalähteelle sopivaa jännitettä; USB -johto syöttää 5 voltin tasavirtaa suoraan tietokoneeltasi, mutta 3 AA -paristopidike on tarkoitettu 1,5 voltin alkaliparistoille, joiden kokonaisjännite on 4,5 volttia. Jos käytät 1,2 voltin ladattavia NI-Cd- tai NI-MH-akkuja, tarvitset 4 AA-paristopidikkeen, jonka kokonaisjännite on 4,8 volttia. Jos käytät alle 4,5 volttia, Geiger -laskuri ei ehkä toimi oikein.

Geiger -laskurien ulostulossa on hyvin vähän piirejä; niin kauan kuin kaiutin antaa tikittävän äänen ja LED vilkkuu, sinun pitäisi saada signaali VIN -nastaan.

Varmistaaksesi lähtösignaalin; liitä oskilloskooppi lähtöliitäntään liittämällä oskilloskooppianturin positiivinen puoli VIN -numeroon ja oskilloskooppi -anturin negatiivinen puoli maahan.

Sen sijaan, että odottaisin vain taustasäteilyä laukaisemaan Geiger-laskurin, käytin americium-241: tä savunilmaisimien ionikammiosta lisäämään Geiger-laskurireaktioita. Geiger -laskurin lähtö alkoi +3 voltista ja laski 0 volttiin joka kerta, kun Geiger -putki reagoi alfahiukkasiin ja palasi +3 volttiin hetkeä myöhemmin. Tämä on signaali, jonka tallennat Arduinolla.

Vaihe 4: Johdotus

Johdotus
Johdotus
Johdotus
Johdotus
Johdotus
Johdotus
Johdotus
Johdotus

Voit yhdistää Geiger -laskurin Arduinoon ja tietokoneeseesi kahdella tavalla.

Yhdistä Arduinon GND Geiger -laskurin GND: hen.

Liitä Arduinon 5 V Geiger -laskurin 5 V: iin.

Liitä Geiger -laskurin VIN -numero Arduinon D2 -liittimeen.

Riippumaton virta kytkettynä Geiger -laskuriin.

Yhdistä Arduinon GND Geiger -laskurin GND: hen.

Liitä Geiger -laskurin VIN -numero Arduinon D2 -liittimeen.

Liitä Arduino tietokoneeseen.

Vaihe 5: Koodi

Koodi
Koodi
Koodi
Koodi
Koodi
Koodi

Avaa Arduino IDE ja lataa koodi.

// Tämä luonnos laskee pulssien määrän minuutissa.

// Liitä Arduinon GND Geiger -laskurin GND: hen.

// Kytke Arduinon 5 V Geiger -laskurin 5 V: iin.

// Liitä Geiger -laskurin VIN -numero Arduinon D2 -liittimeen.

allekirjoittamattomat pitkät laskut; // GM Tube -tapahtumien muuttuja

allekirjoittamaton pitkä edellinenMillis; // ajan muuttuja

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

laskee ++;

}

#define LOG_PERIOD 60000 // laskenopeus

void setup () {// setup

laskee = 0;

Sarja.alku (9600);

pinMode (2, TULO);

attachInterrupt (digitalPinToInterrupt (2), impulssi, FALLING); // määrittele ulkoiset keskeytykset

Serial.println ("Käynnistyslaskuri");

}

void loop () {// pääjakso

allekirjoittamaton pitkävirtaMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = currentMillis;

Sarja.println (laskee);

laskee = 0;

}

}

Valitse Työkalut -valikosta Arduino tai muu käyttämäsi kortti.

Valitse Työkalut -valikosta Portti ja Com

Lataa koodi.

Kun koodi on ladattu Työkalut -kohtaan, valitse Sarjamonitori ja katso Geiger -laskurin toimintaa.

Etsi häiriöitä. Ainoa asia tässä koodissa on se, että se on hieman tylsiä, ja sinun on odotettava 1 minuutti jokaista laskentaa varten.

Vaihe 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

Tämä on yksi ensimmäisistä virheistä, jotka löysin koodista; joten varo sitä koodissasi "Serial.println (cpm);" ja "Sarjanjälki (cpm);".

Sarja.println (cpm); tulostaa jokaisen laskun omalle rivilleen.

Sarjajälki (cpm); näyttää yhdeltä suurelta numerolta, joka tulostaa jokaisen luvun samalla rivillä, joten on mahdotonta sanoa, mikä määrä on.

Vaihe 7: J305 -säteilyn taustamittaus

J305 Taustasäteilyn mittaus
J305 Taustasäteilyn mittaus
J305 Taustasäteilyn mittaus
J305 Taustasäteilyn mittaus

Ensimmäinen on taustasäteilyn mittaus, luonnollinen säteily, joka on jo luonnossa. Lueteltu luku on CPM (count per minute), joka on yhteensä mitattuja radioaktiivisia hiukkasia joka minuutti.

J305 -taustakeskiarvo oli 15,6 tuhannen näyttökerran hintaa.

Vaihe 8: J305 Savuanturin säteilyn mittaus

J305 Savuanturin säteilyn mittaus
J305 Savuanturin säteilyn mittaus
J305 Savuanturin säteilyn mittaus
J305 Savuanturin säteilyn mittaus

Ei ole harvinaista, että Geiger -laskuri antaa sinulle saman määrän toistuvasti, joten tarkista se säteilylähteellä. Käytin säteilymittausta Americium -ionikammiosta savunilmaisimesta. Savuanturi käyttää Americiumia lähteenä alfahiukkasille, jotka ionisoivat savuhiukkasia ilmassa. Poistin anturin metallikannen, jotta alfa- ja beetahiukkaset pääsevät Geiger -putkeen gammahiukkasten mukana.

Jos kaikki on kunnossa, lukujen pitäisi muuttua.

Americium-241 savunilmaisimien ionikammion keskiarvo oli 519 CPM.

Vaihe 9: SBM-20

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

Tämä Arduinon luonnos on muokattu versio, jonka on kirjoittanut Alex Boguslavsky.

Tämä luonnos laskee pulssien määrän 15 sekunnissa ja muuntaa sen laskuiksi minuutissa, mikä tekee siitä vähemmän tylsiä.

Koodi I lisäsi "Serial.println (" Käynnistyslaskuri ");".

Koodi I muuttui; "Sarjan tulostus (cpm);" kohtaan "Serial.println (cpm);".

"#Define LOG_PERIOD 15000"; asettaa laskenta -ajaksi 15 sekuntia, muutin sen arvoksi "#define LOG_PERIOD 5000" tai 5 sekuntia. En löytänyt merkittävää eroa keskiarvossa laskemisen välillä 1 minuutti tai 15 sekuntia ja 5 sekuntia.

#sisältää

#define LOG_PERIOD 15000 // Kirjautumisaika millisekunteina, suositusarvo 15000-60000.

#define MAX_PERIOD 60000 // Suurin kirjautumisaika muuttamatta tätä luonnosta

allekirjoittamattomat pitkät laskut; // GM Tube -tapahtumien muuttuja

allekirjoittamaton pitkä cpm; // muuttuja CPM: lle

unsigned int kerroin; // muuttuja CPM: n laskemiseksi tässä luonnoksessa

allekirjoittamaton pitkä edellinenMillis; // muuttuja ajan mittaamiseen

void tube_impulse () {// alimenettely tapahtumien tallentamiseen Geiger Kitistä

laskee ++;

}

void setup () {// setup subprocedure

laskee = 0;

cpm = 0;

kerroin = MAX_PERIOD / LOG_PERIOD; // kertoimen laskeminen, riippuu lokikaudestasi

Sarja.alku (9600);

attachInterrupt (0, tube_impulse, FALLING); // määrittele ulkoiset keskeytykset

Serial.println ("Käynnistyslaskuri"); // lisätty koodi

}

void loop () {// pääjakso

allekirjoittamaton pitkävirtaMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = currentMillis;

cpm = laskee * kerroin;

Sarja.println (cpm); // koodi muutin

laskee = 0;

}

}

SBM-20-taustakeskiarvo oli 23,4 tuhannen näyttökerran hintaa.

Vaihe 10: Geiger -laskurin kytkentä nestekidenäytöllä

Geiger -laskurin kytkentä nestekidenäytöllä
Geiger -laskurin kytkentä nestekidenäytöllä

LCD -liitäntä:

LCD K -nasta GND: hen

LCD Pin -nasta 220 Ω vastukseen - Vcc

LCD D7 -nasta - digitaalinen nasta 3

LCD D6 -nastainen digitaalinen nasta 5

LCD D5 -nastainen digitaalinen nasta 6

LCD D4 -nastainen digitaalinen nasta 7

LCD Ota nasta digitaaliseen nastaan 8

LCD R/W -nasta maahan

LCD RS -nasta digitaaliseen nastaan 9

LCD VO -tappi 10 kΩ: n potin säätämiseen

LCD Vcc -tappi - Vcc

LCD Vdd -nasta GND: hen

Potti 10 kΩ säädettävä vastus.

Vcc, Vo, Vdd

Geiger -laskuri

VIN digitaalitapille 2

5 V - +5 V

GND maahan

Vaihe 11: Geiger -laskuri nestekidenäytöllä

Geiger -laskuri LCD -näytöllä
Geiger -laskuri LCD -näytöllä
Geiger -laskuri LCD -näytöllä
Geiger -laskuri LCD -näytöllä
Geiger -laskuri LCD -näytöllä
Geiger -laskuri LCD -näytöllä

// sisällytä kirjastokoodi:

#sisältää

#sisältää

#define LOG_PERIOD 15000 // Kirjausjakso millisekunteina, suositusarvo 15000-60000.

#define MAX_PERIOD 60000 // Suurin kirjautumisaika muuttamatta tätä luonnosta

#define PERIOD 60000.0 // (60 sekuntia) minuutin mittausjakso

haihtuva allekirjoittamaton pitkä CNT; // muuttuja keskeytysten laskemiseen dosimetristä

allekirjoittamattomat pitkät laskut; // GM Tube -tapahtumien muuttuja

allekirjoittamaton pitkä cpm; // muuttuja CPM: lle

unsigned int kerroin; // muuttuja CPM: n laskemiseksi tässä luonnoksessa

allekirjoittamaton pitkä edellinenMillis; // muuttuja ajan mittaamiseen

allekirjoittamaton pitkä aika; // ajan muuttuja

allekirjoittamaton pitkä CPM; // muuttuja CPM: n mittaamiseen

// alustetaan kirjasto käyttöliittymän nastojen numeroilla

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

void setup () {// setup

lcd. alku (16, 2);

CNT = 0;

Tuhannen näyttökerran hinta = 0;

dispPeriod = 0;

lcd.setCursor (0, 0);

lcd.print ("RH Electronics");

lcd.setCursor (0, 1);

lcd.print ("Geiger -laskuri");

viive (2000);

cleanDisplay ();

attachInterrupt (0, GetEvent, FALLING); // Tapahtuma nastassa 2

}

void loop () {

lcd.setCursor (0, 0); // tekstin ja CNT: n tulostaminen nestekidenäytölle

lcd.print ("CPM:");

lcd.setCursor (0, 1);

lcd.print ("CNT:");

lcd.setCursor (5, 1);

lcd.print (CNT);

if (millis ()> = dispPeriod + PERIOD) {// Jos minuutti on ohi

cleanDisplay (); // Tyhjennä nestekidenäyttö

// Tee jotain kertyneille CNT -tapahtumille….

lcd.setCursor (5, 0);

CPM = CNT;

lcd.print (CPM); // Näytä tuhannen näyttökerran hinta

CNT = 0;

dispPeriod = millis ();

}

}

void GetEvent () {// Hae tapahtuma laitteelta

CNT ++;

}

void cleanDisplay () {// Tyhjennä nestekidenäyttö

lcd.clear ();

lcd.setCursor (0, 0);

lcd.setCursor (0, 0);

}

Vaihe 12: Tiedostot

Lataa ja asenna nämä tiedostot Arduinollesi.

Aseta jokainen.ino -tiedosto samannimiseen kansioon.

Suositeltava: