Indholdsfortegnelse:

Arduino DIY Geiger Counter: 12 trin (med billeder)
Arduino DIY Geiger Counter: 12 trin (med billeder)

Video: Arduino DIY Geiger Counter: 12 trin (med billeder)

Video: Arduino DIY Geiger Counter: 12 trin (med billeder)
Video: DIY Arduino Geiger Counter (Video 1) 2024, November
Anonim
Arduino DIY Geiger -tæller
Arduino DIY Geiger -tæller
Arduino DIY Geiger -tæller
Arduino DIY Geiger -tæller

Så du har bestilt en DIY Geiger -tæller, og du vil slutte den til din Arduino. Du går online og prøver at kopiere, hvordan andre har forbundet deres Geiger -tæller til Arduino kun for at finde ud af, at noget er galt. Selvom din Geiger -tæller ser ud til at fungere, virker intet som beskrevet i DIY, du følger, når du slutter din Geiger -tæller til din Arduino.

I denne instruktionsbog vil jeg dække, hvordan du løser nogle af disse fejl.

Husk; saml og kode Arduino et trin ad gangen, hvis du går direkte til et færdigt projekt, og der er en savnet ledning eller en kodelinje, kan det tage dig evigt at finde problemet.

Trin 1: Værktøjer og dele

Værktøjer og dele
Værktøjer og dele

Prototype æske Jeg brugte en Ferrero Rocher slikæske.

Lille brødbræt

16x2 LCD

Arduino board ether en UNO eller Nano

220 Ω modstand

Pot 10 kΩ justerbar modstand.

DIY Geiger Counter Kit

Jumper Wires

Batteristik eller sele

Oscilloskop

Fin næsetang

Lille standard skruetrækker

Trin 2: Saml din Geiger -tæller

Saml din Geiger -tæller
Saml din Geiger -tæller

Enhver skade på dit Geiger Tube; og din Geiger -tæller virker ikke, så brug det beskyttende akryldæksel for at forhindre beskadigelse af dit Geiger -rør.

Denne vejledning handler om, hvordan jeg reparerede den samme Geiger -tæller med et ødelagt Geiger -rør og monterede det beskyttende akryldæksel for at forhindre brud i fremtiden.

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

Trin 3: Elektrisk testning af Geiger -tælleren

Elektrisk testning af Geiger -tælleren
Elektrisk testning af Geiger -tælleren
Elektrisk testning af Geiger -tælleren
Elektrisk testning af Geiger -tælleren
Elektrisk testning af Geiger -tælleren
Elektrisk testning af Geiger -tælleren

Brug først den rigtige spænding til strømforsyningen; USB -kablet forsyner 5 volt DC lige fra din computer, men 3 AA batteriholderen er til 1,5 volt alkaline batterier, hvilket giver en samlet spænding på 4,5 volt. Hvis du bruger 1,2 volt genopladelige NI-Cd eller NI-MH batterier, skal du bruge en 4 AA batteriholder til en samlet spænding på 4,8 volt. Hvis du bruger mindre end 4,5 volt, fungerer Geiger -tælleren muligvis ikke som den skal.

Der er meget lidt kredsløb på Geiger -tællernes output; så så længe højttaleren afgiver en tikkende lyd, og LED'en blinker, bør du få et signal på VIN -stiften.

For at være sikker på udgangssignalet; tilslutte et oscilloskop til udgangen ved at forbinde oscilloskopsondeens positive side til VIN og oscilloskopprobens negative side til jorden.

I stedet for bare at vente på baggrundsstråling for at udløse Geiger-tælleren brugte jeg americium-241 fra et røgdetektor-ionkammer til at øge Geiger-tællerreaktionerne. Output fra Geiger -tælleren startede ved +3 volt og faldt til 0 volt hver gang Geiger -røret reagerede på alfa -partiklerne og vendte tilbage til +3 volt et øjeblik senere. Dette er det signal, du vil optage med Arduino.

Trin 4: Ledningsføring

Ledninger
Ledninger
Ledninger
Ledninger
Ledninger
Ledninger
Ledninger
Ledninger

Der er to måder, du kan forbinde Geiger -tælleren til din Arduino og din computer.

Tilslut GND på Arduino til GND på Geiger -tælleren.

Tilslut 5V på Arduino til 5V på Geiger -tælleren.

Tilslut VIN på Geiger -tælleren til D2 på Arduino.

Med uafhængig strøm forbundet til Geiger -tælleren.

Tilslut GND på Arduino til GND på Geiger -tælleren.

Tilslut VIN på Geiger -tælleren til D2 på Arduino.

Tilslut Arduino til din computer.

Trin 5: Kode

Kode
Kode
Kode
Kode
Kode
Kode

Åbn Arduino IDE og indlæs koden.

// Denne skitse tæller antallet af pulser i minuttet.

// Tilslut GND på Arduino til GND på Geiger -tælleren.

// Tilslut 5V på Arduino til 5V på Geiger -tælleren.

// Tilslut VIN på Geiger -tælleren til D2 på Arduino.

usignerede lange tællinger; // variabel for GM Tube -begivenheder

usigneret lang foregåendeMillis; // variabel til måling af tid

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

tæller ++;

}

#define LOG_PERIOD 60000 // tællehastighed

ugyldig opsætning () {// opsætning

tæller = 0;

Serial.begin (9600);

pinMode (2, INPUT);

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

Serial.println ("Starttæller");

}

void loop () {// hovedcyklus

usigneret lang strømMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = currentMillis;

Serial.println (tæller);

tæller = 0;

}

}

I værktøjer skal du vælge det Arduino eller det andet bord, du bruger.

Vælg Port og Com i Værktøjer

Upload koden.

Når koden er uploadet i Værktøjer, skal du vælge Serial Monitor og se din Geiger -tæller fungere.

Kig efter fejl. Det eneste ved denne kode er, at den er lidt kedelig, du skal vente 1 minut for hver optælling.

Trin 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 af de første fejl, jeg fandt i koden; så hold øje med det i din kode, "Serial.println (cpm);" og "Serial.print (cpm);".

Serial.println (cpm); vil udskrive hver tælling på sin egen linje.

Serial.print (cpm); vil ligne et stort tal, der udskriver hver tæller på den samme linje, hvilket gør det umuligt at fortælle, hvad tællingen er.

Trin 7: J305 Måling af baggrundsstråling

J305 Baggrundsstrålemåling
J305 Baggrundsstrålemåling
J305 Baggrundsstrålemåling
J305 Baggrundsstrålemåling

Først er måling af baggrundsstråling, den naturlige stråling, der allerede findes naturligt. Det opførte nummer er CPM (tælling pr. Minut), som er i alt målte radioaktive partikler hvert minut.

J305 -baggrundstællingen var 15,6 CPM.

Trin 8: J305 Måling af røgesensorstråling

J305 Måling af røgesensorstråling
J305 Måling af røgesensorstråling
J305 Måling af røgesensorstråling
J305 Måling af røgesensorstråling

Det er ikke ualmindeligt, at en Geiger -tæller giver dig det samme antal gentagne gange, så tjek det med en strålingskilde. Jeg brugte strålingsmåling fra Americium et ionkammer fra en røgdetektor. Røgsensoren udnytter Americium som en kilde til alfapartikler, der ioniserer røgpartikler i luften. Jeg fjernede metalhætten på sensoren, så alfa- og beta -partiklerne kan komme til Geiger -røret sammen med gammapartiklerne.

Hvis alt er i orden, skal optællingerne ændre sig.

Americium-241 fra et røgdetektors ionkammer gennemsnitlige antal var 519 CPM.

Trin 9: SBM-20

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

Denne Arduino -skitse er en modificeret version skrevet af Alex Boguslavsky.

Denne skitse tæller antallet af pulser på 15 sekunder og konverterer det til tællinger i minuttet, hvilket gør det mindre kedeligt.

Kode jeg tilføjede "Serial.println (" Starttæller ");".

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

“#Define LOG_PERIOD 15000”; indstiller tælletiden til 15 sekunder, jeg ændrede den til "#define LOG_PERIOD 5000" eller 5 sekunder. Jeg fandt ingen mærkbar forskel i gennemsnittet mellem at tælle i 1 minut eller 15 sekunder og 5 sekunder.

#omfatte

#define LOG_PERIOD 15000 // Logningsperiode i millisekunder, anbefalet værdi 15000-60000.

#define MAX_PERIOD 60000 // Maksimal logningsperiode uden at ændre denne skitse

usignerede lange tællinger; // variabel for GM Tube -begivenheder

usigneret lang cpm; // variabel for CPM

usigneret int multiplikator; // variabel til beregning af CPM i denne skitse

usigneret lang foregåendeMillis; // variabel til tidsmåling

void tube_impulse () {// delprocedure til registrering af begivenheder fra Geiger Kit

tæller ++;

}

ugyldig opsætning () {// opsætning af delprocedure

tæller = 0;

cpm = 0;

multiplikator = MAX_PERIOD / LOG_PERIOD; // beregner multiplikator, afhænger af din logperiode

Serial.begin (9600);

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

Serial.println ("Starttæller"); // kode jeg tilføjede

}

void loop () {// hovedcyklus

usigneret lang strømMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = currentMillis;

cpm = tæller * multiplikator;

Serial.println (cpm); // kode jeg ændrede

tæller = 0;

}

}

SBM-20 baggrundsgennemsnitstallet var 23,4 CPM.

Trin 10: Tilslutning af Geigertælleren med en LCD

Tilslutning af Geigertælleren med LCD
Tilslutning af Geigertælleren med LCD

LCD -forbindelse:

LCD K pin til GND

LCD En pin til 220 Ω modstand 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 pin til digital pin 7

LCD Aktiver pin til digital pin 8

LCD R/W pin til jord

LCD RS pin til digital pin 9

LCD VO pin til justering af 10 kΩ pot

LCD Vcc pin til Vcc

LCD Vdd pin til GND

Pot 10 kΩ justerbar modstand.

Vcc, Vo, Vdd

Geiger Tæller

VIN til digital pin 2

5 V til +5 V.

GND til jorden

Trin 11: Geiger -tæller med LCD

Geiger tæller med LCD
Geiger tæller med LCD
Geiger tæller med LCD
Geiger tæller med LCD
Geiger tæller med LCD
Geiger tæller med LCD

// inkludere bibliotekskoden:

#omfatte

#omfatte

#define LOG_PERIOD 15000 // Logningsperiode i millisekunder, anbefalet værdi 15000-60000.

#define MAX_PERIOD 60000 // Maksimal logningsperiode uden at ændre denne skitse

#define PERIOD 60000.0 // (60 sek) et minuts måleperiode

flygtig usigneret lang CNT; // variabel til tælling af afbrydelser fra dosimeter

usignerede lange tællinger; // variabel for GM Tube -begivenheder

usigneret lang cpm; // variabel for CPM

usigneret int multiplikator; // variabel til beregning af CPM i denne skitse

usigneret lang foregåendeMillis; // variabel til tidsmåling

usigneret lang dispPeriod; // variabel til måling af tid

usigneret lang CPM; // variabel til måling af CPM

// initialiser biblioteket med grænsefladernes ben

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

ugyldig opsætning () {// opsætning

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 -tæller");

forsinkelse (2000);

cleanDisplay ();

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

}

void loop () {

lcd.setCursor (0, 0); // udskriv tekst og CNT på LCD'et

lcd.print ("CPM:");

lcd.setCursor (0, 1);

lcd.print ("CNT:");

lcd.setCursor (5, 1);

lcd.print (CNT);

if (millis ()> = dispPeriod + PERIOD) {// Hvis et minut er forbi

cleanDisplay (); // Klar LCD

// Gør noget ved akkumulerede CNT -begivenheder….

lcd.setCursor (5, 0);

CPM = CNT;

lcd.print (CPM); // Vis CPM

CNT = 0;

dispPeriod = millis ();

}

}

ugid GetEvent () {// Hent begivenhed fra enhed

CNT ++;

}

void cleanDisplay () {// Ryd LCD -rutine

lcd.clear ();

lcd.setCursor (0, 0);

lcd.setCursor (0, 0);

}

Trin 12: Filer

Download og installer disse filer til din Arduino.

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

Anbefalede: