CHOUR - Compteur Geiger Muller très faible consommation PC-GM3
Appareil : Compteur Geiger Muller/Geiger Muller counter
Date : 2013-2015
Type : PC-GM3
Marque : Chour
Principaux constituants : Tube SBM20, processeur Texas-Instrument famille MSP430, module haute tension IMEX, RTC PCF8583 de NXP...
Principale caractéristique : consommation moyenne de l'ordre de 20µA / Average power consumption around 20µA.
Logiciel : page de téléchargement/Downloading page.
Introduction
Hormis le Gamma-Scout, la plupart des compteurs Geiger du marché (en 2013) ont une autonomie limitée, du moins pour ceux qui utilisent un microprocesseur pour gérer le traitement des données. Les raisons sont multiples :
- le générateur haute-tension est souvent mal conçu et énergivore. Pourtant, il existe des schémas sur le net proposant des générateurs annonçant des consommations de l'ordre de quelques µA. On trouve même des montages tout faits annonçant entre 0,5µA et 25µA.
- le microprocesseur n'est pas très performant du point de vue de gestion de la consommation. Mais là aussi, il existe des processeurs réputés dans ce domaine, en particulier, chez Texas Instrument.
- la façon dont le microprocesseur est utilisé n'est pas optimale. Il semble qu'une erreur courante consiste à lui déléguer la tâche de comptage. Cela l'oblige, soit à être en fonctionnement permanent, soit à être en veille et à être réveillé à chaque fois qu'il y a une impulsion. Une solution pourrait être d'utiliser un compteur du processeur mais parfois, cette option ne permet pas de profiter des modes de veille les plus performants en termes de consommation.
Le compteur à base d'Arduino que vous pouvez trouver sur ce site cumule ces différents inconvénients. En particulier, le générateur haute-tension consomme énormément ce qui fait que l'ensemble consomme environ 40mA malgré l'utilisation des modes de veille du processeur (et la suppression de toutes les LED).
Présentation du compteur basse consommation
Le montage présenté ici visait une consommation de l'ordre de 100µA en régime normal. A noter que le Gamma-Scout a probablement une consommation de l'ordre de 25µA soit quatre fois moins ce qui lui permet d'avoir une autonomie vérifiée de 10 ans avec une pile Lithium de 2400mA.h. Ceci-dit, pour 100µA, on peut viser une autonomie de 2,5 ans ce qui n'est déjà pas mal. Mesurées avec un galvanomètre, les valeurs de courant lues sont les suivantes :
- La consommation du programme en régime normal (radioactivité ambiante, fonctionnement sur batterie, pas d'alarme, pas de buzzer, affichage de la radioactivité) s'établit aux alentours de 10~12µA l'essentiel du temps. Les pointes de consommation sont difficilement mesurables. Avec un galvanomètre à cadre mobile, on voit l'aiguille se stabiliser autour de 8µA avec des pointes montant à 20µA.
- La consommation de la partie analogique (haute-tension et comptage) se stabilise aux alentours de 30µA et est assez constante.
Mais en pratique, ce type de mesure est trop imprécis. Sur PC-GM6, qui est un compteur plus énergivore, j'ai réalisé la mesure de la consommation moyenne avec un oscillscope numérique. Le résultat est de l'ordre de 30µA. Au galvanomètre, la valeur lue était de l'ordre de 100µA.
Je n'ai pas fait cette mesure sur PC-GM3 mais si j'applique le ratio entre mesure sur galvanomètre / mesure à l'oscilloscope, PC-GM3 doit consommer environ 20µA en moyenne.
Avec une batterie de 2400 mA.h, cette consommation permet de viser une autonomie de plus de 10 ans sans rechargement, non compris l'éventuel courant de décharge de la batterie. Pour atteindre ces performances, j'ai utilisé les éléments suivants :
- un générateur HT IMEX-38-56-1 tout fait dont la consommation nominale est donnée pour 0,5 à 10 µA sous 3,3V pour 400V générés.
- un microprocesseur MSP430F449 de Texas Instrument (carte de développement Olimex MSP430F449-STK2), acheté une vingtaine d’euros et qui gère un afficheur bien adapté pour ce type d’application
- un tube geiger-muller Russe SBM20.
Mais l'astuce consiste à utiliser un compteur spécifique pour le comptage des impulsions. Or, les circuits RTC (Real Time Clock) sont réputés pour leur très faible consommation. Le circuit PCF 8583 de NXP présente en plus l’avantage de pouvoir être utilisé en compteur d'événements avec un diviseur égal à 1. En régime normal, la consommation du circuit est de l'ordre de 3µA.
Ce compteur mémorise donc le nombre d'impulsions dans un certain intervalle de temps. Toutes les secondes, le processeur qui est normalement en veille (mode 3) se réveille, fait quelques vérifications (gestion du clavier, connexion USB...) et repasse en veille. Toutes les 10 secondes, le processeur lit le PCF8583, fait ses traitements statistiques, vérifie les conditions d'alarme et s'il n'y a pas d'alarme, repasse en veille. En cas d'alarme, la périodicité de relève du PCF8583 passe à une seconde.
Ce compteur comporte également :
- un module de chargement de la batterie.
- un module de communication USB-série TTL
- un buzzer déconnectable permettant d'entendre les « tic » lorsque le tube détecte une particule. Ce buzzer est commandé par un 555. Lorsque la fonction buzzer est connectée (555 alimenté), la consommation de cette partie du montage est de 1,24mA. Autant dire qu'il vaut mieux ne pas le laisser en permanence (de toute façon, c'est assez énervant). Un 555 moins gourmand devrait permettre de diviser par 10 la consommation mais ça reste encore élevé.
Un petit point sur l'alimentation : le processeur fonctionne en 3,6V max. Plus la tension est faible, moins il consomme. Le générateur HT fonctionne de 2,5V à 5V. La batterie LIPO fournit 3,7V. En charge, la tension peut monter jusqu'à 4,2V. Pour abaisser la tension pour le processeur, j'ai d'abord utilisé 2 diodes silicium en série puis finalement, je me suis décidé pour un régulateur MCP1702 dont la consommation au repos est à peine mesurable (2µA d'après la documentation).
Pour en savoir plus sur les fonctionnalités prévues, jetez un oeil sur les spécifications fonctionnelles
Le schéma de la partie analogique
Schéma de la partie détection, comptage, communication et alimentation (cliquer pour agrandir)
La sortie du générateur haute tension est raccordé au plus du tube Geiger-Muller. Le moins du tube est relié à la masse via R2, R3 eet C1. Lorsque le tube détecte une particule, il se décharge dans ce réseau ce qui créé une impulsion positive sur la base du transistor Q1 (2N3904) qui devient alors passant.
Sur le collecteur de Q1, le potentiel positif via R4 tombe alors à 0V puis revient au potentiel positif lorsque l'impulsion a disparue.
L'impulsion est détectée par le monostable 555 qui la transforme en une impulsion d'une durée définie par C4-R9 (100ms). La résistance R10 permet de diminuer cette durée lorsqu'elle est connectée et donc, dans une certaines mesure, le volume du bip. Une variante serait de remplacer R9 par une résistance de 100kohms et de mettre en série un ajustable de l'ordre de 250kohms ou plus.
Le bip lui même est généré par un buzzer 1kHz (SP) alimenté en continu sous 3V.
Le 555 peut être déconnecté via un interrupteur. Cela permet à la fois d'éviter le bruit des tic et de limiter la consommation de courant.
L'impulsion est également envoyée via C2 au compteur d'événement PCF8583. Ce compteur est lu régulièrement (toutes les 10secondes en régime normal, toutes les secondes lorsqu'il y a une alarme ou lorsque le compteur est relié à une alimentation extérieure) via un bus I2C par le programme qui s'exécute sur le processeur. La ligne SDA du PCF8583 est raccordé au port P2.1 du processeur. La ligne SCL est racccordé au port P2.0.
Vext est raccordé au port P2.2 du processeur. Il permet de déterminer si une alimentation externe est connectée ou non. R5 et R6 forment un pont diviseur
permettant de ramener le 5V à environ 3V. La diode Zener D1 permet de limiter la tension à 3,3V au cas où l'alimentation externe déliverait plus de 5V.
Attention : j'ai eu la mauvaise surprise de constater que les signaux RX et TX du processeur suffisaient pour alimenter le module de conversion RS232. Le résultat est que l'on trouve du 3,3V sur Vcc alors que l'USB a été retiré. Si vous utilisez un circuit comme le FT232R, il existe une pin nommée Sleep (Cbus4) qui signale la présence
d'une tension sur l'USB. Utilisez plutôt cette sortie pour signaler la présence ou non d'une alimentation externe.
Tx et RX du module USB sont raccordés à UTXD0 et URXD0 (P2.5 et P2.4) du processeur et servent aux communications entre le compteur et un PC. Ne pas oublier de configurer le module USB pour que RX et TX fonctionnent en 3,3V et pas 5V. Dans ma version, le signal Sleep est connecté à l'entrée Vext.
Schéma de la partie détection, comptage, communication et alimentation (cliquer pour agrandir)
Je considère que le module Olimex MSP430f449STK2 a un bug de conception qui ne permet pas, en pratique, d'utiliser le bargraph. En effet, les pattes de l'afficheur qui correspondent aux segments du bargraph sont reliées entre elles ce qui fait que lorsqu'on programme l'allumage d'un segment du bargraph, on en allume obligatoirement 3. Il est possible de corriger ce bug de la façon suivante :
- Dessoudez ou coupez les pattes 42 et 35 de l'afficheur.
- Dessoudes les résistances R9 et R10 de 0 ohms.
- Au niveau du PCB, reliez entre eux le 42 avec 40 et 35 avec 37. Ainsi, le bargraph de l'afficheur est commandé par S0, S1 et S3.
En faisant cela, vous supprimez l'affichage des symboles "µmHF" et des flèches qui ne sont pas vraiment utiles pour le compteur. Par contre, vous disposez d'un bargraph qui permet de visualiser le taux de comptage, à la manière d'un galvanomètre analogique.
Le programme du compteur propose donc deux versions. Une ou le bargraph est utilisé comme un simple indicateur d'alerte (PCB non modifié) et ou les flèches clignotent au rythme du réveil du processeur, l'autre ou le bargraph est utilisé comme indicateur de taux de comptage. Les flèches ne sont plus utilisées.
Les indications sur cette modifications sont présentées ci-après.
Schéma de la partie détection, comptage, communication et alimentation modifiée (cliquer pour agrandir)
Conseils de réalisation
Intérieur du compteur.
Rien de particulier à dire sur la partie analogique. Cependant, faites attention à ne pas utiliser de fils insuffisamment isolés pour raccorder la haute tension au tube. Comme les fils utilisés en électronique sont rarement isolés à 400~500V, faites en sorte qu'ils ne soient pas trop proches l'un de l'autre ni qu'ils passent trop près d'autres conducteurs.
Faites en sorte que la batterie soit déconnectable. Lors des tests, cela permet de faire fonctionner les platines numérique (processeur) et analogique (comptage) indépendamment et de limiter le risque d'une erreur de manipulation qui mettrait la batterie en danger.
Pour la platine Olimex, il faut dessouder le connecteur 9 broches pour gagner en hauteur. Il faut aussi dessouder le connecteur d'alimentation et souder un fil d'alimentation avec un connecteur volant que l'on reliera à la platine d'alimentation du compteur.
Si vous souhaitez modifier la platine Olimex pour permettre l'utilisation du bargraph, voici comment je vous suggère de procéder :
- Dessoudez les résistances 0 ohms avec un fer muni d'une pointe fine (il n'y a pas beaucoup de place). Il suffit de chauffer une extrémité pour que la chaleur se propage à l'ensemble du corps et dessoude la résistance. Faites levier avec un petit tournevis pour faciliter l'opération. Attention de pas toucher l'afficheur avec le fer à souder
- Pour les pattes 42 et 35, je vous conseille de les couper sur l'afficheur en premier puis de les dessouder. Au début, je dessoudais avant puis je tirais la patte. Problème, une fois, la chaleur propagée par les pattes a légèrement fendu l'afficheur et détruit un groupe de segment (heureusement, non utilisé : poids forts de l'afficheur 4 digits. Si vous êtes à plus de 1000 CPM, vous êtes déjà mort !). Ensuite seulement, dessoudez les deux pattes
- Pour les straps, j'utilise du fil fin isolé destiné au wrapping
Indépendamment des connexions d'alimentation, mettez en place une masse fixe qui relie l'ensemble des éléments. Ainsi, pour les tests, vous pouvez utiliser l'alimentation du compteur pour la partie analogique et l'alimentation de la prise JTAG pour le processeur.
Le chargeur LIPO utilisé à une résistance de consigne qui fixe la charge à 1A ce qui est beaucoup trop. Mettez une résistance de l'ordre de 4,7K.
A un moment, j'ai mis une capacité de 100µF en entrée de l'alimentation de la partie analogique. Mauvaise surprise : cette capacité provenant d'un vieux stock personnel avait un courant de fuite de plus de 10µA ce qui représente 10% de la consommation visée initialement. J'ai changé cette capacité par la suite mais en pratique, elle n'est pas utile. A la rigueur, mettez une capacité de 1µF polyester, c'est bien suffisant. Ce condensateur n'est pas représenté sur le schéma.
Logiciel
La partie le plus délicate a été la gestion du bus I2C permettant de lire le PCF8583. En effet, la spécification du MSP430f449 annonce la disponibilité d'une gestion du bus I2C mais... Bref, j'ai préféré refaire cette gestion "à la main" via deux ports GPIO : un pour l'horloge (P2.0) et l'autre pour les données (P2.1). Le programme assembleur qui réalise la fonction d'initialisation et la lecture du compteur est disponible sur la page de téléchargement.
La trace ci-dessous permet d'avoir un aperçu des chronogrammes d'une communication I2C avec le PCF8583. Il s'agit de la sélection du compteur et de son initialisation.
Le programme est développé en utilisant IAR workbench. Il est nécessaire de disposer d'une sonde JTAG pour charger le programme dans la carte de développement Olimex. Vous pouvez télécharger le logiciel sur la page de téléchargement.
2013-1015