jeudi 23 juin 2016

Fabrication d'un anémomètre (Arduino)

Un anémomètre est un appareil qui permet de mesurer la vitesse du vent.  C'est très facile de construire un anémomètre à coupelle, et de mesurer sa vitesse de rotation au moyen d'une carte Arduino et d'un capteur approprié.

L'anémomètre

J'ai construit un anémomètre à coupelles rudimentaire constitué de 3 petits bols de plastique (de forme vaguement hémisphérique) fixés à l'extrémité de 3 légères tiges de bois. L'extrémité opposée des tiges de bois est fixée à un axe de rotation:  quelque chose qui tourne facilement (dans mon cas:  un ventilateur d'ordinateur n'ayant plus de pales).

Visez la légèreté:  celui que j'ai fabriqué ne réagit pas du tout si la brise est trop légère.


Le capteur: un interrupteur reed

L'intérêt de notre montage d'un point de vue électronique, c'est qu'il comportera un capteur nous permettant de déterminer automatiquement la vitesse de rotation.  J'aurais pu compter les tours au moyen d'un système optique (un duo LED infrarouge/phototransistor, par exemple).  J'ai toutefois opté pour un capteur magnétique (qui demeure immobile), alors qu'un aimant est fixé à une des tiges de l'anémomètre.

Si j'avais eu besoin de mesurer avec précision le champ magnétique causé par l'aimant, j'aurais utilisé comme capteur un magnétomètre numérique (comme le HMC5883L) ou un capteur analogique à effet Hall (comme l'Allegro A1302).  Mais pour compter les tours effectués par l'anémomètre, je n'ai besoin que de détecter la présence (ou l'absence) d'un champ magnétique:  c'est pourquoi j'ai choisi d'utiliser un interrupteur reed.



L'interrupteur reed est constitué de deux lames conductrices qui entrent en contact uniquement lorsqu'elle se trouvent à l'intérieur d'un champ magnétique suffisamment intense (donc à proximité d'un aimant).

Pas d'aimant à proximité:  l'interrupteur reed ne laisse pas circuler le courant
Aimant à proximité:  l'interrupteur reed laisse circuler le courant

Ces deux contacts se trouvent à l'intérieur d'un petit tube en verre TRÈS FRAGILE:  je m'étais procuré un lot de 5 interrupteurs reed, et j'en ai cassé 3 lors de la réalisation de ce projet!

Le circuit

On branche l'interrupteur reed à l'Arduino de la même façon qu'on brancherait un bouton poussoir. Lorsque l'aimant (qui est fixé à une des tiges de l'anémomètre) passe au-dessus de l'interrupteur reed, la pin 8 de l'Arduino sera soumise à un niveau logique HAUT (5 V), alors qu'elle sera soumise à un niveau logique BAS (0 V) le reste du temps.

Une LED branchée à la pin 13 de l'Arduino (ou simplement la LED qui se trouve déjà sur la carte) s'allumera à chaque passage de l'aimant, ce qui nous aidera à vérifier que tout fonctionne correctement.


Calcul de la vitesse

Le temps écoulé entre deux passages successifs de l'aimant représente la période de révolution de l'anémomètre.

On peu ensuite calculer la vitesse des coupelles; puisqu'elles sont en mouvement circulaire, elle parcourent une distance égale à la circonférence pendant une durée correspondant à la période:

vitesse des coupoles = (2 * pi * rayon)/période

...où le rayon est mesuré de l'axe de rotation jusqu'au centre des coupelles (c'était 15 cm dans mon cas).


S'agit-il de la vitesse du vent?  Oui, dans l'hypothèse où les coupelles se déplacent aussi vite que le vent,  mais ce n'est malheureusement pas le cas.

Pour obtenir la véritable vitesse du vent, il faut ensuite multiplier le résultat par une fonction d'étalonnage qui dépend de la forme et des dimensions de l'anémomètre et de sa vitesse de rotation! Pour trouver cette fonction, il faudrait donc mesurer le vent au même endroit et au même moment au moyen d'un anémomètre commercial correctement calibré, et produire une courbe de calibration.

Sinon, tout ce que nous mesurons représente une limite inférieure: nous savons que le vent va au moins aussi vite que les coupelles, dont nous connaissons la vitesse.

Un sketch

Voici un sketch qui affiche dans le moniteur série la période de rotation et la vitesse des coupoles.




Pour une utilisation sur une longue période, il sera utile d'emmagasiner nos données, par exemple sur une carte SD, ou grâce à un service en ligne.

Yves Pelletier   (TwitterFacebook)

29 commentaires:

  1. J'ai testé la fabrication d'un anémo avec interrupteur reed : le souci c'est que l'interrupteur montre une résistance lorsque l'anémo tourne lentement !
    La meilleure solution reste l'interrupteur à effet hall (il en existe des version "on/off" chez allegro !)

    RépondreSupprimer
  2. Ludovic: votre schéma et code avec interrupteur à effet Hall sont visibles quelque part? Cela m'intéresse...

    RépondreSupprimer
  3. J'ai commencé à bricoler avec un interrupteur à effet Hall (après trois jours de travail sans résultat, j'ai fini par comprendre qu'un montage arduino fonctionne mieux quand le circuit est monté dans le bon sens...), mais en fait je suis bloqué sur un point nettement plus prosaïque: comme fixer les trois tiges (en balsa je suppose?) sur le palier de disque dur que j'ai récupéré?

    RépondreSupprimer
  4. Et pourquoi ne pas utiliser une fourche optique? pas de contact mécanique.

    RépondreSupprimer
    Réponses
    1. Comme je l'indique dans l'article, c'était une autre option possible.

      Supprimer
  5. Une suggestion pour étalonner l'anémomètre :
    le fixer sur le toit d'une voiture (sur une barre de toit) et rouler à une vitesse stablisée. (il faudra peut-être avoir auparavant étalonné le compteur de la voiture !)

    RépondreSupprimer
  6. Bonjour, j'ai testé votre programme et tout semble fonctionner à part une chose .. le moniteur n'indique aucune valeurs, même avec les paramètres corrects. Pourriez-vous m'aider ? C'est pour réaliser un projet final de bac.

    RépondreSupprimer
  7. J'ai le meme problème rien ne s'affiche sur le moniteur. Des solutions ?

    RépondreSupprimer
    Réponses
    1. Avez-vous mis une résistance sur l'alimentation de l'interrupteur reed ?

      Supprimer
  8. Bonjour, j'ai réalisé un anémomètre en mesurant la tension aux bornes du moteur (qui devient générateur) directement sur l'arduino. Il faut néanmoins un étalonnage.

    RépondreSupprimer
    Réponses
    1. Comment tu fait ca SVP contace moi kader.iori@gmail.com

      Supprimer
  9. Bonjour, avez vous branché le moteur directement sur l'arduino ou via une diode de protection ? La tension varie t'elle suffisamment Avec le vent pour être interprétée correctement ?
    Cordialement. JM.

    RépondreSupprimer
    Réponses
    1. Le ventilateur n'est utilisé que comme support capable de tourner. Son moteur n'est pas branché.

      Supprimer
  10. Bonjour Mr, il est écrit le 24/03 que vous avez réalisé un anémomètre en mesurant la tension aux bornes du moteur utilisé en générateur directement sur l'arduino ? Je souhaitais en savoir un peu plus. Cordialement . JM

    RépondreSupprimer
  11. on peut choisir n'importe quelle aimant? MERCI
    et il sert a quoi l'aimant et interupteur reed?

    RépondreSupprimer
    Réponses
    1. L'interrupteur et l'aimant servent à compter le nombre de tours.

      Supprimer
    2. daccord merci
      et il faut compter avec 1 ou 2 tours?
      et vous pensez que avec celui ci :https://www.lextronic.fr/temperature-meteo/19999-capteur-anenometre.html
      me donnera directement la mesure précis , que les coupelle se deplace aussi vite que les coupelles?
      ou faut multiplier le réultat par une fonction d'étalonagge...?
      merci

      Supprimer
    3. et en quoi consiste le calcule avec l etalonnage pouvez vous m'expliqueaz car je ne comprend pas je débute.
      merci beaucoup.

      Supprimer
  12. Bonjour, est-ce que vous avez fais la meme chose pour le pluviometre ?

    RépondreSupprimer
  13. Bonjour, je ne comprends pas le '36' dans le serialprint. J'aurai mis 3.6 pour convertir des m/s en km/h.
    Merci d'avance pour l'explication.
    Cordialement

    RépondreSupprimer
  14. Bonjour,
    J'aime beaucoup l'idée de votre projet. Auriez-vous les plans détaillés en photo de votre montage ? et la liste des pièces ?
    Vous dites que la led est sur le pin 13, je ne vois pas cela sur votre image

    Merci d'avance !

    Mon mail : jp3741@hotmail.fr

    RépondreSupprimer
  15. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
  16. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
  17. Bonjour , j'essaie d'ajouter la température lue par un thermistor à votre sketch. J'ai fait un autre sketch ou j'utilise 4 thermistors et tout va bien, mais quand j'essaie d'intégrer tous les calculs d'un thermistor, la température montre une valeur de 80 degrés Celsius alors qu'il fait 20 degrés dans la pièce. Mystère...

    RépondreSupprimer
  18. bonjour, j'aime beaucoup votre projet, pourriez vous me donner les plans de votre montage et la liste de pièce,Merci

    Cordielement

    RépondreSupprimer
  19. Bonjour, j'ai testé votre programme sur 1 ESP32 , ça fonctionne bien, mais je je comprend pas la formule à quoi sert le '0.15' et où est pris en compte le diamètre du rotor( j'utilise 1 anémomètre Lextronic . Merci

    RépondreSupprimer
  20. Bonjour, tout d'abord merci pour ce programme d'anémomètre. J'ai branché un capteur à effet hall KY024, en branchant la sortie digital sur l'entrée 8. Le moniteur série affiche une première ligne de 1ms et un vitesse de 3392,93km/h ou 0ms et vitesse inf et une deuxième ligne donnant une valeur correcte en ms et en km/h. Est-ce un effet rebond qui fait afficher 1ms ? merci pour votre réponse

    RépondreSupprimer