Gast
#650376
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