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

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).

 

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 :

-> 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.

 

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