Ca dépend du rayon des pales. On peut obtenir une valeur approchée en calculant la distance parcourue par les pales.
Cependant il y a un coefficient de correction et le fabricant de l'anémomètre donne un coefficient de conversion tr/min -> vitesse du vent.
Une règle de trois doit faire l'affaire... (sinon, vous calculez une valeur à la main, avec votre cerf veau, et vous utilisez "map"; en sachant que 0 impulsions i,doqient 0 kù/h, vous avez les deux points don map a besoin)
désoler mais j'ai pas bien compris comment dans mon programme je dois introduire le rayon puis ce que je doit créer pour rentrer la formule pour avoir les km/h.
La distance parcourue par les pales en une heure que l'on peut assimiler à la vitesse du vent est
2Πrayonntrm60/1000 -> distance en km par heure
rayon: rayon en m
ntrm: nombre de tours/minutes
J'insiste sur le fait que ça donne une valeur (très) approximative. Il faut connaitre le coefficient de l'anémomètre.
Pour connaître le coefficient de l'anémomètre, il faut éspérer qu'il est référencé et que son constructeur -que des yeux téléscopiques ne peuvent pas determiner- l'a renseigné.
Supposons que le rayon fasse 1 mètre; qu'on ait 10 tours par minute, et que le coefficient vaille 1:
vous aurez 3.77 km/h (et avec 0 , vous pouvez alimenter map)
merci j'ai réussi maintenant avec le programme ci-dessous, maintenant je sais pas du tout comment afficher la vitesse du vent sur un écran LCD
const float pi = 3.14159265; // Nombre Pi
int period = 1000; // Période de mesure (miliseconde)
int delaytime = 1000; // Temps entre les mesures (miliseconde)
int radio = 70 ; // Distance du centre au capteur (mm)
unsigned int Sample = 0; // Mesure a 0
unsigned int counter = 0; // compteur
unsigned int RPM = 0; // Tours par minute
float speedwind = 0; // Vitesse du vent (km/h)
int vitmax = 10; //vitesse du vent max au dela de laquelle mise en securité
void setup()
{
pinMode(2, INPUT); // sur le port 2
digitalWrite(2, HIGH); // impulssion haute
Serial.begin(115200); // Port série a 115200 baud
Serial.println("Anemometre"); // affichage sur moniteur serie
Serial.println("**********"); // idem
Serial.print(" Mesure toutes les secondes : "); //idem
Serial.println();
}
void loop()
{
Sample++;
windvelocity();
RPMcalc();
WindSpeed();
Serial.print(speedwind); // afficher le vent sur moniteur serie
Serial.print(" [km/h] "); // afficher sur miniteur serie
Serial.println();
delay(5000); // affichage toutes les 5 secondes
Serial.print(" Mesure suivante... "); // afficher sur moniteur serie
Serial.println();
}
// Mesurer la vitesse du vent
void windvelocity()
{
speedwind = 0;
counter = 0;
attachInterrupt(0, addcount, CHANGE);
unsigned long millis();
long startTime = millis();
while(millis() < startTime + period) {
}
detachInterrupt(1);
}
void RPMcalc(){
RPM=((counter/2)*60)/(period/1000); // Calculer tours par minute (RPM)
}
void WindSpeed(){
speedwind = ((((2 * pi * radio * RPM)/60) / 1000) / 1000) * 3600; // Calculer la vitesse du vent en km/h
}
//declaration de addcount
void addcount()
{
counter++;
}
Allez dans fichiers -> exemples et regardez tous les coins de votre menu...
Si votre LCD est classique, vous avez.
Sinon, quel est le vendeur/la référence du LCD (question de Kamill)
Quel est son vendeur? sa référence?
(parce que avec ça , on pourra tenter de savoir quelle est la carte, quel est le circuit d'interface: désolé, on n'a aucun don télépathique)
Pour étalonner ton anémomètre sans avoir de donnée du fabriquant, tu peux le faire en étant passager dans une voiture qui roule. Tu mets ton capteur dehors en le tenant à bout de bras (attention de ne pas rencontrer d'obstacle). Tu relèves la vitesse du véhicule avec un GPS, tu notes la valeur retournée par ton système. Tu fais plusieurs mesures à plusieurs vitesses différentes...
benjifit:
merci j'ai réussi maintenant avec le programme ci-dessous, maintenant je sais pas du tout comment afficher la vitesse du vent sur un écran LCD
const float pi = 3.14159265; // Nombre Pi
int period = 1000; // Période de mesure (miliseconde)
int delaytime = 1000; // Temps entre les mesures (miliseconde)
int radio = 70 ; // Distance du centre au capteur (mm)
unsigned int Sample = 0; // Mesure a 0
unsigned int counter = 0; // compteur
unsigned int RPM = 0; // Tours par minute
float speedwind = 0; // Vitesse du vent (km/h)
int vitmax = 10; //vitesse du vent max au dela de laquelle mise en securité
void setup()
{
pinMode(2, INPUT); // sur le port 2
digitalWrite(2, HIGH); // impulssion haute
Serial.begin(115200); // Port série a 115200 baud
Serial.println("Anemometre"); // affichage sur moniteur serie
Serial.println("**********"); // idem
Serial.print(" Mesure toutes les secondes : "); //idem
Serial.println();
}
void loop()
{
Sample++;
windvelocity();
RPMcalc();
WindSpeed();
Serial.print(speedwind); // afficher le vent sur moniteur serie
Serial.print(" [km/h] "); // afficher sur miniteur serie
Serial.println();
delay(5000); // affichage toutes les 5 secondes
Serial.print(" Mesure suivante... "); // afficher sur moniteur serie
Serial.println();
}
// Mesurer la vitesse du vent
void windvelocity()
{
speedwind = 0;
counter = 0;
attachInterrupt(0, addcount, CHANGE);
unsigned long millis();
long startTime = millis();
while(millis() < startTime + period) {
}
detachInterrupt(1);
}
void RPMcalc(){
RPM=((counter/2)*60)/(period/1000); // Calculer tours par minute (RPM)
}
void WindSpeed(){
speedwind = ((((2 * pi * radio * RPM)/60) / 1000) / 1000) * 3600; // Calculer la vitesse du vent en km/h
}
//declaration de addcount
void addcount()
{
counter++;
}