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

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

indicateur_niv_liquide_004

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.

detecteur_humidite_001_capteur  ou  indicateur_niv_liquide_004_capteur_001

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