Go Down

Topic: [Help Programme Arduino] Comment capter la période de la vitesse d'un Anémomètre (Read 765 times) previous topic - next topic

Arduino_Kastler

Bonjour,
je voudrais avoir un programme qui me permettrai de capter la période du signal fournit par l'anémomètre afin que je convertisse la période du signal fournit par l'anémomètre en vitesse (km/h)

Merci d'avance :)

trimarco232

Bonjour,
cela dépend : si l'anémomètre donne le mesure directement en km/h, il n'y aurait plus grand-chose à faire ?

Arduino_Kastler

oui il les affiche directement en km/h mais il m'ai demander pour un projet de capter le signal de l'anémomètre en 1er temps

trimarco232

il faut savoir en quoi consiste ce signal, ou au moins l'observer et voir comment il évolue en fonction de la vitesse du vent

infobarquee

bonjour,
A LIRE

Quote
Donnez le maximum de renseignements :

   ...
....
    Une description du matériel et des liens vers les documents techniques (datasheets).
    Bien évidement, ne présentez jamais de code sans avoir tenté de le compiler.
    ....
Quote
je voudrais avoir un programme......
qu'as tu fais pour le moment?
que l'anémo donne en km/h les infos ne dérange pas trop, c'est comment il les calculs.
AUCUNE AIDE PAR MP

Jambe

mais il m'ai demander pour un projet
Ça sent le sujet scolaire!

Tu as essayé de coder quelque chose avant?

Arduino_Kastler

oui c'est bien pour un projet scolaire effectivement j'ai déjà fait quelques choses mais j'ai aucune idée de si ça marche:



PS: seul bémol je n'est pas trouver comment enregister que la valeur la plus grande obtenue en 24h merci de votre aide

kamill

Bonjour,
oui c'est bien pour un projet scolaire effectivement j'ai déjà fait quelques choses mais j'ai aucune idée de si ça marche:
Si tu affiches le résultat nulle part tu n'es pas près de savoir si ça fonctionne.

Arduino_Kastler

Bonjour,Si tu affiches le résultat nulle part tu n'es pas près de savoir si ça fonctionne.

j'ai rajouter des sérial print mais cela ne s'affiche toujours pas pouvez vous m'aider

kamill

Il manque l'initialisation de la liaison série.
Par rapport à ta version précédente il manque les {}
Suprime les delay()
Affiche déjà la période mesure avant de t'intéresser à la vitesse
Essaies ça
Code: [Select]
unsigned long ancienTemps;  // mémorisation de la dernière mesure de temps
unsigned long nouveauTemps;
char ancienEtatCapteur;     // mémorisation du dernier état du capteur
unsigned long periode;      // mémorisation de la période calculée

const unsigned long periodeMax = 1000000UL; // à préciser
// période maximale, en microsecondes, correspondant à l'affichage
// d'une vitesse nulle

const unsigned long constanteVitesse = 2; // à préciser
// dépend du diamètre de la roue et des unités d'affichage de la vitesse
// (par exemple 113097336 fois le diamètre de la roue en mètres pour
// une vitesse exprimée en dixièmes de km/h)
void setup()
{
 Serial.begin(9600);
 
 // initialisation
 ancienEtatCapteur = digitalRead(3);
 periode = periodeMax;
}

void loop()
{
 // teste si un front montant est survenu sur l'entrée capteur
 char nouvelEtatCapteur = digitalRead(3);
 if (nouvelEtatCapteur && !ancienEtatCapteur)
 {
   // calcule le temps écoulé depuis le précédent front
   unsigned long nouveauTemps = micros();
   periode = nouveauTemps - ancienTemps;

   // mémorise l'heure pour le prochain calcul
   ancienTemps = nouveauTemps;

   // calcul de la vitesse
   int vitesse;
   if (periode >= periodeMax)
     vitesse = 0;
   else
     vitesse = constanteVitesse / periode;

   Serial.print("periode: ");
   Serial.println(periode);
   Serial.print("vitesse = ");
   Serial.println(vitesse);
 }

 ancienEtatCapteur = nouvelEtatCapteur;
}

Go Up