Mon petit datalogger de température sans prétention

Matériel HI-Tech électronique et informatique et Internet. Mieux utiliser l'électricité, aide aux travaux et devis, choix de l'équipement. Présentations de montages et plans. Ondes et pollution électromagnétique.
Avatar de l’utilisateur
Forhorse
Econologue expert
Econologue expert
Messages : 2504
Inscription : 27/10/09, 08:19
Localisation : Perche Ornais
x 376




par Forhorse » 04/04/11, 16:21

kumkat a écrit :ce qui serait sympa c'est de ne pas vider la mémoire des mesures quand on enlève la carte sd, histoire d'accéder à des valeurs par mois, saisons, années... les minis, maxis, moyennes
dans ce cas il faut prévoir une alimentation solaire qui permettrait théoriquement une utilisation infinie dans le temps ;-)


La mémoire des mesures n'est pas vidée quand on enlève la carte. Celles-ci restent présentes tant qu'on enlève pas manuellement le fichier de la carte.
Par contre il va de soit que le système ne peut pas enregistrer si aucune carte n'est présente.

Alors sinon je vous livre ici les dernières améliorations de mon programme. Je n'ai pas fait tout ce que je voulais car j'ai déjà passé beaucoup trop de temps sur ce projet et il faut maintenant que j'avance sur d'autres choses (mon régulateur d'éolienne par exemple)

Vous trouverez ici une archive zip contenant deux fichiers :
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 temperature ! :cheesy:
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 connaissant 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 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é.
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.
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 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, 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

:cheesy:
0 x

 


  • Sujets similaires
    Réponses
    Vues
    Dernier message

Revenir vers « Électricité, électronique et informatique: Hi-Tech, internet, DIY, éclairage, matériels et nouveautés »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 170 invités