Dernière mise à jour :
07/03/2010
Présentation
Cet indicateur permet de connaitre le niveau d'un liquide avec
deux contrôles de niveau traduisibles en 3 états :
- Aucun capteur ne détecte du liquide : réservoir vide;
- Un capteur seulement détecte du liquide : réservoir à moitié plein
- Les deux capteurs détectent du liquide : réservoir plein
J'ai
poussé le vice jusqu'à indiquer si le capteur
supérieur détecte quelque chose alors que le capteur du
bas ne voit rien...
L'ensemble fait appel à deux capteurs
que l'on peut fabriquer
soi-même, et dispose d'un oscillateur délivrant des
signaux
rectangulaires pour limiter l'érosion des électrodes des
capteurs. Afin de simplifier au maximum le circuit, j'ai
utilisé un PIC de type 12F675, mais il va de soi que les
fonctions mise en oeuvre ici auraient pû l'être avec des
composants
classiques (non programmables). L'avantage d'utiliser ici un PIC est
qu'il est très facilement possible de modifier le comportement
du montage en fonction des besoins. En gros, on peut dire quelle led
allumer (ou quel circuit à commander si on remplace les leds par
ce qu'il faut) dans les quatres conditions possibles liées à l'état des deux électrodes.
Schéma
Et bien non il n'est pas difficile, surtout quand on sait qu'il
intègre l'oscillateur, les redresseurs et la section affichage
(ou commande).
Oscillateur
Il est "intégré" sous forme logicielle dans le PIC et
permet d'obtenir sur la broche GPO un signal périodique
rectangulaire dont la fréquence est comprise entre 1500 Hz et
2000 Hz. Cette fréquence n'est pas critique du tout, vous pouvez la diminuer ou l'augmenter sans problème. Le signal
oscillant est envoyé en même temps aux deux capteurs CAPT1
et CAPT2 en passant au travers des condensateurs de liaison C1 et C3.
Capteurs
Les deux capteurs sont constitués de deux parties conductrices
mises en regard et proches l'une de l'autre comme deux peignes
imbriqués l'un dans l'autre, de sorte que la présence
d'un liquide (un minimum conducteur) entre les deux parties provoque un
abaissement soudain de leur résistance. Ces capteurs peuvent
être fabriqués maison avec un morceau de circuit
imprimé "à graver" ou avec des plaques
d'expérimentation à bandes, dont les bandes sont
raccordées entre elles en alternance. C'est ce que montrent les
deux dessins ci-après.
ou
Détection
Il y a un système de détection pour chacun des deux
capteurs, aussi vous ne serez nullement surpris de trouver deux
ensembles électroniques identiques pour cette fonction. La
première partie de détection - pour le capteur CAPT1 -
est constituée des composants D1, D2, R1 et C2. La seconde
partie de détection - pour le capteur CAPT2 - est
constituée des composants D3, D4, R2 et C4. Voyons comment cela
se passe pour le capteur CAPT1 et sa détection associée,
sachant que le principe de fonctionnement est rigoureusement identique
pour l'autre capteur. Si on suit le trajet du signal rectangulaire
produit par le PIC sur sa borne GP0, on voit qu'il passe par C1,
"traverse" le capteur CAPT1 si ce dernier est plongé dans le
liquide à détecter (qui pour rappel doit un minimum
être conducteur d'électricité), et aboutit
finalement sur les diodes D1 et D2. Ces dernières sont
chargées de "redresser" le signal rectangulaire, c'est à
dire de le transformer en une tension continue. Si le capteur CAPT1
présente une grande résistivité (pas de liquide
sur les contacts), le signal rectangulaire ne parvient pas aux diodes,
ou une fraction seulement y parvient. En tout cas, la tension continue
obtenue après redressement est nulle ou très faible, et
est considérée comme un état logique bas par
l'entrée du PIC qui lui correspond (entrée GP1 pour la
première partie détection, GP2 pour la seconde). Le PIC
interprète cette tension faible comme information "absence
liquide". Si maintenant le capteur CAPT1 présente une faible
résistivité (liquide sur les contacts), le signal
rectangulaire arrive sur les diodes avec une amplitude suffisante pour
les faire conduire. Au final, on retrouve une tension filtrée
(lissée) aux bornes de R1 et de C2. L'entrée du PIC voit
cette tension continue comme un état logique haut et
interprète cette tension comme information "présence
liquide".
Remarque
: la valeur des condensateurs C2 et C4 et des résistances R1 et R2 peut
devoir être ajustée selon la fréquence de l'oscillateur. Si vous
décidez de monter en fréquence, vous devrez sans doute baisser la
valeur des condensateur et augmenter la valeur des résistances (par
exemple jusqu'à 2,2 nF et 2,2 MO). En cas de modification des valeurs
adoptées ici, à vous de jouer sur ces valeurs pour obtenir du circuit
un comportement convenable.
Interprétation et affichage
Dès l'instant où l'on dispose des deux informations
"présence liquide" ou "absence liquide" sur les deux
entrées GP1 et GP2, il est facile de dire quoi faire au niveau
affichage. Dans le logiciel livré, voici comment le PIC
réagit :
- Pas de liquide sur CAPT1 et pas de liquide sur CAPT2 : Led1 clignotante et Led2 éteinte
- Liquide sur CAPT1 et pas de liquide sur CAPT2 : Led1 allumée et Led2 éteinte
- Pas de liquide sur CAPT1 et liquide sur CAPT2 : Led1 éteinte et Led2 clignotante
- Liquide sur CAPT1 et liquide sur CAPT2 : Led1 allumée et Led2 allumée
Le code ci-dessous correspond à la partie du programme qui
permet de dire ce que l'on doit faire au niveau de l'affichage
(tel que décrit ci-avant). Vous êtes totalement libre de
modifier cette façon de voir, le code source livré est
là pour ça (vous aurez tout de même besoin du
logiciel MikroPascal, utilisable gratuitement puisque la taille du code
ne dépasse pas la limite de la version démo).
if ((InDetect1 = 0) and (InDetect2 = 0)) then
begin
OutLed1 := bBlink;
OutLed2 := 0;
end
else if ((InDetect1 = 1) and (InDetect2 = 0)) then
begin
OutLed1 := 1;
OutLed2 := 0;
end
else if ((InDetect1 = 0) and (InDetect2 = 1)) then
begin
OutLed1 := 0;
OutLed2 := bBlink;
end
else if ((InDetect1 = 1) and (InDetect2 = 1)) then
begin
OutLed1 := 1;
OutLed2 := 1;
end;
La variable InDetect1 prend la valeur 0 quand le capteur CAPT1 est sec,
et prend la valeur 1 en présence de liquide sur CAPT1.
La variable InDetect2 prend la valeur 0 quand le capteur CAPT2 est sec,
et prend la valeur 1 en présence de liquide sur CAPT2.
Quand OutLed1 est à 0, la led D5 / Niv1 est éteinte.
Quand OutLed1 est à 1, la led D5 / Niv1 est allumée.
Quand OutLed1 est à bBlink, la led D5 / Niv1 clignote.
Quand OutLed2 est à 0, la led D6 / Niv2 est éteinte. Quand OutLed2 est
à 1, la led D6 / Niv2 est allumée. Quand OutLed2 est à bBlink, la led D6 / Niv2 clignote.
La variable bBlink est régulièrement modifiée (0 et 1 en alternance) grâce à l'emploi de l'
interruption du Timer 0 (voir code source complet).
Logiciel du PIC
Code source au format MikroPascalPro V3.20,
et fichier binaire compilé (hex) prêt à charger
dans le PIC avec le programmateur de votre choix.
Indicateur niveau liquide 004.zip (pour 12F675, version du 07/03/2010)
Si
vous souhaitez recevoir par la poste un PIC préprogrammé
et prêt à utiliser, merci de consulter la page
PIC - Sources.
Circuit imprimé
Non réalisé.