Forum: Mikrocontroller und Digitale Elektronik Frage zu meiner berechnung Windgeschwindigkeit


von wagner (Gast)


Lesenswert?

Hallo

Ich habe einen ELV Funkwindmesser umgebaut das er Schnurgebunden 
arbeitet.

Das einzuíge was noch drinn ist ist das Poti für Windrichtung und der 
rredkontackt für die umdrehungen impulse.


Nun frage ich mit einen Timer die zeit zwischen 2 impulsen ab und 
berechne darus die Geschwindigkeit nur ist das problem das sie um ca 50% 
abweicht vom realen wert(Handwindmesser)

1. INIT TIMER 0

void timer0_init(void)
{
TCNT0=0;
TCCR0=(1<<CS00); // Timer 1 ist normaler Timer
TIMSK = (1<<TOIE0);
}


2. Interrupt TIMER 0

SIGNAL( TIMER0_OVF_vect )
{

if(!(PIND & (1<<3)) && start==0)// abfragenob readkontackt für die 
messung
{                               // schon geschlossen ist
start=1;                        //Reaad hat geschlossen
}

if((PIND & (1<<3)) && start==1)  //abfrage ob read wiederoffen
{
plow=1;                          //Read low
}



if(!(PIND & (1<<3)) && start==1 && plow==1)  //read wieder geschlossen
{                                            //Berechnung
plow=0;
char buffer[20];

float v=2.0*3.14159265 *0.065 * (1.0/((float)zi*1.0/31250.0))*3600.0;
 v=v/1.85; /KT/h
 g=(int)v;
sprintf(buffer,"v=%d kt/h\r",g/1000);
send_UART(&buffer[0]);
start=0;
zi=0;
}

if(start==1 && plow==1)zi++; //zeit wird gezählt


}


Ist der Timer zu langsam??????
Stimmt meine Berechnung nicht????

Mein System ein Mega 8 mit 8Mhz Tackt

Danke

von Magnus Müller (Gast)


Lesenswert?

Vermutlich passt deine Berechnung nicht. Wenn du schon ein "echtes" 
Anemometer zum Vergleich hast kannst du deine Formel ja entsprechend 
anpassen.

von Ralph (Gast)


Lesenswert?

Ändere die komplette Logik.

1. Interrupt auf steigende oder fallende Flanke, nicht auf beide.
2. Bei Einstieg in Interruptroutine den Timerwert aus dem Timer lesesn 
und abspeichern.
3. Im nächsten Interrupt liest du wieder den Timerwert aus und rechnest 
die Differenz aus.
4. Filtern (zb Mittelwert) über mehrere Differenzen sonst bekommst du zu 
große Sprünge im Wert.
5. Den Timertakt kennst du, und damit kannst du die Zeit zwischen zwei 
gleichen Flanken berechnen.
6. Rechne mit INTEGER nicht mit FLOAT, dein µC hat keine FPU
7. In der Interruptroutine rechnest du NUR die Differenz aus und legst 
sie in ein Array, die weitere Berechnung erfolgt in der MAIN.


Über die Periodendauer der Frequenz bekommst du die Umdrehungszahl des 
Windrades und daraus kommst du auch die Windgeschwindigkeit.

von Michael K. (Gast)


Lesenswert?

Warum noch nen Thread ? Der andere ist ja noch aktiv!

Beitrag "habe noch problem mit der berechnung Windgeschwindigkeit"

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Misst du mit dem Vergleichshandwindmesser in m/s und mit dem Selbstbau 
in kn (engl. kt)? Das ist ungefähr der Faktor 2 (genau 1,852).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.