Cuprins:

Arduino DIY Geiger Counter: 12 pași (cu imagini)
Arduino DIY Geiger Counter: 12 pași (cu imagini)

Video: Arduino DIY Geiger Counter: 12 pași (cu imagini)

Video: Arduino DIY Geiger Counter: 12 pași (cu imagini)
Video: #162 Build your own 50$ connected Geiger Counter (ESP32) 2024, Noiembrie
Anonim
Arduino DIY Geiger Counter
Arduino DIY Geiger Counter
Arduino DIY Geiger Counter
Arduino DIY Geiger Counter

Deci, ați comandat un contor DIY Geiger și doriți să îl conectați la Arduino. Mergeți pe linie și încercați să copiați modul în care alții și-au conectat contorul Geiger la Arduino doar pentru a găsi ceva greșit. Deși contorul dvs. Geiger pare să funcționeze, nimic nu funcționează așa cum este descris în DIY pe care îl urmați atunci când vă conectați contorul Geiger la Arduino.

În acest Instructable voi vorbi despre cum să depanați unele dintre aceste erori.

Tine minte; asamblați și codificați Arduino un pas la rând, dacă mergeți direct la un proiect terminat și există un fir sau o linie de cod ratată, vă poate dura veșnic să găsiți problema.

Pasul 1: Instrumente și piese

Unelte și piese
Unelte și piese

Cutie prototip Am folosit o cutie de bomboane Ferrero Rocher.

Mică panou

LCD 16x2

Placa Arduino eter UNO sau Nano

Rezistor de 220 Ω

Rezistor reglabil de 10 kΩ.

DIY Geiger Counter Kit

Sârme jumper

Conectorul sau cablajul bateriei

Osciloscop

Cleste fine pentru nas

Șurubelniță standard mică

Pasul 2: Asamblați-vă contorul Geiger

Asamblați-vă contorul Geiger
Asamblați-vă contorul Geiger

Orice deteriorare a tubului dvs. Geiger; iar ghișeul Geiger nu va funcționa, așa că utilizați capacul acrilic de protecție pentru a preveni deteriorarea tubului dvs. Geiger.

Acest instructabil este despre cum am reparat același contor Geiger cu un tub Geiger rupt și am montat capacul acrilic de protecție pentru a preveni ruperea în viitor.

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

Pasul 3: Testarea electrică a contorului Geiger

Testarea electrică a contorului Geiger
Testarea electrică a contorului Geiger
Testarea electrică a contorului Geiger
Testarea electrică a contorului Geiger
Testarea electrică a contorului Geiger
Testarea electrică a contorului Geiger

Mai întâi utilizați tensiunea potrivită pentru sursa de alimentare; cablul USB furnizează 5 volți DC chiar de la computer, totuși suportul pentru baterii de 3 AA este pentru baterii alcaline de 1,5 volți, având o tensiune totală de 4,5 volți. Dacă utilizați baterii NI-Cd sau NI-MH reîncărcabile de 1,2 volți, veți avea nevoie de un suport pentru baterii de 4 AA pentru o tensiune totală de 4,8 volți. Dacă utilizați mai puțin de 4,5 volți, contorul Geiger nu poate acționa așa cum ar trebui.

Există foarte puține circuite la ieșirea contoarelor Geiger; deci, atâta timp cât difuzorul scoate un sunet tic și LED-ul clipește, ar trebui să primiți un semnal pe pinul VIN.

Pentru a fi sigur de semnalul de ieșire; conectați un osciloscop la ieșire conectând partea pozitivă a sondei osciloscopului la VIN și partea negativă a sondei osciloscopului la sol.

În loc să aștept doar radiația de fundal pentru a declanșa contorul Geiger, am folosit americium-241 dintr-o cameră ionică cu detectoare de fum pentru a crește reacțiile contoarelor Geiger. Ieșirea contorului Geiger a început la +3 volți și a scăzut la 0 volți de fiecare dată când tubul Geiger a reacționat la particulele alfa și a revenit la +3 volți o clipă mai târziu. Acesta este semnalul pe care îl veți înregistra cu Arduino.

Pasul 4: Cablare

Cablare
Cablare
Cablare
Cablare
Cablare
Cablare
Cablare
Cablare

Există două moduri în care puteți conecta contorul Geiger la Arduino și la computer.

Conectați GND de pe Arduino la GND de pe tejgheaua Geiger.

Conectați 5V de pe Arduino la 5V de pe tejgheaua Geiger.

Conectați VIN de pe contorul Geiger la D2 pe Arduino.

Cu putere independentă conectată la ghișeul Geiger.

Conectați GND de pe Arduino la GND de pe tejgheaua Geiger.

Conectați VIN de pe contorul Geiger la D2 pe Arduino.

Conectați Arduino la computer.

Pasul 5: Cod

Cod
Cod
Cod
Cod
Cod
Cod

Deschideți Arduino IDE și încărcați codul.

// Această schiță contează numărul de impulsuri pe minut.

// Conectați GND de pe Arduino la GND de pe tejgheaua Geiger.

// Conectați 5V de pe Arduino la 5V de pe tejgheaua Geiger.

// Conectați VIN de pe contorul Geiger la D2 pe Arduino.

numere lungi nesemnate; // variabilă pentru evenimentele GM Tube

nesemnat mult timp anteriorMillis; // variabilă pentru măsurarea timpului

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

numără ++;

}

#define LOG_PERIOD 60000 // rata de numărare

void setup () {// setup

contează = 0;

Serial.begin (9600);

pinMode (2, INPUT);

attachInterrupt (digitalPinToInterrupt (2), impuls, FALLING); // definește întreruperile externe

Serial.println ("Start counter");

}

void loop () {// ciclu principal

curent lung nesemnat Millis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = currentMillis;

Serial.println (contează);

contează = 0;

}

}

În Instrumente selectați Arduino sau altă placă pe care o utilizați.

În Instrumente selectați Port și Com

Încărcați codul.

Odată ce codul este încărcat în Instrumente, selectați Serial Monitor și urmăriți contorul dvs. Geiger.

Căutați erori. Singurul lucru despre acest cod este că este un pic obositor, trebuie să așteptați 1 minut pentru fiecare numărare.

Pasul 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

Acesta este unul dintre primele erori pe care le-am găsit în cod; deci urmăriți-l în codul dvs. „Serial.println (cpm);” și „Serial.print (cpm);”.

Serial.println (cpm); va imprima fiecare numărare pe propria linie.

Serial.print (cpm); va arăta ca un număr mare imprimând fiecare număr pe aceeași linie, ceea ce face imposibil să se spună care este numărul.

Pasul 7: Măsurarea radiației de fundal J305

J305 Măsurarea radiației de fundal
J305 Măsurarea radiației de fundal
J305 Măsurarea radiației de fundal
J305 Măsurarea radiației de fundal

În primul rând este măsurarea radiației de fond, radiația naturală care există deja în mod natural. Numărul listat este CPM (număr pe minut), care reprezintă un total de particule radioactive măsurate în fiecare minut.

Numărul mediu de fundal J305 a fost de 15,6 CPM.

Pasul 8: Măsurarea J305 a radiației senzorului de fum

J305 Măsurarea radiației senzorului de fum
J305 Măsurarea radiației senzorului de fum
J305 Măsurarea radiației senzorului de fum
J305 Măsurarea radiației senzorului de fum

Nu este neobișnuit ca un contor Geiger să vă ofere același număr în mod repetat, deci verificați-l cu o sursă de radiații. Am folosit măsurarea radiației de la Americium, o cameră de ioni dintr-un detector de fum. Senzorul de fum utilizează Americium ca sursă de particule alfa care ionizează particulele de fum din aer. Am îndepărtat capacul metalic de pe senzor, astfel încât particulele alfa și beta să poată ajunge la tubul Geiger împreună cu particulele gamma.

Dacă totul este în regulă, numărul ar trebui să se schimbe.

Americiul-241 dintr-un detector de fum al camerei ionice, numărul mediu a fost de 519 CPM.

Pasul 9: SBM-20

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

Această schiță Arduino este o versiune modificată scrisă de Alex Boguslavsky.

Această schiță numără numărul de impulsuri în 15 secunde și îl convertește în numărare pe minut, făcându-l mai puțin obositor.

Codul I a adăugat „Serial.println („ Start counter”);”.

Codul pe care l-am schimbat; „Serial.print (cpm);” la „Serial.println (cpm);”.

„#Define LOG_PERIOD 15000”; setează timpul de numărare la 15 secunde, l-am schimbat în „#define LOG_PERIOD 5000” sau 5 secunde. Nu am găsit nicio diferență apreciabilă în medie între numărarea timp de 1 minut sau 15 secunde și 5 secunde.

#include

#define LOG_PERIOD 15000 // Perioada de înregistrare în milisecunde, valoare recomandată 15000-60000.

#define MAX_PERIOD 60000 // Perioada maximă de înregistrare fără a modifica această schiță

numere lungi nesemnate; // variabilă pentru evenimentele GM Tube

cpm lung nesemnat; // variabilă pentru CPM

