anemometre arduino

Bonjour à tous,

Je doit présenter un projet dans le cadre de mes etudes sur la conception de capteurs méteo pour un voilier autonome. Je bloque pour un programme celui de l'anémomètre, je suis novice dans la programmation arduino donc j'aimerais que l'on me dise si j'ai fais des erreurs. Le problème pour ce programme est quand je le compile aucune vitesse du vent ne s'affiche.

Programme :

define pinILS 31

define pi 3.14159265359

define RayonDesBras 0.1 // en mètre de l'anémomètre

unsigned long int deltaTime ; unsigned long int vitesseVent; unsigned long int Vitesse_m/s

void setup() // initialisation de la carte électronique { pinMode(pinILS, INPUT); // Serial.begin(9600); // }

void loop() {

while ( digitalRead(pinILS) == 0 ); // Attente que le capteur passe à 1

deltaTime = pulseIn( pinILS , LOW ) ; vitesseVent = 2*0.052*pi*deltaTime; Vitesse_m/s = vitesseVent*(1/0.000001);

Serial.print("le temps d'une periode tour est ") ; //affichage de la vitesse Serial.print(deltaTime); //affichage de la vitesse Serial.println(" us."); //affichage de la vitesse Serial.print("la vitesse du vent est ") ; //affichage de la vitesse Serial.print(Vitesse_m/s); //affichage de la vitesse Serial.println(" m/us."); }

Merci de votre attention.

maxgns: Le problème pour ce programme est quand je le compile aucune vitesse du vent ne s'affiche.

Question très bête : après avoir compilé, tu téléverses le prog sur l'Arduino ? (je me fie à ce que tu écrits...)

Selon la doc de pulseIn(), ce que tu mesures est le temps pendant lequel la valeur reste à LOW. Est-ce bien ce que tu veux ? Ne serait-ce pas plutôt le temps passé entre 2 fronts montants LOW->HIGH ?

Tu dis "aucune vitesse ne s'affiche". Si effectivement [u]RIEN[/u] ne s'affiche, c'est que - soit tu n'as pas réglé le moniteur série sur la bonne vitesse (9600) - ou alors tu restes bloqué éternellement sur le while(...), c-à-d que la broche ne passe jamais à HIGH

Si tu veux dire que la vitesse qui s'affiche est incorrecte ... tu t'es mal exprimé !

Bonjour,

Mets ton programme entre balises de code.

Tu es sur que ton programme compile avec une définition comme ceci unsigned long int Vitesse_m/s ? Le nom de variable ne doit pas comporter de /, de plus il n'y a pas de ; à la fin

Ensuite il faut t'assurer que la lecture de l'entrée fonctionne. Affiches l'état de l'entrée sur le moniteur série et fait tourner ton anémomètre à la main.

Et j'ai de gros doutes sur tes calculs

  vitesseVent = 2*0.052*pi*deltaTime;
  Vitesse_m/s = vitesseVent*(1/0.000001);
  • plus la vitesse du vent est élevée, plus deltaTime est faible donc on doit certainement diviser par deltaTime et non multiplier
  • tu définis le rayon, mais tu ne l'utilises pas
  • quand la multiplication par 1/0.000001, c'est pour le moins original

http://forum.arduino.cc/index.php?topic=501458.0