jeudi 2 octobre 2014

Article #9 - Réalisation d'un thermomètre LCD à double capteurs.

Esalamou Aleykoum
Avant propos:
Possédant un van de marque chinoise, je me suis aperçu que le thermomètre affichant la température du moteur n'était pas fiable. Parfois il a l'air de bien fonctionner et parfois non. Donc j'ai décidé de réaliser un thermomètre pour compenser ce défaut. Par la même occasion je me suis dit pourquoi ne pas ajouter aussi un thermomètre pour afficher la température ambiante externe pour plus de confort, ce qui m'a conduit à cette réalisation.





Photo des compteurs du van en question. On remarque le bargraphe du thermomètre
Caractéristiques:
- Affichage des températures moteur (ENG: Engine sur l'afficheur) et externe (EXT) sur         afficheur LCD de 2 lignes 16 caractères
- Alimentation Max 16V dc.
- Plage de température allant de 0°C à 125°C (pour l'instant) qu'on peut étendre de -55°C à   125°C par mise à jour du firmware.
- Résolution limitée à 0.5°C (mode 9 bits) qu'on peut aussi la descendre à 0.1°C (en mode     12 bits)
- Effectue une mesure toutes les 10 secondes.
- Utilise des capteurs de température numérique, ce qui simplifie grandement la                 réalisation et élimine l'étalonnage source d'erreurs éventuelles.
Fonctionnement:
On remarque d'après le schéma que le montage est très simple et ne comporte pas beaucoup de composants. Ceci est due à l'utilisation d'un microcontrolleur (ATmega 8 ou 88 dans ce cas) et de capteurs numériques DS18B20 de chez Dallas/Maxim.

L'utilisation d'un capteur numérique, a des avantages certain comparativement à un capteur analogique de type LM35 ou autres. Parmi ces avantages on note:
- La mesure n'est pas affectée par les variation de la tension d'alimentation
- Une seule ligne de communication série d'où le nom de (One Wire)
- Liaison directe entre le capteur et le microcontrôleur, ce qui élimine tout étage      d'adaptation ou d'interfaçage entre le capteur et le microcontrôleur; une seule résistance  de rappel suffit. 
- Du fait de sa conception numérique, tout étalonnage est éliminé
- Lors de l'utilisation de plusieurs capteurs sur le même microcontrôleur, tous les capteurs     peuvent communiquer sur une seule et unique ligne de communication (mode multidrop)    par un système d'adresse unique (à 64 bits) pour chaque capteur. D'où l'utilisation d'une  seule entrée sur le microcontrôleur, même dans le cas d'utilisation de plus d'une dizaine  de capteurs, ce qui induit une économie non négligeable sur le hardware. 
- Très faible consommation de l'ordre de 750nA ! en mode Standby.
Le schéma:


Le schéma est très simple. Pour l'alimentation j'ai utilisé un régulateur 5V standard de type LM7805 qui assure la régulation de la tension d'alimentation 5V qui alimente le microcontrôleur, l'afficheur et les capteurs. Les condensateurs de filtrage et de découplage sont classique sans oublier une diode de protection 1N4004 à l'entrée. Le régulateur n'as pas besoin de radiateur car le courant mesuré avec le rétro-éclairage allume est de l'ordre de 114mA avec un afficheur à fond jaune.
Pour le microcontrôleur j'ai utilisé un ATmega 88. Un ATmega 48 ou 8 vois même un 168 peut être utilisé sans modification sur le pcb; il suffit juste de modifier une ligne dans le programme. On remarque aussi qu'on as deux connecteurs 6 pins identiques (Il ne faut surtout pas les confondre sous peine de graves dégâts). L'un pour la programmation in situ ICSP et l'autre pour l'alimentation du module et la communication avec les capteurs. On remarque aussi sur le schéma la présence de 4 boutons poussoirs avec leurs résistances de rappel pour la programmation du module.
Pour les particularités, on remarque qu'on a deux lignes de communication sur le connecteur H2 notés OW1 et OW2. J'ai utilisé qu'une seule ligne (OW1) pour les deux capteurs c'est à dire en mode "multidrop", le deuxième ligne n'est pas utilisée par ce firmware. On remarque aussi la liaison PL "Pilot Light" qui est utilisée pour allumer le rétro-éclairage de l'afficheur avec l'allumage de l'éclairage du véhicule dés qu'il fait sombre. Cette option n'est pas utilisée avec les afficheur LCD de couleur bleu, car ceux ci demandent un rétro-éclairage permanent, contrairement aux afficheurs à fond jaune qui sont visible le jour sans rétro-éclairage.
Réalisation:
La réalisation de ce thermomètre est facile et ne demande pas de connaissances particulières. Le circuit imprimé (pcb) est en simple face avec quelques straps.
J'ai réalisé le schéma et le pcb sur Altium Designer; s'il y'a d'entre vous qui seront intéressés par la réalisation de ce thermomètre, je pourrais éventuellement refaire le pcb sur Eagle pour que vous puissiez le réaliser chez vous. Voila quelques captures d'écrans:
Vue coté composants

Vue coté (soudure) qui est aussi coté afficheur et boutons

Vue rapprochée coté boutons MENU et DOWN.

Vue rapprochée coté boutons ESC et OK.

Aprés réalisation du pcb et perçage, commencer par placer les composants dans l'ordre suivant: straps, résistances, diodes, condensateurs, régulateur, connecteurs, CI, boutons poussoirs etc... c'est à dire commencer par les composants au profil le plus bas en allant vers les composants au profil le plus haut. Avant d'alimenter le module, vérifier visuellement s'il n'y a pas de court circuit ou de coupures du coté soudure. Il est préférable d'utiliser un support 28 broches pour le microcontrôleur. Alimenter le module pour la première fois sans placer le microcontrôleur sur son support et vérifier avec un multimètre les tensions d'alimentation sur le support du microcontrôleur. Vous devez mesurer 5V sur les pins 1, 7, 20, 21.
Pour la programmation du microcontrôleur vous avez deux possibilités:
Soit vous placez le microcontrôleur dans le support ZIF du programmateur et vous envoyez le programme, si votre programmateur comporte un support ZIF. Deuxième solution est d'utiliser un programmateur ICSP (In Ciruit Serial Programming) du genre USBASP, et vous programmez le microcontrôleur directement sur la carte.
Après avoir programmé le microcontrôleur, insérez le dans son support, bien sûre alimentation coupée. Alimentez le module vous devez avoir un affichage sur le lcd, sinon réglez le potentiomètre pour ajuster le contraste. 

Enregistrement des capteurs sur le module:
Lors du premier démarrage, vous devez avoir un affichage comme suit:

Ceci confirme que le module et le programme fonctionne correctement, mais le module ne reconnait aucun capteur, puisque il n'y a aucun capteur enregistré dans sa mémoire EEPROM. Pour enregistrer les capteurs dans la mémoire du module, procédez comme suit:
Coupez l'alimentation du module, et appuyez sur le bouton MENU. Tout en restant appuyé, remettez l'alimentation du module. A ce moment là vous entrez en mode programmation de paramètres et vous aurez un affichage comme suit:

Confirmez cette option en appuyant sur le bouton OK, et vous aurez une confirmation "DONE !" sur l'afficheur. A ce moment là les capteurs sont enregistrés dans la mémoire du module (a vrai dire la mémoire EEPROM du microcontrolleur). Maintenant votre thermomètre est fonctionnel mais nécessite un dernier test. Vous devez chauffer un capteur et voir la réaction du module (Voir vidéo). Par exemple si vous chauffez le capteur destiné à être placé à l’extérieur et que vous voyez sur l'afficheur EXT TEMP: augmente de valeur, alors vos module est fini et prêt à l'emploi, dans le cas contraire vous devez inversez les capteur, et pour cela procédez comme suit:
Coupez l'alimentation du module, et appuyez sur le bouton MENU. Tout en restant appuyé sur ce bouton, remettez l'alimentation, ensuite relâchez le bouton MENU et appuyez sur le bouton DOWN, et vous aurez l'affichage suivant:

Confirmez en appuyant sur le bouton OK, et voila le thermomètre est prêt.




Téléchargements:








Bonne Réalisation.

5 commentaires: