Bonjour,
J'ai depuis 10 ou 20 ans chez moi un tube Geiger russe SBM20 que j'avais pour projet d'utiliser un jour. La plupart des schéma sur internet sont assez vintage: basés sur des composants et technologies des années 80 comme le fameux 555.
Un convertisseur boost 5v->400v et un Arduino UNO m'ont permis de bien simplifier le montage: réalisation en une après-midi.
Le circuit:
Les composants:
Arduino UNO
Tube Geiger SBM20
Porte fusible 6A PF1 (pour les contacts du tube)
Résistance 3.9M et 10k
Condensateur 100p
Convertisseur boost 5V ->400V
Buzzer SV12-5 (pas optimum: voir texte)
Breadboard
Le montage
C'est pas très beau mais ça fonctionne: j'ai utilisé en R1 une résistance carbone récupérée sur un appareil des années 60 pour être un peu vintage moi aussi! Elle devrait faire 5.1Mohms d'après la fiche technique du SBM20 mais 3.9Mohm, c'est ce que j'ai de plus proche en stock.
La breadboard a deja fondu lors de l'explosion d"une diode en 2009!
Attention, le montage est certainement dangereux car on a 400V sur le convertisseur boost. J'ai pas vérifié l'ampérage réel disponible mais le constructeur donne 20mA (on sait pas si c'est sous 12V ou 5V).
Le montage peut aussi être dangereux pour votre ordinateur si vous envoyez du 400v dans le port USB...
J'ai réglé le convertisseur à 400V au multimètre. J'ai pas vérifié que l'impédance de sortie du convertisseur soit suffisamment élevée pour que la mesure soit valable (voir plus de détails ici).
Avant de mettre en place l'Arduino, j'ai regardé sur un oscilloscope la valeur la tension aux bornes de la résistance R2 quand le tube est passant.
La valeur théorique pour obtenir 5V si la résistance du SBM20 ionisé peut être négligeable est R2=3900*5/400=49kohms. En pratique, cette valeur me donne 17V. Pourquoi? J'ai pas d'explication, en avez-vous? J'ai mis une resistance de 10kohms qui me donne des pics à 3.5V: c'est très bien pour une entrée Arduino.
Je sais pas exactement à quoi sert le condensateur: élargir le pic de tension à la décharge, caractéristiques du tube?... Dans les montages autres, il y a de condensateurs de 10pf à 220pf. J'ai pris la seule valeur que j'avais en stock dans la gamme: 100 pf
Le code Arduino
Le programme est suffisamment court pour être compréhensible par ceux qui ont un niveau minimum Arduino. On entend les impulsion sur le buzzer et on voit s'allumer la LED 13.
Le moniteur série affiche le comptage et le nombre par minute.
Mon buzzer a un générateur de fréquence intégré. Ce n'est pas le mieux pour cette application: je suis obligé d'allonger les pics à 3ms pour que la fréquence soit audible. Un piezo simple aurait été préférable....
J'ai utilisé des interruptions car les pics de tension sont plus courts que le temps d'écrire dans le moniteur série. J'ai relevé expérimentalement 20 à 100µs.
Autre comportement bizarre: j'aurais pu utiliser RISING au lieu de CHANGE dans attachInterrupt mais dans ce cas j'ai parfois 2 à 3 interrupts par pic.
volatile int count = 0;
int cpm = 0;
int oldminute = 0;
int oldcount = 0;
volatile long beepstart = 0;
volatile boolean flagup = 0;
void setup() {
pinMode(11, OUTPUT);
pinMode(13, OUTPUT);
//pinMode(2, INPUT);
attachInterrupt(digitalPinToInterrupt(2), pulse, CHANGE);
Serial.begin(2000000);
Serial.println("debut");
}
void loop() {
int minute = millis() / 60000;
if (millis() - beepstart > 2) {
digitalWrite(11, 0);
digitalWrite(13, 0);
beepstart = 0;
}
if (flagup){
Serial.println(count);
flagup=0;
}
if (minute > oldminute) {
cpm = count - oldcount;
Serial.println((String)cpm + " count/min");
oldcount = count;
oldminute = minute;
}
}
void pulse() {
if (digitalRead(2)){
count ++;
digitalWrite(11, 1);
digitalWrite(13, 1);
flagup = 1;
beepstart = millis();
}
}
Projet terminé ou pas?
Le projet est fonctionnel mais perfectible: on pourrait le rendre portable. Pour cela, il faudrait faire une boite, ajouter un afficheur, mettre des piles...
Sources
J'ai principalement utilisée la première page en polonais dans le texte qui utilise le même convertisseur boost que moi:
http://home.agh.edu.pl/~bartus/index.php?action=efekty&subaction=arduino&item=32
https://mightyohm.com/files/geiger/geiger_sch_fixedR5R6.png
https://www.instructables.com/DIY-Geiger-Counter-With-an-ESP8266-and-a-Touchscre/
https://washerhouse.com/3/fr/4068-prostoy-schetchik-geygera.html