Vindhastighedsmåler

Fra Kommunikation-IT Holstebro HTX
Skift til: navigering, søgning
Modul der kan måle vindhastighed

MPXV7002 vindhastighedmåleren bruges til at registrere flyhastigheden ved at måle trykforskel.

Modulet er en monolitisk tryktransmitter designet til en bred vifte af applikationer, men især dem, der anvender en mikrocontroller eller mikroprocessor med A/D input. En Arduino har en mikrocontroller, og derfor bruger vi en Arduino til den.

Denne transducer kombinerer avancerede mikroteknikker, tyndfilmmetallisering og topolet(bipolar) behandling for at give et nøjagtig analog output signal, der er proportional med de anvendte tryk. MPXV7002 Datablad.

Hardware

Hardwaren skal sættes til Arduinoen i stel, 5V forsyning og en analog indgang som vist på billedet herunder:

Modul sat til arduino
MPXV7002 sat til arduino

For at modulet kan måle lufthastigheden ordentligt, skal der sættes to gummislanger på de to kamre på modulen, som måler trykkende.

Den korte slange skal skal fremad i den retning objektet, som modulet skal måle hastigheden på, bevæger sig.

Den lange slange skal vende i den modsatte retning af, hvor vinden kommer fra, så den kan bruges som den neutrale referenceindgang, da den så vil måle det atmosfæriske tryk. Se opsætningen på billedet:

Modul med slanger
MPXV7002 med gummislanger

Software

Når hardwaren er sat op, kan softwaren programmeres, hvilket gøres i Arduinoens IDE.

Virkemåde

For at få et output i den serielle monitor (serielle port), skal man definere en integer med den analoge indgang, som modulet er sat til samt sætte den serielle monitor op i setup().

Vi sætter vores serielle monitor op til at kommunikere med 9600 Baud.

Man skal så komme denne integer ind i en analogRead(), da vi skal bruge det analoge input for at kunne måle luftmodstand.

Denne værdi kan vi så printe i den serielle monitor:

int sensorPin = A0;   
int sensorValue = 0; 

void setup() {
   //setup serial monitor
   Serial.begin(9600); 
}

void loop() {
   //find anolog input
   sensorValue = analogRead(sensorPin); 

   //print to serial monitor 
   Serial.println(sensorPin);                       
   delay(1000);
}

Analogt input til vindhastighed

Det output vi får heraf fra, er altså bare det analoge input mellem 0 og 1023 og altså ikke hverken hastigheden eller trykket.

Trykket har en lineær sammenhæng over til AD-værdien der ved neutralt tryk (samme tryk på begge slanger) ligger med en værdi ca. midt i AD-området (her er den ca. 523, og det kan sikkert variere fra sensor til sensor), og trykket kan variere både over og under det neutrale tryk.

Der er ikke en lineær sammenhæng mellem tryk og vindhastighed, men her udnytter vi et arbejde som tidligere elever[1] har lavet, hvor der er optaget en sammenhæng mellem AD-aflæsningen og vindhastigheden i km/t. Denne sammenhæng er plottet ind i følgende kurve:

Sammenhæng mellem AD-aflæsning fra trykmåler og vindhastighed
Sammenhæng mellem AD-aflæsning fra trykmåler og vindhastighed

Sammenhængen viser sig at være trykket og vindhastigheden i anden, så for at regne vindhastigheden bliver det altså en kvadratrods-funktion[2]

For at finde den rigtige vindhastighed kan vi bruge en funktion, der beskriver vindhastigheden ud fra det analoge input, som tidligere elever[1] har udregnet:

A0 til vindhastighed

Hvilket skrives i C således:

int windSpeed = 2.7483*sqrt(analogRead(pin)-523.0067)-0.4323;

Så når det sættes ind i det andet program, vil det kunne udregne vindhastigheden og skrive det i den serielle monitor hvert sekund...

int sensorPin = A0;   
int sensorValue = 0; 
int windSpeed = 0;

void setup() {
   //setup serial monitor
   Serial.begin(9600); 
}

void loop() {
   //find anolog input
   sensorValue = analogRead(sensorPin); 

   //from analog to windspeed
   windSpeed = 2.7483*sqrt(sensorValue-523.0067)-0.4323;

   //print to serial monitor 
   Serial.print(windSpeed);
   Serial.println(" km/t");
   delay(1000);
}

Test

Den serielle monitor med output fra vores program

For at teste programmet, skal man opstille hardwaren som vist overstående og indsætte softwaren, som vist .

Herefter kan man tjekke hastigheden i den serielle monitor, hvor den printer den aktuelle hastighed hvert sekund.

Man kunne eventuelt teste om modulet måler rigtigt, og om programmet er sat op korrekt ved at holde gummislangerne og modulet ude af vinduet i en bil og sammenligne resultaterne med bilens speedometer.

Der skal dog tages højde for, at modulet er begrænset på nogle punkter. Der er blandt andet en begrænsning for, hvor høj en hastighed den kan måle, hvilket med denne opsætning er 60 km/t, da sensoren ikke kan give højere spænding ud.

Referencer

  1. 1,0 1,1 Simon Hansen, Arnar Erlingsson og Bejnamin Damholdt. Eksamensprojekt, HTX Holstebro 2016.
  2. Engineering Toolbox om Pitot-rørs måling af vindhastighed