Enoncé du TP

Transcription

Enoncé du TP
MET_AN1
Station météorologique : Etude de l’anémomètre
G.COLIN
1 – Présentation
Un anémomètre permet de mesurer la vitesse du vent. Il existe des anémomètres de types différents (à coupelles, à
hélices...) qui mettent en œuvre des propriétés physiques différentes. Notre station météo emploie un anémomètre
à coupelles (le plus utilisé). Un tel anémomètre est muni d'un rotor à trois coupelles qui, sous l'effet du vent, se met
à tourner autour d'un axe vertical. On a une relation mathématique directe entre la vitesse périphérique de la
coupelle et la vitesse de rotation de l'axe. Dans cette activité, nous utiliserons la formule simplifiée suivante :
2 – Constitution
Un capteur ILS (micro contact scellé sous vide) est placé près de l’arbre en rotation. Lorsqu'un aimant passe devant
le capteur ILS, il ferme le micro contact et permet ainsi le passage du courant.
Le schéma de câblage du contact ILS est le suivant :
+5V
R1
10k
Contact ILS
3 – Mesure sur capteur
3.1 - Lorsque le poste de mesure est libre (passer à la partie 4 sinon), relever à l’oscilloscope numérique le signal fourni par
l’anémomètre pour 2 tours de rotation de l’axe.
3.2 - Reporter le relevé sur le document réponse
3.3 - Sur le relevé, indiquer les périodes pendant lesquelles le contact ILS est fermé, et les périodes pendant lesquelles le contact
est ouvert.
3.4 – Mesure le rayon moyen de l’anémomètre
4 – Grandeur électrique associée à la mesure du vent
La fréquence du signal fourni par le capteur est directement proportionnelle à la vitesse du vent.
4.1 – A l’aide de la formule simplifiée du 1°), donner la relation entre V (vitesse du vent) et f, fréquence du signal fourni par le
capteur.
4.2 – Pour les 2 relevés à l’oscilloscope du document réponse, déterminer la période et la fréquence du signal.
4.3 - Calculer la vitesse du vent correspondant à chaque relevé du document réponse, en m/s puis en km/h.
5 – Mesure de fréquence avec la carte ARDUINO
Pour mesurer la vitesse du vent, on décide de mesurer la fréquence du signal fourni par le capteur (mesurer la période peut
également être une solution).
Pour mesurer la fréquence, on compte le nombre d’impulsions fournies par le capteur pendant un temps fixe.
Pour cela, on utilise 2 types d’interruption au niveau du microcontrôleur :
• Une interruption du TIMER1, intégré au µP, à des intervalles de temps régulier
• Une interruption sur chaque front montant du signal fourni par le capteur
A chaque interruption provoquée par le signal, on incrémente une variable. Lorsque la période de mesure est terminée, cette
variable est remise à 0.
Le programme à implanter dans la mémoire du µP de la carte ARDUINO est donné ci-dessous (et sur le document réponse) :
#include <TimerOne.h>
#define duree_mesure 10 //l’étiquette duree_mesure vaut 10
unsigned int nombre_imp;
unsigned int seconde;
void setup()
{
Serial.begin(115200);
Serial.println(“C’est parti!”);
attachInterrupt(0,compte_imp,RISING);
Timer1.initialize(1000000);
Timer1.attachInterrupt(fin_comptage) ;
nombre_imp=0 ;
seconde=0 ;
}
void loop()
{
}
void compte_imp()
{
nombre_imp=nombre_imp+1 ; //équivalent à nombre_imp++ ;
}
void fin_comptage()
{
seconde++ ; //équivalent à seconde = seconde+1 ;
if(seconde>=duree_mesure)
{
Serial.println(nombre_imp) ;
nombre_imp=0 ;
seconde=0 ;
}
}
Remarque
La boucle principale du programme (loop()) est vide. Le programme boucle sur lui-même en attendant les interruptions.
Rappel :
La bibliothèque TimerOne permet de générer des interruptions à des intervalles de temps réguliers. La fonction
Timer1.initialize(temps) définit la périodicité des interruptions, le temps est en µs. La fonction
Timer1.attachInterrupt(procédure) définit la procédure à appeler au moment de l’interruption.
Des interruptions peuvent également être provoquées par des signaux externes au microprocesseur.
Une explication sur ces interruptions est donnée dans le document ci-dessous :
En analysant le programme, répondre aux questions suivantes sur le document réponse :
5.1 – Déterminer la périodicité des interruptions provoquées par le Timer1.
5.2 – Indiquer la procédure appelée lors d’une interruption provoquée par le timer 1.
5.3 – Déterminer la valeur minimale et la valeur maximale que va prendre la variable seconde dans le cas du programme.
(Cette variable n’est modifiée que dans la procédure fin_comptage())
La variable nombre_imp contient le nombre d’impulsions reçues pendant la durée de la mesure. A la fin de cette durée de
mesure, le contenu de la variable nombre_imp est transmis sur la liaison série, puis elle remise à 0.
5.4 – Déterminer la durée de la mesure.
5.5 – Quelle serait la modification à apporter au programme pour avoir une durée de mesure de 5 secondes ?
5.6 – A la lecture de l’explication sur les interruptions de la carte ARDUINO ci-dessus (fonction attachInterrupts), indiquer quelle
patte de la carte ARDUINO est concernée par l’interruption externe.
5.7 – Indiquer sur quel front (montant ou descendant) du signal aura lieu cette interruption.
5.8 – Quelle procédure est appelée lors de cette interruption ?
5.9 – Quelle est l’instruction réalisée lors de l’appel à cette procédure d’interruption ?
6 – Mise en œuvre et essais
Pour simuler le capteur, on utilise un GBF (Générateur Basse Fréquence). Sur la sortie TTL de ce GBF, il y a un signal d’amplitude
0/5V, et de fréquence variable.
La masse du GBF doit être reliée à la masse de la carte ARDUINO, la sortie + de la sortie TTL doit être reliée à la broche
concernée par l’interruption.
6.1 – Proposer un câblage du GBF avec la carte ARDUINO, sans mettre sous tension le GBF et la carte ARDUINO. Faire valider par
le prof.
6.2 – Procéder aux essais.
6.3 – Justifier les résultats affichés dans le moniteur du programme ARDUINO.
6.4 – Indiquer le traitement numérique à réaliser pour obtenir la vitesse du vent en m/s.