Spisu treści:

Licznik Geigera Arduino DIY: 12 kroków (ze zdjęciami)
Licznik Geigera Arduino DIY: 12 kroków (ze zdjęciami)

Wideo: Licznik Geigera Arduino DIY: 12 kroków (ze zdjęciami)

Wideo: Licznik Geigera Arduino DIY: 12 kroków (ze zdjęciami)
Wideo: Jak działają akcelerometry? [RS Elektronika] #217 2024, Lipiec
Anonim
Arduino DIY Licznik Geigera
Arduino DIY Licznik Geigera
Arduino DIY Licznik Geigera
Arduino DIY Licznik Geigera

Zamówiłeś więc licznik Geigera DIY i chcesz go podłączyć do Arduino. Wchodzisz do sieci i próbujesz powielić sposób, w jaki inni podłączyli swój licznik Geigera do Arduino, tylko po to, aby znaleźć coś nie tak. Chociaż twój licznik Geigera wydaje się działać, nic nie działa tak, jak opisano w majsterkowaniu, które śledzisz, gdy podłączasz licznik Geigera do Arduino.

W tej instrukcji opiszę, jak rozwiązywać niektóre z tych usterek.

Pamiętać; złóż i zakoduj Arduino krok po kroku, jeśli przejdziesz od razu do ukończonego projektu i zostanie pominięty przewód lub linia kodu, znalezienie problemu może zająć Ci wieki.

Krok 1: Narzędzia i części

Narzędzia i części
Narzędzia i części

Pudełko prototypowe Użyłem pudełka na cukierki Ferrero Rocher.

Mała płytka do krojenia chleba

Wyświetlacz LCD 16x2

Eter płytki Arduino a UNO lub Nano

Rezystor 220 Ω

Potencjometr regulowany rezystor 10 kΩ.

DIY zestaw licznika Geigera

Przewody połączeniowe

Złącze akumulatora lub wiązka

Oscyloskop

Szczypce z cienkimi końcówkami

Mały standardowy śrubokręt

Krok 2: Złóż swój licznik Geigera

Złóż swój licznik Geigera
Złóż swój licznik Geigera

Wszelkie uszkodzenia rury Geigera; a twój licznik Geigera nie będzie działał, więc użyj ochronnej akrylowej osłony, aby zapobiec uszkodzeniu rury Geigera.

Ten Instruktaż dotyczy tego, jak naprawiłem ten sam licznik Geigera z uszkodzoną rurką Geigera i założyłem ochronną akrylową osłonę, aby zapobiec pęknięciu w przyszłości.

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

Krok 3: Testowanie elektryczne licznika Geigera

Elektryczne testowanie licznika Geigera
Elektryczne testowanie licznika Geigera
Elektryczne testowanie licznika Geigera
Elektryczne testowanie licznika Geigera
Elektryczne testowanie licznika Geigera
Elektryczne testowanie licznika Geigera

Najpierw użyj odpowiedniego napięcia do zasilania; przewód USB dostarcza 5 V prądu stałego bezpośrednio z komputera, jednak uchwyt na 3 baterie AA jest przeznaczony na 1,5 V baterie alkaliczne, co daje całkowite napięcie 4,5 V. Jeśli używasz 1,2 V akumulatorów NI-Cd lub NI-MH, będziesz potrzebować uchwytu na 4 baterie AA dla całkowitego napięcia 4,8 V. Jeśli używasz mniej niż 4,5 V, licznik Geigera może nie działać tak, jak powinien.

Na wyjściu liczników Geigera jest bardzo mało obwodów; więc tak długo, jak głośnik wydaje tykanie, a dioda miga, powinieneś otrzymać sygnał na pinie VIN.

Aby być pewnym sygnału wyjściowego; podłączyć oscyloskop do wyjścia podłączając dodatnią stronę sondy oscyloskopowej do VIN i ujemną stronę sondy oscyloskopowej do masy.

Zamiast czekać na promieniowanie tła wyzwalające licznik Geigera, użyłem ameryku-241 z komory jonowej detektorów dymu, aby zwiększyć reakcje liczników Geigera. Wyjście licznika Geigera zaczynało się od +3 woltów i spadało do 0 woltów za każdym razem, gdy rurka Geigera reagowała na cząstki alfa i po chwili powracała do +3 woltów. To jest sygnał, który będziesz nagrywać za pomocą Arduino.

Krok 4: Okablowanie

Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie

Istnieją dwa sposoby podłączenia licznika Geigera do Arduino i komputera.

Podłącz GND na Arduino do GND na liczniku Geigera.

Podłącz 5V na Arduino do 5V na liczniku Geigera.

Podłącz VIN na liczniku Geigera do D2 na Arduino.

Z niezależnym zasilaniem podłączonym do licznika Geigera.

Podłącz GND na Arduino do GND na liczniku Geigera.

Podłącz VIN na liczniku Geigera do D2 na Arduino.

Podłącz Arduino do komputera.

Krok 5: Kod

Kod
Kod
Kod
Kod
Kod
Kod

Otwórz Arduino IDE i załaduj kod.

// Ten szkic zlicza liczbę impulsów na minutę.

// Połącz GND na Arduino z GND na liczniku Geigera.

// Podłącz 5V na Arduino do 5V na liczniku Geigera.

// Podłącz VIN licznika Geigera do D2 na Arduino.

długie liczenia bez znaku; //zmienna dla wydarzeń GM Tube

bez znaku długi poprzedni Millis; //zmienna do pomiaru czasu

void impulse() { // dipanggil setiap ada sinyal SPADAJĄCE di pin 2

liczy++;

}

#define LOG_PERIOD 60000 // szybkość zliczania

void setup() { //setup

liczba = 0;

Serial.początek(9600);

pinMode(2, WEJŚCIE);

attachInterrupt(digitalPinToInterrupt(2), impuls, FALLING); //zdefiniuj zewnętrzne przerwania

Serial.println("Licznik startowy");

}

void loop() { //cykl główny

unsigned long currentMillis = millis();

if (currentMillis - previousMillis > LOG_PERIOD) {

poprzedni Millis = obecny Millis;

Serial.println(liczba);

liczba = 0;

}

}

W Narzędziach wybierz Arduino lub inną używaną płytkę.

W Narzędziach wybierz Port i Com

Prześlij kod.

Po przesłaniu kodu w Narzędziach wybierz Monitor seryjny i obserwuj działanie licznika Geigera.

Szukaj usterek. Jedyną rzeczą w tym kodzie jest to, że jest trochę nużący, musisz odczekać 1 minutę na każde zliczenie.

Krok 6: Serial.println a Serial.print

Serial.println a Serial.print
Serial.println a Serial.print
Serial.println a Serial.print
Serial.println a Serial.print

To jedna z pierwszych usterek, jakie znalazłem w kodzie; więc uważaj na to w swoim kodzie, „Serial.println(cpm);” i „Druk.seryjny(cpm);”.

Serial.println(cpm); wydrukuje każdą liczbę w osobnym wierszu.

Serial.print(cpm); będzie wyglądać jak jedna duża liczba drukująca każdą liczbę w tym samym wierszu, co uniemożliwia określenie, jaka jest liczba.

Krok 7: Pomiar promieniowania tła J305

Pomiar promieniowania tła J305
Pomiar promieniowania tła J305
Pomiar promieniowania tła J305
Pomiar promieniowania tła J305

Pierwszym z nich jest pomiar promieniowania tła, naturalnego promieniowania, które już istnieje w naturze. Podana liczba to CPM (liczba na minutę), która jest sumą zmierzonych cząstek radioaktywnych co minutę.

Średnia liczba w tle J305 wynosiła 15,6 CPM.

Krok 8: Pomiar promieniowania czujnika dymu J305

J305 Pomiar promieniowania czujnika dymu
J305 Pomiar promieniowania czujnika dymu
J305 Pomiar promieniowania czujnika dymu
J305 Pomiar promieniowania czujnika dymu

Często zdarza się, że licznik Geigera podaje tę samą liczbę wielokrotnie, więc sprawdź to za pomocą źródła promieniowania. Użyłem pomiaru promieniowania z Americium i komory jonowej z detektora dymu. Czujnik dymu wykorzystuje Americium jako źródło cząsteczek alfa, które jonizują cząsteczki dymu w powietrzu. Zdjąłem metalową nasadkę czujnika, aby cząstki alfa i beta mogły dostać się do rurki Geigera wraz z cząstkami gamma.

Jeśli wszystko jest w porządku, liczby powinny się zmienić.

Americium-241 z komory jonizacyjnej detektorów dymu wyniosła 519 CPM.

Krok 9: SBM-20

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

Ten szkic Arduino jest zmodyfikowaną wersją napisaną przez Alexa Boguslavsky'ego.

Ten szkic zlicza liczbę impulsów w ciągu 15 sekund i konwertuje ją na liczbę na minutę, dzięki czemu jest mniej nużący.

Dodałem kod „Serial.println("Licznik startowy");”.

Kod zmieniłem; „Druk.seryjny(cpm);” do „Serial.println(cpm);”.

„#zdefiniuj OKRES_DZIENNIKA 15000”; ustawia czas odliczania na 15 sekund, zmieniłem go na „#define LOG_PERIOD 5000” lub 5 sekund. Nie znalazłem żadnej znaczącej różnicy w średniej między liczeniem przez 1 minutę lub 15 sekund i 5 sekund.

#włączać

#define LOG_PERIOD 15000 //Okres logowania w milisekundach, zalecana wartość 15000-60000.

#define MAX_PERIOD 60000 //Maksymalny okres rejestrowania bez modyfikowania tego szkicu

długie liczenia bez znaku; //zmienna dla wydarzeń GM Tube

bez znaku długi CPM; //zmienna dla CPM

mnożnik bez znaku; //zmienna do obliczania CPM w tym szkicu

bez znaku długi poprzedni Millis; //zmienna do pomiaru czasu

void tube_impulse(){ //podprocedura przechwytywania zdarzeń z Geiger Kit

liczy++;

}

void setup(){ //konfiguracja podprocedury

liczba = 0;

cpm = 0;

mnożnik = MAX_OKRES / LOG_OKRES; //obliczanie mnożnika, zależne od okresu logowania

Serial.początek(9600);

attachInterrupt(0, tube_impulse, FALLING); //zdefiniuj zewnętrzne przerwania

Serial.println("Licznik startowy"); // kod, który dodałem

}

void loop(){ //cykl główny

unsigned long currentMillis = millis();

if(currentMillis - previousMillis > LOG_PERIOD){

poprzedni Millis = obecny Millis;

cpm = liczba * mnożnik;

Serial.println(cpm); // kod zmieniłem

liczba = 0;

}

}

Średnia liczba tła SBM-20 wyniosła 23,4 CPM.

Krok 10: Okablowanie licznika Geigera z wyświetlaczem LCD

Okablowanie licznika Geigera z wyświetlaczem LCD
Okablowanie licznika Geigera z wyświetlaczem LCD

Połączenie LCD:

LCD K pin do GND

LCD A pin do rezystora 220 Ω do Vcc

Pin LCD D7 do pinu cyfrowego 3

Pin LCD D6 do pinu cyfrowego 5

Pin LCD D5 do pinu cyfrowego 6

Pin LCD D4 do pinu cyfrowego 7

LCD Włącz pin do cyfrowego pinu 8

Pin LCD R/W do uziemienia

LCD RS pin do cyfrowego pinu 9

Pin LCD VO do regulacji potencjometru 10 kΩ

LCD Vcc pin do Vcc

LCD Vdd pin do GND

Potencjometr regulowany rezystor 10 kΩ.

Vcc, Vo, Vdd

Licznik Geigera

VIN do pinu cyfrowego 2

5 V do +5 V

GND do ziemi

Krok 11: Licznik Geigera z wyświetlaczem LCD

Licznik Geigera z LCD
Licznik Geigera z LCD
Licznik Geigera z LCD
Licznik Geigera z LCD
Licznik Geigera z LCD
Licznik Geigera z LCD

// dołącz kod biblioteki:

#włączać

#włączać

#define LOG_PERIOD 15000 //Okres logowania w milisekundach, zalecana wartość 15000-60000.

#define MAX_PERIOD 60000 //Maksymalny okres rejestrowania bez modyfikowania tego szkicu

#define PERIOD 60000.0 // (60 s) jednominutowy okres pomiaru

lotne długie CNT bez znaku; // zmienna do zliczania przerwań z dozymetru

długie liczenia bez znaku; //zmienna dla wydarzeń GM Tube

bez znaku długi CPM; //zmienna dla CPM

mnożnik bez znaku; //zmienna do obliczania CPM w tym szkicu

bez znaku długi poprzedni Millis; //zmienna do pomiaru czasu

unsigned long dispPeriod; // zmienna do pomiaru czasu

długi CPM bez znaku; // zmienna do pomiaru CPM

// zainicjuj bibliotekę numerami pinów interfejsu

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

void setup() { // setup

lcd.początek(16, 2);

CNT = 0;

CPM = 0;

dispPeriod = 0;

lcd.setCursor(0, 0);

lcd.print(" RH Electronics ");

lcd.setCursor(0, 1);

lcd.print("Licznik Geigera");

opóźnienie (2000);

czystyWyświetlacz();

attachInterrupt(0, GetEvent, Opadające); // Zdarzenie na pinie 2

}

pusta pętla () {

lcd.setCursor(0, 0); // drukuj tekst i CNT na LCD

lcd.print("CPM:");

lcd.setCursor(0, 1);

lcd.print("CNT:");

lcd.setCursor(5, 1);

lcd.print(CNT);

if (millis() >=dispPeriod + PERIOD) { // Jeśli jedna minuta się skończyła

czystyWyświetlacz(); // Wyczyść LCD

// Zrób coś z nagromadzonymi wydarzeniami CNT….

lcd.setCursor(5, 0);

CPM = CNT;

lcd.print(CPM); //CPM w sieci reklamowej

CNT = 0;

dispPeriod = mili();

}

}

void GetEvent(){ // Pobierz zdarzenie z urządzenia

CNT++;

}

void cleanDisplay (){ // Wyczyść procedurę LCD

lcd.clear();

lcd.setCursor(0, 0);

lcd.setCursor(0, 0);

}

Krok 12: Pliki

Pobierz i zainstaluj te pliki na swoim Arduino.

Umieść każdy plik.ino w folderze o tej samej nazwie.

Zalecana: