Spisu treści:
- Krok 1: Narzędzia i części
- Krok 2: Złóż swój licznik Geigera
- Krok 3: Testowanie elektryczne licznika Geigera
- Krok 4: Okablowanie
- Krok 5: Kod
- Krok 6: Serial.println a Serial.print
- Krok 7: Pomiar promieniowania tła J305
- Krok 8: Pomiar promieniowania czujnika dymu J305
- Krok 9: SBM-20
- Krok 10: Okablowanie licznika Geigera z wyświetlaczem LCD
- Krok 11: Licznik Geigera z wyświetlaczem LCD
- Krok 12: Pliki
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
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
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
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
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
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
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
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
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
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
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
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
// 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.