Sommario:

Contatore Geiger Arduino fai da te: 12 passaggi (con immagini)
Contatore Geiger Arduino fai da te: 12 passaggi (con immagini)

Video: Contatore Geiger Arduino fai da te: 12 passaggi (con immagini)

Video: Contatore Geiger Arduino fai da te: 12 passaggi (con immagini)
Video: Tachimetro Contagiri RPM Digitale con Arduino, LCD e Sensore Infrarosso o Fotocellula - Fai da Te 2024, Dicembre
Anonim
Contatore Geiger fai-da-te Arduino
Contatore Geiger fai-da-te Arduino
Contatore Geiger fai-da-te Arduino
Contatore Geiger fai-da-te Arduino

Quindi hai ordinato un contatore Geiger fai-da-te e vuoi collegarlo al tuo Arduino. Vai in linea e provi a duplicare il modo in cui altri hanno collegato il loro contatore Geiger ad Arduino solo per scoprire che qualcosa non va. Sebbene il tuo contatore Geiger sembri funzionare, nulla funziona come descritto nel fai-da-te che stai seguendo quando colleghi il tuo contatore Geiger al tuo Arduino.

In questo Instructable tratterò come risolvere alcuni di questi problemi.

Ricordare; assemblare e codificare Arduino un passo alla volta, se si va direttamente a un progetto finito e c'è un filo o una riga di codice persi, potrebbe volerci un'eternità per trovare il problema.

Passaggio 1: strumenti e parti

Strumenti e parti
Strumenti e parti

Scatola prototipo Ho usato una scatola di caramelle Ferrero Rocher.

Tagliere piccolo

LCD 16x2

Scheda Arduino ether un UNO o Nano

Resistenza da 220

Potente resistore regolabile da 10 kΩ.

Kit contatore Geiger fai da te

Cavi per ponticelli

Connettore o cablaggio della batteria

Oscilloscopio

Pinze a becchi fini

Cacciavite standard piccolo

Passaggio 2: assembla il tuo contatore Geiger

Assembla il tuo contatore Geiger
Assembla il tuo contatore Geiger

Qualsiasi danno al tuo tubo Geiger; e il tuo contatore Geiger non funzionerà, quindi usa la copertura protettiva in acrilico per evitare danni al tuo tubo Geiger.

Questo Instructable è su come ho riparato lo stesso contatore Geiger con un tubo Geiger rotto e ho montato la copertura acrilica protettiva per evitare rotture in futuro.

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

Passaggio 3: test elettrico del contatore Geiger

Test elettrico del contatore Geiger
Test elettrico del contatore Geiger
Test elettrico del contatore Geiger
Test elettrico del contatore Geiger
Test elettrico del contatore Geiger
Test elettrico del contatore Geiger

Utilizzare prima la giusta tensione per l'alimentazione; il cavo USB fornisce 5 volt CC direttamente dal computer, tuttavia il portabatterie 3 AA è per batterie alcaline da 1,5 volt che producono una tensione totale di 4,5 volt. Se utilizzi batterie NI-Cd o NI-MH ricaricabili da 1,2 volt, avrai bisogno di un portabatterie da 4 AA per una tensione totale di 4,8 volt. Se usi meno di 4,5 volt, il contatore Geiger potrebbe non funzionare come dovrebbe.

C'è pochissimo circuito sull'uscita dei contatori Geiger; quindi finché l'altoparlante emette un ticchettio e il LED lampeggia, dovresti ricevere un segnale sul pin VIN.

Per essere sicuri del segnale in uscita; collegare un oscilloscopio all'uscita collegando il lato positivo della sonda dell'oscilloscopio al VIN e il lato negativo della sonda dell'oscilloscopio a terra.

Piuttosto che aspettare solo la radiazione di fondo per attivare il contatore Geiger, ho usato americio-241 da una camera a ioni di rilevatori di fumo per aumentare le reazioni dei contatori Geiger. L'uscita del contatore Geiger è iniziata a +3 volt e scendeva a 0 volt ogni volta che il tubo Geiger reagiva alle particelle alfa e tornava a +3 volt un attimo dopo. Questo è il segnale che registrerai con Arduino.

Passaggio 4: cablaggio

Cablaggio
Cablaggio
Cablaggio
Cablaggio
Cablaggio
Cablaggio
Cablaggio
Cablaggio

Ci sono due modi per connettere il contatore Geiger ad Arduino e al tuo computer.

Collega il GND su Arduino al GND sul contatore Geiger.

Collega il 5V su Arduino al 5V sul contatore Geiger.

Collega il VIN del contatore Geiger al D2 di Arduino.

Con alimentazione indipendente collegata al contatore Geiger.

Collega il GND su Arduino al GND sul contatore Geiger.

Collega il VIN del contatore Geiger al D2 di Arduino.

Collega Arduino al tuo computer.

Passaggio 5: codice

Codice
Codice
Codice
Codice
Codice
Codice

Apri Arduino IDE e carica il codice.

// Questo schizzo conta il numero di impulsi al minuto.

// Collega il GND su Arduino al GND sul contatore Geiger.

// Collega il 5V su Arduino al 5V sul contatore Geiger.

// Collega il VIN sul contatore Geiger al D2 su Arduino.

conteggi lunghi senza segno; //variabile per eventi GM Tube

unsigned long precedenteMillis; //variabile per misurare il tempo

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

conta++;

}

#define LOG_PERIOD 60000 // tasso di conteggio

void setup() { //setup

conteggi = 0;

Serial.begin(9600);

pinMode(2, INGRESSO);

attachInterrupt(digitalPinToInterrupt(2), pulse, FALLING); //definire gli interrupt esterni

Serial.println("Contatore iniziale");

}

void loop() { // ciclo principale

unsigned long currentMillis = millis();

if (currentMillis - precedenteMillis > LOG_PERIOD) {

precedenteMillis = correnteMillis;

Serial.println(conteggi);

conteggi = 0;

}

}

In Strumenti seleziona Arduino o un'altra scheda che stai utilizzando.

In Strumenti selezionare la porta e Com

Carica il codice.

Una volta caricato il codice in Strumenti, seleziona Serial Monitor e osserva il funzionamento del contatore Geiger.

Cerca i difetti. L'unica cosa di questo codice è che è un po' noioso, devi aspettare 1 minuto per ogni conteggio.

Passaggio 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

Questo è uno dei primi glitch che ho trovato nel codice; quindi cercalo nel tuo codice, "Serial.println(cpm);" e "Serial.print(cpm);".

Serial.println(cpm); stamperà ogni conteggio sulla propria riga.

Serial.print(cpm); sembrerà un grande numero che stampa ogni conteggio sulla stessa riga rendendo impossibile dire quale sia il conteggio.

Passaggio 7: misurazione della radiazione di fondo J305

J305 Misurazione della radiazione di fondo
J305 Misurazione della radiazione di fondo
J305 Misurazione della radiazione di fondo
J305 Misurazione della radiazione di fondo

Il primo è la misurazione della radiazione di fondo, la radiazione naturale che già esiste naturalmente. Il numero elencato è il CPM (count per minute), che è un totale di particelle radioattive misurate ogni minuto.

Il conteggio medio di sfondo J305 era 15,6 CPM.

Passaggio 8: misurazione J305 della radiazione del sensore di fumo

J305 Misurazione della radiazione del sensore di fumo
J305 Misurazione della radiazione del sensore di fumo
J305 Misurazione della radiazione del sensore di fumo
J305 Misurazione della radiazione del sensore di fumo

Non è raro che un contatore Geiger ti dia ripetutamente lo stesso conteggio, quindi controllalo con una fonte di radiazioni. Ho usato la misurazione della radiazione da Americio una camera a ioni da un rilevatore di fumo. Il sensore di fumo utilizza l'americio come fonte di particelle alfa che ionizzano le particelle di fumo nell'aria. Ho rimosso il cappuccio metallico sul sensore in modo che le particelle alfa e beta possano raggiungere il tubo Geiger insieme alle particelle gamma.

Se tutto va bene i conti dovrebbero cambiare.

Americio-241 da un conteggio medio di una camera a ioni rivelatori di fumo era 519 CPM.

Passaggio 9: SBM-20

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

Questo sketch Arduino è una versione modificata scritta da Alex Boguslavsky.

Questo schizzo conta il numero di impulsi in 15 secondi e lo converte in conteggi al minuto, rendendolo meno noioso.

Codice che ho aggiunto “Serial.println("Contatore di inizio");”.

Codice che ho cambiato; “Serial.print(cpm);” a "Serial.println(cpm);".

“#define LOG_PERIOD 15000”; imposta il tempo di conteggio a 15 secondi, l'ho cambiato in "#define LOG_PERIOD 5000" o 5 secondi. Non ho trovato differenze apprezzabili nella media tra il conteggio per 1 minuto o 15 secondi e 5 secondi.

#includere

#define LOG_PERIOD 15000 //Periodo di registrazione in millisecondi, valore consigliato 15000-60000.

#define MAX_PERIOD 60000 //Periodo massimo di registrazione senza modificare questo schizzo

conteggi lunghi senza segno; //variabile per eventi GM Tube

cpm lungo senza segno; //variabile per CPM

moltiplicatore int senza segno; //variabile per il calcolo CPM in questo sketch

unsigned long precedenteMillis; //variabile per la misurazione del tempo

void tube_impulse(){ //sottoprocedura per l'acquisizione di eventi da Geiger Kit

conta++;

}

void setup(){ //setup sottoprocedura

conteggi = 0;

cpm = 0;

moltiplicatore = MAX_PERIOD / LOG_PERIOD; //calcolando il moltiplicatore, dipende dal tuo periodo di log

Serial.begin(9600);

attachInterrupt(0, tube_impulse, FALLING); //definire gli interrupt esterni

Serial.println("Contatore iniziale"); // codice che ho aggiunto

}

void loop(){ //ciclo principale

unsigned long currentMillis = millis();

if(Milliscorrenti -Millisprecedenti > LOG_PERIOD){

precedenteMillis = correnteMillis;

cpm = conta * moltiplicatore;

Serial.println(cpm); // codice che ho cambiato

conteggi = 0;

}

}

Il conteggio medio di sfondo SBM-20 era 23,4 CPM.

Passaggio 10: cablaggio del contatore Geiger con un LCD

Cablaggio del contatore Geiger con un LCD
Cablaggio del contatore Geiger con un LCD

Connessione LCD:

Pin LCD K a GND

LCD A pin a 220 resistore a Vcc

Pin LCD D7 a pin digitale 3

Pin LCD D6 a pin digitale 5

Pin LCD D5 a pin digitale 6

Pin LCD D4 a pin digitale 7

LCD Abilita pin al pin digitale 8

Pin LCD R/W a terra

Pin LCD RS a pin digitale 9

Pin LCD VO per la regolazione del pot da 10 kΩ

Pin LCD Vcc a Vcc

Pin LCD Vdd a GND

Potente resistore regolabile da 10 kΩ.

Vcc, Vo, Vdd

Contatore Geiger

VIN al pin digitale 2

da 5 V a +5 V

GND a terra

Passaggio 11: contatore Geiger con LCD

Contatore Geiger con LCD
Contatore Geiger con LCD
Contatore Geiger con LCD
Contatore Geiger con LCD
Contatore Geiger con LCD
Contatore Geiger con LCD

// includi il codice della libreria:

#includere

#includere

#define LOG_PERIOD 15000 //Periodo di registrazione in millisecondi, valore consigliato 15000-60000.

#define MAX_PERIOD 60000 //Periodo massimo di registrazione senza modificare questo schizzo

#define PERIOD 60000.0 // (60 sec) periodo di misura di un minuto

CNT lungo non firmato volatile; // variabile per il conteggio degli interrupt dal dosimetro

conteggi lunghi senza segno; //variabile per eventi GM Tube

cpm lungo senza segno; //variabile per CPM

moltiplicatore int senza segno; //variabile per il calcolo CPM in questo sketch

unsigned long precedenteMillis; //variabile per la misurazione del tempo

unsigned long dispPeriod; // variabile per misurare il tempo

CPM lungo senza segno; // variabile per la misurazione del CPM

// inizializza la libreria con i numeri dei pin dell'interfaccia

LCD a cristalli liquidi (9, 8, 7, 6, 5, 3);

void setup() { // setup

lcd.begin(16, 2);

CNT = 0;

CPM = 0;

dispPeriod = 0;

lcd.setCursor(0, 0);

lcd.print(" Elettronica RH ");

lcd.setCursor(0, 1);

lcd.print(" Contatore Geiger ");

ritardo (2000);

cleanDisplay();

attachInterrupt(0, GetEvent, FALLING); // Evento sul pin 2

}

ciclo vuoto() {

lcd.setCursor(0, 0); // stampa testo e CNT sull'LCD

lcd.print("CPM:");

lcd.setCursor(0, 1);

lcd.print("CNT:");

lcd.setCursor(5, 1);

lcd.print(CNT);

if (millis() >=dispPeriod + PERIOD) { // Se è trascorso un minuto

cleanDisplay(); // Cancella LCD

// Fai qualcosa per gli eventi CNT accumulati….

lcd.setCursor(5, 0);

CPM = CNT;

lcd.print(CPM); //Visualizza CPM

CNT = 0;

dispPeriod = millis();

}

}

void GetEvent(){ // Ottieni evento dal dispositivo

CNT++;

}

void cleanDisplay (){ // Cancella routine LCD

lcd.clear();

lcd.setCursor(0, 0);

lcd.setCursor(0, 0);

}

Passaggio 12: file

Scarica e installa questi file sul tuo Arduino.

Metti ogni file.ino in una cartella con lo stesso nome.

Consigliato: