Come realizzare un contatore Geiger “super”

In questo articolo vedremo come sia possibile realizzare, con una spesa assolutamente modesta, un contatore Geiger più preciso, versatile e sensibile dei normali strumenti commerciali. Ciò partendo da un modulo commerciale low-cost e completandolo con un microcontroller Arduino e, soprattutto, con un software personalizzato, in grado di soddisfare le più svariate esigenze di impiego: da quelle di ricerca di deboli fonti di radiazioni ionizzanti a quelle di ricerca, oltre naturalmente a quelle di radioprotezione. Il nostro progetto è anche la base per altri, più avanzati, illustrati in separati articoli.

Avevo già, in laboratorio, un Geiger GMC-300E, che ha un eccellente rapporto qualità/prezzo e che è possibile acquistare a buon prezzo su Internet, ad es. qui. In un articolo che puoi trovare qui ho illustrato come un simile strumento possa venire impiegato per misurazioni della radioattività di oggetti e perfino di alcuni alimenti, seguendo procedure appropriate. Perché mai, quindi, dovrebbe essere utile realizzare un proprio contatore Geiger, se non per pagarlo metà del prezzo o anche meno?

Vi sono vari motivi. Uno è che in molti esperimenti e ricerche è utile ricevere il segnale del contatore Geiger insieme allo streaming in tempo reale dei dati raccolti dagli altri sensori, che possono essere anche altri Geiger (ad es. per realizzare misurazioni in coincidenza). Un altro motivo è che la scala temporale solitamente adottata dai Geiger commerciali – eventi al minuto (CPM) – è idonea per la radioprotezione ma in generale inadatta per misurazioni di sorgenti deboli e altri tipi di ricerche.

Un ottimo modulo Geiger per Arduino che può essere acquistato facilmente qui.

Dunque, avere un contatore Geiger gestito da un microcontroller programmabile permette di aggirare brillantemente e in modo assai semplice tutti questi problemi, fornendovi uno strumento che è decisamente superiore a tutti quelli commerciali di fascia medio-bassa, che infatti ormai non utilizzo più, se non per eventuali esigenze di misurazione della dose, che però si presentano solo nella radioprotezione (uso di sorgenti radioattive, incidenti nucleari, fall-out radioattivo, etc.).

Come funziona un contatore Geiger

Un contatore Geiger è un tipo di rivelatore a gas a ionizzazione che opera in un regime di tensione (vedi figura) che è in grado di innescare delle scariche “a valanga”, cioè basate sulla cosiddetta valanga di Townsend. Le molecole di gas eccitate prodotte durante una valanga di Townsend oltre a creare gli ioni secondari tornano allo stato fondamentale emettendo fotoni, che svolgono un ruolo importante nella scarica Geiger. L’energia dei fotoni è nella regione visibile o ultravioletta.

I vari regimi di funzionamento dei rivelatori a gas a ionizzazione.

Il fotone può essere assorbito da un’altra molecola di gas o dalla parete del catodo attraverso l’effetto fotoelettrico, il che crea un altro elettrone libero. Questo nuovo elettrone è accelerato dal campo elettrico all’interno del rivelatore e innesca un’altra valanga. La reazione a catena della valanga porta alla scarica Geiger. In una scarica Geiger, la rapida propagazione della reazione a catena forma molte valanghe in tutto la regione di moltiplicazione che circonda l’anodo, fino ad avvolgerne l’intero filo.

Quando gli ioni positivi arrivano al catodo, vengono neutralizzati combinandosi con elettroni provenienti dalla superficie del catodo e viene liberata una quantità di energia pari all’energia di ionizzazione del gas meno la funzione di lavoro del catodo (cioè l’energia necessaria per estrarre l’elettrone dal catodo). Se questa energia è maggiore della funzione di lavoro catodico, un altro elettrone libero può emergere dal catodo e l’elettrone libero innesca un’altra valanga, che porta a una seconda scarica Geiger.

Il meccanismo di scarica di un Geiger.

Per evitare questo problema di pulsazioni multiple, un gas di spegnimento viene aggiunto al gas di riempimento primario (gas nobili, come per i contatori proporzionali). L’energia di ionizzazione del gas di raffreddamento (quencing) è minore e la struttura molecolare è più complessa (di solito, alcol etilico e formiato di etile). Quando gli ioni positivi di gas primario entrano in collisione con le molecole del gas di raffreddamento neutro, la carica positiva è trasferita al gas di quench, e l’energia in eccesso è preferenzialmente utilizzata per la dissociazione di queste molecole complesse.

La fine di una scarica Geiger è indotta dagli ioni positivi. La mobilità degli ioni positivi è molto inferiore a quelli degli elettroni e rimangono immobili durante il tempo di raccolta degli elettroni liberi. Come la concentrazione degli ioni positivi aumenta vicino all’anodo, l’effetto della carica spaziale riduce la forza del campo elettrico e alla fine termina la scarica. Ciò rende tutti gli impulsi di uscita di un Geiger della stessa ampiezza, il che rende un contatore Geiger inadatto alla spettroscopia.

Plateau di conteggio per un tubo Geiger. 

Se la soglia (o discriminatore di livello inferiore) del sistema di conteggio è Hd come mostrato in figura, nessun impulso viene contato a 1 kV mentre tutti gli impulsi vengono contati a 1,2 kV. Di conseguenza, si verifica una grande transizione in un breve intervallo di polarizzazione ad alta tensione, che è indicato come ginocchio (knee). Se il bias viene aumentato troppo, il plateau termina bruscamente a causa dell’inizio della scarica continua. Il plateau ha una pendenza finita piuttosto che essere un pianerottolo ideale, perché la coda a bassa energia è solitamente presente nello spettro delle altezze dell’impulso.

Lo schema a blocchi qui sotto mostra un sistema di conteggio per un contatore Geiger. Poiché non è richiesto alcun preamplificatore, il sistema di conteggio è il più semplice possibile. La combinazione in parallelo della resistenza di carico R e della capacità del rivelatore Cs (compreso il cablaggio associato) forniscono la costante di tempo (2-3 μs) del circuito di raccolta della carica. Quindi, viene preservata solo la componente in rapida ascesa dell’impulso. Il condensatore di accoppiamento Cc blocca l’alta tensione, ma trasmette il segnale al potenziale di terra.

Elettronica per il conteggio degli impulsi da un tubo Geiger. 

Come realizzare il Geiger più semplice

Iniziamo con il presentare un progetto base “senza fronzoli”, giusto per prendere confidenza con il diffusissimo kit di contatore Geiger per Arduino, che viene fornito già assemblato (quindi non dovete montare alcun componente!), e che potete acquistare a un prezzo ottimo online, ad es. es. qui. Considerate che prima dell’incidente nucleare di Fukushima, non si trovava un Geiger decente a meno di 300-500 euro, oggi è possibile trovare questi moduli a un prezzo 10 volte inferiore.

Per realizzare il contatore Geiger più semplice possibile, avrai bisogno dei seguenti materiali:

  • Kit contatore Geiger fai-da-te
  • Una scatola per prototipi
  • Scheda Arduino UNO
  • Cavi per ponticelli (jumper)
  • Pistola per colla a caldo (opzionale)
  • Oscilloscopio (opzionale)

Il più semplice contatore Geiger basato su Arduino.

Il tubo Geiger viene a volte fornito già montato, a volte è nella confezione e dovrete inserirlo voi. Fate molta attenzione sia nel maneggiarlo, essendo molto fragile, sia nell’inserirlo sul modulo. Dovrete infatti rispettare la polarità rifacendovi alle figure. Inoltre, il tubo montato di solito è il tubo cinese J305, che è arriva a malapena ai ganci di fissaggio. Pertanto, vi suggerisco di fissarlo in maniera permanente al modulo con un po’ di colla a caldo sulle estremità metalliche e sui relativi contatti.

Se osservate il modulo Geiger che avete ordinato e ricevuto per posta (l’imballo è fatto molto bene ed è estremamente protettivo: su 4 moduli ordinati in tempi diversi erano tutti perfettamente integri), vedrete che vi è la possibilità di alimentarlo con un normale connettore DC da 5 V come quello usato per i telefonini (con polo positivo al centro). Per una prima prova, fornite l’alimentazione da lì e vedrete uno dei due led rossi accendersi e l’altro lampeggiare (con il buzzer che farà “bip”) a ogni evento.

Descrizione del modulo Arduino usato per il nostro Geiger.

Per “evento” si intende una particella carica che ionizza direttamente il gas presente nel tubo provocando una scarica a valanga o un raggio gamma o X che produce un elettrone che, a sua volta, dà il via alla scarica a valanga. Il numero di eventi normalmente è misurato in “conteggi al minuto” (CPM), che naturalmente variano da modello a modello di tubo Geiger (come pure in base al loro volume). Normalmente, dovreste misurare un livello di fondo compreso, grosso modo, fra 10 e 20 CPM.

Per poter visualizzare i CPM (oppure il numero di eventi su un intervallo temporale più lungo o più breve di un minuto), basta collegare il modulo Geiger a una scheda Arduino, come ad es. la classica Arduino Uno. Il collegamento è davvero semplicissimo. Infatti, sulla sinistra vedrete tre piedini: GND, 5V e VIN. Il primo va collegato a uno dei GND su Arduino, il 5V va ovviamente collegato al pin da 5V di Arduino, mentre il pin VIN va collegato al pin D3 di Arduino (non al pin VIN come si potrebbe pensare!).

Il collegamento del modulo Geiger alla scheda Arduino.

Il piedino D3, infatti, cattura gli interrupt. Un “interrupt” (interruzione) è un evento che viene generato in presenza di una variazione di livello (HIGH/LOW) su un particolare pin della board Arduino. Questo evento viene gestito direttamente dal microcontrollore ed è controllabile via software tramite delle apposite istruzioni. Le schede Arduino Uno e Nano hanno come piedini digitali di interrupt il 2 e il 3 (quindi D2 e D3). Arduino Mega ha invece ben 6 piedini digitali di interrupt: 2, 3, 18, 19, 20, 21.

Per visualizzare il segnale di uscita dal modulo Geiger, puoi collegare un oscilloscopio all’uscita VIN, collegando il lato positivo della sonda dell’oscilloscopio al VIN e il lato negativo della sonda dell’oscilloscopio a terra. L’uscita del contatore Geiger iniziava a +3 volt e scende a 0 volt ogni volta che il tubo Geiger reagisce a una radiazione ionizzante e torna a +3 volt un attimo dopo. Questo è il segnale che registrerai con Arduino tramite il metodo dell’interrupt appena illustrato.

Il segnale di interrupt mostrato da un oscilloscopio digitale. In alto, il livello piatto prima che arrivi l’interrupt, in basso, l’arrivo dell’interrupt che porta il livello a 0. Come si vede, il segnale di interrupt ha una certa durata.

Ovviamente, l’alimentazione al modulo Geiger arriverà ora da Arduino, per cui non occorre fornire energia da altri ingressi. A questo punto non ti resta che fare un copia e incolla su Arduino del codice (sketch) che puoi trovare qui. Ciò ti permetterà di visualizzare il numero di CPM sul monitor seriale di Arduino, anche se dovrai attendere un minuto per visualizzare il primo valore reale, mentre i successivi aggiornamenti compariranno dopo ulteriori intervalli di un minuto.

Se alloggerete il Geiger in una scatola, provvedete a creare una finestrella che si affacci direttamente sul campione o zona da misurare, altrimenti la plastica della scatola fermerà gran parte delle particelle beta (o elettroni veloci), cosa in generale non desiderabile, dato che il Geiger è un rivelatore di radiazioni beta (particelle) e di gamma (fotoni). Il vetro del tubo è spesso circa 0,2 mm e permette, molto verosimilmente, la rivelazione dei gamma di energia compresa fra 100 keV e 1,2 MeV e dei beta di energia fra 150 keV e 3 MeV.

Un contatore Geiger più professionale

In questa sezione illustrerò un Geiger più “evoluto” che ho realizzato (peraltro in più esemplari) per me, in quanto permette di eseguire svariati esperimenti ed è molto versatile nell’uso di laboratorio e/o sul campo. Quindi, anche se non volete farne uno uguale, può essere fonte di ispirazione per i vostri progetti di contatori Geiger. Le sue principali caratteristiche sono un display a led rossi, una serie di ingressi di input/output plug-in, un software dedicato estremamente versatile.

Il mio contatore Geiger autocostruito di cui illustrerò la realizzazione.

In pratica, l’impiego di un display rende il dispositivo indipendente da un computer, che serve solo per caricare il software o per il datalogging dei dati raccolti al fine di realizzare dei grafici in tempo reale (con MegunoLink Pro). Già solo questi due aspetti rendono questo Geiger molto più professionale e utilizzabile per una grande varietà di applicazioni, tanto più se poi si usano due di questi Geiger in parallelo oppure li si fanno operare “in coincidenza”, come nei famosi esperimenti di Bothe e di Rossi.

Per realizzare il mio contatore Geiger, ho usato i seguenti materiali aggiuntivi:

  • Una scatola di plastica delle dimensioni minime di 158 x 90 x 60 (che trovi qui)
  • Un display LED digitale a quattro cifre (che trovi qui)
  • Un led rosso da pannello da 12 V (lo trovi qui)
  • Un interruttore da pannello
  • Una presa DC volante
  • Due spine DC volanti

Il materiale necessario per realizzare il contatore Geiger descritto nel testo.

L’interruttore che ho usato non viene impiegato per l’accensione dello strumento (sebbene potreste impiegarlo semplicemente per questo). Lo scopo è permettere di “switchare” da una scala temporale standard impostata nel mio software (che solitamente è quella di un minuto, cioè il classico CPM) a una più lunga (che ora fornisce la media su 10 minuti, ma potete cambiarla). L’interruttore è collegato con il piedino centrale al pin D2 di Arduino e con un piedino laterale al GND di Arduino.

Per realizzare il progetto, occorre realizzare due fori rettangolari nella custodia di plastica, uno per il display e uno per la finestrella davanti al tubo. In pratica, si tracciano con un pennarello due rettangoli di 2 mm più piccoli, poi con un minitrapano si fanno dei buchi lungo tutto il bordo e, una volta tolto il pezzetto di plastica, si creano dei bordi perfettamente lineari usando una lima piatta per “mangiare” progressivamente i 2 mm in più che avevamo lasciato. Alla fine, il lavoro viene perfetto.

Poi occorre fare i buchi per led, interruttore ed i 4 fori per i cavi di ingresso / uscita, facendo attenzione che non si sovrappongano al modulo Geiger sporgendo all’interno della scatola. A questo punto potete fissare il modulo Geiger con il tubo al fondo della custodia di plastica, incollandola prima con del Bostik e poi con un po’ di colla a caldo. Poi si coprono i contatti del modulo con due strati di plastica e si poggia in basso a sinistra la scheda Arduino per effettuare i vari collegamenti elettrici fra le parti.

Schema dei collegamenti elettrici da realizzare.

Nello schema qui sopra non ho indicato i collegamenti dei 4 fori per i cavi di input / output, in quanto in parte sono facoltativi. Comunque è semplice: uno dei quattro fori serve a far passare il cavo USB di Arduino; un secondo foro serve per il cavo DC che alimenta a 7,5-9V Arduino in alternativa all’alimentazione via USB; un terzo foro fa passare il cavo con il segnale dell’interrupt (Vin) del modulo Arduino (e relativo GND) per collegare due Geiger in coincidenza; il quarto foro, infine, fornisce il segnale del PIN 13 di Arduino, che diventa alto (HIGH) per 10 msec quando c’è un evento.

A questo punto non resta che fare un copia e incolla su Arduino del codice (sketch) che trovi qui. Se non hai MegunoLink Pro, puoi per il momento cancellare le relative istruzioni, a cominciare da quella della sua libreria. Nota che io ho usato come pin di interrupt il 3 (D3) anziché il 2. Se hai montato il circuito correttamente, vedrai il led rosso lampeggiare ogni volta che il buzzer fa “bip” per un evento. E dopo un minuto vedrai apparire sul display il conteggio in CPM x 10 (quindi 20 apparirà come “200”).

Questo perché il display usato non supporta la virgola, e voglio poter mostrare anche una cifra decimale. Infatti, se l’interruttore è OFF le misurazioni saranno la media su un minuto (il classico CPM), ma se lo metto su ON attivo via software un conteggio su un intervallo più lungo che potete fissare voi (io ho scelto 1 ora), in modo da avere la media su un’ora e misurazioni molto più precise. Ovviamente, in questo caso il CPM mostrato sarà un CPM medio su un’ora e avrà la virgola: ad es. 18,3.

Il retro del contatore Geiger come appare una volta ultimato.

La versatilità resa possibile dal software

Se andate a guardare il listato dell’ultimo sketch che vi ho fornito, scoprirete che vi è un parametro, chiamato “PulseDuration”, che nel codice in questione viene impiegato per fare due cose. Innanzitutto, poiché il segnale di interrupt ha una certa durata (inferiore a 300 microsecondi), fornisce la durata minima di tale segnale affinché Arduino non conteggi più volte un medesimo singolo impulso. PulseDuration è tuttavia fissato in 10 millisecondi per dare il tempo al led rosso di illuminarsi per bene.

Poiché non mi è stato possibile misurare la durata dell’impulso di interrupt con l’oscilloscopio, l’ho determinata sperimentalmente, per cui se usate lo stesso modulo Geiger per Arduino non è necessario che ripetiate la misurazione. La figura qui sotto mostra come ho fatto: ho misurato il CPM medio su 10 minuti per vari valori della durata dell’impulso di interrupt impostati nel software; quando questa durata è inferiore a circa 300 microsecondi, iniziano a comparire dei conteggi spurii.

La misurazione della durata dell’impulso di interrupt, che determina il “tempo morto” del Geiger. Esso varia a seconda dei tubi tipi di Geiger (v. sotto).

Questi circa 300 μs sono il cosiddetto “tempo morto” del Geiger: se vi fossero altri eventi in questo intervallo di tempo, verrebbero persi. Avendo però io adottato una PulseDuration di 10 msec, in realtà il tempo morto è, appunto, di 10 msec, ma ciò non ha granché influenza nella misurazione di deboli sorgenti. Infatti, la radiazione di fondo è di circa 20 eventi al minuto, ma in un minuto vi sono ben 6000 intervalli di 10 msec, quindi i 20 eventi generano un tempo morto di 0,2 sec, pari allo 0,3% del totale.

Un altro importante parametro del mio ultimo sketch è il “SamplePeriod”, cioè la durata dell’intervallo di tempo su cui fare la media delle misurazioni, e che in genere nei Geiger commerciali è di 1 minuto (CPM). Impostando valori del SamplePeriod più elevati – ad es. 600000 msec (pari a 10 minuti) o 3600000 msec (pari a 1 ora) – potete ottenere valori della radiazione di fondo assai meno fluttuanti e, quindi, misurazioni ben più precise (l’errore va con la radice quadrata del numero N di eventi).

Misurazioni delle radiazioni di fondo fatte con il mio Geiger su diverse scale temporali. Il software di visualizzazione dei dati di Arduino qui usato è MegunoLink Pro, che è fantastico per queste applicazioni.

Purtroppo i contatori Geiger in commercio (generalmente strumenti portatili), pur costando cifre considerevoli, non hanno un software adatto alle misurazioni “da laboratorio”. Pertanto, ho aggiunto al mio software un metodo di “Integrazione progressiva” che permette misure precise e affidabili. In pratica, si tratta di calcolare e visualizzare sul grafico una curva che rappresenta la media delle misurazioni (in eventi al minuto, cioè CPM) a partire dall’avvio del Geiger al caricamento dello sketch.

Con questa curva, che via via si stabilizza e converge verso il valore medio presente nel vostro laboratorio o nel luogo in cui collocherete lo strumento, permette di raggiungere già nel giro di un’ora una discreta precisione, ed a differenza delle medie calcolate ogni 20 minuti od ogni ora, non presenta elevate fluttuazioni sotto forma di “gradini”. Al contrario, fornisce una baseline di riferimento che ci permetterà di rivelare più facilmente l’eventuale radioattività di un campione messo poi vicino al Geiger.

Nella figura qui sotto vediamo la misurazione quantitativa della radioattività di un debolissimo campione di allume di rocca, che contiene potassio, un elemento che per lo 0,012% contiene l’isotopo Potassio-40, il quale è per il 90% un emettitore beta e per il 10% un emettitore gamma. Con il mio Geiger ho quindi misurato la somma di queste due emissioni. Come si vede, con tempi opportunamente lunghi questa accoppiata hardware + software può rivelare aumenti di radioattività di appena il 5%!

Misurazione del livello di fondo (parte a sinistra) e successivamente della debolissima radioattività (parte destra della figura) di un campione di allume di rocca come quello presente nelle case di molti di voi. La media su 1 ora (curva rossa) e la media dall’inizio delle misurazioni (curva verde) rappresentano due ottimi indicatori sul medio e lungo termine.

Pertanto, inizialmente dovrete misurare con lo strumento il livello di fondo, attendendo la stabilizzazione della curva per un tempo che sarà tanto più lungo quanto più è grande la precisione richiesta o quanto più è debole la sorgente radioattiva che volete misurare. Dato però che non sapete a priori quanto è debole quest’ultima, suggerisco di determinare il background per alcune ore. A quel punto collocate  per altrettante ore il campione da misurare vicino al tubo Geiger.

Naturalmente, con tempi lunghi le misure vengono effettuate su un gran numero di eventi, quindi la risposta ai cambiamenti rallenta e le variazioni rapide vengono smorzate. Tempi di uno o due minuti vanno bene invece per misurare campioni radioattivi da laboratorio, o per farsi velocemente un’idea grossolana di quanto è radioattivo un campione, ma per misurare basse radioattività, con buona precisione è necessario usare tempi lunghi per eliminare la possibilità di falsi allarmi dovuti a brevi variazioni casuali.

Usando tempi brevi si ottiene poca precisione e le misure ballano anche del +/-50%. Misure così poco precise sono sufficienti a distinguere le pietre che radioattive da quelle inerti oppure a individuare i luoghi da cui scappare al più presto. Ricordate che la precisione aumenta approssimativamente con la radice quadrata del numero di impulsi per cui, raddoppiando il tempo, o il numero di tubi geiger, non si ottiene una precisione doppia, ma solo un miglioramento di 1,4 volte.

Alcuni possibili campioni utilizzabili per le misurazioni e dosi e CPM corrispondenti attesi con il nostro Geiger (vedi più avanti per ulteriori dettagli sul legame fra dose e CPM).

La tabella qui sopra mostra alcuni dei campioni che potrete divertirvi a misurare, ma secondo me è più divertente imparare a misurare le sorgenti più deboli possibili. Un barattolo di plastica chiuso da 1 kg di KOH (idrossido di potassio) posto vicino al Geiger farà aumentare la media di circa 8 CPM, e variazioni similari si otterranno nelle medesime condizioni con il KCl (cloruro di potassio). Prendendo quantità minori di una di tali sostanze potrete creare campioni sempre più debolmente radioattivi.

Se il Geiger vi serve a scopo di ricerca, impostando i parametri nel mio software avete finito. Se invece siete interessati alla radioprotezione, vorrete poter stimare la dose corrispondente ai CPM misurati dal vostro apparecchio, e che di solito è espressa in unità μSv/h. A tale scopo, occorre usare un fattore di conversione che varia a seconda del modello di tubo Geiger impiegato. Se non lo conoscete, potete usare un Geiger commerciale (come ad esempio il già citato GMC-300E) per la necessaria calibrazione.

Non sono purtroppo riuscito a trovare online il fattore di conversione da CPM a μSv/h del tubo cinese J305 usato dai moduli Geiger per Arduino, ma dato che tali tubi mi hanno fornito dei conteggi CPM molto simili a quello del mio Geiger commerciale GMC-300E, che ha al suo interno un tubo M4011, potete usare inizialmente il fattore di conversione di quest’ultimo modello di tubo, che è di 153,8. Quindi, se ad esempio misurate 20 CPM, la dose corrispondente sarà di 20 / 153,8 = 0,13 μSv/h.

L’equivalenza fra CPM e dose per un Geiger commerciale GMC-300E.