İçindekiler:

Arduino DIY Geiger Sayacı: 12 Adım (Resimlerle)
Arduino DIY Geiger Sayacı: 12 Adım (Resimlerle)

Video: Arduino DIY Geiger Sayacı: 12 Adım (Resimlerle)

Video: Arduino DIY Geiger Sayacı: 12 Adım (Resimlerle)
Video: Scentroid's CTAir Continuous Urban Air Quality Monitor Seminar A 12.08.2020 (Subtitled) 2024, Kasım
Anonim
Arduino DIY Geiger Sayacı
Arduino DIY Geiger Sayacı
Arduino DIY Geiger Sayacı
Arduino DIY Geiger Sayacı

Yani bir DIY Geiger sayacı sipariş ettiniz ve onu Arduino'nuza bağlamak istiyorsunuz. Hatta bir şeylerin yanlış olduğunu bulmak için diğerlerinin Geiger sayaçlarını Arduino'ya nasıl bağladığını kopyalamaya çalışıyorsunuz. Geiger sayacınız çalışmıyor gibi görünse de, Geiger sayacınızı Arduino'nuza bağladığınızda takip ettiğiniz DIY'de açıklandığı gibi hiçbir şey çalışmıyor.

Bu Eğitilebilir Kitapta, bu aksaklıklardan bazılarının nasıl giderileceğini ele alacağım.

Unutma; Arduino'yu her seferinde bir adım bir araya getirin ve kodlayın, doğrudan bitmiş bir projeye giderseniz ve cevapsız bir kablo veya kod satırı varsa, sorunu bulmanız sonsuza kadar sürebilir.

Adım 1: Araçlar ve Parçalar

Araçlar ve Parçalar
Araçlar ve Parçalar

Prototip kutusu Ferrero Rocher şeker kutusu kullandım.

Küçük ekmek tahtası

16x2 LCD

Arduino kurulu ether bir UNO veya Nano

220 Ω direnç

Pot 10 kΩ ayarlanabilir direnç.

DIY Geiger Sayaç Kiti

Jumper Telleri

Pil konektörü veya kablo demeti

Osiloskop

İnce Burunlu Pense

Küçük Standart Tornavida

Adım 2: Geiger Sayacınızı Birleştirin

Geiger Sayacınızı Birleştirin
Geiger Sayacınızı Birleştirin

Geiger Tüpünüzdeki herhangi bir hasar; ve Geiger sayacınız çalışmayacaktır, bu nedenle Geiger tüpünüzün hasar görmesini önlemek için koruyucu akrilik kapağı kullanın.

Bu Talimat, aynı Geiger sayacını kırık bir Geiger tüpüyle nasıl tamir ettiğimi ve gelecekte kırılmayı önlemek için koruyucu akrilik kapağı nasıl taktığımı anlatıyor.

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

Adım 3: Geiger Sayacının Elektriksel Olarak Test Edilmesi

Geiger Sayacının Elektriksel Olarak Test Edilmesi
Geiger Sayacının Elektriksel Olarak Test Edilmesi
Geiger Sayacının Elektriksel Olarak Test Edilmesi
Geiger Sayacının Elektriksel Olarak Test Edilmesi
Geiger Sayacının Elektriksel Olarak Test Edilmesi
Geiger Sayacının Elektriksel Olarak Test Edilmesi

Önce güç kaynağı için doğru voltajı kullanın; USB kablosu, doğrudan bilgisayarınızdan 5 volt DC sağlar, ancak 3 AA pil tutucu, toplam voltajı 4,5 volt olan 1,5 volt alkalin piller içindir. 1,2 voltluk şarj edilebilir NI-Cd veya NI-MH piller kullanıyorsanız, toplam 4,8 volt voltaj için 4 AA pil tutucuya ihtiyacınız olacaktır. 4.5 volttan daha az kullanırsanız, Geiger sayacı gerektiği gibi çalışmayabilir.

