Talaan ng mga Nilalaman:

Arduino DIY Geiger Counter: 12 Hakbang (na may Mga Larawan)
Arduino DIY Geiger Counter: 12 Hakbang (na may Mga Larawan)

Video: Arduino DIY Geiger Counter: 12 Hakbang (na may Mga Larawan)

Video: Arduino DIY Geiger Counter: 12 Hakbang (na may Mga Larawan)
Video: Tutorial for Arduino ▶11 APR9600 voice record and playback used in elevator 2024, Nobyembre
Anonim
Arduino DIY Geiger Counter
Arduino DIY Geiger Counter
Arduino DIY Geiger Counter
Arduino DIY Geiger Counter

Kaya't nag-order ka ng isang counter ng DIY Geiger at nais mong ikonekta ito sa iyong Arduino. Pumunta ka sa linya at subukang i-duplicate kung paano nakakonekta ng iba ang kanilang Geiger counter sa Arduino lamang upang makahanap ng isang bagay na mali. Bagaman ang iyong Geiger counter ay tila hindi gumana walang gumagana tulad ng inilarawan sa DIY na iyong sinusundan kapag ikinonekta mo ang iyong Geiger counter sa iyong Arduino.

Sa Instructable na ito ay sasakupin ko kung paano i-troubleshoot ang ilan sa mga glitches na ito.

Tandaan; tipunin at i-code ang Arduino nang paisa-isa, kung dumiretso ka sa isang tapos na proyekto at mayroong isang hindi nasagot na wire o linya ng code maaari ka nitong tuluyan upang mahanap ang problema.

Hakbang 1: Mga Tool at Bahagi

Mga tool at Bahagi
Mga tool at Bahagi

Prototype box Gumamit ako ng isang Ferrero Rocher candy box.

Maliit na breadboard

16x2 LCD

Ang board ng Arduino ay nagpapalabas ng isang UNO o Nano

220 Ω risistor

Pot 10 kΩ adjustable risistor.

DIY Geiger Counter Kit

Jumper Wires

Konektor o harness ng baterya

Oscilloscope

Pinong Mga Ilong Plier

Maliit na Karaniwang Screwdriver

Hakbang 2: Magtipon ng Iyong Geiger Counter

Ipunin ang Iyong Kontra sa Geiger
Ipunin ang Iyong Kontra sa Geiger

Anumang pinsala sa iyong Geiger Tube; at ang iyong Geiger counter ay hindi gagana, kaya gamitin ang proteksiyon na takip ng acrylic upang maiwasan ang pinsala sa iyong Geiger tube.

Ang Instructable na ito ay tungkol sa kung paano ko inayos ang parehong counter ng Geiger na may sirang tubo ng Geiger at nilagyan ang proteksiyon na takip ng acrylic upang maiwasan ang pagkasira sa hinaharap.

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

Hakbang 3: Elektrikal na Pagsubok sa Geiger Counter

Pagsubok sa Elektrisidad sa Geiger Counter
Pagsubok sa Elektrisidad sa Geiger Counter
Pagsubok sa Elektrisidad sa Geiger Counter
Pagsubok sa Elektrisidad sa Geiger Counter
Pagsubok sa Elektrisidad sa Geiger Counter
Pagsubok sa Elektrisidad sa Geiger Counter

Gamitin muna ang tamang boltahe para sa power supply; ang USB cord ay naghahatid ng 5 volts DC mula mismo sa iyong computer, subalit ang may hawak ng 3 AA na baterya ay para sa 1.5 volt na mga alkalina na baterya na gumagawa ng isang kabuuang boltahe na 4.5 volts. Kung gumagamit ka ng 1.2 volt rechargeable NI-Cd o NI-MH na baterya kakailanganin mo ang isang may-ari ng baterya ng 4 AA para sa isang kabuuang boltahe na 4.8 volts. Kung gagamit ka ng mas mababa sa 4.5 volts ang Geiger counter ay maaaring hindi kumilos tulad ng nararapat.

Mayroong napakakaunting circuitry sa output ng mga counter ng Geiger; kaya't hangga't ang nagsasalita ay gumagawa ng tunog ng pag-tick, at ang LED blinks, dapat kang makakuha ng isang senyas sa VIN pin.

Upang matiyak ang output signal; ikonekta ang isang oscilloscope sa output sa pamamagitan ng pagkonekta ng positibong bahagi ng oscilloscope probe sa VIN at ang negatibong bahagi ng oscilloscope probe sa lupa.

Sa halip na maghintay lamang sa background radiation upang ma-trigger ang counter ng Geiger ay gumamit ako ng americium-241 mula sa isang silid ng mga detektor ng usok upang madagdagan ang mga reaksyon ng mga counter ng Geiger. Ang output ng Geiger counter ay nagsimula sa +3 volts at bumaba sa 0 volts tuwing tumutugon ang Geiger tube sa mga alpha particle at babalik sa +3 volts sandali pa. Ito ang signal na iyong itatala kasama si Arduino.

Hakbang 4: Mga kable

Kable
Kable
Kable
Kable
Kable
Kable
Kable
Kable

Mayroong dalawang mga paraan upang maiugnay mo ang Geiger counter sa iyo Arduino at iyong computer.

Ikonekta ang GND sa Arduino sa GND sa Geiger counter.

Ikonekta ang 5V sa Arduino sa 5V sa Geiger counter.

Ikonekta ang VIN sa Geiger counter sa D2 sa Arduino.

Na may independiyenteng kapangyarihan na konektado sa Geiger counter.

Ikonekta ang GND sa Arduino sa GND sa Geiger counter.

Ikonekta ang VIN sa Geiger counter sa D2 sa Arduino.

Ikonekta ang Arduino sa iyong computer.

Hakbang 5: Code

Code
Code
Code
Code
Code
Code

Buksan ang Arduino IDE at i-load ang code.

// Binibilang ng Sketch na ito ang bilang ng mga pulso sa isang minuto.

// Ikonekta ang GND sa Arduino sa GND sa Geiger counter.

// Ikonekta ang 5V sa Arduino sa 5V sa Geiger counter.

// Ikonekta ang VIN sa Geiger counter sa D2 sa Arduino.

unsigned mahabang bilang; // variable para sa mga kaganapan sa GM Tube

unsigned matagal na ang nakaraangMillis; // variable para sa pagsukat ng oras

void impulse () {// tawag bawat ada signal FALLING di pin 2

binibilang ++;

}

# tukuyin ang LOG_PERIOD 60000 // count rate

walang bisa ang pag-setup () {// setup

bilang = 0;

Serial.begin (9600);

pinMode (2, INPUT);

attachInterrupt (digitalPinToInterrupt (2), salpok, FALLING); // tukuyin ang mga panlabas na pagkagambala

Serial.println ("Start counter");

}

void loop () {// pangunahing ikot

unsigned long currentMillis = millis ();

kung (currentMillis - nakaraangMillis> LOG_PERIOD) {

nakaraangMillis = kasalukuyangMillis;

Serial.println (bilang);

bilang = 0;

}

}

Sa Tools piliin ang Arduino o ibang board na iyong ginagamit.

Sa Mga tool piliin ang Port at Com

I-upload ang code.

Kapag na-upload na ang code sa Mga tool piliin ang Serial Monitor at panoorin ang iyong Geiger counter work.

Maghanap ng mga glitches. Ang tanging bagay tungkol sa code na ito ay medyo nakakapagod kailangan mong maghintay ng 1 minuto para sa bawat bilang.

Hakbang 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

Ito ay isa sa mga unang glitches na nakita ko sa code; kaya't panoorin ito sa iyong code, "Serial.println (cpm);" at "Serial.print (cpm);".

Serial.println (cpm); ay mai-print ang bawat bilang sa sarili nitong linya.

