Innehållsförteckning:

Arduino DIY Geiger Counter: 12 steg (med bilder)
Arduino DIY Geiger Counter: 12 steg (med bilder)

Video: Arduino DIY Geiger Counter: 12 steg (med bilder)

Video: Arduino DIY Geiger Counter: 12 steg (med bilder)
Video: DIY Geiger Tube Dosimeter Prop #props 2024, November
Anonim
Arduino DIY Geiger Counter
Arduino DIY Geiger Counter
Arduino DIY Geiger Counter
Arduino DIY Geiger Counter

Så du har beställt en DIY Geiger -räknare och du vill ansluta den till din Arduino. Du går på nätet och försöker kopiera hur andra har kopplat sin Geiger -räknare till Arduino bara för att upptäcka att något är fel. Även om din Geiger -räknare verkar fungera fungerar ingenting enligt beskrivningen i DIY du följer när du ansluter din Geiger -räknare till din Arduino.

I denna instruktionsbok kommer jag att täcka hur man felsöker några av dessa fel.

Kom ihåg; montera och koda Arduino ett steg i taget, om du går direkt till ett färdigt projekt och det finns en missad tråd eller kodrad kan det ta dig för alltid att hitta problemet.

Steg 1: Verktyg och delar

Verktyg och delar
Verktyg och delar

Prototyplåda Jag använde en godislåda från Ferrero Rocher.

Liten brödbräda

16x2 LCD

Arduino board eter en UNO eller Nano

220 Ω motstånd

Pot 10 kΩ justerbart motstånd.

DIY Geiger Counter Kit

Jumper Wires

Batterikontakt eller sele

Oscilloskop

Fin nästång

Liten standard skruvmejsel

Steg 2: Montera din Geiger -räknare

Montera din Geiger -räknare
Montera din Geiger -räknare

Eventuella skador på din Geiger Tube; och din Geiger -räknare fungerar inte, så använd det skyddande akrylskyddet för att förhindra skador på ditt Geiger -rör.

Denna instruktion handlar om hur jag reparerade samma Geiger -räknare med ett trasigt Geiger -rör och monterade det skyddande akrylskyddet för att förhindra att det går sönder i framtiden.

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

Steg 3: Elektrisk testning av Geiger -räknaren

Elektrisk testning av Geiger -räknaren
Elektrisk testning av Geiger -räknaren
Elektrisk testning av Geiger -räknaren
Elektrisk testning av Geiger -räknaren
Elektrisk testning av Geiger -räknaren
Elektrisk testning av Geiger -räknaren

Använd först rätt spänning för strömförsörjningen; USB -kabeln levererar 5 volt DC direkt från din dator, men 3 AA -batterihållaren är för 1,5 volt alkaliska batterier vilket ger en total spänning på 4,5 volt. Om du använder 1,2 volt laddningsbara NI-Cd- eller NI-MH-batterier behöver du en 4 AA-batterihållare för en total spänning på 4,8 volt. Om du använder mindre än 4,5 volt kanske Geiger -räknaren inte fungerar som den ska.

Det finns väldigt lite kretsar på Geiger -räknarnas utgång; så så länge högtalaren gör ett tickande ljud och lysdioden blinkar bör du få en signal på VIN -stiftet.

För att vara säker på utsignalen; Anslut ett oscilloskop till utgången genom att ansluta den positiva sidan av oscilloskopproben till VIN och den negativa sidan av oscilloskopproben till marken.

Istället för att bara vänta på bakgrundsstrålning för att utlösa Geiger-räknaren använde jag americium-241 från en rökdetektorer jonkammare för att öka Geigermätarens reaktioner. Utsignalen från Geiger -räknaren började med +3 volt och sjönk till 0 volt varje gång Geiger -röret reagerade på alfapartiklarna och återvände till +3 volt en stund senare. Detta är signalen du kommer att spela in med Arduino.

Steg 4: Kabeldragning

Kabeldragning
Kabeldragning
Kabeldragning
Kabeldragning
Kabeldragning
Kabeldragning
Kabeldragning
Kabeldragning

Det finns två sätt att ansluta Geiger -räknaren till din Arduino och din dator.

Anslut GND på Arduino till GND på Geiger -räknaren.

Anslut 5V på Arduino till 5V på Geiger -räknaren.

Anslut VIN på Geiger -räknaren till D2 på Arduino.

Med oberoende kraft ansluten till Geigerdisken.

Anslut GND på Arduino till GND på Geiger -räknaren.

Anslut VIN på Geiger -räknaren till D2 på Arduino.

Anslut Arduino till din dator.

Steg 5: Kod

Koda
Koda
Koda
Koda
Koda
Koda

Öppna Arduino IDE och ladda koden.

// Denna skiss räknar antalet pulser i minuten.

// Anslut GND på Arduino till GND på Geiger -räknaren.

// Anslut 5V på Arduino till 5V på Geiger -räknaren.

// Anslut VIN på Geiger -räknaren till D2 på Arduino.

osignerade långa räkningar; // variabel för GM Tube -händelser

osignerad lång tidigareMillis; // variabel för mätning av tid

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

räknas ++;

}

#define LOG_PERIOD 60000 // count rate

void setup () {// setup

räknar = 0;

Serial.begin (9600);

pinMode (2, INPUT);

attachInterrupt (digitalPinToInterrupt (2), impuls, FALLING); // definiera externa avbrott

Serial.println ("Starträknare");

}

void loop () {// huvudcykel

osignerad lång strömMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = currentMillis;

Serial.println (räknar);

räknar = 0;

}

}

Välj Verktyg i Arduino eller andra kort du använder.

I Verktyg väljer du Port och Com

Ladda upp koden.

När koden har laddats upp i Verktyg väljer du Seriell bildskärm och ser hur din Geiger -räknare fungerar.

Leta efter fel. Det enda med den här koden är att det är lite tråkigt att du måste vänta 1 minut för varje räkning.

Steg 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

Detta är en av de första felen jag hittade i koden; så titta efter det i din kod, "Serial.println (cpm);" och "Serial.print (cpm);".

Serial.println (cpm); kommer att skriva ut varje räkning på sin egen rad.

Serial.print (cpm); kommer att se ut som ett stort nummer som skriver ut varje räkning på samma rad vilket gör det omöjligt att avgöra vad räkningen är.

Steg 7: J305 Bakgrundsstrålningsmätning

J305 Bakgrundsstrålningsmätning
J305 Bakgrundsstrålningsmätning
J305 Bakgrundsstrålningsmätning
J305 Bakgrundsstrålningsmätning

Först är mätningen av bakgrundsstrålning, den naturliga strålningen som redan existerar naturligt. Det listade numret är CPM (count per minute), vilket är totalt uppmätta radioaktiva partiklar varje minut.

J305 bakgrundsmedelvärde var 15,6 CPM.

Steg 8: J305 Mätning av röksensorstrålning

J305 Mätning av röksensorstrålning
J305 Mätning av röksensorstrålning
J305 Mätning av röksensorstrålning
J305 Mätning av röksensorstrålning

Det är inte ovanligt att en Geiger -räknare ger dig samma antal upprepade gånger, så kontrollera det med en strålningskälla. Jag använde strålningsmätningen från Americium en jonkammare från en rökdetektor. Rökgivaren använder Americium som en källa till alfapartiklar som joniserar rökpartiklar i luften. Jag tog bort metallkåpan på sensorn så att alfa- och betapartiklarna kan komma till Geiger -röret tillsammans med gammapartiklarna.

Om allt är bra bör antalet ändras.

Americium-241 från en rökdetektors jonkammares genomsnittliga antal var 519 CPM.

Steg 9: SBM-20

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

Denna Arduino -skiss är en modifierad version skriven av Alex Boguslavsky.

Denna skiss räknar antalet pulser på 15 sekunder och omvandlar det till räkningar per minut vilket gör det mindre tråkigt.

Kod jag lade till "Serial.println (" Starträknare ");".

Kod I ändrad; "Serial.print (cpm);" till "Serial.println (cpm);".

“#Define LOG_PERIOD 15000”; ställer in räknartiden till 15 sekunder, jag ändrade den till “#define LOG_PERIOD 5000” eller 5 sekunder. Jag fann ingen märkbar skillnad i genomsnittet mellan att räkna i 1 minut, eller 15 sekunder och 5 sekunder.

#omfatta

#define LOG_PERIOD 15000 // Loggningsperiod i millisekunder, rekommenderat värde 15000-60000.

#define MAX_PERIOD 60000 // Maximal loggningsperiod utan att ändra denna skiss

osignerade långa räkningar; // variabel för GM Tube -händelser

osignerad lång cpm; // variabel för CPM

osignerad int -multiplikator; // variabel för beräkning av CPM i denna skiss

osignerad lång tidigareMillis; // variabel för tidsmätning

void tube_impulse () {// delprocedur för att fånga händelser från Geiger Kit

räknas ++;

}

void setup () {// setup -delprocedur

räknar = 0;

cpm = 0;

multiplikator = MAX_PERIOD / LOG_PERIOD; // beräknar multiplikator, beror på din loggperiod

Serial.begin (9600);

attachInterrupt (0, tube_impulse, FALLING); // definiera externa avbrott

Serial.println ("Starträknare"); // kod jag lade till

}

void loop () {// huvudcykel

osignerad lång strömMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = currentMillis;

cpm = räknar * multiplikator;

Serial.println (cpm); // kod jag ändrade

räknar = 0;

}

}

SBM-20 bakgrundsmedeltalet var 23,4 CPM.

Steg 10: Anslut Geigerdisken med en LCD -skärm

Anslutning av Geigerdisken med LCD
Anslutning av Geigerdisken med LCD

LCD -anslutning:

LCD K -stift till GND

LCD En stift till 220 Ω motstånd till Vcc

LCD D7 -stift till digital stift 3

LCD D6 -stift till digital stift 5

LCD D5 -stift till digital stift 6

LCD D4 -stift till digital stift 7

LCD Aktivera stift till digital stift 8

LCD R/W -stift till jord

LCD RS -pin till digital pin 9

LCD VO -stift för justering av 10 kΩ kruka

LCD Vcc pin till Vcc

LCD Vdd -stift till GND

Pot 10 kΩ justerbart motstånd.

Vcc, Vo, Vdd

Geiger mätare

VIN till digital stift 2

5 V till +5 V.

GND till jord

Steg 11: Geigerdisk med LCD

Geigerdisk med LCD
Geigerdisk med LCD
Geigerdisk med LCD
Geigerdisk med LCD
Geigerdisk med LCD
Geigerdisk med LCD

// inkludera bibliotekskoden:

#omfatta

#omfatta

#define LOG_PERIOD 15000 // Loggningsperiod i millisekunder, rekommenderat värde 15000-60000.

#define MAX_PERIOD 60000 // Maximal loggningsperiod utan att ändra denna skiss

#define PERIOD 60000.0 // (60 sek) en minuts mätperiod

flyktigt osignerat långt CNT; // variabel för att räkna avbrott från dosimeter

osignerade långa räkningar; // variabel för GM Tube -händelser

osignerad lång cpm; // variabel för CPM

osignerad int -multiplikator; // variabel för beräkning av CPM i denna skiss

osignerad lång tidigareMillis; // variabel för tidsmätning

osignerad lång dispPeriod; // variabel för mätning av tid

osignerad lång CPM; // variabel för mätning av CPM

// initiera biblioteket med numren på gränssnittsstiften

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

void setup () {// setup

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");

fördröjning (2000);

cleanDisplay ();

attachInterrupt (0, GetEvent, FALLING); // Händelse på stift 2

}

void loop () {

lcd.setCursor (0, 0); // skriv ut text och CNT på LCD -skärmen

lcd.print ("CPM:");

lcd.setCursor (0, 1);

lcd.print ("CNT:");

lcd.setCursor (5, 1);

lcd.print (CNT);

if (millis ()> = dispPeriod + PERIOD) {// Om en minut är över

cleanDisplay (); // Klar LCD

// Gör något åt ackumulerade CNT -händelser….

lcd.setCursor (5, 0);

CPM = CNT;

lcd.print (CPM); // Visa CPM

CNT = 0;

dispPeriod = millis ();

}

}

void GetEvent () {// Hämta händelse från enhet

CNT ++;

}

void cleanDisplay () {// Rensa LCD -rutinen

lcd.clear ();

lcd.setCursor (0, 0);

lcd.setCursor (0, 0);

}

Steg 12: Filer

Ladda ner och installera dessa filer till din Arduino.

Placera varje.ino -fil i en mapp med samma namn.

Rekommenderad: