INHOUDSOPGAWE:

Arduino DIY Geiger -toonbank: 12 stappe (met foto's)
Arduino DIY Geiger -toonbank: 12 stappe (met foto's)

Video: Arduino DIY Geiger -toonbank: 12 stappe (met foto's)

Video: Arduino DIY Geiger -toonbank: 12 stappe (met foto's)
Video: DIY Arduino Geiger Counter (Video 1) 2024, November
Anonim
Arduino DIY Geiger -toonbank
Arduino DIY Geiger -toonbank
Arduino DIY Geiger -toonbank
Arduino DIY Geiger -toonbank

U het dus 'n DIY Geiger -toonbank bestel en u wil dit aan u Arduino koppel. U gaan aanlyn en probeer om te dupliseer hoe ander hul Geiger -toonbank met Arduino verbind het om te sien dat iets verkeerd is. Alhoewel dit lyk asof u Geiger -toonbank werk, werk niks soos beskryf in die DIY wat u volg wanneer u u Geiger -toonbank aan u Arduino koppel nie.

In hierdie instruksies sal ek bespreek hoe u sommige van hierdie foute kan oplos.

Onthou; Monteer en kodeer Arduino een stap op 'n slag, as u direk na 'n voltooide projek gaan en daar 'n draad of 'n kodelyn is, kan dit vir ewig neem om die probleem op te spoor.

Stap 1: Gereedskap en onderdele

Gereedskap en onderdele
Gereedskap en onderdele

Prototipe boks Ek het 'n Ferrero Rocher snoepboks gebruik.

Klein broodbord

16x2 LCD

Arduino bord eter 'n UNO of Nano

220 Ω weerstand

Pot 10 kΩ verstelbare weerstand.

DIY Geiger -toonbankstel

Jumper Wires

Battery -aansluiting of harnas

Ossilloskoop

Fyn neus tang

Klein standaard skroewedraaier

Stap 2: Monteer u Geiger -toonbank

Monteer u Geiger -toonbank
Monteer u Geiger -toonbank

Enige skade aan u Geiger -buis; en u Geiger -toonbank werk nie, dus gebruik die beskermende akrielbedekking om skade aan u Geiger -buis te voorkom.

Hierdie instruksie handel oor hoe ek dieselfde Geiger -toonbank herstel het met 'n gebreekte Geiger -buis en die beskermende akrielbedekking aangebring het om in die toekoms te breek.

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

Stap 3: Toets die Geiger -toonbank elektries

Toets die Geiger -toonbank elektries
Toets die Geiger -toonbank elektries
Toets die Geiger -toonbank elektries
Toets die Geiger -toonbank elektries
Toets die Geiger -toonbank elektries
Toets die Geiger -toonbank elektries

Gebruik eers die regte spanning vir die kragtoevoer; die USB -koord verskaf 5 volt DC direk vanaf u rekenaar, maar die 3 AA -batteryhouer is geskik vir 1,5 volt alkaliese batterye, wat 'n totale spanning van 4,5 volt lewer. As u 1,2 volt herlaaibare NI-Cd- of NI-MH-batterye gebruik, benodig u 'n 4 AA-batteryhouer vir 'n totale spanning van 4,8 volt. As u minder as 4,5 volt gebruik, werk die Geiger -toonbank moontlik nie soos dit moet nie.

Daar is baie min stroombane op die uitvoer van die Geiger -tellers; so solank die luidspreker 'n tikkende geluid maak en die LED knipper, moet u 'n sein op die VIN -pen kry.

Om seker te wees van die uitsetsein; verbind 'n ossilloskoop met die uitset deur die positiewe kant van die ossilloskoop -sonde aan die VIN en die negatiewe kant van die ossilloskoop -sonde aan die grond te koppel.

Eerder as om net op agtergrondstraling te wag om die Geiger-toonbank te aktiveer, het ek americium-241 uit 'n rookdetektor-ioonkamer gebruik om die Geiger-tellers se reaksies te verhoog. Die uitset van die Geiger -toonbank begin by +3 volt en daal tot 0 volt elke keer as die Geiger -buis op die alfa -deeltjies reageer en 'n oomblik later terugkeer na +3 volt. Dit is die sein wat u met Arduino gaan opneem.

Stap 4: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading

Daar is twee maniere waarop u die Geiger -toonbank aan u Arduino en u rekenaar kan koppel.

Koppel die GND op Arduino aan die GND op die Geiger -toonbank.

Koppel die 5V op Arduino aan die 5V op die Geiger -toonbank.

Koppel die VIN op die Geiger -toonbank aan die D2 op Arduino.

Met onafhanklike krag gekoppel aan die Geiger -toonbank.

Koppel die GND op Arduino aan die GND op die Geiger -toonbank.

Koppel die VIN op die Geiger -toonbank aan die D2 op Arduino.

Koppel Arduino aan op u rekenaar.

Stap 5: Kode

Kode
Kode
Kode
Kode
Kode
Kode

Maak Arduino IDE oop en laai die kode.

// Hierdie skets tel die aantal pulse per minuut.

// Koppel die GND op Arduino aan die GND op die Geiger -toonbank.

// Koppel die 5V op Arduino aan die 5V op die Geiger -toonbank.

// Koppel die VIN op die Geiger -toonbank aan op die D2 op Arduino.

ongetekende lang tellings; // veranderlike vir GM Tube -geleenthede

ongetekende lang vorigeMillis; // veranderlike vir die meting van tyd

void impulse () {// dipanggil setiap ada sinyal FALLING deur pen 2

tellings ++;

}

#definieer LOG_PERIOD 60000 // telkoers

ongeldige opstelling () {// opstelling

tellings = 0;

Serial.begin (9600);

pinMode (2, INVOER);

attachInterrupt (digitalPinToInterrupt (2), impuls, FALLING); // definieer eksterne onderbrekings

Serial.println ("Begin toonbank");

}

leemte -lus () {// hoofsiklus

ongetekende lang stroomMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

vorigeMillis = currentMillis;

Serial.println (tellings);

tellings = 0;

}

}

Kies in Tools die Arduino of ander bord wat u gebruik.

Kies in Poortgereedskap die poort en kom

Laai die kode op.

Sodra die kode in Tools opgelaai is, kies Serial Monitor en kyk hoe u Geiger -toonbank werk.

Soek foute. Die enigste ding met hierdie kode is dat dit 'n bietjie vervelig is; u moet 1 minuut wag vir elke telling.

Stap 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

Dit is een van die eerste foute wat ek in die kode gevind het; kyk dus daarna in u kode, “Serial.println (cpm);” en "Serial.print (cpm);".

Serial.println (cpm); sal elke telling op sy eie reël druk.

Serial.print (cpm); Dit sal lyk soos een groot getal wat elke telling op dieselfde lyn druk, wat dit onmoontlik maak om te weet wat die telling is.

Stap 7: J305 Meting van agtergrondstraling

J305 Meting van agtergrondstraling
J305 Meting van agtergrondstraling
J305 Meting van agtergrondstraling
J305 Meting van agtergrondstraling

Eerstens is die meting van agtergrondstraling, die natuurlike bestraling wat reeds natuurlik bestaan. Die gelyste getal is die CPM (telling per minuut), wat 'n totaal van gemeet radioaktiewe deeltjies is elke minuut.

Die gemiddelde J305 -agtergrondtelling was 15,6 CPM.

Stap 8: J305 Meting van rooksensorstraling

J305 Meting van rooksensorstraling
J305 Meting van rooksensorstraling
J305 Meting van rooksensorstraling
J305 Meting van rooksensorstraling

Dit is nie ongewoon dat 'n Geiger -toonbank herhaaldelik dieselfde telling gee nie, dus kyk met 'n bestralingsbron. Ek het die stralingsmeting van Americium gebruik, 'n ioonkamer van 'n rookmelder. Die rooksensor gebruik Americium as 'n bron van alfa -deeltjies wat rookdeeltjies in die lug ioniseer. Ek het die metaaldop van die sensor verwyder sodat die alfa- en beta -deeltjies saam met die gamma -deeltjies by die Geiger -buis kan uitkom.

As alles reg is, moet die tellings verander.

Americium-241 van 'n rookdetektor se ioonkamer se gemiddelde telling was 519 CPM.

Stap 9: SBM-20

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

Hierdie Arduino -skets is 'n gewysigde weergawe wat deur Alex Boguslavsky geskryf is.

Hierdie skets tel die aantal pulse in 15 sekondes en skakel dit om in tellings per minuut, wat dit minder vervelig maak.

Kode wat ek bygevoeg het "Serial.println (" Start counter ");".

Kode I verander; "Serial.print (cpm);" na "Serial.println (cpm);".

“#Defineer LOG_PERIOD 15000”; stel die tel tyd op 15 sekondes, ek het dit verander na "#define LOG_PERIOD 5000" of 5 sekondes. Ek het geen merkbare verskil in die gemiddelde gevind tussen tel vir 1 minuut, of 15 sekondes en 5 sekondes nie.

#insluit

#define LOG_PERIOD 15000 // Tekenperiode in millisekondes, aanbevole waarde 15000-60000.

#define MAX_PERIOD 60000 // Maksimum aanmeldperiode sonder om hierdie skets te verander

ongetekende lang tellings; // veranderlike vir GM Tube -geleenthede

ongetekende lang cpm; // veranderlike vir CPM

ongetekende int vermenigvuldiger; // veranderlike vir berekening van CPM in hierdie skets

ongetekende lang vorigeMillis; // veranderlike vir tydmeting

void tube_impulse () {// subprosedure vir die vaslegging van gebeure vanuit Geiger Kit

tellings ++;

}

ongeldige opstelling () {// opstel subprosedure

tellings = 0;

cpm = 0;

vermenigvuldiger = MAX_PERIOD / LOG_PERIOD; // die vermenigvuldiger bereken, hang af van u logtydperk

Serial.begin (9600);

attachInterrupt (0, tube_impulse, FALLING); // definieer eksterne onderbrekings

Serial.println ("Begin toonbank"); // kode wat ek bygevoeg het

}

leemte -lus () {// hoofsiklus

ongetekende lang stroomMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

vorigeMillis = currentMillis;

cpm = tellings * vermenigvuldiger;

Serial.println (cpm); // kode wat ek verander het

tellings = 0;

}

}

Die gemiddelde SBM-20-agtergrondtelling was 23,4 CPM.

Stap 10: Bedrading van die Geiger -toonbank met 'n LCD

Bedrading van die Geiger -toonbank met 'n LCD
Bedrading van die Geiger -toonbank met 'n LCD

LCD -verbinding:

LCD K -pen na GND

LCD 'n Speld tot 220 Ω weerstand teen Vcc

LCD D7 -pen na digitale pen 3

LCD D6 -pen na digitale pen 5

LCD D5 -pen na digitale pen 6

LCD D4 -pen na digitale pen 7

LCD Aktiveer pen tot digitale pen 8

LCD R/W -pen teen die grond

LCD RS -pen na digitale pen 9

LCD VO -pen om die pot van 10 kΩ aan te pas

LCD Vcc -pen na Vcc

LCD Vdd -pen na GND

Pot 10 kΩ verstelbare weerstand.

Vcc, Vo, Vdd

Geiger Counter

VIN na digitale pen 2

5 V tot +5 V.

GND tot op die grond

Stap 11: Geiger -toonbank met LCD

Geiger -toonbank met LCD
Geiger -toonbank met LCD
Geiger -toonbank met LCD
Geiger -toonbank met LCD
Geiger -toonbank met LCD
Geiger -toonbank met LCD

// sluit die biblioteekkode in:

#insluit

#insluit

#define LOG_PERIOD 15000 // Tekenperiode in millisekondes, aanbevole waarde 15000-60000.

#define MAX_PERIOD 60000 // Maksimum aanmeldperiode sonder om hierdie skets te verander

#define PERIOD 60000.0 // (60 sek) meetperiode van een minuut

vlugtige ongetekende lang CNT; // veranderlike vir die tel van onderbrekings vanaf dosimeter

ongetekende lang tellings; // veranderlike vir GM Tube -geleenthede

ongetekende lang cpm; // veranderlike vir CPM

ongetekende int vermenigvuldiger; // veranderlike vir berekening van CPM in hierdie skets

ongetekende lang vorigeMillis; // veranderlike vir tydmeting

ongetekende lang dispPeriod; // veranderlike vir die meting van tyd

ongetekende lang CPM; // veranderlike vir die meting van CPM

// initialiseer die biblioteek met die nommers van die koppelvlakpenne

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

ongeldige opstelling () {// opstelling

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

vertraging (2000);

cleanDisplay ();

attachInterrupt (0, GetEvent, FALLING); // Gebeurtenis op pen 2

}

leemte -lus () {

lcd.setCursor (0, 0); // druk teks en CNT op die LCD

lcd.print ("CPM:");

lcd.setCursor (0, 1);

lcd.print ("CNT:");

lcd.setCursor (5, 1);

lcd.print (CNT);

if (millis ()> = dispPeriod + PERIOD) {// As 'n minuut verby is

cleanDisplay (); // Duidelike LCD

// Doen iets aan opgehoopte CNT -geleenthede …

lcd.setCursor (5, 0);

CPM = CNT;

lcd.print (CPM); // Vertoon CPM

CNT = 0;

dispPeriod = millis ();

}

}

ongeldig GetEvent () {// Kry geleentheid vanaf toestel

CNT ++;

}

void cleanDisplay () {// Duidelike LCD -roetine

lcd.clear ();

lcd.setCursor (0, 0);

lcd.setCursor (0, 0);

}

Stap 12: lêers

Laai hierdie lêers af en installeer dit op u Arduino.

Plaas elke.ino -lêer in 'n gids met dieselfde naam.

Aanbeveel: