Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
BRICOLSEC
28 avril 2012

NIVEAU de CITERNE à eau avec PIC 16F876

NIVEAU de CITERNE à eau avec PIC 16F876

1 Pourquoi un nouveau systèmeCiter1
2 Rappel du principe de mesure
3 La nouvelle sonde de mesure
4 Le boîtier oscillateur
5 Le convertisseur courant / tension
6 Le choix du montage et du PIC
7 La sonde de température
8 Le circuit d'affichage LED avec des FND567
9 Les calculs de capture avec les CCP
10 Les Schémas
10.1 Le schéma de principe des acquisitions
10.2 Le schéma de l'oscillateur
10.3 Le schéma des afficheurs
10.4 Le schéma du CI principal
11 La mise au point
12 Quelques Conclusions

Si vous arrivez directement sur cette page par un moteur de recherche, vous pouvez avoir accès à la table des matières et à chaque article, en page d'accueil.    L'accès se fait par l'un des deux liens en tête de colonne de droite ----->

ATTENTION à compter du 15/09/2019 les commentaires ne seront plus possibles à causes de quelques imbéciles qui font du spam pour le plaisir de nuire ! désolé  !

 



Avant propos

Cette nouvelle mesure de niveau d'eau pour une citerne béton enterrée est l'évolution d'un modèle moins évolué décrit dans mon article initial vers quelque chose d'un peu plus professionnel et surtout de beaucouCiter2p plus précis.

Ce nouveau système vient d'être installé dans sa version logicielle la plus simple sans aucun paramétrage. Les mesures sont données par 4 afficheurs LED 7 segments pour le volume d'eau restant ainsi que la température de l'eau.

L'affichage du volume peut tout aussi bien être transformé en hauteur sans aucun inconvénient au gré des desideratas de chacun, puisque c'est effectivement la hauteur qui est à l'origine du volume dans le cas d'une surface étirée en hauteur. (Citerne rectangulaire ou cylindrique verticale par exemple).

Dans le cas de citernes cylindriques horizontales ou de forme variable, le hardware fonctionnera toujours mais le programme devra soit travailler sur des formules pour donner les volumes, soit travailler à partir de tables.
Ce système est conçu pour fonctionner de façon ponctuelle à cause de sa consommation un peu trop élevée dûe aux afficheurs LED. (4W secteur environ).

1 Pourquoi un nouveau système

Ce système est nouveau car le précédent, analogique, était très simple, ce qui était bien, mais il a dérivé pour arriver à n'indiquer que des bêtises. Il était simplement réalisé avec un affichage constitué dans l'urgence par deux multimètres "low cost".

Pourquoi cette reprise nécessaire ? Pour au moins 3 raisons, dont une des causes était la pile trop faible d'un voltmètre, qui donnait des valeurs fausses.

La deuxième raison était plus diffuse en donnant une dérive et une instabilité et sa mise en évidence absolue n'a jamais été véritablement trouvée, car je pensais à une forme d'électrolyse, car rappelez vous une des électrodes était constituée par le tube de cuivre étamé. Alors courants vagabonds ou "Sans Origine Fixe" ? Tout est envisageable, y compris ce que l'on va voir par la suite et qui est la seule vraie réponse !

Enfin la cause la plus évidente était la dégradation du circuit soumis en permanence à la condensation. Cette condensation a réussi à venir à bout du vernis et à attaquer quelques pistes de cuivre et créer quelques fuites de courant. Mais le temps aidant, cette humidité s'est propagée dans tout le circuit, donnant des résultats toujours plus dérivants.

Enfin pour l'opérabilité, ce n'était pas quelque chose de très évolué et c'était surtout un bricolage d'urgence, et on oubliait parfois d'arrêter un voltmètre avec comme résultat une pile épuisée !
Ce montage d'origine vient de terminer sa mission le 23/04/2012 et a été remplacé et raccordé dès le lendemain par le modèle décrit dans sa version soft la plus simple, mais efficace.

Peu de temps avant la nouvelle installation, j'avais donc sorti l'ensemble précédent et séché tout ce circuit logé dans la boîte Plexo, pour enlever toute trace d'humidité. (Il y avait de la buée jusque dans le potentiomètre multi tours !)
Après étuvage au sèche cheveux et changement du "potar", j'ai coulé de la paraffine et noyé totalement l'ensemble en ne laissant que les fils : Résultat panne totale !
Alors pour retirer la paraffine c'est une autre affaire …! Pas d'autre solution "douce" que la vapeur avec le tuyau de la décolleuse à papier peint !
 
Après réparation dûe à une bêtise, le système a été noyé de nouveau dans la paraffine (un peu moins) et cette fois c'est mieux ! Ça marche, mais toujours avec "un peu" d'instabilité.
(On remarquera que la paraffine ne dérange pas au niveau soudures et qu'elle se comporte plutôt comme un agent "mouillant". Ça fume un peu en soudant mais ça ne brûle pas)

Rappelez vous le système d'origine de "njhurst" qui avait réalisé une version améliorée avec un PIC 16F628. (Le principe capacitif de mesure est de son cru !)
Je n'ai pas repris son montage, mais cette fois les recherches de mon copain "Riri", électronicien confirmém'ont largement aidé.
En effet, chose très amusante, le copain "Riri" a réalisé un projet parallèle sur la base de mon premier article, avec une sonde de mesure en courant de sa conception et avec seulement l'oscillateur dans la cuve et "le reste" au sec ! Très très bonne idée, surtout avec beaucoup d'innovation !

Il n'en fallait donc pas plus pour que je reparte sur un nouveau système plus élaboré et plus complet, car finalement je mesurais la hauteur et la température avec un voltmètre et un ohmmètre en fixe, ce qui était un peu "bricolo".

Je ne vais pas cracher dans la soupe non plus, car ce premier système a rendu service et moyennant la modification du capteur et de noyer le système dans une résine, il a assuré un service simple jusqu'à son remplacement.

On notera que ce même principe rend toujours un excellent service pour le pluviomètre deuxième version, et qu'il n'a aucun des inconvénients cités.

2 Rappel du principe de mesure

Le principe est uniquement capacitif et agit sur la fréquence d'un oscillateur. Pour ce faire deux fils en boucle ouverte sans aucune épissure trempent dans l'eau. Ce sont les armatures d'un condensateur !

L'eau "habituelle" du fait des impuretés est toujours conductrice, aussi le "condensateur" doit avoir au moins une électrode isolée (Voir ci-après le § mise au point avec une modification importante de la sonde).

La hauteur d'eau va modifier la capacité très faible entre ces deux fils partiellement dans l'eau en multipliant la valeur par la constante diélectrique de l'eau, qui est très élevée (70-80 environ et une des plus importantes après les oxydes métalliques rares).
Dans l'air, cette constante diélectrique est de 1 et constitue pratiquement la capacité mini du dispositif.
Si bien que le condensateur ainsi formé représente par sa variation, la hauteur d'eau.

(Reportez vous à l'article précédent pour plus d'explications)

3 La nouvelle sonde de mesciter3ure

Cette sonde capacitive a été complètement reprise sur la base de la sonde d'essais utilisée pour la vérification du principe (2 boucles ouvertes parallèles, voir la photo avec des fils verts/jaunes dans l'article précédent).
C'est-à-dire plus aucune partie métallique d'armature "du condensateur" en contact direct avec l'eau. (Ce n'est pas non plus la bonne solution, voir § mise au point)

La sonde est donc modifiée pour ne garder que du plastique. Elle est constituée de deux tubes électriques PVC rigides de diamètre 16 mm.

Deux fils en épingle ouverte et en regard l'un l'autre constituent le condensateur. Ces deux fils isolés ne comportent aucune épissure dans l'eau, bien entendu, et font une boucle ouverte dont un seul côté sera connecté. Le déplacement des charges se faisant naturellement tout le long du fil.citer4

Vérification faite, raccorder chaque côté d'un même fil ne change rien à la valeur de la capacité, (Ce qui me semble tout à fait normal), ainsi au niveau connectique c'est plus facile de n'insérer qu'un seul fil dans une broche de connecteur.

(ATTENTION Cette deuxième sonde a été modifiée en mise au point en utilisant seulement un seul fil isolé et un deuxième fil en cuivre nu de 63/100)

Je ne sais pas si cette isolation générale améliorera la stabilité, mais en cas de problèmes, il serait très simple de faire une mise à la masse (terre) du fil qui est normalement au 0 volt. (C'est d'ailleurs ce qui a été fait !)

Cette sonde bon marché est en tube électrique rigide PVC . C'est un petit travail de précision, et il faut faire quelques petites pièces ajustées.
Les entretoises sont en polycarbonate et sont faites avec un petit tenon de 1 à 2 mm qui va se loger dans un trou oblong de chaque tube, l'ensemble noyé dans la colle bi-composants.
Cette façon de faire assure une bonne rigidité à l'ensemble.

Une équerre en polycarbonate (transparente) porte l'ensemble, et les citern62 tubes sont bloqués par le dessous de l'équerre par un fil en inox (Morceau d'antenne radio de voiture, repère flêche rouge).

Juste avant l'équerre, est engagée une petite plaque d'époxy de CI (Sans cuivre, repère flêche jaune) qui va tendre les fils entre l'équerre et le bas de la sonde.

Cette fois pour éviter toute oxydation d'un ressort, ce seront de simples élastiques en caoutchouc (Bracelets pour les puristes) qui mettront les fils en traction et maintiendront des distances constantes (15mm).
NOTA : On verra que si la distance des deux boucles ouvertes n'est par rigoureuse, ce n'est pas un problème très important.


Le type de fil isolé choisi est identique au modèle précédent : fil isolé téflon multicitern7brins et brins en cuivre argenté (Le fil standard correctement isolé convient également et je n'ai fait qu'utiliser ce que j'avais sous la main).

Le deuxième fil maintenant non isolé, est en cuivre nu de 63/100. (à peine visible sur la photo ci-dessus de la tête de sonde, mais visible ci-contre)

Le boîtier oscillateur (Bleu sur la photo ci_dessous) sera légèrement déporté de côté sur l'équerre pour permettre la fixation par les deux vis du collier Atlas initial déjà en place (On retirera seulement le chapeau du collier), mais pour permettre aussi de visualiser les deux LED de bon fonctionnement de l'oscillateur. Il sera vissé sur l'équerre.

Ce mini boîtier a été divisé en deux pacitern8rties distinctes, l'une principale pour loger le CI (avec enrobage paraffine) et l'autre non enrobée reçoit seulement deux vis inox de 3mm qui immobiliseront le boîtier verticalement sur l'équerre dans laquelle seront taraudés deux trous pour vis de 3mm.
(Photos ci-contre et ci-dessous)

En effet ces montages dont une partie est en extérieur (Dans la nature) sont toujours délicats pour les problèmes de température et d'humidité mais aussi pour la maintenance à cause du temps, et il est souvent plus commode de rentrer tout pour examen.
Alors les démontages doivent être prévus sans avoir à sortir le fer à souder et toute la panoplie d'outillage divers dans l'herbe ou sous la pluie…C'est pour cela que je recherche le meilleur moyen pour arriver à cela et que c'est souvent à la dernière minute que cela se décide.

Eh bien tout ce qui vient d'être dit n'est plus tout à fait vrai ! En effet la mise au point a obligé à reprendre cette sonde ainsi que déjà évoqué. Ce n'est donc plus deux fils isolés mais un seul.
Ce deuxième fil est en cuivre et remplacera l'un des fils isolés. La raison en sera expliquée au  § Mise au point.

Quelques informations pratiques concernant cette capaccite15ité dans l'eau  :

Avant de publier l'article, je voulais être sûr de la linéarité de la sonde. Je savais que c'était excellent de part mes expériences précédentes mais je l'ai mesuré de la façon suivante avec des condensateurs "étalons" substitués à la sonde et avec 50cm de fil volant juste à côté de la citerne.
C'est une droite parfaite qui passe par  62Pf avec 95 impulsions et 1115 Pf avec 3349 impulsions. (Le point 0 est interpolé)

(Par impulsion comprenez l'affichage)

Dans le cas présent, la capacité équivalente pour 2500 litres soit 1.50 m de hauteur est de 840 Pf avec une capacité résiduelle de 30 Pf environ. Cela fait donc une constante de 810/150 soit 5.4 Pf/Cm d'eau environ.

Ceci étant j'ai voulu également savoir quelle était l'action sur la capacité de la distance inter-électrodes ...Eh bien elle est très faible (Dans la mesure ou une électrode est en contact avec l'eau).

Pour vérifier, j'ai réalisé deux petites sondes conformes au modèle en cuve mais plongées seulement dans un seau avec 18 cm d'eau.
J'ai écarté les deux électrodes de 18 cm l'une de l'autre et j'ai noté un comptage de 256. En rapprochant pratiquement à se toucher les deux électrodes, j'ai noté un comptage de 272.

Enfin, dans l'idée d'avoir une sonde très simple torsadée, pour la même hauteur et les deux fils faiblement torsadés j'ai relevé un comptage de 304 .

Les deux fils fortement torsadés donnent un comptage de 362. Mais pour ce type j'ai remarqué un glissement des valeurs au gré des gouttes d'eau qui longent les fils (Cela me semble tout à fait réaliste et c'est cela qui empêcherait d'utiliser des fils torsadés !) 

Toutes ces précisions sont importantes pour la mesure de hauteur, car cela implique clairement que les deux électrodes devront être séparées par une distance qui évite le mouillage des 2 électrodes à la fois. La capacité parasite est également plus élevée dans le cas de proximité, mais ce n'est pas un problème majeur.

En ce sens du fil torsadé ne conviendra pas ! Heureusement du fil torsadé un conducteur isolé et un conducteur nu "ne court pas les rues".
Cela aurait pourtant été très utile et surtout très pratique ! Ce qui conviendrait bien serait un genre de twinlead (Fil plat 300 ohms des antennes FM) mais avec l'un des fils qui soit nu...! J'ai quelques idées complémentaires d'ici quelques temps,... Le temps de vérifier !

Enfin en dernière recherche "fondamentale" il aurait été intéressant de regarder la capacité dans la vapeur d'eau ! Mais là franchement c'est trop de bazar pour essayer et j'arrête là !

4 Le boîtier oscillatecitern9ur

L'oscillateur est le cœur du montage et Le copain "Riri" a conçu un excellent montage. Je l'explique, car l'honneur lui en revient en totalité, et c'est avec son accord que je publie.
Il a conçu un oscillateur (Appelons par abus de langage l'ensemble oscillateur et/ou "la sonde", la sonde  ou le "capteur") réellement très intéressant.
Ce capteur est un capteur capacitif avec seulement 2 fils de raccordement.
L'alimentation est fournie par les fils en même temps que le signal utile. C'est donc un capteur de type boucle de courant  par variation du courant entre deux valeurs.

Le montage consomme au repos 1 mA et une variation de courant de 1 à 4 mA constitue le signal utile.

Ce montage est génial par son principe et sa faible consommation. Il est également très bien conçu puisque l'inversion de polarité est sans aucune conséquence, tant sur la sonde elle-même que sur le montage aval. (J'ai essayé ((par inattention) c'est OK !)
La coupure de fils est également détectée par l'absence du courant de repos de 1 mA, et enfin il y a des témoins du bon fonctionnement par 2 LED.

(Le principe n'est pas spécialement nouveau et a été utilisé avec des courants plus importants (Boucle de courant 4-20 mA plus connue) notamment sur les vieux télétypes et autres capteurs industriels, mais revenir à des valeurs plus faibles de courant est nouveau, du moins à ma connaissance et cadre bien avec les micro contrôleurs).

Ce circuit est alimenté en 11V, mais une adaptation est tout à fait possible en 12V. (J'ai fait au plus pressé et plus facile et je n'y reviendrai pas car tout est étalonné ainsi, surtout pour le thermomètre et les courants des segments des afficheurs LED)

Cet oscillateur est totalement insensible aux variations de tension d'alimentation de 11V, puisqu'il est bâti sur la fonction très connue d'oscillateur astable du NE555 (J'ai vérifié sur table)

Ce circuit déjà bien stable par sa conception est encore améliorée par le régulateur 5V faible consommation LP2950-CZ-5.
Son COURANT modulé pourrait cependant être affecté par des variations éventuelles de tension sans autre conséquence qu'un changement de niveau du convertisseur courant tension (Voir ci-après). L'essentiel étant l'indépendance de variation de la fréquence, ce qui est effectif.

Il y a pourtant une nouveauté que je n'ai jamais vue utilisée dans les revues spécialisées, qui est le rebouclage de l'OUT d'un 555 sur une résistance unique reliée au Thres et Trig. Cette disposition donne une excellente symétrie au signal de sortie (et non plus 1/3 2/3).
Le signal de sortie ainsi que déjà dit est un courant de 1mA ou 4 mA suivant les alternances de l'oscillateur. Je ne suis cependant pas certain que ce rebouclage donne de bons résultats avec un NE555 traditionnel, car ici c'est un TLC 555 (Version CMOS du NE555) qui est utilisé. Cela resterait à vérifier !

Des LED très faible consommation confirment visuellement le bon fonctionnement, et bien que cela apparaisse comme un gadget, je dois dire que l'éloignement de ce circuit permet de savoir immédiatement en cas de problème, si c'est le circuit oscillateur qui est en cause ou non, et ce n'est pas du tout un luxCITERNCe (Attention ces LED sont à très faible consommation : 100 à 400 µA).

Le couvercle de la boîte est traversé par les pins Berg d'un tout petit CI qui recevra les différents connecteurs. (Voir photo un peu plus haut et typon ci-contre) 
(Arrivée de 3 fils du CI principal, 1 fil du condensateur et 1 fil de la thermistance et un commun (j'évite le mot de masse qui prête à confusion).

La liaison entre le CI capteur TLC555 et les pins Berg est faite par soudure côté soudure du CI des Pin Berg  (et donc à l'intérieur du petit boîtier bleu).

Les connecteurs sont de type Berg au pas de 1.27 dont on saute un pas à chaque fois (Cela revient à un connecteur au pas de 2.54 en horizontal), ceci pour éviter que des gouttes de condensation ne viennent perturber entre deux contacts adjacents.
L'orientation de la connectique est faite en conséquence pour qu'il n'y ait que des "runs" verticaux, évitant encore une fois des perturbations avec les gouttes de condensation.

C'est un peu délicat à réaliser, mais il est nécessaire de souder les fils sur les BROCHES FEMELLES à cause du milieu très humide. (Juste le minimum de soudure pour ne pas gêner l'introduction dans le plastique, ni bloquer le trou qui ira dans les pins Berg. (Le sertissage habituel est trop aléatoire entre le cuivre -même étamé- et l'or des contacts).

Le petit circuit imprimé porteur des pins est collé en interne au couvercle avec de la colle bi-composants et la partie cuivre du CI reste accessible et recevra les 4 fils du CI oscillateur par l'intérieur (Alim 2 fils dont une masse, 2 fils de la sonde capacitive dont une masse)
(J'avais prévu de raccorder l'oscillateur par l'extérieur du boîtier, mais c'est tout aussi bien ainsi par l'intérieur, d'autant qu'après soudure, on recouvrira le CI des pins par de la paraffine également )

Les Pins sur le boîtier seront suffisamment longues pour que le connecteur femelle ne soit pas à fond et laisse ainsi passer les gouttes verticalement, sans favoriser un "mouillage" horizontal et créer ainsi des fuites parasites.

C'est beaucoup de précautions, mais je crois que c'est indispensable dans le milieu humide et ruisselant d'une citerne.
Bien entendu, noyer tout l'ensemble de connexions dans une résine serait une solution fiable, mais l'ensemble deviendrait alors non démontable.

Une fois la fréquence déterminée et la résistance unique decitern10 470K de l'oscillateur vérifiée, ainsi qu'une dernière vérification de bon fonctionnement, le boîtier sera enrobé dans la paraffine et les LED seront protégées pour rester bien visibles.

Encore une indication, le boîtier bleu utilisé est une vieille boîte d'épingles. A ce jour les épingles sont souvent vendues dans des coques thermoformées inexploitables pour cette application. Il est devenu difficile de trouver des produits les plus simples : Une petite boîte !

J'ai profité de l'occasion de ce très simple circuit pour réaliser un premier essai réel avec des CMS (pour le TLC555) ! Finalement ça se passe bien, mais la loupe est souvent nécessaire...

Une indication pour cette réalisation... Ce petit CI a été traité à l'étain à froid, mais ce revêtement chimique donne un "mouillage" plus difficile que le cuivre rouge lors des soudures.
J'ai alors réalisé une épargne avec du ruban adhésif lors de l'étamage, pour garder le cuivre nu sur les pattes réservées au TLC555 CMS (Photo ci dessus où on distingue le rouge du CI 8 pattes CMS TLC555)

5 Le convertisseur courant / tension

C'est un "symétriseur" pas tout à fait symétrique pour respecter les niveaux 0 et 1, à 0 et 5V. (J'ai fait la mauvaise expérience d'un niveau 1 logique trop faible de 3.3V sur l'entrée RC2 trigger de Schmitt du PIC).

Le cœur de la détection est une résistance de 1K ohm qui va produire une tension et un courant de base du transistor Q1 (Voir schémas ci-après).
J'ai également ajouté des diodes de rappel au VCC en cas de court-circuit sur les entrées risquant de porter à un potentiel de 11V les entrées PIC.
(Je préfère que les diodes 1N4148 ajoutées pètent avant celles du PIC !!!)

Le courant est ainsi transformé directement en tension 0 à 5V qui entre directement sur l'entrée RC2/CCP1 du PIC.
Ce montage convertisseur de courant en tension fait aussi partie des recherches de "Riri" et il est simple et efficace.
(Voir le schéma de principe au paragraphe des schémas pour plus d'explications)

6 Le choix du montage et du PIC

Le montage est principalement axé autour de la mesure de niveau, qui est la fonction de base. La mesure de température est tout à fait accessoire, ainsi qu'on le reverra.

Tout est parti d'un montage de mon copain "Riri",pour le déclenchement d'une pompe, qui a fabriqué cette sonde de courant 2 fils, particulièrement géniale .
Il y a eu aussi la nécessité d'un affichage qui utiliserait mes vieux afficheurs LED 7 segments qui encombrent les tiroirs et dont il faut bien trouver une utilisation au lieu d'aller rejoindre la benne aux déchets électriques/électroniques.
(Associé à cela, les afficheurs LCD deviennent relativement chers et il faut parfois vider un peu ses tiroirs)

Parallèlement à cela, la réalisation logiciel d'un multiplexage sur 4 digits m'intéressait aussi pour un autre copain qui a cela en projet également pour afficher la vitesse du vent et la direction

Bon alors on choisi le PIC sur quels critères ?

Le montage fait appel à un seul transistor pour convertir le courant en impulsions de tension pour l'entrée CCP1. Ces impulsions délivrées sont donc symétriques par le montage inédit de "Riri" sur la base d'un TLC555 dont la sortie est rebouclée sur les entrées (Et jamais vu ailleurs).
On doit pour ce principe utiliser la fonction de CAPTURE d'un PIC comme "Riri" l'a d'ailleurs fait, mais encore avec un surcroît de professionnalisme en utilisant encore un ampli OP d'un PIC et avec divers rebouclages sur un 16F690.

Dans les PIC 16F courants, le 16F628 ne convient pas, car cette fonction CAPTURE n'existe pas. ! ERREUR, je revérifie avant publication et je me suis trompé car cette fonction est déplacée dans la documentation et je ne l'avais pas vue initialement. Cependant il ne serait pas possible de faire ce qui est décrit sans adaptations spécifiques, car il manquerait plusieurs I/O….

La mesure de température nécessite un convertisseur A/D et là, le 16F628 ne convient pas, car cette fois c'est certain il n'a pas de convertisseur A/D. Alors le premier venu des vétérans est donc le 16F876 mais aussi tous les nouveaux PIC ayant au moins un convertisseur A/D.

Que dire pour un 16F628 ? Je pense que ce serait possible de l'utiliser seulement pour la mesure de niveau (Sans la température) A vous de vérifier, mais il n'y a pas trop de disponibilités d'I/O si on veut y arriver en utilisant le principe du multiplexage des Afficheurs. Cela nécessiterait peut-être un décodeur 1 parmi 4 pour la commande des Anodes, voire des décodeurs 7 segments.
(On notera aussi que l'ajout de décodeur de segments  privera l'affichage de caractères différents des chiffres, comme le degré par exemple, voir ci-après)

Cependant en cas de montage à prévoir pour fonctionnement permanent et/ou sur pile, il est préférable de s'orienter vers les nouveaux PIC tels que 16F690 dont les consommations en SLEEP sont extrêmement faibles (1nA).

7 La sonde de températsonde4ure

Rien de spectaculaire au contraire, puisque c'est une banale CTN 10K qui va assurer la mesure de la température de l'eau. Bien entendu, mesurer en dessous de 0° n'aurait pas beaucoup de sens dans cette application, et il faudrait craindre pour la structure du réservoir…!
D'autre part, mesurer au dessus de 20° est fort peu habituel pour de l'eau en réservoir souterrain.

Mesurer de façon presque LINÉAIRE avec une CTN, et avec une précision "très moyenne", la température est justement possible dans la zone 0° à 20°. (voir l'article sur les mesures de température)

Il n'en fallait pas plus pour alimenter simplement cette CTN à partir d'une tension de 11V en calculant la résistance en série pour que l'excursion ne dépasse pas le 5V de l'alimentation du convertisseur A/D du PIC. (Attention !)

La commande d'alimentation en tension de la CTN est donc constituée de 2 transistors PNP/NPN nécessités par le changement de tension de 5 à 11V. Ces transistors commandent directement la tension de 11V avec une chute de tension Vce extrêmement faible due au très faible courant collecteur. (#0.01V).

Je pense que l'on pourrait parfois se passer d'un transistor en utilisant les TRIS pour simplement passer en "tristate" ou au contraire en fournissant un courant lors d'une écriture de PORT. Je n'ai pas cette habitude, et cela peut poser des problèmes de fronts "avachis" ou autres retours  comme j'ai déjà pu constater dans d'autres cas.

Là aussi on en reparlera, le système est prévu pour couper tout de suite l'alimentation de la CTN pour éviter de l'échauffer…Mais en réalité, elle est noyée dans un petit tube rempli de colle au pistolet à colle et l'inertie thermique est très élevée.
On pourrait parfaitement se passer de la commande dans mon contexte de fonctionnement.
Il est important que cette thermistance soit correctement isolée par la colle au pistolet, car elle pourrait perturber la mesure de capacité. (Elle est engagée dans un des tubes PVC de la sonde, du côté masse).

C'est donc très simple en principe, mais dans la réalité, il faut voir si on peut obtenir un nombre de pas important, multiple de 100 de préférence, pour le convertisseur A/D (En 1/1024) pour cet écart de 20° d'excursion en température.

Il est effectivement possible d'obtenir 400 pas sur 1024 pour 20°, ce qui est tout à fait acceptable et donne une précision toute théorique de 0.05°C, par pas, mais c'est seulement possible avec une tension d'alimentation de 11V.

La réalité est beaucoup plus pratique, car non seulement la courbe de la CTN n'est PAS rigoureusement linéaire, mais les difficultés d'étalonnage viennent ajouter à la confusion. Alors, sans mesurer avec une grande précision, je pense que le demi –degré voire le simple degré en précision seront suffisants !
(Si vous voulez faire mieux, alors il faudra créer la table spécifique de correspondance ou utiliser d'autres éléments plus linéaires de mesure de température).

La température de l'eau d'une citerne n'a pas une importance capitale dans la grande majorité des cas en France, (Mais ce n'est pas une généralité si jamais l'eau d'une citerne doit servir pour la consommation humaine, ce qui peut être le cas dans d'autres pays).
Je disposais auparavant de cette mesure, et je l'ai simplement reconduite, car elle ne coûte que très peu de composants et elle est toujours intéressante (accessoirement).

Comment obtenir tout juste 400 pas sur 1024 sans dépasser les 5 volts de référence à partir d'une alimentation 11V ? (Une tension d'alimentation de 5V ne permet pas de monter à 400 éléments mais seulement à 200)

Seul le calcul sur tableur permet de s'en sortir facilement.
Pour cela il faut utiliser les recherches par valeur cible pour cet ensemble pourtant si simple d'un pont diviseur de résistances, dont seule la CTN varie, mais dont la tension de sortie ne doit pas dépasser 5 volts et que l'écart de pas soit précisément de 400 et représente 20°. La résistance théorique  Rs est en réalité composée d'une partie fixe et d'un potentiomètre pour les réglages précis du zéro degré.

Dans la réalisation logicielle on admettra que l'on fera une dizaine de mesures et que l'on ne partira pas d'une tension 0V mais d'une valeur intermédiaire inconnue, donc on assurera par programme la soustraction pour afficher la température réelle de 0°. (Le mieux est d'étalonner, mais les valeurs calculées sont tout de même proches )

On note tout de suite que le risque de dépasser 5V est du côté 0°. (Il faut le savoir, surtout pour ceux qui voudront traiter des citernes aériennes)

Côté > 20°, on va tendre vers des faibles valeurs de CTN et donc vers le zéro Volt. On pourra dépasser les 20° sans incident, mais dans ce cas, la linéarité va largement impacter les mcitern11esures et les résultats affichés ne seront alors plus corrects.
Cela ne représente pas un danger pour le matériel, mais seulement des valeurs erronées et La CTN fonctionne comme son nom l'indique en négatif, c'est-à-dire que la résistance dans le cas précis est de 33.5 K ohms à 0°C et 12.42K ohms à 20° (Commercialement CTN 10K à 25°C)

Si l'on considère la courbe de 0 à 20° comme linéaire, la droite devra donc avoir la forme Y=Ax+B, avec pour A une valeur négative de pente.
Voir ci-contre quelques éléments relevés qui ont servi à la première approche au niveau logiciel. La réalité est toutes fois un peu moins précise et il sera nécessaire d'ajuster le 0° puis le coefficient A pour arriver à une bonne précision des extrêmes.
On admettra que les valeurs intermédiaires "seront ce qu'elles sont"…En effet je ne ferai pas de table de conversion pour des éléments dont les courbes peuvent différer d'un composant à un autre. Cette température n'est qu'une indication et non un modèle de précision.

8 Le circuit d'affichage LED avec des Fcitern12ND567

Les afficheurs 7 segments sont implantés sur un circuit imprimé séparé (Peut-être un peu prévu pour être réutilisé pour d'autres applications ?)

Photo ci contre des 3 circuits principaux (Manque le circuit des pins) Le circuits des afficheurs est sur la droite.

Ces afficheurs sont des modèles anciens de récupération, et leur "pinning" n'est pas très pratique, pour "router" en simple face horizontale.
Ces modèles sont en anode commune et possèdent un point décimal sur la droite d'un digit composé des 7 segments traditionnels.

Chaque segment sera alimenté le ¼ du temps total au rythme d'un allumage de durée 5ms avec récurrence toutes les 20ms. (Avec le respect des spécifications des fabricants si vous aviez d'autres modèles).

Les résistances de chaque segment définissent le courant qui les alimentera. Ce seront des courants impulsionnels qui pourront être largement supérieurs aux courants nominaux permanents.
Peut-être pas exactement 4 fois au vu des différentes caractéristiques thermiques, mais facilement 2 à 3 fois.

La commande est en 0 5V, mais est alimenté pour la puissance en +11V.
Le modèle utilisé a un courant permanent nominal de 25 mA et un courant impulsionnel de 200mA durant 100µs seulement. J'ai choisi seulement 30 mA.

C'est un peu accidentel aussi, mais cette tension un peu élevée par rapport au 5V habituel est pour une part due au courant nécessaire pour alimenter la sonde (Nécessité d'alimenter correctement l'oscillateur, et de pouvoir faire varier le courant d'alimentation du montage de 1 à 4 mA. (C'est toujours ainsi en boucle de courant)

Cela présente aussi un avantage pour l'alimentation des afficheurs qui pourront cette fois être composés de plusieurs LED pour réaliser des panneaux complets d'affichage... Je pense à la direction et la vitesse du vent pour mon autre copain.

9 Les calculs de capture avec les CCP

Je n'étais pas habitué à ce principe de CAPTURE, mais il est certain que le procédé est particulièrement intéressant et surtout très précis.
Voici ce que j'en ai compris et pour mon application (Ce qui peut être vu également de façon très différente en inversant les rôles et avec d'autres oscillateurs, diviseurs et timers).

J'ai prévu un PIC à 20MHz donnant un temps Fosc/4 de 200ns. Ce sera donc l'horloge de base du comptage dans le registre associé TMR1 qui sera sans prescaler (1:1)

Ma première idée (qui n'était pas bonne) consistait à faire une remise à zéro de TMR1 avant de compter…La précision serait largement affectée par les temps de réponses aux interrupts et je ne l'ai pas même expérimentée !

Voici maintenant une (moins) mauvaise solution

J'ai ensuite réfléchi un peu plus pour prendre en compte le fait que la réponse aux interrupts prend un certain temps NON négligeable pour la sauvegarde des différents registres et de l'analyse de chaque possibilité d'Interrupt.
Alors toujours adepte de temps réel, j'ai dû remettre en question cette pratique dans le cas précis où en CAPTURE, le PIC ne remet pas à zéro automatiquement le Timer 1.

Il faudrait donc le faire par programme et très rapidement, alors pas d'autre solution rapide que le test en deux instructions de CCP1IF dans le programme principal, (avec l'interrupt CCP1IE invalidée).
La validation de l'interrupt CCP1IE n'est donc pas nécessaire, mais la remise à zéro du flag CCP1IF est à réaliser pour la prochaine mesure.
Cette façon de procéder ne convient pas non plus et c'est à l'écriture des lignes que j'ai vu l'erreur, car encore une fois beaucoup trop de temps d'instructions…

Finalement je me suis rallié aux indications de Microchip qui dit qu'il faut faire la soustraction des CCPR, pourquoi ?

Simplement parce que l'on perdrait tout le bénéfice du temps extrêmement précis donnés par le hard. Le fait de tourner sur des instructions (Interrupts ou goto $-1) modifierait par trop la précision des temps.
Alors ce calcul pourra prendre plusieurs formes suivant les cas.

Faire la soustraction du registre CCPR1L et H entre deux mesures suppose que l'on ne fasse pas plus de 65536 en comptage. Sinon, il faudrait alors vérifier si il y a eu report de Timer1. (Interrupt TMR1IF, ce ne sera pas mon cas)

Dans cette vision de Microchip, il faut distinguer plusieurs cas.

Le principe général est de laisser tourner TMR1 en permanence. Mais alors comment "prendre le train en marche ?"
Il faut d'abord être sûr que les différents signaux ne dépasseront pas le comptage de 65535 du TMR1 (Cette possibilité existe mais n'est pas utilisé ici, et il faut comprendre qu'ainsi il ne sera pas nécessaire de compter les interrupts de TMR1).
On attend donc une première Interrupt CCP1IF et on place CCPR1 dans "CCPR1_valeur précédente". A l'interrupt CCP1IF suivante, on peut faire la différence entre actuel et précédent.

Pour des mesures en séquence on bascule "l'actuel en précédent" et on attend l'interrupt suivante pour une nouvelle mesure

(On remarquera que suivant l'instant de départ, une seule interrupt du Timer 1 peut autoriser de compter jusqu'à 2x65535+1 au maximum, et il y aura souvent une interrupt TMR1 durant une acquisition (Mais ce n'est pas une règle).
Ces problèmes de "train en marche" sont toujours délicats à régler et c'est vraisemblablement pour cette raison que j'avais préféré partir de zéro ! C'est pour cela que les petits "gri-gri' qui suivent sont intéressants.

Il y aura donc deux cas principaux (à la condition sine qua non que le signal sur RC2 ne soit pas plus long que 65536x0.2µS= 819.2µS prescaler à 16), ce qui devra impérativement être le cas (En résultat final il y a maxi 562.5 µs, mais 44992 impulsions à cause du prescaler sur CCP1 qui est à 16)
La résistance de l'oscillateur de 470K est donc parfaitement adaptée pour la génération de fréquence pour ce cas.

Voici les différents cas à trcitern13aiter : (gri-gri ci-contre)

- CCPR1 actuel (Stop) plus grand que le précédent (Start), dans ce cas on fait simplement la différence pour avoir le temps (Et en fonction du prescaler. 1er gri-gri)

- CCPR1 actuel (Stop) plus petit que le précédent (Start), alors on prend le complément à 2 (Complément vrai) du précédent (Start) qui donne le temps entre le report et le point de départ, auquel on ajoute le CCPR1 actuel (Stop)
NOTA : Le Stop2 représenté au deuxième gri-gri serait supérieur à 65536, mais ne donnerait pourtant qu'une seule Interrupt sur TIMER1.

- Le troisième cas de l'égalité devrait normalement se traduire par 65536 puisqu'il y a eu (en principe) 2 interrupts CCPRIF. (Ce cas n'arrivera pas puisque l'oscillateur ne descendra pas plus bas que 1777 Hz, mais serait possible dans la réalité)

(Sur ces  petits "gribouillis manuels" le Start correspond à la valeur précédente qui est la première dans le temps et le Stop est la valeur actuelle. La zone grisée représente la valeur réelle qui sera obtenue par le calcul).

Une remarque importante cependant : le temps de calcul ne devra pas excéder le temps entre deux interrupts CCP1IF, mais pour ces calculs simples, cela n'est pas un problème, surtout à 20MHz.
(L'obtention d'un résultat est variable en temps suivant la valeur).
Dans le cas de très faibles écarts de valeurs sur CCPR1, seul un transfert des CCPR1 (Start) sera effectué pour éviter "d'écraser le suivant (Stop). Les calculs seront alors décalés dans le temps et une mesure permanente en séquence ne serait pas possible dans ces conditions.

Autre remarque encore une fois, autant il est possible de travailler sur une mesure unique, autant pour des calculs de valeurs moyennes, il est possible d'avoir une très grande précision en multipliant les mesures instantanées et en divisant par le nombre de mesures.
C'est de cette façon que j'ai traité les mesures de la hauteur et de la température.

Je réalise également un délai de 80 ms entre chaque mesure avec une nouvelle synchronisation sur une première interrupt. Cela est fait pour ne pas enchaîner 10 mesures n'ayant pas eu le loisir de vraiment varier, mais bien pour prendre un échantillon plus vaste.
Cela aura certainement aussi une influence sur les éventuelles vagues pouvant se produire lors des remplissages ou des tirages d'eau.
En industrie et AEP, il est souvent nécessaire d'intégrer ces variations dues aux turbulences de surface. Une méthode qui ne sera pas utilisée ici, consisterait à intégrer ces valeurs par apprentissage de la dynamique du réservoir.

Enfin, une autre méthode de comptage aurait consisté à compter les interrupts sur Timer1 pour obtenir ainsi des valeurs très élevées qui seront divisées par la suite.
La précision s'en trouve très augmentée, mais ce n'est pas nécessaire ici et cela monterait rapidement les chiffres significatifs à gérer.
On verra que la précision actuelle atteint le litre sur 2500 litres et on peut dire je pense que c'est déjà très bien pour de l'amateurisme..

En effet, la citerne ayant 1.50m  de hauteur d'eau possible, cela revient à dire que l'on est en mesure de différentier une variation de hauteur d'eau de 0.6 mm.

Une dernière précision si je peux m'autoriser le jeu de mots, est la présence d'un quartz externe à 20 MHZ (Pas d'oscillateur interne sur ce modèle)

Ce quartz avec sa précision intrinsèque va valider toute la précision des mesures de la fréquence émise par la sonde de niveau, par le CCPR1.
Toute autre réalisation avec oscillateur interne d'un PIC serait certainement moins précise et je recommande effectivement un quartz externe.

10 Les Schémas

Ils n'ont rien de particulier, et pour le circuit principal, quelques I/O disponibles sont utilisées à des fins anecdotiques et parfois peu utiles dans le contexte, ainsi que déjà évoqué.

Dans les spécificités, on notera ma volonté de ne pas maintenir ce système sous tension en permanence, car il n'est consulté qu'une seule fois par semaine. C'est d'ailleurs la raison qui m'a fait utiliser de façon très ponctuelle, les afficheurs LED souvent très énergivores.

A cette fin, un banal relais secteur est utilisé, et par un "timer" issu du TMR0, le montage est TOTALEMENT mis hors tension.

La mise sous tension est obligatoirement manuelle et se fait simplement par un poussoir qui court-circuite le contact du relais. C'est simple et ça fonctionne parfaitement.

Une entrée switch logique a été mise en place, mais ne sera pas utilisée dans l'immédiat. A vous d'améliorer si besoin est, mais le schéma existe. Je pense éventuellement l'utiliser pour modifier les quelques paramètres qui sont le niveau 0, le facteur de multiplication pour les litres et le 0° de température associé à la pente de la température.

Un Buzzer est prévu pour les erreurs programme ou une éventuelle pré-alarme de gel (Non traitée pour une cuve enterrée) ainsi qu'une alerte de niveau bas de citerne.

On remarquera aussi un essai d'utilisation de commande du régulateur de tension 11V. Cela n'est pas utilisé non plus puisque les segments sont alimentés en tension 11V régulée.
Cependant si cet appareil est destiné à rester sous tension, il serait possible de couper ainsi la puissance ou au contraire d'alimenter les afficheurs en tension non régulée. (Dans ce cas un régulateur LZ serait suffisant pour le 11V du convertisseur et du thermomètre).

Cela n'a pas non plus de grande nécessité puisqu'il suffit d'afficher des zéros non significatifs (Espaces) pour n'avoir aucun courant dans les segments.
Cette commande de tension 11V fonctionne donc mais n'est pas utilisée. On notera cependant une tension de déchet de 1.2V environ qui correspond à la référence interne, ainsi qu'indiqué dans le datasheet.

Dans les fonctions de base, on doit remarquer quelques nécessités dues aux types différents des valeurs affichées qui seront inversées toutes les deux secondes, entre niveau et température.

Le niveau sera indiqué directement (En litres) sur 4 digits sans autre indication du type de mesure. La température sera indiquée sur 3 digits, avec les dixièmes de degrés et avec mise en place d'un point décimal sur le digit des unités.
De plus pour mieux repérer visuellement les deux types de mesures, par rapport au seul point décimal de différentiation des températures, le premier digit (milliers) affichera le signe "°" en partie haute de l'afficheur 7 segments.

Ces deux signes particuliers distinguent simplement l'affichage de la température, et la confusion n'est alors que très peu possible.

Pour la clarté de l'affichage des mesures, mais aussi par économie de courant, les zéros non significatifs ne seront pas affichés. (Seul le dernier apparaîtra si nécessaire).

Pour l'affichage le registre RB est utilisé pour commander les 7 segments habituels, tous réunis sur les 4 digits.
RB0 étant prévu pour le switch logique avec interrupt et ne sera pas utilisé pour l'affichage.
C'est RC5 qui sera utilisé pour le point décimal.

(Logiquement, le point décimal accompagnera les valeurs segments en bit0 d'un data converti en segments)

Les Anodes des afficheurs (à anode commune) sont pilotées par les RC0, 1, 3, 4. (Le RC2 est utilisé de façon impérative pour le CCP1.

Ces anodes sont commandées les unes après les autres au rythme de 5ms chacune. Le timing est donné par le TMR0 dont la résolution minimale est de 5ms.
Cette façon de procéder utilise au quart de puissance moyenne les afficheurs. En réalité les calculs ont été faits pour un courant instantané de 30 mA, mais il serait possible de monter jusqu'à 200mA en impulsions de 100µS.

Sans changer la fréquence d'affichage, je pense que l'on peut monter à 100mA par segment, du fait que chaque segment est allumé seulement le quart du temps, ce qui reviendrait alors à un courant moyen de 25mA parfaitement "réglementaire" pour ce modèle, d'après les datasheets.

Les segments sont "drivés" par un darlignton ULN 2804 capable donner 400 mA par segment. Au niveau des anodes, si on doit commander une puissance supérieure, alors il faut prévoir 7 à 8 fois la puissance d'un seul segment, et les 2N2905 ne suffiraient plus.
Pour être concret, si on admet 100mA impulsionnel par segment il faudrait 800mA par anode commandée en puissance (transistor ou darlington PNP)

J'ai failli oublier de parler de la RS232…Je ne l'ai pas prévue en direct, mais seulement par le petit émetteur habituel, directement en sortie TX/RC6.
Là aussi mon courage a fait défaut pour implémenter cette fonction qui n'est pas nécessaire vu la mise en marche manuelle impérative avec arrêt sur timer. Cependant pour ceux qui feront une version sous tension permanente, le schéma est fait !....L'entrée RX est simplement inutilisée et disponible pour …?

10.1 Le schéma de principe des acquicitern14sitions

Il est plus simple de raisonner sur ce schéma de principe dépouillé, que sur le schéma général. On voit parfaitement comment s'articulent les acquisitions de données.

Ainsi sur ce schéma on voit clairement comment est récupérée la variation de courant créée par l'oscillateur. Le courant d'alimentation (et sa modulation) passe à travers R3 de 1K ohms, qui crée ainsi une tension de 1V et 4V ( 1mA ou 4 mA et 1K !)

Q1 assure aux bornes de R1 une tension en phase avec la tension Vbe et une tension en opposition de phase aux bornes de R2. C'est cette dernière qui attaquera directement le PIC et qui est référencée de 0 à 5V.

Attention aux niveaux du trigger de Schmitt en entrée RC2, c'est pour cela qu'il y a un léger déséquilibre des résistances R1 et R2 !
Cet ensemble très bien conçu est le fait du copain "Riri"

En ce qui concerne la mesure de la température, le transistor Q2 est un interrupteur qui alimente le pont diviseur constitué de R7 et P1 équivalents à Rs (citée au §7) dont la valeur issue du calcul est de 66.55 K ohms….Mais la pratique en décidera peut-être autrement, avec des valeurs peut être un peu différentes suivant les composants.

10.CITERN12 LCITE2_2e schéma de l'oscillateur

Je crois que faire plus simple est difficile, mais il faut surtout remarquer la résistance R2 qui reboucle la sortie sur les entrées TR et Thr. Cette disposition ainsi qu'exposé permet d'avoir un facteur de forme symétrique. La résistance de 475K fait en réalité 470 K !

Les LED s'allument l'une après l'autre au rythme des 1 et des 0 des oscillations.
Celles-ci sont très utiles !

Le courant complémentaire portant à 4 mA le courant total est crée par la résistance R3 et D2.
Les deux diodes sont impératives pour éviter les retours de courant des condensateurs d'alimentation, mais aussi pour autoriser une erreur de polarité de branchement. (Ç'est vérifié ! Pas de casse de composants !)

Le "condensateur" (La sonde à fils !) se branche en J3. On le verra au § Mise au point, le nouveau fil de cuivre nu sera branché au point " Masse" impérativement et ce point sera le seul et unique point qui sera en contact avec la vraie "TERRE" (par le biais de l'eau) .

10.3CITE1_1 LCITE1_4e schéma des afficheurs

Dans mon cas particulier à 30 mA par segment, un transistor d'anode 2N2905 est largement suffisant pour assurer le passage de 240 mA (8x30mA) au maximum vers les 7 segments (+ decimal point) d'un digit...(De mémoire 600mA au datasheet !)

Les émetteurs 2N2905 véhiculent tous les courants de puissance, aussi pour limiter les chutes de tension 3 broches seront utilisées au niveau connectique. (Le retour 0V puissance se réalisant au niveau du CI principal)

On note au passage qu'à ces niveaux de courant, il y a lieu de vérifier les puissances, mais celles-ci restent faibles, car les transistors sont en principe en saturation avec un Vce très faible, ce qui occasionne une faible puissance. Mais il est préférable de vérifier !
 
Les transistors 2N2222 sont des NPN standard et tout type NPN de gain "honorable" convient.
Ils sont référencés au 0V sans puissance  importante (1 seule borne au connecteur), et sont commandés par des signaux 0-5V en sortie de PIC directement.

Ce "tandem de transistors" permet une commande 0/5V et est aussi compatible avec l'état initial à zéro des registres du PIC. Tous les segments éteints à la mise sous tension (MST), car dans le cas contraire ce serait le feu d'artifice et l'alim à genou !

10.4 Le schéma du CI prinCITE4_1cicite4_2pal

Certainement beaucoup d'I/O peu utiles mais prêtes pour des utilisations particulières. Alors finalement ce n'est peut-être pas un mal.

Ce schéma n'a rien de très compliqué et comme d'habitude l'essentiel se trouve dans le programme du PIC lui-même.
Les RB sont utilisés pour les 7 segments hormis le bit RB0 qui est réservé pour l'interrupt de touche.
Le BIT0 d'un DATA de segment est utilisé pour le point décimal (DP), mais l'action du DP est affectuée par RC5.

Les 7 segments + DP passent par un ULN 2804 qui assure la partie puissance vers le 0V. (Les résistances de segments sont sur le CI d'affichage)
RC2/CCP1 est l'entrée de comptage pour la fréquence issue de la sonde.

RA3 assure la commande de l'alimentation 11V mais cette fonction est peu utile.

Il y a ensuite une commande d'alimentation de la CTN par RA1, qui elle aussi est peu utile vu son inertie accentuée par son isolation à la colle au pistolet.

Enfin la sortie RA2 est prévue pour commander l'alimentation d'un émetteur 433.92 Mhz qui n'est pas physiquement installé, ni implémenté en soft.
(seul l'emplacement existe)

Autrement un buzzer sur RA4 (Open collector PIC), seulement actif en cas d'erreur de programme, pourra être utilisé pour différentes alertes ainsi que déjà suggéré, mais rien n'est fait actuellement au niveau programme.

Pour terminer, un switch interne au boîtier principal, (déjà mentionné en début de §) est prévu pour assurer une fonction de paramétrage, mais ce n'est pas encore fait pour l'instant, mais ce serait tout de même très utile. Je verrai par la suite...

Outre toutes ces I/O, il faut mentionner bien entendu le quartz à 20Mhz qui donne toute la précision à la mesure de niveau.

11 La mise au point

Une petite hésitation suite à la résistance R1 ducite7 sycite6métriseur un peu trop forte pour l'entrée trigger de Schmitt RC2. Cela donnait des mesures totalement aléatoires, mais ça a été assez vite trouvé. (Niveaux à vérifier, mais les problèmes de masse (à voir ci-après) étaient encore présents à cet instant et les améliorations constatées prouvent tout de même une action certaine et en tous cas une immunité au bruit accrue)

Devant les possibilités de coupure des fils de l'oscillateur, et d'inversion de polarité, l'oscillateur et le circuit principal sont protégés, mais en cas de court-circuit la tension pourrait éventuellement dépasser les 5V.
Aussi des diodes D3 et D4  ont été ajoutées, sur les circuits de niveau et de température.

Lors des essais, j'avais réalisé le niveau 0 et la hauteur d'eau maxi avec un assez grand câble "en volant" pour entrer et sortir la sonde de la citerne facilement et faire les relevés de hauteur avec une alimentation auxiliaire…Mais l'installation finale de la sonde, avec les capacités réelles a été assez différent. Aussi j'ai du reprendre et faire les proportions pour retrouver la valeur maxi du jour (Il n'arrête pas de pleuvoir !!!)
La cuve étant pleine, l'accès est donc impossible et il sera nécessaire de refaire le zéro lors du prochain nettoyage et de régler de nouveau le maxi...
Mais on va voir que ce n'est pas la fin de l'épisode…!


Pour la question de la dérive, celle-ci reste faible. Par contre l'instabilité nouvelle sonde avec deux fils isolés en place et connectée avec le véritable câble réseau catégorie 5 subsistait à des valeurs à peu près identiques au montage précédent. Zut !
La stabilité du litre (sur 2500) n'était pas acquise. C'était seulement à plusieurs dizaines de litres le plus souvent.

A quoi cela est-il dû ? Le montage lui-même a été essayé sur table avec un bon vieux condensateur variable de 600pf et montré une parfaite stabilité. Le montage lui-même semble donc au dessus de tout soupçons, et le contexte est à regarder de plus près.

Le montage en citerne avec toute humidité des circuits écartée (circuits neufs et jamais encore laissés en place) donne une mesure instable.
La sonde avait été reconstruite en éléments isolants justement pour corriger ce problème. Ce problème subsistant n'est donc pas dû à des courants résultants d'une quelconque électrolyse !

Je constate au scope, du "jitter" en entrée de carte principale et j'ai cherché d'où cela pouvait venir.

J'ai d'abord coupé la liaison de masse unique au pied du transformateur faisant à la fois le 0V et la masse (Vss) mais surtout en laissant la terre issue de la prise de courant à la carcasse du transfo.

J'ai alors constaté un changement radical de l'affichage et une nette amélioration de la stabilité…

Il n'en fallait pas plus pour continuer dans cette voie et m'inciter à raccorder cette fois le blindage du câble de liaison d'un seul côté, puis des deux côtés avec à chaque fois une amélioration.

Enfin il y avait toujours un peu d'agitation de fréquence sur le scope et les différents progrès m'ont incité à définitivement fixer les potentiels de masse à la terre et au bon endroit.

Pour ce faire j'ai fait l'essai d'un fil nu qui trempe dans l'eau et raccordé au fil isolé raccordé à la masse. Résultat : variation importante de la valeur affichée et stabilité parfaite de l'oscillateur comme sur le montage sur table.

J'ai même cru un instant à un plantage et/ou un défaut de l'oscillateur tellement c'était parfait…Non c'était la stabilité parfaite tant recherchée ! La position du fil dans l'eau modifiait cependant un peu les valeurs, mais cela m'a semblé tout à fait normal vu que le fil se "promenait".

J'ai donc mis le doigt sur le problème qui existait depuis si longtemps…!

Il faut fixer le potentiel de masse seulement au niveau de la sonde et ne surtout pas ramener "une terre" par le fil de terre de l'alimentation électrique du montage. Il se crée ainsi un générateur entre deux terres différentes et cela perturbe largement le montage.
En électronique numérique on ne parle pas de "ronflette", mais c'est exactement la même chose qu'en audio.

Alors pour résoudre définitivement ce problème et à la lumière de l'amélioration j'ai retiré l'un des fils isolés en téflon et mis un fil de cuivre nu à la place. Bien entendu le système est maintenant polarisé et il ne faudrait pas intervertir les deux côtés de la sonde. (Côté terre ou eau  connecté à la masse ou Vss du circuit sonde avec le côté "chaud")

Le résultat de la modification définitive ne s'est pas fait attendre avec une stabilité incroyable, et la sensibilité est maintenant au litre sans aucun écart d'instabilité.

Je dois dire que je désespérais un peu de voir cette instabilité perdurer. Dans cette opération "fil de cuivre", la capacité a largement augmenté (Ce qui me semble normal), et il a fallu reprendre le maximum qui dépassait les 2500 litres.

La période de l'oscillateur correspondant à 2500 litres soit 1.50m de hauteur est de 562.25 µs. mais cette valeur au niveau du CCP1 doit être multipliée par 16 à cause du prédiviseur, ce qui donne donc un temps total de mesure de 8996 µs et un nombre d'impulsions de 0.2 µs de 44980 conforme cette fois et en dessous de la limite de 65536.

La valeur inférieure de fréquence de  l'oscillateur (Niveau haut de citerne) est donc dans les limites, et la fréquence est suffisamment faible pour une bonne précision.

L'absence d'eau donnera une fréquence maximum à l'oscillateur mais un nombre d'impulsions de comptage plus faible.

Il sera donc en premier lieu nécessaire (À la prochaine vidange) de faire le zéro (au niveau logiciel), puis au prochain remplissage complet d'ajuster le coefficient multiplicateur. (On pourra tout de même prédéterminer préalablement les valeurs pour un remplissage partiel, mais la meilleure précision sera obtenue en calant dans l'ordre les 2 extrêmes. (0 et maxi)

Ce montage est donc déverminé cette fois et vous devrez donc faire très attention au problème des masses et mise à la terre.

Sur le circuit principal (Le 0 volt ou Vss) est donc au potentiel de la terre par le biais du câble de liaison (Fils de masse et blindage). Cela peut être un petit problème au cas où l'on débranche la sonde, et dans ce cas un transformateur à double isolation serait peut-être nécessaire ? A voir au niveau réglementation.

Quoi qu'il en soit en fonctionnement normal il n'y a pas de danger puisque la masse (Ou 0 Volt) est à la terre par l'eau et la citerne en béton. Pour les autres configurations c'est à voir notamment pour les citernes en plastique (aérienne ou enterrées).

Je pense que la "ronflette" utilisait la capacité des fils de sonde avec la terre locale imposée par la citerne et certainement un peu éloignée de la "terre électrique" et provoquait ainsi cette perturbation.

Cela explique que le pluviomètre fonctionne tout à fait correctement, et que l'ancien montage avait aussi un problème similaire de masse.

12 Quelques Conclusions

Ce montage n'est pas orienté vers les économies d'énergie, cite5car dans mon cas, il ne fonctionnera qu'une fois par semaine pour une seule lecture et la répétitivité étant très faible, il n'a pas été nécessaire de mettre tout en œuvre pour un résultat très illusoire, d'autant que le PIC 16F876 est un modèle un peu ancien et consomme déjà largement plus que les nouveaux modèles.

Ci-contre, vue du boîtier principal terminé  et installé à demeure  en intérieur.

L'économie m'a conduit à utiliser mes vieux matériels pour leur donner une deuxième vie.
Il y a finalement un certain équilibre au niveau dépense globale énergétique !

Je confirme de nouveau l'excellente stabilité et la précision de 0.6 mm en détection de hauteur d'eau, ce qui revient à 1 litre.

Pour ceux qui ont des citernes aériennes, ils pourront adjoindre la pré-alarme en cas de gel.

Cette précision de 0.6 mm me fait penser au contrôle de l'absence de fuites sur les citernes... Il n'est en effet pas possible de mesurer de telles variations de hauteur avec une telle précision, simplement avec un mètre...

Pour ceux qui désirent un montage alimenté en permanence, il faut reprendre l'ensemble qui n'est pas conçu pour cela, mais une grande partie du programme reste et il faudra seulement voir la mise en sommeil du processeur et concevoir des alimentations adaptées (Pile, batterie ou secteur) Dans ce cas les afficheurs LED seront remplacés par des display LCD beaucoup moins gourmands.

Les nouveaux PIC permettent de tout couper et de reprendre le contrôle un peu sous la forme d'une minuterie (ULPWU pour 16F886 ou 16F690 par exemple) C'est peut être une solution pour faire des mesures périodiques tout en gardant une très faible consommation compatible avec une alimentation pile ou batterie.

Il n'est pas exclu que je fasse quelque chose pour enregistrer le niveau des nappes alluviales ou des hauteurs d'eau dans les puits, mais ce n'est pas pour tout de suite, et le plus gros problème réside dans la sonde elle-même au niveau de grandes hauteurs de 10 à 100 mètres environ...
Le comportement au niveau capacité de l'écartement des fils est élucidé par un essai complémentaire (Voir paragraphe sonde) et ne posera pas de problème sur le fond, mais seulement sur la difficulté de réalisation.

Il est toujours utile que la capacité résiduelle soit la plus faible possible, aussi la trop grande proximité des fils est à éviter. Qu'en est-il de la distance d'eau entre électrodes ? Là aussi les essais ont révélé une très faible influence et il n'y a, là non plus, pas de problème sur le fond, mais seulement dans la réalisation pratique de telles sondes souples à dérouler dans un piezomètre ou un puits.
Ces sondes ne devront pas offrir de possibilités de "mouillage" résiduel  entre les deux fils (En l'absence d'eau à mesurer) 

Dans les puits, le comportement face à l'aspiration des pompes est également un point à surveiller...

T'as quelle hauteur Paul ? "A la dernière visite le toubib m'a dit que je mesurais 1.70 m !"

_____ ( retour en début d'article ) ____

 _____ ( retour accueil lokistagnepas ) ____
_____ ( retour accueil bricolsec ) ____


 

Publicité
Publicité
Commentaires
L
Bonjour,<br /> <br /> Je ne me souviens plus si le buzzer est en fonction ou non, car le montage est assez ancien. Désolé, ce sera à vous de chercher ! <br /> <br /> Si vous voulez le source, vous vous engagerez à une utilisation exclusivement personnelle et à la non diffusion.<br /> <br /> Si vous en êtes toujours d'accord, je vous l'enverrai par mail directement.<br /> <br /> Meilleures salutations<br /> <br /> bricolsec
T
Bonjour Bricolsec, merci pour l'HEX, et t'il prevus dans cet hex l'alerte de niveau bas car j'aimerais couper la pompe au maxi bas en remplacent le buzzer par un relais? si non pouvez vous m'envoyer le programme du pic, avec quelques explications comment le modifier pour que je puisse essayer de faire la modif moi-meme.<br /> <br /> Merci pour ce super article et bonnes fêtes de fin d'année a vous.
L
Bonjour,<br /> <br /> Je vous invite à suivre ce lien pour le téléchargement :<br /> <br /> <br /> <br /> http://bricolsec.canalblog.com/archives/2014/12/20/31172388.html<br /> <br /> <br /> <br /> Bonne réception<br /> <br /> Meilleures salutations et bonnes fêtes de fin d'année<br /> <br /> bricolsec
T
Bonjour, je suis trés interessé par se montage pour ma cuve, pouvez vous m'envoyer l'HEX du pic svp merci.
BRICOLSEC
Publicité
Newsletter
Visiteurs
Depuis la création 3 411 518
Publicité