multiplicator int nesemnat; // variabilă pentru calculul CPM în această schiță

nesemnat mult timp anteriorMillis; // variabilă pentru măsurarea timpului

void tube_impulse () {// subprocedură pentru captarea evenimentelor din Geiger Kit

numără ++;

}

void setup () {// setup subprocedure

contează = 0;

cpm = 0;

multiplicator = MAX_PERIOD / LOG_PERIOD; // calculând multiplicatorul, depinde de perioada jurnalului

Serial.begin (9600);

attachInterrupt (0, tube_impulse, FALLING); // definește întreruperile externe

Serial.println ("Contor de pornire"); // codul pe care l-am adăugat

}

void loop () {// ciclu principal

curent lung nesemnat Millis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = currentMillis;

cpm = numărare * multiplicator;

Serial.println (cpm); // codul pe care l-am schimbat

contează = 0;

}

}

Numărul mediu de fond SBM-20 a fost de 23,4 CPM.

Pasul 10: Cablarea contorului Geiger cu un LCD

Cablarea contorului Geiger cu un LCD
Cablarea contorului Geiger cu un LCD

Conexiune LCD:

Pin LCD K la GND

LCD A pin la 220 Ω rezistor la Vcc

Pin LCD D7 la pinul digital 3

Pin D6 LCD la pinul digital 5

Pin LCD D5 la pinul digital 6

Pin LCD D4 la pinul digital 7

LCD Activare pin la pinul digital 8

Pinul LCD R / W la masă

Pinul LCD RS la pinul digital 9

Pin VO LCD pentru reglarea potului de 10 kΩ

Pin LCD Vcc la Vcc

Pin Vdd LCD la GND

Rezistor reglabil de 10 kΩ.

Vcc, Vo, Vdd

Geiger Counter

VIN la pinul digital 2

5 V la + 5V

GND la sol

Pasul 11: Geiger Counter cu LCD

Geiger Counter cu LCD
Geiger Counter cu LCD
Geiger Counter cu LCD
Geiger Counter cu LCD
Geiger Counter cu LCD
Geiger Counter cu LCD

// include codul bibliotecii:

#include

#include

#define LOG_PERIOD 15000 // Perioada de înregistrare în milisecunde, valoare recomandată 15000-60000.

#define MAX_PERIOD 60000 // Perioada maximă de înregistrare fără a modifica această schiță

#define PERIOD 60000.0 // (60 sec) o perioadă de măsurare de un minut

CNT volatil nesemnat lung; // variabilă pentru numărarea întreruperilor din dosimetru

numere lungi nesemnate; // variabilă pentru evenimentele GM Tube

cpm lung nesemnat; // variabilă pentru CPM

multiplicator int nesemnat; // variabilă pentru calculul CPM în această schiță

nesemnat mult timp anteriorMillis; // variabilă pentru măsurarea timpului

nesemnat lung dispPeriod; // variabilă pentru măsurarea timpului

CPM lung nesemnat; // variabilă pentru măsurarea CPM

// inițializați biblioteca cu numerele pinilor de interfață

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

void setup () {// setup

lcd.inceput (16, 2);

CNT = 0;

CPM = 0;

dispPeriod = 0;

lcd.setCursor (0, 0);

lcd.print ("RH Electronics");

lcd.setCursor (0, 1);

lcd.print („Geiger Counter”);

întârziere (2000);

cleanDisplay ();

attachInterrupt (0, GetEvent, FALLING); // Eveniment pe pinul 2

}

bucla nulă () {

lcd.setCursor (0, 0); // tipăriți text și CNT pe ecranul LCD

lcd.print ("CPM:");

lcd.setCursor (0, 1);

lcd.print ("CNT:");

lcd.setCursor (5, 1);

lcd.print (CNT);

if (millis ()> = dispPeriod + PERIOD) {// Dacă s-a terminat un minut

cleanDisplay (); // Clear LCD

// Fă ceva despre evenimentele CNT acumulate….

lcd.setCursor (5, 0);

CPM = CNT;

lcd.print (CPM); // Afișați CPM

CNT = 0;

dispPeriod = millis ();

}

}

void GetEvent () {// Obțineți evenimentul de pe dispozitiv

CNT ++;

}

void cleanDisplay () {// Ștergeți rutina LCD

lcd.clear ();

lcd.setCursor (0, 0);

lcd.setCursor (0, 0);

}

Pasul 12: Fișiere

Descărcați și instalați aceste fișiere pe Arduino.

Plasați fiecare fișier.ino într-un folder cu același nume.

Recomandat: