Construction d'un anémomètre à base d'un PIC 16F88
Anémomètre
Version: 1.0
Date de création: 23/12/09
Dernière
modification: 23/12/09
Téléchargé 3994 fois
Dans le commerce, on trouve rarement des stations météos avec un anémomètre
dont le pas de mesure est petit ou alors il faut être prêt à y mettre le prix.
C'est pourquoi je me suis lancé dans la réalisation d'un anémomètre à microcontrôleur.
Ma formation actuelle d'ingénieur en électronique et informatique industrielle
me permet de mener à bien ce genre de petit projet et bien-sûr d'en envisager
des beaucoup plus gros pour l'avenir, telle la réalisation complète d'une station
météo.
Note: Il s'agit ici d'un des premiers projets que je fais
sur microcontrôleur, je mets à disposition gratuitement le code et les ressources
nécessaires à cette réalisation. Si vous êtes un professionnel dans le domaine,
soyez indulgent. Le code n'est peut-être pas parfaitement commenté ou il ne
respecte peut-être pas les standards instaurés en entreprise. De même que
le schéma électronique peut aussi être amélioré.
Mon premier projet consiste donc à mesurer la vitesse du vent via un PIC
16F88 et un écran LCD alphanumérique 20*4. A noter que je ne commence pas par
le plus facile étant donné que j'ai décidé, pour calculer la vitesse du vent,
de mesurer le temps écoulé entre 2 impulsions, ce qui demande une grande précision
sur la durée, de l'ordre de la dizaine de microsecondes. Je n'ai pas fabriqué la partie
mécanique de l'anémomètre, j'utilise un anémomètre de ma station qui est tombé
en panne. L'électronique est morte mais la partie mécanique est intacte, ce qui
est parfait puisque moi je n'ai juste besoin que de l'ILS à l'intérieur.
En
plus de la vitesse, sera affichée sur l'écran LCD la moyenne sur 10 minutes glissantes
avec sa variation, la rafale maximale ainsi que l'heure de cette rafale. Pour
le "fun" j'ai aussi ajouté une barre indiquant la vitesse du
vent en Beaufort avec sa valeur.
Pour mesurer le calcul de la vitesse du
vent, j'utilise bien évidemment la relation suivante: V=D/T.
La dynamique des fluides nous
dit que la vitesse du vent est égale à la vitesse du centre des coupelles. En
réalité, il faudrait passer sur un banc de test pour obtenir la courbe d'étalonnage
donnant la relation entre la vitesse réelle et la fréquence des impulsions obtenues.
La vitesse au centre des coupelles s'obtient par la relation suivante: V= 2*Pi*R/T
où R est la distance entre l'axe est le centre des coupelles et T le temps écoulé
pour effectuer un tour.
Pour la moyenne, j'ai décidé de prendre une valeur
toute les 2s, de faire la moyenne sur 1 min et de stocker cette moyenne dans
un tableau à 10 cases. La moyenne sur 1 min en cours vient écraser la moyenne
la plus ancienne puis le PIC fait la moyenne des 10 moyennes. Pour l'indicateur
de variation de la moyenne, les 4 dernières moyennes sur 1 min sont regardées
et suivant le nombre de fois que la moyenne monte et inversement le nombre de
fois que la moyenne baisse, l'indicateur le plus approprié est affiché.
Pour
le maximum, peu de chose à dire, si ce n'est qu'on peut le remettre à zéro en
appuyant sur le bouton poussoir.
Une horloge est présente pour indiquer
l'heure courante l'heure de la rafale. Elle n'est à régler qu'à la première
utilisation (un cavalier à déplacer pour ne plus la régler) et un gros condensateur
s'occupe de continuer à la faire fonctionner lorsque le module est éteint.
Je n'ai pas choisi d'afficher la direction malgré le fait que c'est une
partie simple à faire. Il suffit juste avec le Convertisseur Analogique Numérique
de mesurer la tension du potentiomètre de direction et d'en déduire l'angle.
Si
vraiment c'est important pour certains, je pourrais publier un montage avec
ce paramètre.
Maintenant voyons plus en détails la réalisation.
Le montage fonctionne
sous 5V. La question de l'alimentation n'est pas abordé ici, un simple 7805
sur le montage final et c'est réglé..
Le cœur du montage
est donc un microcontrôleur PIC 16F88 de chez microchip. Les PIC sont les microcontrôleurs
les plus répandus et leur programmation est assez aisée. On trouve sur ebay
des clones de programmateur qui fonctionne très bien et ne coûtent pas plus de
15€.
J'avais commencé par utilisé un PIC 16F84 mais je me suis vite vu à
cours de place: 1Ko de code possible pour le 16F84 contre 4Ko pour le 16F88.
Il faut dire aussi que je programme en langage C avec CC5X (je vois déjà les
adeptes de l'assembleur me crier dessus). En attendant, ce langage me permet
aisément de manipuler des nombres à virgule, d'effectuer des divisions, des
multiplications...etc
Le PIC fonctionne à une fréquence de 20 MHz. J'ai calculé
qu'au maximum (pour un vent de 200km/h !) il y aura environ 5ms entre
chaque impulsion. A 20Mhz, le PIC est capable d'effectuer toutes les instructions
dans cet intervalle de temps.
L'heure
est obtenue par le circuit DS1302 qui communique avec le PIC via un protocole I2C "fait
maison". La capacité de 1F est chargée lorsque le circuit est alimenté et
continue de faire fonctionner l'horloge quand le circuit est coupé. Pas la peine
de régler l'heure à chaque démarrage.
Voici l'allure du schéma sous proteus:
Les LEDs sont là pour le débeugage, elles ne sont plus présente sur le prototype
finale. Le générateur d'impulsion simule les impulsions de l'ILS de l'anémomètre.
A
noter qu'il faudra penser à rajouter un systéme anti-rebonds sur la maquette
finale. En effet, le boutton poussoir comme l'ILS n'ont pas un contact net et
précis. Le signal oscile avant de se stabiliser.
Or une oscilation (qui est
de l'odre de la milliseconde) sur le
signal de l'ILS est catastrophique. On verrait s'afficher des vitesse impensable.
Le principe consiste donc à placer une résistance en paralèlle à un condensateur
sur l'entrée à filtrer. On maintient ainsi la tension durant une durée T qui
vaut à peu près R*C.
Les valeurs des composants sont ici arbitraire. Pour l'ILS une résitance de 1k et un condensateur de 1µF devrait faire l'affaire. Pour le BP, de plus grosse valeurs peuvent être utilisées.
Voici la liste des composant nécessaire à la réalisation de ce module:
-1
PIC 16F88
-1 DS1302
-2 Quartz: 20Mhz et 32.768Khz
-1 Ecran LCD 4*20
(H44780)
-1 Boutton poussoir
-3 Résistances 10K 10K 1K
-3 Condensateurs
1F 1µF 1µF
-1
anémomètre, bien-sûr
Le code source est téléchargeable plus haut.
Notez qu'il faut MPLAB + CC5X pour le compiler. Sinon vous pouvez juste prendre
le fichier .hex et l'envoyer dans le PIC ou bien analyser le code. De plus le code n'est pas forcément
bien indenté.
Vidéos et photos:
Dernière mise à jour: 23/12/09