Serial.print (cpm); ay magiging hitsura ng isang malaking bilang ng pag-print sa bawat bilang sa parehong linya na ginagawang imposibleng sabihin kung ano ang bilang.

Hakbang 7: Pagsukat ng Radiation sa J305 Background

J305 Background Pagsukat ng Radiation
J305 Background Pagsukat ng Radiation
J305 Background Pagsukat ng Radiation
J305 Background Pagsukat ng Radiation

Una ay ang pagsukat ng background radiation, ang natural radiation na mayroon nang natural. Ang nakalistang numero ay ang CPM (bilang bawat minuto), na kung saan ay isang kabuuang sukat na radioactive particle bawat minuto.

Ang average na bilang ng background sa J305 ay 15.6 CPM.

Hakbang 8: J305 Pagsukat ng Smoke Sensor Radiation

J305 Pagsukat ng Smoke Sensor Radiation
J305 Pagsukat ng Smoke Sensor Radiation
J305 Pagsukat ng Smoke Sensor Radiation
J305 Pagsukat ng Smoke Sensor Radiation

Hindi bihira para sa isang counter ng Geiger na bigyan ka ng parehong bilang nang paulit-ulit kaya suriin ito sa isang mapagkukunan ng radiation. Ginamit ko ang pagsukat ng radiation mula sa Amerika ng isang silid ng ion mula sa isang detektor ng usok. Gumagamit ang sensor ng usok ng Americium bilang isang mapagkukunan ng mga alpha particle na nag-ionize ng mga partikulo ng usok sa hangin. Inalis ko ang metal cap sa sensor kaya ang mga maliit na alpha at beta ay maaaring makapunta sa Geiger tube kasama ang mga partikulo ng gamma.

Kung ang lahat ay maayos ang mga bilang ay dapat magbago.

Ang Americium-241 mula sa usok ng mga detektor ng usok ng ion na average na bilang ay 519 CPM.

Hakbang 9: SBM-20

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

Ang sketch ng Arduino na ito ay binago na bersyon na isinulat ni Alex Boguslavsky.

Binibilang ng Sketch na ito ang bilang ng mga pulso sa loob ng 15 segundo at binago ito sa bilang bawat minuto na ginagawang mas hindi ito nakakapagod.

Idinagdag ko ang code na "Serial.println (" Start counter ");".

Binago ko ang code; "Serial.print (cpm);" sa "Serial.println (cpm);".

"# Tukuyin ang LOG_PERIOD 15000"; itinakda ang oras ng bilang sa 15 segundo, binago ko ito sa "# tukuyin ang LOG_PERIOD 5000" o 5 segundo. Wala akong nahanap na kahalagahan na pagkakaiba sa average sa pagitan ng pagbibilang ng 1 minuto, o 15 segundo at 5 segundo.

# isama

#define LOG_PERIOD 15000 // Tagal ng pag-log sa milliseconds, inirekumendang halagang 15000-60000.

#define MAX_PERIOD 60000 // Maximum logging period without modifying this sketch

unsigned mahabang bilang; // variable para sa mga kaganapan sa GM Tube

unsigned mahabang cpm; // variable para sa CPM

unsigned int multiplier; // variable para sa pagkalkula ng CPM sa sketch na ito

unsigned matagal na ang nakaraangMillis; // variable para sa pagsukat ng oras

void tube_impulse () {// subprocedure para sa pagkuha ng mga kaganapan mula sa Geiger Kit

binibilang ++;

}

walang bisa ang pag-setup () {// setup subprocedure

bilang = 0;

cpm = 0;

multiplier = MAX_PERIOD / LOG_PERIOD; // kinakalkula ang multiplier, nakasalalay sa iyong tagal ng pag-log

Serial.begin (9600);

attachInterrupt (0, tube_impulse, FALLING); // tukuyin ang mga panlabas na pagkagambala

Serial.println ("Start counter"); // code na idinagdag ko

}

void loop () {// pangunahing ikot

unsigned long currentMillis = millis ();

kung (currentMillis - nakaraangMillis> LOG_PERIOD) {

nakaraangMillis = kasalukuyangMillis;

cpm = bilang * multiplier;

Serial.println (cpm); // code nagbago ako

bilang = 0;

}

}

Ang average na bilang ng background sa SBM-20 ay 23.4 CPM.

Hakbang 10: Pag-kable ng Geiger Counter Na may isang LCD

Pag-kable ng Geiger Counter Na may LCD
Pag-kable ng Geiger Counter Na may LCD

LCD Koneksyon:

Ang LCD K ay pin sa GND

LCD Isang pin sa 220 Ω risistor sa Vcc

LCD D7 pin sa digital pin 3

LCD D6 pin sa digital pin 5

LCD D5 pin sa digital pin 6

LCD D4 pin sa digital pin 7

LCD Paganahin ang pin sa digital pin 8

Ang LCD R / W ay pin sa lupa

Ang LCD RS pin sa digital pin 9

LCD VO pin upang ayusin ang 10 kΩ palayok

LCD Vcc pin sa Vcc

LCD Vdd pin sa GND

Pot 10 kΩ adjustable risistor.

Vcc, Vo, Vdd

Geiger Counter

VIN sa digital pin 2

5 V hanggang + 5V

GND sa lupa

Hakbang 11: Geiger Counter Sa LCD

Geiger Counter Sa LCD
Geiger Counter Sa LCD
Geiger Counter Sa LCD
Geiger Counter Sa LCD
Geiger Counter Sa LCD
Geiger Counter Sa LCD

// isama ang code ng library:

# isama

# isama

#define LOG_PERIOD 15000 // Tagal ng pag-log sa milliseconds, inirekumendang halagang 15000-60000.

#define MAX_PERIOD 60000 // Maximum logging period without modifying this sketch

# tukuyin ang PERIOD 60000.0 // (60 sec) isang minutong yugto ng pagsukat

pabagu-bago ng unsigned mahabang CNT; // variable para sa pagbibilang ng mga nakakagambala mula sa dosimeter

unsigned mahabang bilang; // variable para sa mga kaganapan sa GM Tube

unsigned mahabang cpm; // variable para sa CPM

unsigned int multiplier; // variable para sa pagkalkula ng CPM sa sketch na ito

unsigned matagal na ang nakaraangMillis; // variable para sa pagsukat ng oras

unsigned mahabang dispPeriod; // variable para sa pagsukat ng oras

unsigned mahabang CPM; // variable para sa pagsukat ng CPM

// ipasimula ang library sa mga bilang ng mga interface ng interface

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

walang bisa ang pag-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");

pagkaantala (2000);

malinisIpakita ();

attachInterrupt (0, GetEvent, FALLING); // Kaganapan sa pin 2

}

void loop () {

lcd.setCursor (0, 0); // print text at CNT sa LCD

lcd.print ("CPM:");

lcd.setCursor (0, 1);

lcd.print ("CNT:");

lcd.setCursor (5, 1);

lcd.print (CNT);

kung (millis ()> = dispPeriod + PERIOD) {// Kung ang isang minuto ay tapos na

malinisIpakita (); // Malinaw na LCD

// Gumawa ng isang bagay tungkol sa naipon na mga kaganapan sa CNT ….

lcd.setCursor (5, 0);

CPM = CNT;

lcd.print (CPM); // Display CPM

CNT = 0;

dispPeriod = millis ();

}

}

void GetEvent () {// Kumuha ng Kaganapan mula sa Device

CNT ++;

}

void cleanDisplay () {// Clear LCD routine

lcd.clear ();

lcd.setCursor (0, 0);

lcd.setCursor (0, 0);

}

Hakbang 12: Mga File

I-download at i-install ang mga file na ito sa iyong Arduino.

Ilagay ang bawat.ino file sa isang folder sa parehong pangalan.

Inirerekumendang: