Tabla de contenido:
- Paso 1: herramientas y piezas
- Paso 2: arma tu contador Geiger
- Paso 3: Prueba eléctrica del contador Geiger
- Paso 4: cableado
- Paso 5: Código
- Paso 6: Serial.println Vs Serial.print
- Paso 7: Medición de radiación de fondo J305
- Paso 8: Medición J305 de la radiación del sensor de humo
- Paso 9: SBM-20
- Paso 10: Cableado del contador Geiger con una pantalla LCD
- Paso 11: Contador Geiger con LCD
- Paso 12: Archivos
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Entonces ha pedido un contador Geiger de bricolaje y desea conectarlo a su Arduino. Te conectas e intentas duplicar cómo otros han conectado su contador Geiger a Arduino solo para descubrir que algo anda mal. Aunque su contador Geiger parece funcionar, nada funciona como se describe en el bricolaje que está siguiendo cuando conecta su contador Geiger a su Arduino.
En este Instructable, cubriré cómo solucionar algunos de estos problemas técnicos.
Recordar; ensamble y codifique Arduino paso a paso, si va directamente a un proyecto terminado y hay un cable o línea de código perdido, podría llevarle una eternidad encontrar el problema.
Paso 1: herramientas y piezas
Caja de prototipo Usé una caja de dulces Ferrero Rocher.
Placa de pruebas pequeña
LCD de 16x2
Placa arduino ether a UNO o Nano
Resistencia de 220 Ω
Resistencia Pot 10 kΩ ajustable.
Kit de contador Geiger de bricolaje
Cables de puente
Conector o arnés de batería
Osciloscopio
Alicates de punta fina
Destornillador estándar pequeño
Paso 2: arma tu contador Geiger
Cualquier daño a su tubo Geiger; y su contador Geiger no funcionará, así que use la cubierta acrílica protectora para evitar daños a su tubo Geiger.
Este Instructable trata sobre cómo reparé el mismo contador Geiger con un tubo Geiger roto y coloqué la cubierta acrílica protectora para evitar roturas en el futuro.
www.instructables.com/id/Repairing-a-DIY-G…
Paso 3: Prueba eléctrica del contador Geiger
Primero use el voltaje correcto para la fuente de alimentación; el cable USB suministra 5 voltios CC directamente desde su computadora, sin embargo, el soporte de 3 pilas AA es para pilas alcalinas de 1,5 voltios, lo que hace un voltaje total de 4,5 voltios. Si usa baterías NI-Cd o NI-MH recargables de 1.2 voltios, necesitará un soporte de batería 4 AA para un voltaje total de 4.8 voltios. Si usa menos de 4.5 voltios, es posible que el contador Geiger no funcione como debería.
Hay muy pocos circuitos en la salida de los contadores Geiger; de modo que siempre que el altavoz emita un sonido de tictac y el LED parpadee, debería recibir una señal en el pin VIN.
Para estar seguro de la señal de salida; conecte un osciloscopio a la salida conectando el lado positivo de la sonda del osciloscopio al VIN y el lado negativo de la sonda del osciloscopio al suelo.
En lugar de esperar a que la radiación de fondo active el contador Geiger, utilicé americio-241 de una cámara de iones de detectores de humo para aumentar las reacciones de los contadores Geiger. La salida del contador Geiger comenzó a +3 voltios y cayó a 0 voltios cada vez que el tubo Geiger reaccionaba a las partículas alfa y volvía a +3 voltios un momento después. Esta es la señal que grabará con Arduino.
Paso 4: cableado
Hay dos formas de conectar el contador Geiger a tu Arduino y a tu computadora.
Conecte el GND en Arduino al GND en el contador Geiger.
Conecte el 5V en Arduino al 5V en el contador Geiger.
Conecte el VIN en el contador Geiger al D2 en Arduino.
Con alimentación independiente conectada al contador Geiger.
Conecte el GND en Arduino al GND en el contador Geiger.
Conecte el VIN en el contador Geiger al D2 en Arduino.
Conecta Arduino a tu computadora.
Paso 5: Código
Abra Arduino IDE y cargue el código.
// Este Sketch cuenta el número de pulsos por minuto.
// Conecte el GND en Arduino al GND en el contador Geiger.
// Conecte el 5V en Arduino al 5V en el contador Geiger.
// Conecte el VIN en el contador Geiger al D2 en Arduino.
cuentas largas sin firmar; // variable para eventos de GM Tube
unsigned long previousMillis; // variable para medir el tiempo
impulso vacío () {// dipanggil setiap ada sinyal FALLING di pin 2
cuenta ++;
}
#define LOG_PERIOD 60000 // tasa de recuento
configuración vacía () {// configuración
cuenta = 0;
Serial.begin (9600);
pinMode (2, ENTRADA);
attachInterrupt (digitalPinToInterrupt (2), impulso, FALLING); // definir interrupciones externas
Serial.println ("Contador de inicio");
}
bucle vacío () {// ciclo principal
currentMillis largo sin firmar = millis ();
if (currentMillis - previousMillis> LOG_PERIOD) {
previousMillis = currentMillis;
Serial.println (recuentos);
cuenta = 0;
}
}
En Herramientas, seleccione el Arduino u otra placa que esté utilizando.
En Herramientas, seleccione el Puerto y Com
Sube el código.
Una vez que se cargue el código en Herramientas, seleccione Monitor de serie y observe cómo funciona su contador Geiger.
Busque fallas. Lo único de este código es que es un poco tedioso, debes esperar 1 minuto para cada conteo.
Paso 6: Serial.println Vs Serial.print
Este es uno de los primeros fallos que encontré en el código; así que búsquelo en su código, "Serial.println (cpm);" y “Serial.print (cpm);”.
Serial.println (cpm); imprimirá cada recuento en su propia línea.
Serial.print (cpm); se verá como un número grande imprimiendo cada conteo en la misma línea, lo que hace imposible saber cuál es el conteo.
Paso 7: Medición de radiación de fondo J305
Primero está la medición de la radiación de fondo, la radiación natural que ya existe de forma natural. El número indicado es el CPM (recuento por minuto), que es un total de partículas radiactivas medidas cada minuto.
El recuento promedio de fondo de J305 fue de 15,6 CPM.
Paso 8: Medición J305 de la radiación del sensor de humo
No es raro que un contador Geiger le dé el mismo recuento repetidamente, así que verifíquelo con una fuente de radiación. Usé la medición de radiación de Americium en una cámara de iones de un detector de humo. El sensor de humo utiliza americio como fuente de partículas alfa que ionizan las partículas de humo en el aire. Quité la tapa de metal del sensor para que las partículas alfa y beta pudieran llegar al tubo Geiger junto con las partículas gamma.
Si todo está bien, las cuentas deberían cambiar.
El recuento promedio de americio-241 de una cámara de iones de detectores de humo fue de 519 CPM.
Paso 9: SBM-20
Este boceto de Arduino es una versión modificada escrita por Alex Boguslavsky.
Este boceto cuenta el número de pulsos en 15 segundos y lo convierte en conteos por minuto, lo que lo hace menos tedioso.
Código que agregué “Serial.println (" Contador de inicio ");”.
Código que cambié; "Serial.print (cpm);" a "Serial.println (cpm);".
"#Define LOG_PERIOD 15000"; establece el tiempo de conteo en 15 segundos, lo cambié a “#define LOG_PERIOD 5000” o 5 segundos. No encontré una diferencia apreciable en el promedio entre contar durante 1 minuto, o entre 15 segundos y 5 segundos.
#incluir
#define LOG_PERIOD 15000 // Período de registro en milisegundos, valor recomendado 15000-60000.
#define MAX_PERIOD 60000 // Periodo máximo de registro sin modificar este boceto
cuentas largas sin firmar; // variable para eventos de GM Tube
cpm largo sin firmar; // variable para CPM
multiplicador int sin signo; // variable para el cálculo de CPM en este esquema
unsigned long previousMillis; // variable para la medición del tiempo
void tube_impulse () {// subprocedimiento para capturar eventos de Geiger Kit
cuenta ++;
}
void setup () {// subprocedimiento de configuración
cuenta = 0;
cpm = 0;
multiplicador = MAX_PERIOD / LOG_PERIOD; // calculando el multiplicador, depende de su período de registro
Serial.begin (9600);
attachInterrupt (0, tube_impulse, FALLING); // definir interrupciones externas
Serial.println ("Contador de inicio"); // código que agregué
}
bucle vacío () {// ciclo principal
currentMillis largo sin firmar = millis ();
if (currentMillis - previousMillis> LOG_PERIOD) {
previousMillis = currentMillis;
cpm = cuenta * multiplicador;
Serial.println (cpm); // código que cambié
cuenta = 0;
}
}
El recuento promedio de fondo de SBM-20 fue de 23,4 CPM.
Paso 10: Cableado del contador Geiger con una pantalla LCD
Conexión LCD:
Pin LCD K a GND
LCD A pin a 220 Ω resistencia a Vcc
Pin LCD D7 a pin digital 3
Pin LCD D6 a pin digital 5
Pin LCD D5 a pin digital 6
Pin LCD D4 a pin digital 7
LCD Habilitar pin a pin digital 8
Pin LCD R / W a tierra
Pin LCD RS a pin digital 9
Pin LCD VO para ajustar el potenciómetro de 10 kΩ
Pin Vcc LCD a Vcc
LCD Vdd pin a GND
Resistencia Pot 10 kΩ ajustable.
Vcc, Vo, Vdd
Contador Geiger
VIN al pin digital 2
5 V hasta + 5V
GND a tierra
Paso 11: Contador Geiger con LCD
// incluye el código de la biblioteca:
#incluir
#incluir
#define LOG_PERIOD 15000 // Período de registro en milisegundos, valor recomendado 15000-60000.
#define MAX_PERIOD 60000 // Periodo máximo de registro sin modificar este boceto
#define PERIOD 60000.0 // (60 segundos) período de medición de un minuto
CNT largo sin firmar volátil; // variable para contar las interrupciones del dosímetro
cuentas largas sin firmar; // variable para eventos de GM Tube
cpm largo sin firmar; // variable para CPM
multiplicador int sin signo; // variable para el cálculo de CPM en este esquema
unsigned long previousMillis; // variable para la medición del tiempo
unsigned long dispPeriod; // variable para medir el tiempo
CPM largo sin firmar; // variable para medir el CPM
// inicializa la biblioteca con los números de los pines de la interfaz
LiquidCrystal lcd (9, 8, 7, 6, 5, 3);
configuración vacía () {// configuración
lcd. comienzo (16, 2);
CNT = 0;
CPM = 0;
dispPeriod = 0;
lcd.setCursor (0, 0);
lcd.print ("Electrónica RH");
lcd.setCursor (0, 1);
lcd.print ("Contador Geiger");
retraso (2000);
cleanDisplay ();
attachInterrupt (0, GetEvent, FALLING); // Evento en el pin 2
}
bucle vacío () {
lcd.setCursor (0, 0); // imprime texto y CNT en la pantalla LCD
lcd.print ("CPM:");
lcd.setCursor (0, 1);
lcd.print ("CNT:");
lcd.setCursor (5, 1);
lcd.print (CNT);
if (millis ()> = dispPeriod + PERIOD) {// Si ha pasado un minuto
cleanDisplay (); // LCD claro
// Haga algo acerca de los eventos CNT acumulados….
lcd.setCursor (5, 0);
CPM = CNT;
lcd.print (CPM); // Display CPM
CNT = 0;
dispPeriod = millis ();
}
}
void GetEvent () {// Obtener evento del dispositivo
CNT ++;
}
void cleanDisplay () {// Borrar rutina de LCD
lcd.clear ();
lcd.setCursor (0, 0);
lcd.setCursor (0, 0);
}
Paso 12: Archivos
Descargue e instale estos archivos en su Arduino.
Coloque cada archivo.ino en una carpeta con el mismo nombre.