Hallo Ich habe einen alten Conrad Windmesser der über einen Readkontakt betrieben wird also zwei leitungen. Wo schließe ich die an einer an Masse oder +??? der Andere an eine INT eingang???? wie tut man dann die Geschwindigkeit messen oder berechnen. gibt es da schon was als project??? Vielen Dank
wagner wrote: > Hallo > > Ich habe einen alten Conrad Windmesser der über einen Readkontakt > betrieben wird also zwei leitungen. > > > Wo schließe ich die an einer an Masse oder +??? Üblicherweise schalten Taster/Schalter gegen Masse und werden mit einem Pull-Up eben hochgezogen, kann man aber auch andersrum machen. > der Andere an eine INT eingang???? INT muss nicht sein, das sind so langsame Impulse, die werden besser in einem Timer abgefragt und auch gleich noch entprellt (Falls nötig). > wie tut man dann die Geschwindigkeit messen oder berechnen. Die Drehzahl ergibt sich aus der Dauer zwischen zwei (Oder mehreren) Impulsen, den Zusammenhang zwischen Windgeschwindigkeit und Drehzahl solltest du im Datenblatt finden. > gibt es da schon was als project??? Möglich.
Hi Also werde ich den readkontakt wie ein schalter behandeln und ihn an einen I/O hängen. wie könnte man einen Timer dafür generieren???? Danke
wagner wrote: > Also werde ich den readkontakt... Die Dinger heißen Reed-Kontakte (oder auf deutsch "Schutzgas-Rohr-Kontakte", kurz SRK). Das hat nix mit Lesen (to read) zu tun... > ...wie ein schalter behandeln und ihn an einen I/O hängen. Denk in jedem Fall an eine vernünftige Entprellung. Reed-Kontakte prellen wie Sau... > wie könnte man einen Timer dafür generieren???? Du meinst vermutlich, einen Timer konfigurieren. Das ist aufgrund des Prellens nicht ganz trivial, weil Du bei direktem Anschluss an einen Timer-Eingang eines µC deutlich mehr Impulse zählen wirst als Dir lieb ist. Erzähl besser mal, mit was für einem Controller Du da überhaupt dran willst. Dann kann man vielleicht etwas fundierter helfen.
hallo also ich arbeite mit einem mega8 8mhz noch ne frage zum windrichtungsanzeiger. dort ist ein umlaufendes poti mit 50kohm verbaut. der schleifer ist mit dem adc 7 verbunden derrest eins mit gnd und der andere mit vcc 5volt. ich bekomme bei ca 30% kreisumfang nur 1023 minimalwert spannung <1volt gemessen. der resr geht von 1023 bis 0. mit einen 10k potie gehts von 0 bis 1023 komplette 360 grad. kann man da was machen???
> ich bekomme bei ca 30% kreisumfang nur 1023 minimalwert spannung <1volt > gemessen. > > der resr geht von 1023 bis 0. mit einen 10k potie gehts von 0 bis 1023 > komplette 360 grad. Soll man das verstehen?
Hollo Also das mit der richtung habe ich jetzt habe mit 2,3 volt referenz gemessen da gehts nicht aber mit vcc als referenz da gehts sehr feinfühlig ist das ganze. So jetzt nochmal zur geschwindigkeit. wie kann ich es lösen??? gibt es beispiele in c??? Danke
Naja weißt du denn wie man timer bedient mit C? Das solltest du nämlich wissen. Danach kannst du dich um das entprellen und den rest kümmern. Wahrscheinlich könnte man es erstmal ohne timer probieren, einfach nur an einen eingang und dann mal zu einer festen zeit (die man irgendwie setzen muss, also wieder timer) zählen wieviel mal geschaltet wurde.
So jetz habe ich mal ein versuch gestartet ich hoffe das ich richtig liege also ich habe ein Timer initialisiert Timer1 Prescaler=1 bei 8Mhz void timer0_init(void) { TCNT1=0; TCCR1A=0; TCCR1B=1; TIMSK = (1<<TOIE1); } SIGNAL( TIMER1_OVF_vect ) { if(!(PIND & (1<<3)) && start==0) { start=1; } if((PIND & (1<<3)) && start==1) { plow=1; } if(!(PIND & (1<<3)) && start==1 && plow==1) { start=0; char buffer[10]; sprintf(buffer,"differenz zwischen zwei impulsen %d\r",zi); send_UART(&buffer[0]); zi=0; plow=0; } if(start==1 && plow==1)zi++; } wenn ich das Windrad schnell bewege bekomme ich kleine zahlen zwischen 7 und 9 wenn es langsam wird gehts hoch bis 100 und mehr wenn stillstand. wie kann ich daraus nun die geschwindigkeit errechnen??? wie ist überhaupt die Zeiteinheit meiner messung ms µs??? Danke
>Denk in jedem Fall an eine vernünftige Entprellung. Reed-Kontakte >prellen wie Sau... @Johannes Ist mir neu. Haben die nicht 'ne magnetische Hysterese ?
Ich habe mal weitergesponnen ich habe ja einen Vorteiler von 1 und einen 16bit timer. bei 8mhz also 8000000/65538 bekomme ich 122 Overflows am timer1. die differenz kann ich ja berechnen indem ich 122 zu 1 sec =8 zu x x=8*1/122 x=0,065sec wäre die differenz oder??? wie gehts jetzt weiter??? Kann ich nicht folgendes rechen ich zähle die impulse pro sekunde und multipliziere die mit dem umfang des windmessers. Wäre das nicht möglich. Danke
wagner wrote: > Ich habe mal weitergesponnen > > ich habe ja einen Vorteiler von 1 und einen 16bit timer. > > > bei 8mhz > > also 8000000/65538 bekomme ich 122 Overflows am timer1. Eher 8'000'000 / 65536 Würde ich aber so nicht empfehlen. Besser wär's, wie schon gesagt, die Impulse in einem Timer-Interrupt mit gescheiter Entprellung (Falls nötig!) zu zählen und daraus die Geschwindigkeit zu errechnen. Also im Interrupt prüfen, ob der Schalter geschalten hat und falls ja die Differenz zum letzten Umschalten ausrechnen. > Kann ich nicht folgendes rechen > > ich zähle die impulse pro sekunde und multipliziere die mit dem umfang > des windmessers. Wäre das nicht möglich. Irgendwie in der Richtung wird die Formel zum Berechnen der Windgeschwindigkeit aus der Drehzahl wohl liegen. Aber wie gesagt: Im Datenblatt sollte das stehen.
Hi Ich habe einen Timer interupt der bei overflow anspricht. ich messe die differenz des impulsen so wie oben im quellcode. Oder wie meinst du das???
Nun, du brauchst einen Timer, der alle paar Millisekunden einen Interrupt auslöst. Ob per Overflow oder Compare ist egal. In diesem Interrupt prüfst du jeweils den Zustand des Schalters. Wenn du eine fallende Flanke (Schalter wird geschlossen) erkennst, setzt du einen Zähler auf 0, der die Interrupts zählt. Bei der nächsten fallenden Flanke nimmst du den Wert des Zählers und rechnest den in die Windgeschwindigkeit um. Im Grunde ist das auch das, was du mit deinem Code machst, hatte ich vorhin falsch verstanden. Zur Umrechnung: Deine Overflows treten alle (1 / (8000000 / 65536)) = 8.192ms auf. Bei deinem Wert von 7 dauert eine Umdrehung also 7 * 8.2ms = 57.4ms, bzw. 17.5 Umdrehungen pro Sekunde (Oder ca. 1000 Umdrehungen pro Minute). Ob das hinkommt musst du selbst wissen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.