Archiv verlassen und diese Seite im Standarddesign anzeigen : Drehzahlerfassung
Habe ein Programm geschrieben das die Impulse pro Sekunde zählt. Leider reicht mir die Sekündliche Messung nicht mehr aus. Jetzt möchte ich über einen Timer die Impulslänge messen um mehrere Messungen in der Sekunde durchführen zu können. Ich hatte da folgende Idee:
Ich wollte bei einer negativen Flanke einen Timer Starten und bei der nächsten Flanke den Timer wieder stoppen und dann den Timerwert auslesen. Theoretisch alles klar aber leider weiss ich nicht wie!
Vieleicht hat da einer ein kurzes Beispielprogramm für den Atmega8.
=P~
Dank für alle Beiträge schon im voraus
Michael
hi,
prinzipiell könntest du das so machen:
1. neg. flanke löst interrupt aus.
2. timer auslesen und mit variable (wert aus vorhergehender messung) vergleichen
3. variable mit neuem wert beschreiben
4. die differenz aus neuem wert zu gespeichertem wert ist die zeit, die zwischen 2 neg. flanken vergeht
5. zeit in freq umrechnen - fertig
grüssens, harry
Hi,
timer1 bietet eine capture funktion, die einen interr. auslöst. ist sozusagen wie eine stopuhr.
timer1 läuft frei und wenn, bei steigender oder fallender flanke, je nach dem, wie du programmiert hast ein int. ausgelöst wird sichert der avr den timer-zählerstand im capture-register, das dann ausglesen werden kann...
je nach taktfrequenz und vorteilung zählt der timer schneller oder langsamer seine 16bit hoch, so erhöht er sich: ein beispiel jede mSec. um 10. d.h. wenn ein int. erfolgt und das cature-register den wert 300 enthält, sind 30mSec. vergangen...
umrechnen musst das noch selber, wieviele impulse du pro umdrehung hast...
grüße ralf
bertl100
26.06.2005, 18:30
Such mal nach dem Befehl "PULSEIN"
Damit kannst per neg. oder pos. Flanke die Pulsweite messen.
Ist sicher einfacher als mit Timer.
MFG
Vader
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.