Projet à microcontrôleur PIC 16F88
Station météorologique
Il s'agit d'une station météorologique qui mesure en temps réel :
Ce projet s'appuie sur le projet Carte d'acquisition à 7 entrées analogiques pour signaux lents.
Ici, 3 des 7 voies sont utilisées :
La fréquence d'acquisition est de 1 Hz maximum par voie (c'est-à-dire 60 acquisitions maximum par minute).
La carte se connecte à un ordinateur (via une liaison RS232).
Une application Windows affiche les données en temps réel et fournit un graphe déroulant (pour chaque voie) :
3-1- Le capteur de pression MPX2200AP
Le capteur MPX2200AP fournit, entre les broches 2 et 4, une tension flottante proportionnelle à la pression ambiante.
La sensibilité du capteur dépend de sa tension d'alimentation. C'est pourquoi on utilise un régulateur 7812 (12 V) pour alimenter le capteur.
La sensibilité est alors d'environ 0,024 mV / hPa, soit 24 mV pour 1000 hPa.
On rappelle que :
Le signal de sortie du capteur est amplifié par un amplificateur de différence AD620 de manière à avoir une sensibilité de 4 mV / hPa, soit 4 V pour 1000 hPa.
L'amplification en tension correspondante est égale à : 4 V / 24 mV = 167 = 44 dB
L'amplification de l'amplificateur de différence AD620 est donnée par la relation :
A = 1 + (49400 / R7)
ce qui donne théoriquement : R7 = 298 ohms.
En pratique, R7 est ajustée avec un trimmer de 500 ohms.
3-2- Les capteurs de température LM335
Le LM335 est un capteur de température analogique qui fournit une tension proportionnelle à la température (en kelvin).
La plage de mesure va de - 40°C à + 100 °C.
La sensibilité est de 10 mV / K.
A 0°C (273,1 K), cela donne une tension continue de 2,731 V.
A + 20°C (293,1 K) : 2,931 V.
A - 20 °C (253,1 K) : 2,531 V
Deux capteurs sont utilisés : un pour la mesure de la température intérieure et un pour la mesure de la température extérieure.
On prévoira des fils de connexion les plus courts possibles, et de préférence avec blindage pour limiter les perturbations électromagnétiques.
Les trimmers R4 et R6 permettent un ajustage.
3-3- Les filtres anti-repliements
Un filtre anti-repliement est intercalé entre la tension à mesurer (qui provient d'un capteur) et le canal d'entrée de l'ADC du PIC.
Il s'agit ici d'un simple filtre analogique passe-bas de fréquence de coupure 15 Hz.
Pour plus d'informations sur les filtres anti-repliements
3-4- Le convertisseur analogique - numérique (ADC)
Le convertisseur analogique - numérique est situé dans un module interne du microcontrôleur PIC 16F88.
La tension d'alimentation du PIC 16F88 (broche VDD) sert aussi de tension de référence pour le convertisseur analogique - numérique, ce qui justifie la présence d'un régulateur de tension (7805).
Le convertisseur analogique - numérique a les caractéristiques suivantes :
Pour plus d'informations sur le fonctionnement du convertisseur analogique - numérique du PIC 16F88
3-5- Le filtrage numérique
Un filtrage numérique (passe-bas) est effectué de façon à enlever le maximum de bruit (en particulier le bruit de ronflement du secteur 50 Hz). Ce filtrage numérique est réalisé de manière logicielle par le PIC (pendant la phase de traitement du résultat de la conversion).
Caractéristique du filtre numérique :
Le filtre numérique calcule la moyenne arithmétique sur 256 échantillons (filtre numérique à moyenne glissante).
Pour beaucoup plus d'informations sur le filtrage numérique
3-6- La liaison RS232
- 3-6-1- Le câble de communication entre l'ordinateur et la carte
Il faut bien sûr un ordinateur qui possède un port COM, reconnaissable par son connecteur SubD 9 broches mâle.
Il faut brancher un câble "null-modem" (câble croisé) entre l'ordinateur et la carte.
Si vous n'en avez pas, vous pouvez facilement en faire un (il faut 3 fils et 2 connecteurs SubD 9 broches femelle).
- 3-6-2- Protocole de communication entre l'ordinateur et la carte
Seul l'ordinateur prend la parole (maître).
Le microcontrôleur PIC 16F88 se contente de répondre (esclave).
L'ordinateur envoie un octet (via la liaison RS232) toute les 330 ms.
Cet octet contient le numéro du canal (voie) à échantillonner :
Le processus est cyclique : voie 0 puis voie 1 puis voie 2 puis voie 0 ...
Chaque voie est ainsi échantillonnée toutes les 3 x 330 = 990 ms (d'où une fréquence d'acquisition d'environ 1 Hz).
Une fois l'octet reçu, le PIC 16F88 sélectionne le canal indiqué, et lance une série de 256 conversions (une toutes les 390,6 µs).
Cela prend : 256 x 390,6 µs = 100 ms
Le microcontrôleur PIC effectue la moyenne des 256 résultats de conversion.
Sachant que la résolution du convertisseur ADC est 10 bits, la somme nécessite un nombre de 18 bits.
La moyenne correspond à la somme avec la virgule décalée de 8 bits vers la gauche.
Par exemple :
Somme brute (18 bits) : 10 10010010 01000101 = 168 517 (en décimal)
On décale la virgule de 8 positions :
10 10010010 , 01000101
Partie entière (10 bits) : 10 10010010 = 658 (en décimal)
01000101 = 1/4 + 1/64 + 1/256 = 0,26953125
En définitive :
168 517 / 256 = 658,26953125
Notez que la résolution est améliorée : on passe de 10 bits à 18 bits.
On pratique, on restera prudent, et on considérera que la résolution est d'au moins 12 bits (soit une résolution de l'ordre de 5 V / 4096 # 1 mV).
La moyenne est envoyée telle quelle vers l'ordinateur sous la forme de 3 octets :
Avant-propos
Cette application a été écrite en C++ Borland Builder 5.
L'application fonctionne sous Windows NT4 et Windows XP (non testée sous Windows Vista, merci de me dire ce qu'il en est ...).
N.B. La gestion de la liaison RS232 nécessite l'installation du composant TComPort (la version 2.64 est suffisante) :
Procédure d'utilisation
-> Brancher le câble "null-modem" entre l'ordinateur et la carte (hors tension)
-> Mettre la carte sous tension
-> Ouvrir l'application
-> Configurer les paramètres de la liaison RS232C :
- 9600 bauds/s
- 8 bits de données
- Pas de bit de parité
- 1 bit de STOP
- Pas de contrôle de flux
-> Ouvrir le port
La pression et les températures actuelles doivent s'afficher dans la boîte Acquisition de l'application (avec une mise à jour toutes les une seconde).
Il y a la possibilité de sauvegarder les mesures dans un fichier texte :
Ce fichier pourra ensuite être exploité et traité avec Excel, Matlab ...
5-1- Ajustage des capteurs de température LM335
Il faut un thermomètre étalon en guise de référence.
Supposons que le thermomètre étalon indique + 21,6 °C.
L'ajustage du capteur de température se fait en réglant le trimmer R6 (trimmer R4 s'il s'agit du capteur de la température extérieure) de façon à afficher 21,6 °C dans la boîte Acquisition :
5-2- Ajustage du capteur de pression MPX2200AP
Il faut un baromètre étalon en guise de référence.
A défaut, vous trouverez sur http://www.alertes-meteo.com/cartes/temps-present-en-direct.htm (si vous résidez en France) la pression atmosphérique en temps réel dans votre région :
L'ajustage du capteur de pression se fait en réglant le trimmer R7, suivant une procédure identique à celle des capteurs de température.
- 1 câble null-modem (femelle/femelle)
- 1 ordinateur avec port COM
- 1 programmateur pour flasher le programme du microcontrôleur PIC 16F88
Le code source a été écrit en langage assembleur avec l'environnement de développement gratuit MPLAB IDE de Microchip.
Le code source est identique à celui du projet Carte d'acquisition à 7 entrées analogiques pour signaux lents.
© Fabrice Sincère ; Révision 1.9.2