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
-
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.
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é.