Anémomètre
L’étude porte sur un anémomètre à coupelles, dont la fonction est de mesurer la vitesse du vent.
Objectif : programmer un microcontrôleur pour réaliser l’acquisition de la vitesse du vent à l’aide d’un anémomètre à coupelles.
Présentation
Principe de fonctionnement
Le vent entraîne en rotation le rotor constitué de 3 coupelles ayant la forme de sphères creuses.
Lorsque le vent souffle, il rencontre alternativement une coupelle creuse puis bombée. Selon les lois de l’aérodynamique, un creux oppose plus de résistance qu’une forme bombée au passage de l’air. Cette différence provoque la rotation de l’anémomètre.
Constitution
Un solide nommé rotor est guidé en rotation d’axe vertical par rapport à un stator fixe. Le rotor est doté de 3 coupelles : des demi-sphères réparties à 120°.
Dimensions
Travail demandé
La vitesse du vent n’est pas tout à fait égale à la vitesse tangentielle des coupelles, en raison des coupelles qui se déplacent dans le sens contraire du vent et opposent une résistance à la rotation du rotor.
La relation entre la vitesse du vent \(V_v\) et la vitesse tangentielle des coupelles \(V_c\) dépend elle-même de la vitesse de rotation, selon la formule suivante :
\(V_v=3\times V_c\;+\;0,15\)


Cet interrupteur est placé sur le stator de l’anémomètre, et deux aimants se trouvent sur le rotor :

On souhaite acquérir la vitesse du vent sous forme numérique à l’aide d’un microcontrôleur Arduino.
On utilise pour cela un programme comprenant une interruption : à chaque commutation (ici uniquement les fronts montant) du signal, une petite routine est aussitôt exécutée (fonction tick
). Elle est chargée de mesurer le temps écoulé depuis le dernier front, et d’en déduire la vitesse de rotation moyenne depuis cet événement, puis enfin de calculer la vitesse du vent.
tick
dans le programme ci-dessous :// Port numérique auquel est relié le point A int pin = 2; // (le port D2 est associé à l'interruption 0) volatile int v = 0; // vitesse du vent volatile unsigned long t = 0; // temps "courant" (en microsecondes) void setup() { Serial.begin(115200); Serial.println("Anémomètre"); pinMode(pin, INPUT); attachInterrupt(0, front, RISING); // Détection des fronts montants } void loop() { delay(10); } void tick() { unsigned long dt = micros() - t; // Temps écoulé depuis le dernier front t += dt; // on met à jour le temps "courant" v = ......... ; Serial.println(v); // affichage de la vitesse du vent mesurée }