Electronique > Réalisations > Affichage / mesures > Indicateur niveau liquide 003

Dernière mise à jour : 14/05/2009

Projet en cours de développement, volontairement non référencé dans les sommaires du site


Présentation

Cet indicateur de niveau de liquide a été spécialement étudié pour visualiser le nombre de litres d'essence supposés présent dans un réservoir de moto non équipé d'origine d'une jauge. Le principe repose sur le comptage d'impulsions délivrées par un débimètre, et à partir d'une quantité de liquide connue au départ (réservoir plein), d'effectuer un décompte du nombre de litres affiché au fil des impulsions reçues. Ce circuit a été conçu pour travailler avec un débimètre produisant 1800 impulsions par litre, et pour un réservoir de capacité 30 litres. Pour l'heure, les informations "1800 impulsions / litre" et "capacité 30 litres" sont figées dans le logiciel, mais je prévois de modifier le code pour permettre un ajustement de ces paramètres sans besoin de reprogrammation. En attendant, toute modification peut être effectuée dans le code source fourni et le logiciel recompilé avec la version de démonstration gratuite du compilateur.

Etat d'avancement

Comptage des impulsions : Fait
Décompte des litres : Fait
Affichage : Fait
Sauvegarde lors de la coupure alim batterie : terminé côté logiciel mais pas testé en pratique

Schéma

-

indicateur_niv_liquide_003

Impulsions du débimètre
Le débimètre est une sorte de "capteur" doté d'une entrée et d'une sortie pour le liquide dont on souhaite mesurer le débit. Un contact électrique "sec" est établi avec une fréquence de récurence qui dépend de la quantité de liquide qui traverse le débimètre. Quand il n'y a pas circulation de liquide, aucune impulsion n'est produite par le système.

debimetre_001a

En comptant les impulsions, on en déduit la quantité de liquide qui est passée au travers du capteur. Le modèle utilisé ici, par exemple, délivre 1800 impulsions par litre écoulé, avec une précision de l'ordre de 2 pourcents. Vu que l'affichage se limite aux litres restant dans le réservoir, cette précision est amplement suffisante. Le principe de fonctionnement de l'indicateur de niveau est donc assez simple, et consiste :
- à pouvoir afficher le niveau max sur demande, au moment où le plein est fait (par exemple 30 litres - max 99);
- à décompter le nombre de litres affichés à chaque fois que le nombre d'impulsions a atteind 1800
C'est en effet très simple, mais il y a cependant un petit détail à régler : comment gérer la mise hors tension ?

Sauvegarde des informations sur coupure alimentation
En usage continu et avec une alimentation secteur, la question ne se pose pas, puisqu'il suffit d'une petite pile ou d'un accu pour sauvegarder les données en cours en cas d'absence d'énergie EDF. Mais si l'indicateur est monté sur une voiture ou sur une moto, l'alimentation se fait sur batterie et se pose alors le problème de la consommation électrique. Car il serait fort dommage qu'une inutilisation prolongée du véhicule porte à conséquence la mise à plat de la batterie. Certes, on peut envisager d'éteindre les afficheurs et de laisser tout le reste sous tension quand le contact est coupé. Mais cette solution n'est toutefois pas très élégante, surtout quand on sait que le composant principal (le PIC) dispose d'une petite zone mémoire de type EEPROM dans laquelle il serait si confortable de ranger quelques valeurs numériques... Oui, c'est une solution élégante. Mais à quel moment effectuer la sauvegarde ?
1 - Quand le nombre de litres vient juste d'être décrémenté ?
2 - A intervalles réguliers, par exemple toutes les 5 secondes ?
3 - De façon manuelle quand on arrête la machine ?
Chacune de ses solutions présente malheureusement au moins un défaut :
1 - Si le nombre d'impulsions a atteind 1780 au moment où on arrête le véhicule, on prend un litre dans les dents. Pas très précis...
2 - Pas trop de perte en précision, mais une EEPROM a une durée de vie limitée, mieux vaut éviter d'écrire dedans sans arrêt.
3 - Ne me faites pas croire que vous y penserez à chaque fois ;-)
Bref, il nous faut une solution automatique que l'on oublie, qui soit fiable et activée seulement quand nécessaire. Cette solution existe, elle s'appelle "réservoir d'énergie et détection automatique de coupure d'alimentation", dont le principe peut être résumé en un rien de temps :
- Si présence d'alim, recharge du réservoir d'énergie, et alimentation de l'ensemble sur la source d'énergie principale.
- Lors de la coupure d'alim, les afficheurs sont éteints, et seul le PIC fonctionne sur le réservoir d'énergie pour minimiser la consommation globale. Ce dernier détecte la coupure et active aussitôt la sauvegarde des données en EEPROM. Bien sûr, il faut que le temps d'alimentation secouru soit plus long que la procédure de détection et de sauvegarde. Afin de conserver une bonne précision, deux informations sont sauvées en mémoire : le nombre de litres restants et le nombres d'impulsions reçues depuis le dernier décompte des litres.

Comptage des impulsions
Rien de bien sorcier pour faire tout ça. La seule chose à laquelle il est important de penser concerne les éventuels rebonds mécaniques produits par les contacts électriques du débimètres, afin de ne pas afficher un décompte de litres plus rapide que la normale. Ces rebonds sont absorbés, le cas échéant, par la cellule R15 / C2 placée en série sur l'entrée principale. D'un point de vue logiciel, une variable de type Word (appelée iCount) permet de stocker le nombre d'impulsions reçues. Quand le nombre contenu dans cette variable atteint 1800, elle est remise à zéro, et le nombre de litres restants (affiché) est décrémenté de 1.

Affichage des litres restants
Le nombre de litres restants en lui-même est stocké dans une autre variable de type Byte (appelée iVal), dont la valeur peut à tout instant être réinitialisée à sa valeur maximale, juste après avoir fait le plein (actuellement, cette valeur max est égale à 30). Vu le nombre de pattes que comporte le PIC utilisé, il n'est guère envisageable d'y raccorder directement deux afficheurs sept segments (même en les multiplexant, il faudrait 9 pattes de commande). C'est la raison pour laquelle les chiffres à visualiser sont transmis sous forme sérielle par le PIC, puis convertis en parallèle par les registres à décalage CD4094.

Logiciel du PIC

Les fichiers de code source et le fichier binaire compilé (.hex) sont disponibles dans l'archive zip suivante. Pour ce projet, j'ai utilisé le logiciel MikroPascal Pro, que vous pouvez aussi utiliser pour modifier le code source à votre convenance.
Indicateur niveau liquide 003 - PIC 12F675
(non disponible pour le moment)

Circuit imprimé

Non réalisé.