Mundarija:

Arduino DIY Geiger hisoblagichi: 12 qadam (rasmlar bilan)
Arduino DIY Geiger hisoblagichi: 12 qadam (rasmlar bilan)

Video: Arduino DIY Geiger hisoblagichi: 12 qadam (rasmlar bilan)

Video: Arduino DIY Geiger hisoblagichi: 12 qadam (rasmlar bilan)
Video: DIY arduino Geiger counter 2024, Noyabr
Anonim
Arduino DIY Geiger hisoblagichi
Arduino DIY Geiger hisoblagichi
Arduino DIY Geiger hisoblagichi
Arduino DIY Geiger hisoblagichi

Shunday qilib, siz DIY Geiger hisoblagichiga buyurtma berdingiz va uni Arduino -ga ulashni xohlaysiz. Siz tarmoqqa borasiz va boshqalarning Geiger hisoblagichini Arduino -ga qanday qilib noto'g'ri ekanligini aniqlash uchun qanday bog'laganini takrorlashga harakat qilasiz. Garchi sizning Geiger hisoblagichingiz hech narsa ishlamayotganga o'xshasa -da, siz o'zingiz aytganidek, Geiger hisoblagichini Arduino -ga ulaganingizda bajarilgandek.

Bu yo'riqnomada men ba'zi kamchiliklarni qanday hal qilishni ko'rib chiqaman.

Eslab qoling; Arduino -ni birma -bir yig'ing va kodlang, agar siz to'g'ridan -to'g'ri tugallangan loyihaga o'tsangiz va o'tkazib yuborilgan sim yoki kod chizig'i bo'lsa, muammoni hal qilish uchun abadiy vaqt kerak bo'ladi.

1 -qadam: asboblar va ehtiyot qismlar

Asboblar va ehtiyot qismlar
Asboblar va ehtiyot qismlar

Prototip qutisi Men Ferrero Rocher konfet qutisini ishlatardim.

Kichik non paneli

16x2 LCD displey

Arduino taxtasi UNO yoki Nano

220 Ω qarshilik

Pot 10 kΩ sozlanishi qarshilik.

DIY Geiger hisoblagichlari to'plami

Jumper simlari

Batareya ulagichi yoki jabduqlar

Osiloskop

Nozik burun qisqichlari

Kichik standart tornavida

2 -qadam: Geiger hisoblagichingizni yig'ing

Geiger hisoblagichingizni yig'ing
Geiger hisoblagichingizni yig'ing

Geiger Tube -ga har qanday zarar; va sizning Geiger hisoblagichingiz ishlamaydi, shuning uchun Geiger trubkangizga zarar yetkazmaslik uchun himoya akril qoplamasidan foydalaning.

Bu yo'riqnoma, xuddi o'sha Geiger taymerini singan Geiger trubkasi bilan qanday tuzatganim va kelajakda buzilmasligi uchun himoya akril qopqog'ini qanday o'rnatganim haqida.

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

3 -qadam: Geiger hisoblagichini elektr bilan tekshirish

Geiger hisoblagichini elektr bilan tekshirish
Geiger hisoblagichini elektr bilan tekshirish
Geiger hisoblagichini elektr bilan tekshirish
Geiger hisoblagichini elektr bilan tekshirish
Geiger hisoblagichini elektr bilan tekshirish
Geiger hisoblagichini elektr bilan tekshirish

Avval quvvat manbai uchun to'g'ri kuchlanishni ishlating; USB kabeli sizning kompyuteringizdan to'g'ridan -to'g'ri 5 voltsli shaharni etkazib beradi, lekin 3 AAli batareya ushlagichi 1,5 voltli ishqoriy batareyalarga mo'ljallangan bo'lib, umumiy voltaji 4,5 voltni tashkil qiladi. Agar siz 1,2 voltlik qayta zaryadlanuvchi NI-Cd yoki NI-MH batareyalaridan foydalansangiz, umumiy quvvati 4,8 voltsli 4 ta AA batareya ushlagichi kerak bo'ladi. Agar siz 4,5 voltdan kam ishlatsangiz, Geiger hisoblagichi kerakli darajada ishlamasligi mumkin.

Geiger hisoblagichlarining chiqishida juda kam sxemalar mavjud; agar karnay ovoz chiqarsa va LED yonib tursa, siz VIN pinida signal olishingiz kerak.

Chiqish signaliga ishonch hosil qilish uchun; osiloskop probining ijobiy tomonini VIN va osiloskop probining salbiy tomonini erga ulab, osiloskopni chiqishga ulang.

Geiger hisoblagichini ishga tushirish uchun orqa fon nurlanishini kutishning o'rniga, men Geiger hisoblagichlarining reaktsiyasini kuchaytirish uchun tutun detektori ion kamerasidan ameriyum-241 dan foydalandim. Geiger taymerining chiqishi +3 voltdan boshlandi va har safar Geiger trubkasi alfa -zarrachalarga reaksiyaga kirganda va bir zumdan keyin +3 voltsga qaytganda 0 voltgacha tushdi. Bu siz Arduino bilan yozib oladigan signal.

4 -qadam: simlarni ulash

Ulanish
Ulanish
Ulanish
Ulanish
Ulanish
Ulanish
Ulanish
Ulanish

Geiger hisoblagichini Arduino va kompyuteringizga ulashning ikkita usuli bor.

Arduino -dagi GND -ni Geiger hisoblagichidagi GND -ga ulang.

Arduino -dagi 5V -ni Geiger hisoblagichidagi 5V -ga ulang.

Geiger hisoblagichidagi VIN -ni Arduino -dagi D2 -ga ulang.

Geiger taymeriga ulangan mustaqil quvvat bilan.

Arduino -dagi GND -ni Geiger hisoblagichidagi GND -ga ulang.

Geiger hisoblagichidagi VIN -ni Arduino -dagi D2 -ga ulang.

Arduino -ni kompyuteringizga ulang.

5 -qadam: kod

Kod
Kod
Kod
Kod
Kod
Kod

Arduino IDE -ni oching va kodni yuklang.

// Bu eskiz bir daqiqadagi impulslar sonini hisoblab chiqadi.

// Arduino -dagi GND -ni Geiger hisoblagichidagi GND -ga ulang.

// Arduino -dagi 5V -ni Geiger hisoblagichidagi 5V -ga ulang.

// Geiger hisoblagichidagi VIN -ni Arduino -dagi D2 -ga ulang.

imzosiz uzoq hisoblar; // GM Tube hodisalari uchun o'zgaruvchi

uzoq vaqt oldin imzolangan emas; // vaqtni o'lchash uchun o'zgaruvchi

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

hisoblar ++;

}

#deg LOG_PERIOD 60000 // hisoblash tezligi

void setup () {// sozlash

hisoblar = 0;

Serial.begin (9600);

pinMod (2, Kirish);

attachInterrupt (digitalPinToInterrupt (2), impuls, FALLING); // tashqi uzilishlarni aniqlang

Serial.println ("Hisoblagichni ishga tushirish");

}

void loop () {// asosiy tsikl

belgisiz uzun oqimMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

oldingiMillis = joriyMillis;

Serial.println (hisoblar);

hisoblar = 0;

}

}

Asboblar bo'limida siz foydalanadigan Arduino yoki boshqa taxtani tanlang.

Asboblar orqali Port va Com -ni tanlang

Kodni yuklang.

Kod "Asboblar" ga yuklanganidan so'ng Serial Monitor -ni tanlang va Geiger hisoblagichingizning ishlashini ko'ring.

Nosozliklarni qidiring. Bu kodning yagona xususiyati shundaki, har bir hisob uchun 1 daqiqa kutish kerak.

6 -qadam: 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

Bu kodda topilgan birinchi nosozliklardan biri; shuning uchun kodingizda "Serial.println (cpm)" ga e'tibor bering; va "Serial.print (cpm);".

Serial.println (cpm); har bir sonni o'z qatorida chop etadi.

Serial.print (cpm); har bir sonni bitta satrda bosib chiqaradigan bitta katta raqamga o'xshaydi, bu hisob nima ekanligini aytib bo'lmaydi.

7 -qadam: J305 fon radiatsiyasini o'lchash

J305 Fon radiatsiyasini o'lchash
J305 Fon radiatsiyasini o'lchash
J305 Fon radiatsiyasini o'lchash
J305 Fon radiatsiyasini o'lchash

Birinchisi, tabiiy ravishda mavjud bo'lgan tabiiy nurlanish, fon radiatsiyasini o'lchash. Ro'yxatga olingan raqam - bu CPM (daqiqada hisoblash), bu har daqiqada o'lchangan radioaktiv zarrachalarning umumiy soni.

J305 fonidagi o'rtacha ko'rsatkich 15,6 CPM edi.

8 -qadam: J305 tutun sensori radiatsiyasini o'lchash

J305 Tutun sensori radiatsiyasini o'lchash
J305 Tutun sensori radiatsiyasini o'lchash
J305 Tutun sensori radiatsiyasini o'lchash
J305 Tutun sensori radiatsiyasini o'lchash

Geyger hisoblagichi sizga bir xil hisobni qayta -qayta berishi odatiy hol emas, shuning uchun uni nurlanish manbasi bilan tekshiring. Men tutun detektorining Americium ion kamerasidan olingan nurlanish o'lchovidan foydalandim. Tutun sensori Americiumni havodagi tutun zarralarini ionlashtiruvchi alfa zarrachalar manbai sifatida ishlatadi. Men sensordagi metall qopqoqni olib tashladim, shuning uchun alfa va beta zarrachalari gamma zarralari bilan birga Geiger trubkasiga tushishi mumkin.

Agar hamma narsa tartibda bo'lsa, hisoblar o'zgarishi kerak.

Tutun detektori ion kamerasining Americium-241 o'rtacha soni 519 CPM edi.

9-qadam: SBM-20

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

Bu Arduino eskizining o'zgartirilgan versiyasi Aleks Boguslavskiy.

Bu eskiz pulslar sonini 15 soniyada hisoblab chiqadi va uni daqiqasiga hisoblashga aylantiradi, bu esa uni zerikarli qilmaydi.

Kodga "Serial.println (" Hisoblagichni ishga tushirish ") qo'shdim;".

Men o'zgartirgan kod; "Serial.print (cpm);" "Serial.println (cpm);" ga.

"#LOG_PERIOD 15000 ni belgilang"; sanash vaqtini 15 soniyaga o'rnatadi, men uni "#define LOG_PERIOD 5000" yoki 5 soniya qilib o'zgartirdim. Men 1 daqiqa yoki 15 soniya va 5 soniya sanash o'rtasida o'rtacha farqni sezmadim.

#qo'shing

#define LOG_PERIOD 15000 // Jurnal vaqti millisekundlarda, tavsiya etilgan qiymat 15000-60000.

#dexine MAX_PERIOD 60000 // Ushbu eskizni o'zgartirmagan holda jurnalga kirishning maksimal muddati

imzosiz uzoq hisoblar; // GM Tube hodisalari uchun o'zgaruvchi

imzosiz uzun kpm; // CPM uchun o'zgaruvchi

imzosiz int ko'paytmasi; // ushbu eskizda CPMni hisoblash uchun o'zgaruvchi

uzoq vaqt oldin imzolangan emas; // vaqtni o'lchash uchun o'zgaruvchi

void tube_impulse () {// Geiger Kit -dan voqealarni yozib olish uchun pastki protsedura

hisoblar ++;

}

void setup () {// sozlash kichik protsedurasi

hisoblar = 0;

cpm = 0;

multiplikator = MAX_PERIOD / LOG_PERIOD; // hisoblash multiplikatori, sizning jurnal davringizga bog'liq

Serial.begin (9600);

attachInterrupt (0, tube_impulse, FALLING); // tashqi uzilishlarni aniqlang

Serial.println ("Hisoblagichni ishga tushirish"); // men qo'shgan kod

}

void loop () {// asosiy tsikl

belgisiz uzun oqimMillis = millis ();

if (currentMillis - previousMillis> LOG_PERIOD) {

oldingiMillis = joriyMillis;

cpm = hisoblash * ko'paytmasi;

Serial.println (cpm); // kodni o'zgartirdim

hisoblar = 0;

}

}

SBM-20 fonidagi o'rtacha ko'rsatkich 23,4 CPM edi.

10 -qadam: Geiger hisoblagichini LCD bilan ulash

LCD bilan Geiger hisoblagichini ulash
LCD bilan Geiger hisoblagichini ulash

LCD ulanishi:

LCD K pin GND ga

LCD VC uchun 220 dyuymli rezistorli pin

LCD D7 pinli raqamli pin 3

LCD D6 pinli raqamli pin 5

LCD D5 pinli raqamli pin 6

LCD D4 pinli raqamli pin 7

LCD PIN -kodni raqamli pin 8 -ga yoqish

Erga ulangan LCD R/V pin

LCD RS pinli raqamli pin 9

10 kΩ potni sozlash uchun LCD VO pin

LCD Vcc pinini Vcc ga ulang

LCD Vdd pin GND ga

Pot 10 kΩ sozlanishi qarshilik.

Vcc, Vo, Vdd

Geiger hisoblagichi

VIN - raqamli pin 2

5 V dan +5 V gacha

GND erga

11 -qadam: LCD bilan Geiger hisoblagichi

LCD bilan Geiger hisoblagichi
LCD bilan Geiger hisoblagichi
LCD bilan Geiger hisoblagichi
LCD bilan Geiger hisoblagichi
LCD bilan Geiger hisoblagichi
LCD bilan Geiger hisoblagichi

// kutubxona kodini o'z ichiga oladi:

#qo'shing

#qo'shing

#define LOG_PERIOD 15000 // Jurnal vaqti millisekundlarda, tavsiya etilgan qiymat 15000-60000.

#dexine MAX_PERIOD 60000 // Ushbu eskizni o'zgartirmagan holda jurnalga kirishning maksimal muddati

#devren 60000.0 PERIOD // (60 sek) bir daqiqali o'lchov davri

uchuvchan bo'lmagan uzun CNT; // dozimetrdan uzilishlarni hisoblash uchun o'zgaruvchi

imzosiz uzoq hisoblar; // GM Tube hodisalari uchun o'zgaruvchi

imzosiz uzun kpm; // CPM uchun o'zgaruvchi

imzosiz int ko'paytmasi; // ushbu eskizda CPMni hisoblash uchun o'zgaruvchi

uzoq vaqt oldin imzolangan emas; // vaqtni o'lchash uchun o'zgaruvchi

imzosiz uzoq muddat; // vaqtni o'lchash uchun o'zgaruvchi

imzosiz uzun CPM; // CPMni o'lchash uchun o'zgaruvchi

// kutubxonani interfeys pinlari raqamlari bilan ishga tushiring

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

void setup () {// sozlash

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

kechikish (2000);

cleanDisplay ();

attachInterrupt (0, GetEvent, FALLING); // 2 -pindagi voqea

}

void loop () {

lcd.setCursor (0, 0); // LCD -da matn va CNT -ni chop eting

lcd.print ("CPM:");

lcd.setCursor (0, 1);

lcd.print ("CNT:");

lcd.setCursor (5, 1);

lcd.print (CNT);

if (millis ()> = dispPeriod + PERIOD) {// Agar bir daqiqa tugagan bo'lsa

cleanDisplay (); // LCD -ni tozalash

// CNT to'plangan voqealar haqida biror narsa qiling ….

lcd.setCursor (5, 0);

CPM = CNT;

lcd.print (CPM); // CPMni ko'rsatish

CNT = 0;

dispPeriod = millis ();

}

}

void GetEvent () {// Voqeani qurilmadan oling

CNT ++;

}

void cleanDisplay () {// LCD tartibini tozalash

lcd.clear ();

lcd.setCursor (0, 0);

lcd.setCursor (0, 0);

}

12 -qadam: fayllar

Ushbu fayllarni Arduino -ga yuklab oling va o'rnating.

Har bir.ino faylini bir xil nomdagi papkaga joylashtiring.

Tavsiya: