Enregistreur de temperature à base de DS18B20

Conseils et outils pour réguler votre installation...

Modérateurs : ramses, Balajol, monteric, ametpierre, j2c

Forhorse
Etudiant Solaire
Etudiant Solaire
Messages : 278
Enregistré le : lun. févr. 08, 2010 14:42 pm
Localisation : 61 - Perche

Message par Forhorse »

Bonjour à tous,
J'aimerais présenter ici un petit projet (que j'ai déjà montré sur un autre forum que certains ici connaissent déjà) et qui, je pense, peut éventuellement intéresser du monde ici.
C'est un enregistreur autonome de température à base de PIC et de sonde DS18B20 pouvant servir, par exemple, à surveiller un certain point d'une installation solaire.
L'enregistrement se fait sur SD-card à raison d'un fichier par jour, directement lisible par un ordinateur. La sonde permet des mesure de -55°C à +125°C sans étalonnage.

J'avais prévu d'autres raffinements mais le manque de temps et une certaine lassitude me fait plus ou moins abandonner ce projet pour le moment.

Le schéma est disponible ici :
http://www.stable-boy.net/uploads/LOG18B20.gif

Et vous trouverez ici une archive zip contenant deux fichiers du programme:
http://www.stable-boy.net/uploads/LOG18B20.zip
le fichier LOG18B20.hex est le programme compilé que l'on peut directement flasher dans le PIC
Le fichier LOG18B20.bas est le fichier contenant les sources du programme, écrit en BASIC pour le compilateur Proton+
Il est lisible avec n'importe quel éditeur de texte (notepad par exemple) histoire de vous faire une idée de ce que fait le programme, mais pour l'exploiter vraiment vous aurez besoin du compilateur Proton+, du plug-in Library Manager et de la librairie SD_File_System (tout est dispo sur le site de l’éditeur : http://www.protonbasic.co.uk/)
Le compilateur Proton+ est généralement vendu environ 230€, il va donc de soit que c'est pas un logiciel que l'on achète uniquement pour fabriquer un enregistreur de température ! : :shock:
Par contre je le recommande chaudement à tous ceux qui voudraient se lancer "sérieusement" dans la réalisation de montage et l'écriture de programme pour PIC et qui n'aurait pas d'affinité particulière avec un autre language (ceux qui connaissent le C se tourneront par exemple vers d'autres compilateurs)

En ce qui concerne plus concrètement mon datalogger voici quelques explications :
Le cœur du montage est donc un PIC18F258 dans lequel prend place le programme donné ci-dessus.
PGD, PGC, GND, VDD et VPP sont l'interface "ICSP" servant à programmer ou reprogrammer le PIC directement sur le circuit, ce n'est pas indispensable mais juste plus pratique. A adapter en fonction de votre programmateur (Moi j'utilise un PicKit2)
Il faut lui associer un quartz ou un résonateur céramique à 12Mhz

L'afficheur (indispensable pour pouvoir régler l'heure) est de type alphanumérique à 2 lignes de 20 caractères avec le archi classique contrôleur HD44780 ou équivalent (KS0066...)

Le DS18B20 est un donc un capteur de température sur bus "1 wire"; ce genre de composant est étalonné en usine et ne nécessite donc aucun ajustement pour fournir une température juste.
La plage de mesure va de -55°C à +125°C (qui est intégralement prise en charge par mon montage)

Le DS1307 est une horloge temps réel (RTC) sur bus I2C qui sert à compter l'heure et la date même quand le montage n'est pas sous tension.
Il faut lui associer un quartz "horloger" de 32.768kHz et une pile lithium 3V (genre CR2012)
Ce modèle intègre une NVRAM qui n'est pas utilisée dans ce montage, on peut donc le remplacer par un équivalent (M41T00 par exemple)

Le régulateur LM3480 (VR1 sur le schéma) est un régulateur "low-drop" 3.3V Il permet de transformer le 5V du reste du montage en 3.3V indispensable pour alimenter la SD-card (l'alimenter directement en 5V la détruirait immédiatement) N'importe quel équivalent convient, ce n'est pas critique (je propose le TPS73033 mais il y en a quantité d'autres)
R1, R2, R3, R4, R5, R6 et R7 constituent un "translateur de niveau" entre le PIC en 5V et la SD-card en 3.3V
Il existe des composants spécifiques pour ça, mais un pont résistif fonctionne aussi très bien.
Attention au câblage de la SD-card, vu côté connexion, connecteur en haut, la broche la plus à gauche (côté biseauté) n'est pas la 1 mais la 9, la broche 1 est seulement la deuxième en partant de la gauche (une histoire de rétrocompatibilité avec les MMC)
Le support de SD-card peut s'acheter facilement (par exemple référence 685-0779 chez rs-particuliers) mais peut aussi se récupérer sur un appareil HS (celui qui j'utilise pour mes tests provient d'une façade d'auto-radio trouvée au bord de la route)

S1 et S2 sont deux boutons poussoirs servant à ajuster l'heure et la date, ou à démarrer / arrêter l'enregistrement.
La LED indique que l'enregistrement est en cours et qu'il ne faut pas retirer la SD-card.

Le montage s'alimente en 5V, on pourra pour se faire "recycler" un chargeur de téléphone portable par exemple, beaucoup de chargeur sont maintenant à la norme "USB" et fournissent donc du 5V
La consommation est de l'ordre de 20mA, ce qui est relativement faible, mais tout de même trop important pour fonctionner sur pile plus que quelque dizaines d'heures.
En autonome, une petite batterie et un panneau solaire peut être envisagée.
Pour l'alimenter a partir d'une autre tension, un simple régulateur LM7805 est suffisant.

Concernant le fonctionnement du montage maintenant :
A la mise sous tension l'heure est lue dans la RTC, si c'est la première mise sous tension ou qu'il n'y avait pas de pile de sauvegarde, un menu de réglage de l'heure et de la date s'affiche.
Si une SD-card est présente, un fichier d'enregistrement est crée avec le nom LOGFMMDD.csv (ou MM représente le mois et DD la date) et l'enregistrement commence tout de suite sans intervention.
Sinon un message invitant à introduire une carte est affiché.
Attention, la fonction "lock" des SD-card n'est pas gérée par cette version, l'écriture aura lieu même si la carte est "protégée"
La carte ne doit pas être "HC", seul les cartes de 32Mo à 2Go (voir 4Go, sans certitude) et formatée en FAT16 sont supportées.
La LED s'allume; indiquant qu'il ne faut pas retirer la carte.
Sur l'écran l'heure et la date courante sont affiché sur la ligne du haut, tandis que sur la ligne du bas est indiqué la température et une animation indiquant l'enregistrement.

Pour terminer l'enregistrement, afin de retirer la carte ou d’éteindre le montage; il faut appuyer sur le bouton "+" (S1 sur le schéma)
la LED s’éteint alors, et sur la deuxième ligne s'affiche "fichier clos" pendant quelques secondes.
On peut reprendre l'enregistrement en appuyant de nouveau sur "+"
Si on retire la carte sans arrêter l'enregistrement, le fichier risque d'être corrompu (surtout la dernière valeur) et donc illisible.
Ce n'est pas systématique mais c'est un risque (les aléas de l'informatique...)
Arrêter l'enregistrement, retirer la carte, la lire avec un PC, la remettre et relancer l'enregistrement est possible mais non supporté.
Cette manipulation risque de faire "planter" le programme et si ça fonctionne il faudra de toutes façons parfois plusieurs minutes au programme pour parvenir à reprendre l'écriture sur la carte, et pendant ce temps l'affichage sera totalement figé.
D'une manière générale, avant de retirer ou de changer de carte mémoire, il est préférable d’éteindre le montage afin de relancer la séquence d’initialisation à chaque fois qu'une carte est introduite.

L’acquisition de la température se fait au maximum toute les 750ms, soit plus d'une par seconde, mais le système ne prend en compte qu'une mesure par seconde.
Il fait alors la moyenne sur 1 minutes (soit 60 mesures) et l'enregistre sur la carte avec la date et l'heure dans le format suivant
"HH:MM:SS; XX,X"
avec 1 enregistrement par ligne
A minuit le fichier est fermé et enregistré et un nouveau est automatiquement crée avec la nouvelle date. L'enregistrement se continue ainsi automatiquement jusqu’à ce que la carte soit pleine.
Le système fait donc au maximum 1440 enregistrements par jour (soit la moyenne sur 86400 mesures), le fichier fait 23Ko par jour (soit 161Ko par semaine 713Ko par mois et 8.3Mo par an... une carte de 1Go permet donc d'enregistrer théoriquement pendant 116ans)

Le fichier (.csv) peut s'ouvrir directement dans Excel et on peut en quelques clic faire une courbe à partir des données qui sont directement exploitables.

Pour régler l'heure, il suffit d'appuyer sur le bouton "set". Durant toute la procédure de réglage de l'heure l'enregistrement des données ne s'opère pas (même si la LED reste allumée)
Le curseur clignote sur la valeur que l'on modifie. On commence par l'année, puis le mois, puis la date, puis l'heure pour terminer par les minutes. Le bouton "+" permet d’incrémenter la valeur, on valide et passe à la suivante avec "Set"
Il faut régler les minutes avec une minutes de plus que l'horloge de référence. Une fois les minutes validée par Set, l'afficheur indique "'Set' pour valider" on attend que l'horloge de référence soit à 59 secondes et on valide, les deux horloge sont alors parfaitement synchronisées.

En cas de coupure de courant, l'enregistrement s'arrête naturellement, mais reprend automatiquement au retour de la tension.
ça peut être utile par exemple pour surveiller un congélateur. On peut par exemple visualiser la température au retour du courant et donc savoir donc s'il à dégelé ou pas, et connaitre par la même occasion la durée de la coupure en faisant la différence entre l'heure du dernier enregistrement et celui lors du retour du courant.

La mémoire du PIC est loin d'être saturée, 32% de la RAM et 66% de la mémoire de programme restent disponibles, ce qui laisse largement la place pour améliorer cet enregistreur : gestion de plusieurs sondes ou d'autres type de capteurs, calcul plus complexe sur les mesures, etc.

Pour ma part, j'arrête là le développement de cet appareil (pour l'instant) mais je pourrais éventuellement ajouter des fonctions demandés pour quelqu'un qui aurait réalisé ce montage.
Je peux aussi, sur demande, compiler le fichier pour un PIC d'une autre référence qui serait compatible avec ce projet (le 18F258 n'est pas une obligation)

Voilà, peut être à bientôt pour d'autres bidouilles

:-D

Avatar du membre
MICHOKO
Maitre Solaire
Maitre Solaire
Messages : 1322
Enregistré le : lun. juil. 10, 2006 13:22 pm
Localisation : BESANCON-25

Message par MICHOKO »

bonjour,
très intéressant, je mets cela précieusement de côté
merci
Nous vivons dans un rêve mais le réveil va bientôt sonner !

Avatar du membre
YvesBr
Maitre Solaire
Maitre Solaire
Messages : 1408
Enregistré le : lun. mars 20, 2006 23:54 pm
Localisation : Moselle - aéroport 57

Message par YvesBr »

Bonsoir,
Je crois que tout le monde est coi devant une telle maîtrise :-o
Petite question. Comment le système s'adapte à un nombre variable de mesures ?

Cordialement
Yves

Forhorse
Etudiant Solaire
Etudiant Solaire
Messages : 278
Enregistré le : lun. févr. 08, 2010 14:42 pm
Localisation : 61 - Perche

Message par Forhorse »

Il n'en prend qu'une par seconde, la dernière.
Comme la sonde renvois de toutes façons plus d'une mesure par seconde, la mesure prise en compte est forcement plus récente que la précédente.

Avatar du membre
YvesBr
Maitre Solaire
Maitre Solaire
Messages : 1408
Enregistré le : lun. mars 20, 2006 23:54 pm
Localisation : Moselle - aéroport 57

Message par YvesBr »

Bonsoir,
Ah, je n'ai pas été clair dans ma question. :sad:
Ma question porte sur l'adaptation au nombre de sondes (de mesures, quoi :???: )
Merci par avance.
Yves

Forhorse
Etudiant Solaire
Etudiant Solaire
Messages : 278
Enregistré le : lun. févr. 08, 2010 14:42 pm
Localisation : 61 - Perche

Message par Forhorse »

Ah oui, alors là c'est nettement plus complexe. Il faut reprendre le programme un peu plus profondément.
Chaque DS18B20 à un numéro de série unique, qui lui sert d'adresse lorsque le maitre du bus veux dialoguer avec. Sauf que cette fonction nécessite au préalable "d'apprendre" l'adresse de la sonde.
Quand on a qu'une seule sonde sur le bus ce n'est pas utile. J'ai donc utilisé une fonction qui s'adresse à "tout le monde" (broadcast) et comme il n'y a qu'une seule sonde, il n'y a forcement qu'une seule réponse.
Maintenant si on met plusieurs sondes, la mesure sera alors fausse car tout le monde va répondre en même temps.

Donc si on veut faire plusieurs mesures deux solutions :
Implémenter un système d'apprentissage de l'adresse des sondes puis modifier le programme pour qu'il tienne compte de ces adresses. C'est plus compliqué mais l'avantage c'est qu'on peut y mettre un nombre important de sonde (une bonne dizaine facilement)
Ou implémenter autant de bus qu'il y a de sonde, en mettant à profit les quelques broches restant libres sur le PIC. C'est simple mais très limité en nombre de sonde. Il reste 4 broches libres dont on pourrait avoir maxi 5 sondes (7 en poussant un peu mais ça nécessite une petite modification au niveau de la connexion des boutons de réglage)

De combien de sondes aurais-tu besoins ?

Avatar du membre
YvesBr
Maitre Solaire
Maitre Solaire
Messages : 1408
Enregistré le : lun. mars 20, 2006 23:54 pm
Localisation : Moselle - aéroport 57

Message par YvesBr »

Bonjour.
Je trouve le concept intéressant, mais je ne me sens pas de me lancer dans cette fabrication.
Il me semblerait intéressant de superviser plusieurs températures, genre température départ/retour solaire, circuit de chauffage, entrée TOR pour comptabiliser la durée de fonctionnement d'un brûleur, d'une résistance.
Yves

Forhorse
Etudiant Solaire
Etudiant Solaire
Messages : 278
Enregistré le : lun. févr. 08, 2010 14:42 pm
Localisation : 61 - Perche

Message par Forhorse »

C'est sûr, mais n'ayant pas (encore) d'installation solaire à superviser, je n'ai pas d’intérêt à développer ce genre d'enregistreur.
Je partage ici ce qui pourrait être la base d'un projet plus important (bien que ce soit déjà pleinement fonctionnel tel que je l'ai présenté ici)

Pour moi c'était juste un exercice visant à tester la faisabilité d'un enregistrement sur SD-card dans le cadre d'un projet plus important mais visant à enregistrer totalement autre chose qu'une température.

Mais je garde un œil sur ce projet, si quelqu'un est vraiment intéressé pour le réaliser, et qu'il a besoin de quelques petites adaptations, je peux apporter ma contribution.

Avatar du membre
dam74
Newbie
Newbie
Messages : 42
Enregistré le : dim. avr. 18, 2010 14:56 pm
Localisation : challonges (74)
Contact :

Message par dam74 »

bonsoir,

j'ai réalisé une telle carte qui est la base de ma régulation solaire : on peut y connecter un nombre "illimité" de capteurs de temp ds18b20.

http://solardev.varrel.e4y.fr

je préparerais un compte rendu prochainement

LICHTENBERGER
Newbie
Newbie
Messages : 44
Enregistré le : jeu. août 13, 2009 22:15 pm
Localisation : 69 Francheville
Contact :

Message par LICHTENBERGER »

Je confirme, cette réalisation est très intéressante pour suivre le fonctionnement de l'installation et ajuster ses paramètres pour optimiser son rendement.

Les mois qu'on vient d'avoir justifient pleinement l'utilisation de la source d'énergie qu'est le soleil.

Il est en effet dans nos installation souvent nécessaire d'enregistrer plusieurs températures.
Dans mon installation j'en enregistre 9 mais paramétrées à une mesure toutes les 20 secondes.

Les graphes qui en résultent sont mis à jour en temps réel.

C'est visible ici :
http://sylvain.lichtenberger.perso.sfr. ... olaire.htm

Il y a eu depuis quelques ajouts conne l'affichage des graphes de chaque sondes lors du survole par la souris des thermomètres avec courbe de valeurs moyennes et mini/maxi atteints.

Comme ça tourne sur un PC relié au net, je peux suivre le fonctionnement de n'importe quel endroit du globe.

pierrot22
Newbie
Newbie
Messages : 4
Enregistré le : jeu. mai 19, 2011 16:56 pm
Localisation : Rennes (35)

Message par pierrot22 »

:cool: je suis toujours impressionné par ce qu'on peut faire "avec si peu", l'électronique et les PIC quand on maitrise c'est génial :-)

Je découvre avec un grand intérêt cette petite sonde de température, vraiment sympa les BUS pour mettre un paquet de sondes sur une entrée.

Pour ceux qui voudraient un enregistreur "tout prêt", on trouve des datalogguers USB à des prix abordables, comme : http://www.tcdirect.fr/deptprod.asp?deptid=130/7 . La précision n'est pas indiquée, faut sans doute pas s'attendre à du dixième près mais ça peut servir :-)

roche pierre
Stagiaire Solaire
Stagiaire Solaire
Messages : 101
Enregistré le : lun. déc. 17, 2007 20:04 pm
Localisation : La Gaude 06

Message par roche pierre »

Des EL-USB-1 aussi chez Co..ad . Pratique pour étudier .

Avatar du membre
richardel
Maitre Solaire
Maitre Solaire
Messages : 824
Enregistré le : dim. juin 29, 2008 23:02 pm
Localisation : Verviers Belgique

Message par richardel »

Bonjour a tous,

perso, dans ma régulation, j'utilise les DS18B20 et c'est vraiment génial.
Pensez donc, 45 sondes sur 3 fils.
Moi, j'utilise un AVR pour surveiller tout celà mais n'importe quel processeur peut gérer l'ensemble.

Il faut juste essayer d'éviter un bus "en étoile" car les rupture d'impédances et les longueurs différentes des différentes branches posent des problème d'erreurs. Il vaut mieux un bus "linéaire" (avec des dérivations n'excédant pas 1 a 2 mètres)et ca marche nickel.
Chez moi, le bus fait a peu près 30m (mais on peut atteindre plus de 100mètres parait-il) et une simple résistance pullup de 4k7 suffit, en général.

Il y a quand même 2 inconvénients :
1- Le composant fait 4,8mm (les doigts de gants font 6mm) mais il existe des astuces. (il en existe même au même format que les pt1000 mais c'est plus rare).
2- Ils ne tiennent pas a la température des panneaux en stagnation. Il faut donc rester sur des pt1000 pour ce cas (sinon, pour les réservoirs, amenées du caloporteur, température extérieure et intérieure... c'est génial)

L'inertie thermique est très faible.

Amitiés
Modifié en dernier par richardel le mer. mai 25, 2011 0:46 am, modifié 1 fois.
L'important n'est pas la température de l'eau solaire, c'est le nombre de KWh engrangé.

LICHTENBERGER
Newbie
Newbie
Messages : 44
Enregistré le : jeu. août 13, 2009 22:15 pm
Localisation : 69 Francheville
Contact :

Message par LICHTENBERGER »

45 sondes, bravo !

Ce doit être une régulation pointue comme on les aime.

Que signifie "Ils ne tiennent pas a la température des panneaux en stagnation" ?

Ils grillent quand on dépasse les 125° ?

J'ai l'intention de me pencher sur ce composant qui présente l'avantage du numérique et ne demande qu'un port sur le micro contrôleur.

SL

Avatar du membre
richardel
Maitre Solaire
Maitre Solaire
Messages : 824
Enregistré le : dim. juin 29, 2008 23:02 pm
Localisation : Verviers Belgique

Message par richardel »

Merci, merci :-D

je dirais même plus, il ne reclame pas un port sur le microcontroleur mais un seul fil du port (info en série) même pour 40 sondes :roll:

Je viens de survoler la doc et je n'ai pas vu la température maximum avant destruction. A mon avis, pas sur qu'il grille au dessus de 125° mais en général, les puces démissionnent vers les 140-150° et mes capteurs en stagnation ont déjà été mesurés a 160° (ici, en Belgique, pas dans le sud de la France :razz: ).

Moi j'ai choisi la configuration en 3 fils (alimentation séparée) car je ne suis pas a un fil prêt et le composant est plus a l'aise lors des conversions.

45 sondes, et oui... avec un bus on est pas a une sonde. (et en plus la possibilité d'en ajouter si besoin).
J'en ai déjà 9 par cuve ce qui va permettre de visualiser la stratification (surtout une question de test).

Ca marche très bien et sur un lot d'une quarantaine de sonde, dans des conditions identiques, je n'ai relevé qu'un degré d'écart.
Il y a, sur internet, un document PDF qui donne des conseils pour la réalisation du bus. C'est très important pour avoir quelque chose de fiable.
c'est la note d'application 148 de chez maxim (en anglais). Si tu ne la trouve pas, petit message personnel avec ton adresse e-mail, je te l'enverrais en attache.
N'oublie pas la résistance pullup de 4k7 sinon il y a des problèmes après une dizaine de mètres du bus (j'ai cherché comme un dingue pendant 3 jours :oops: )

Bon amusement
L'important n'est pas la température de l'eau solaire, c'est le nombre de KWh engrangé.

Répondre

Retourner vers « Régulation »