Geiger sayaçlarının çıkışında çok az devre vardır; hoparlör bir tık sesi çıkardığı ve LED yanıp söndüğü sürece, VIN pininde bir sinyal almalısınız.

Çıkış sinyalinden emin olmak için; osiloskop probunun pozitif tarafını VIN'e ve osiloskop probunun negatif tarafını toprağa bağlayarak çıkışa bir osiloskop bağlayın.

Geiger sayacını tetiklemek için sadece arka plan radyasyonunu beklemek yerine, Geiger sayacı reaksiyonlarını artırmak için bir duman dedektörü iyon odasından americium-241 kullandım. Geiger sayacının çıkışı +3 voltta başladı ve Geiger tüpü alfa parçacıklarına her tepki verdiğinde 0 volta düştü ve bir an sonra +3 volta geri döndü. Arduino ile kaydedeceğiniz sinyal budur.

Adım 4: Kablolama

kablolama
kablolama
kablolama
kablolama
kablolama
kablolama
kablolama
kablolama

Geiger sayacını size Arduino ve bilgisayarınıza bağlamanın iki yolu vardır.

Arduino üzerindeki GND'yi Geiger sayacındaki GND'ye bağlayın.

Arduino'daki 5V'yi Geiger sayacındaki 5V'ye bağlayın.

Geiger sayacındaki VIN'i Arduino'daki D2'ye bağlayın.

Geiger sayacına bağlı bağımsız güç ile.

Arduino üzerindeki GND'yi Geiger sayacındaki GND'ye bağlayın.

Geiger sayacındaki VIN'i Arduino'daki D2'ye bağlayın.

Arduino'yu bilgisayarınıza bağlayın.

Adım 5: Kod

kod
kod
kod
kod
kod
kod

Arduino IDE'yi açın ve kodu yükleyin.

// Bu Çizim bir dakikadaki darbe sayısını sayar.

// Arduino üzerindeki GND'yi Geiger sayacındaki GND'ye bağlayın.

// Arduino'daki 5V'yi Geiger sayacındaki 5V'ye bağlayın.

// Geiger sayacındaki VIN'i Arduino'daki D2'ye bağlayın.

imzasız uzun sayımlar; //GM Tube olayları için değişken

imzasız uzun öncekiMillis; //zamanı ölçmek için değişken

void dürtü() { // dipanggil setiap ada sinyalleri FALLING di pin 2

sayar++;

}

#define LOG_PERIOD 60000 // sayım oranı

geçersiz kurulum() {//kurulum

sayım = 0;

Seri.başla(9600);

pinMode(2, GİRİŞ);

ataşeKesme(dijitalPinToInterrupt(2), dürtü, DÜŞÜYOR); //harici kesmeleri tanımla

Serial.println("Sayacı başlat");

}

void loop() { //ana döngü

imzasız uzun akımMillis = millis();

if (currentMillis - öncekiMillis > LOG_PERIOD) {

öncekiMillis = şimdikiMillis;

Serial.println(sayımlar);

sayım = 0;

}

}

Araçlar'da, kullandığınız Arduino'yu veya diğer kartı seçin.

Araçlar'da Bağlantı Noktasını ve Com'u seçin

Kodu yükleyin.

Kod Araçlar'a yüklendikten sonra Seri Monitör'ü seçin ve Geiger sayacınızın çalışmasını izleyin.

Hataları arayın. Bu kodla ilgili tek şey biraz sıkıcı olması, her sayı için 1 dakika beklemeniz gerekiyor.

Adım 6: Serial.println ve Serial.print

Serial.println ve Serial.print
Serial.println ve Serial.print
Serial.println ve Serial.print
Serial.println ve Serial.print

Bu, kodda bulduğum ilk hatalardan biri; bu yüzden “Serial.println(cpm);” kodunuzda buna dikkat edin. ve “Serial.print(cpm);”.

Seri.println(cpm); her sayımı kendi satırına yazdıracaktır.

Seri.baskı(cpm); her sayımı aynı satıra yazdıran büyük bir sayı gibi görünecek ve bu sayının ne olduğunu söylemeyi imkansız hale getirecektir.

Adım 7: J305 Arka Plan Radyasyonu Ölçümü

J305 Arka Plan Radyasyon Ölçümü
J305 Arka Plan Radyasyon Ölçümü
J305 Arka Plan Radyasyon Ölçümü
J305 Arka Plan Radyasyon Ölçümü

Birincisi, zaten doğal olarak var olan doğal radyasyon olan arka plan radyasyonunun ölçümüdür. Listelenen sayı, her dakika ölçülen radyoaktif parçacıkların toplamı olan CPM'dir (dakika başına sayı).

J305 arka plan ortalama sayısı 15.6 BGBM idi.

Adım 8: J305 Duman Sensörü Radyasyonunun Ölçümü

J305 Duman Sensörü Radyasyonunun Ölçümü
J305 Duman Sensörü Radyasyonunun Ölçümü
J305 Duman Sensörü Radyasyonunun Ölçümü
J305 Duman Sensörü Radyasyonunun Ölçümü

Bir Geiger sayacının size tekrar tekrar aynı sayımı vermesi nadir değildir, bu nedenle bir radyasyon kaynağı ile kontrol edin. Americium'dan radyasyon ölçümünü bir duman dedektöründen gelen iyon odasını kullandım. Duman sensörü, havadaki duman parçacıklarını iyonize eden alfa parçacıkları kaynağı olarak Americium'u kullanır. Alfa ve beta parçacıklarının gama parçacıklarıyla birlikte Geiger tüpüne ulaşabilmesi için sensör üzerindeki metal kapağı çıkardım.

Her şey yolundaysa, sayılar değişmeli.

Bir duman dedektöründen alınan Americium-241 iyon odası ortalama sayısı 519 CPM idi.

Adım 9: SBM-20

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

Bu Arduino taslağı, Alex Boguslavsky tarafından yazılmış değiştirilmiş versiyondur.

Bu Sketch, 15 saniyede darbe sayısını sayar ve onu daha az sıkıcı hale getirmek için dakika başına sayıma dönüştürür.

Eklediğim kod “Serial.println("Sayacı başlat");”.

Değiştirdiğim kod; "Seri.baskı(cpm);" “Serial.println(cpm);”ye.

“#define LOG_PERIOD 15000”; sayma süresini 15 saniye olarak ayarladım, “#define LOG_PERIOD 5000” veya 5 saniye olarak değiştirdim. 1 dakika veya 15 saniye ile 5 saniye arasında ortalamada kayda değer bir fark bulamadım.

#Dahil etmek

#define LOG_PERIOD 15000 //Milisaniye cinsinden kayıt süresi, önerilen değer 15000-60000.

#define MAX_PERIOD 60000 //Bu çizimi değiştirmeden maksimum kayıt süresi

imzasız uzun sayımlar; //GM Tube olayları için değişken

imzasız uzun cpm; // BGBM değişkeni

imzasız int çarpanı; //bu çizimde hesaplama BGBM'si için değişken

imzasız uzun öncekiMillis; //zaman ölçümü için değişken

void tube_impulse(){ //Geiger Kit'ten olayları yakalamak için alt prosedür

sayar++;

}

void setup(){ //setup alt prosedürü

sayım = 0;

bpm = 0;

çarpan = MAX_PERIOD / LOG_PERIOD; // çarpan hesaplanıyor, günlük periyodunuza bağlı

Seri.başla(9600);

ataşeKesme(0, tube_impulse, DÜŞEN); //harici kesmeleri tanımla

Serial.println("Sayacı başlat"); // eklediğim kod

}

void loop(){ //ana döngü

imzasız uzun akımMillis = millis();

if(currentMillis - öncekiMillis > LOG_PERIOD){

öncekiMillis = şimdikiMillis;

cpm = sayar * çarpan;

Seri.println(cpm); // değiştirdiğim kod

sayım = 0;

}

}

SBM-20 arka plan ortalama sayısı 23.4 BGBM idi.

Adım 10: Geiger Sayacının LCD İle Kablolanması

Geiger Sayacının LCD İle Kablolanması
Geiger Sayacının LCD İle Kablolanması

LCD Bağlantısı:

LCD K pinini GND'ye

LCD A pininden 220 Ω dirençten Vcc'ye

LCD D7 pininden dijital pin 3'e

LCD D6 pininden dijital pin 5'e

LCD D5 pininden dijital pin 6'ya

LCD D4 pininden dijital pin 7'ye

LCD Etkinleştirme pini dijital pin 8'e

LCD R/W pimi toprağa

LCD RS pininden dijital pin 9'a

10 kΩ potu ayarlamak için LCD VO pimi

LCD Vcc pinini Vcc'ye

GND'ye LCD Vdd pini

Pot 10 kΩ ayarlanabilir direnç.

Vcc, Vo, Vdd

Gayger sayacı

VIN'den dijital pin 2'ye

5 V ila + 5 V

GND toprağa

Adım 11: LCD'li Geiger Sayacı

LCD'li Geiger Sayacı
LCD'li Geiger Sayacı
LCD'li Geiger Sayacı
LCD'li Geiger Sayacı
LCD'li Geiger Sayacı
LCD'li Geiger Sayacı

// kitaplık kodunu dahil et:

#Dahil etmek

#Dahil etmek

#define LOG_PERIOD 15000 //Milisaniye cinsinden kayıt süresi, önerilen değer 15000-60000.

#define MAX_PERIOD 60000 //Bu çizimi değiştirmeden maksimum kayıt süresi

#define PERIOD 60000.0 // (60 sn) bir dakikalık ölçüm periyodu

uçucu işaretsiz uzun CNT; // dozimetreden gelen kesintileri saymak için değişken

imzasız uzun sayımlar; //GM Tube olayları için değişken

imzasız uzun cpm; // BGBM değişkeni

imzasız int çarpanı; //bu çizimde hesaplama BGBM'si için değişken

imzasız uzun öncekiMillis; //zaman ölçümü için değişken

imzasız uzun dispPeriod; // zamanı ölçmek için değişken

imzasız uzun BGBM; // BGBM'yi ölçmek için değişken

// kütüphaneyi arayüz pinlerinin numaralarıyla başlat

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

geçersiz kurulum() { // kurulum

lcd.begin(16, 2);

CNT = 0;

BGBM = 0;

dispPeriod = 0;

lcd.setCursor(0, 0);

lcd.print("RH Elektronik");

lcd.setCursor(0, 1);

lcd.print("Geiger Sayacı");

gecikme(2000);

cleanDisplay();

ekInterrupt(0, GetEvent, DÜŞEN); // Pin 2'deki olay

}

boşluk döngüsü () {

lcd.setCursor(0, 0); // LCD'ye metin ve CNT yazdır

lcd.print("BGBM:");

lcd.setCursor(0, 1);

lcd.print("CNT:");

lcd.setCursor(5, 1);

lcd.print(CNT);

if (millis() >=dispPeriod + PERIOD) { // Bir dakika biterse

cleanDisplay(); // LCD'yi temizle

// Birikmiş CNT olayları hakkında bir şeyler yapın….

lcd.setCursor(5, 0);

BGBM = CNT;

lcd.print(BGBM); //Görüntülenen BGBM

CNT = 0;

dispPeriod = millis();

}

}

void GetEvent(){ // Cihazdan Olay Al

CNT++;

}

void cleanDisplay (){ // LCD rutinini temizle

lcd.clear();

lcd.setCursor(0, 0);

lcd.setCursor(0, 0);

}

Adım 12: Dosyalar

Bu dosyaları Arduino'nuza indirin ve kurun.

Her.ino dosyasını aynı ada sahip bir klasöre yerleştirin.

Önerilen: