Wiki PHY404_Instrumentation_Physique_Grenoble
Advertisement

But du Projet

Le but de notre projet est de réaliser un anémomètre, outil permettant de mesurer la force du vent, de le tester et si le temps nous le permet, de réaliser un étalonnage manuel de l'appareil.

Présentation du projet

Le capteur utilisé pour l'anémomètre est un capteur rotationnel composé d'une rondelle percée de trous à intervalle régulier et d'un émetteur et récepteur d'ondes électromagnétiques. Le capteur décèle donc la variation d'intensité de l'onde émise à travers la rondelle. Notre objectif est donc de compter le nombre de variations de l'intensité, la rondelle étant fixée sur une tige reliée aux pales de l'anémomètre.

Cahier des charges

L'arduino fournira le courant pour la LED et le capteur optique et permettra de traiter les données récupérées par le capteur et de les analyser.

Capteurs nécessaires

La mesure de la vitesse de l'hélice à coupelles se fait grâce au capteur d'ondes électromagnétiques qui détecte les changements de luminosité induits par les trous dans la rondelle.

Besoins électriques

Pour alimenter l'anémomètre, il suffit d'alimenter arduino grâce au câble fourni.

Besoins Mécaniques

Le support est une boîte munie, au centre, d'une tige sur laquelle sont fixées la rondelle et l'hélice. Sur les côtés intérieurs de la boîte, on fixe les composants du circuit : arduino, capteur, écran. L'écran est fixé dans la boîte de manière à être visible depuis l'extérieur.

Schéma anémomètre-0

Schéma de l'anémomètre

Arduino

Schéma montage

Schéma du montage

L'Arduino UNO possède plusieurs sorties numériques. Ici la sortie 13 est utilisée pour le capteur à ondes électromagnétiques. Les autres sont presque exclusivement réservées à l'affichage.

Programme Arduino

//code permettant de compter les changements de luminosité dus à la rotation
#include <LiquidCrystal.h>
LiquidCrystal lcd(11,10,9,8,7,6,5,4,3,2);

float rayon=0.075; //rayon de l'hélice en m
float coeff=2.51; //coefficient de proportionnalité entre la vitesse de l'hélice et celle du vent
int vitesse_ms=0;
int vitesse_noeud=0;
int compteur=0; //compteur de changement
int val=0;
const int pin_13 = 13; // choix de la pin 13 comme output
unsigned long TIME;
unsigned long TimeInter;
char message[16] = "";
char message2[16] = "";


void setup() {
// put your setup code here, to run once:
lcd.begin(16,2); //16 colonnes 2
lcd.clear();
lcd.write("Initialisation");
pinMode(pin_13, INPUT); //initialise la pin 13
Serial.begin(9600); //prépare l'interface de communication
delay(5000); //attend que l'anénomètre demarre
val = digitalRead(pin_13);
lcd.clear();
}

void loop() {
// put your main code here, to run repeatedly:
compteur=0;
TimeInter=millis(); //On détermine un temps intermédiaire pour choisir les delay
TIME=TimeInter; //On donne à la variable TIME la valeur de l'"heure" d'ARDUINO (--> la même que TimeInter au début)
while (TimeInter-TIME <= 1000) //On veut faire une mesure sur 1sec
{
while (val == digitalRead(pin_13)) //permet de filtrer les trop petites fluctuations de luminosité
{
delay(1);
TimeInter=TimeInter+1;
}
val = digitalRead(pin_13); //inscrit la valeur de l'output dans la variable val
if ((val == 1)) //incrémente compteur si il y a un changement de luminosité
{
compteur ++;
Serial.println(compteur);
}
}
TIME=millis()-TIME; //On calcule le temps qui s'est écoulé depuis le début des mesures
Serial.print(compteur);
vitesse_ms = ((compteur*3.14*100*rayon*coeff)/(TIME))-2; //on convertit le nombre de changements de luminosité dans un certain temps en la vitesse du vent (m/s)
if (vitesse_ms <= 0)
{
vitesse_ms=0;
}
vitesse_noeud=vitesse_ms*0.514; //on convertit la vitesse en m/s en une vitesse en noeuds (kt)
lcd.clear();
sprintf(message, "vitesse: %dm/s",vitesse_ms);
sprintf(message2,"%dkt",vitesse_noeud);
lcd.write(message);
lcd.setCursor(9,1);
lcd.write(message2);

}

Tests

On effectue un étalonnage afin que l'anémomètre nous donne la réelle vitesse du vent et non pas la vitesse de l'hélice qui diffère à un coefficient de proportionnalité près à cause de frottements et de résistance au vent. On soumet donc le capteur à une soufflerie qui fournit un vent à une vitesse connue, et par plusieurs points de mesure on détermine ce coefficient.

Mesures

Courbe d'étalonnage-0

Abscisses: vitesse de l'hélice (m/s) ; Ordonnées: vitesse du vent (m/s)

La courbe d'étalonnage de l'anémomètre, permettant de trouver le coefficient qui convertit la vitesse de l'hélice en vitesse du vent, est présentée ici. En abscisse, les valeurs de la vitesse de l'hélice, initialement affichée sur l'écran LCD, en ordonnées les valeurs connues du vent auquel était soumis l'anémomètre.

Problèmes rencontrés

Cet anémomètre à hélices ne peut pas détecter de trop fortes vitesses. Au-delà de 11 m/s, la vitesse affichée est toujours la même. Aussi, Arduino ne peut afficher que des nombres entiers, ce qui nuit considérablement à la précision de l'appareil.

Conclusions

Pour conclure, l'anémomètre à hélice est un appareil maniable, facile à utiliser, et qui avec un capteur plus performant pour la détection de rotation de l'hélice, serait adapté pour l'utilisation en milieu marin par exemple.

Arduino fournit un bon programme avec tous les outils nécessaires à la conversion d'un signal optique en une grandeur physique qu'est la vitesse. Son alimentation de 5V est suffisante pour l'entièreté du circuit, ce qui en fait le bon appareil à allier avec ce genre de dispositif.

Advertisement