Hey Leute, ich lese gerade im Datenblatt vom Mega8 (hab ich gerade einige da) und überlege, wie ich am einfachsten die Drehzahl von einem meiner Quadrocopter-Propeller mit einer Lichtschranke messen kann. Ich hab mir gedacht: 1) ich stell mir einen Timer (Timer0?), der alle 500ms einen Interrupt auslöst 2) Timer1 (16bit) richte ich als Counter ein, mit externer Taktquelle (Pin INT1, da schließe ich nachher die Lichtschranke an - aber noise canceling kann ich da nicht nutzen, oder?) 3) in der ISR vom Timer (siehe 1) lese ich den Counter aus, setze ihn wieder auf 0 und sende den Wert (Drehzahl in U/sek) über die serielle Schnittstelle (sollte < 500ms dauern) Ist das so gedacht mit den Timern / geht es einfacher/besser?
Es gibt zwei Möglichkeiten die Drehzahl so zu messen: 1. Du misst die Zeit zwischen zwei Unterbrechungen 2. Du misst die Anzahl der Unterbrechungen in einem festen Intervall Beide Methoden haben ihre Vor- und Nachteile (Auflösung etc...), weshalb bei kleinen Geschwindigkeiten meist Variante 1 und bei hohen Geschwindigkeiten dann auf Variante 2 umgestellt wird.
Der Propeller wird doch über einen Brushless Motor angetrieben? Also kann man mit den Nulldurchgängen der Motorspannung doch direkt die Drehzahl erfassen. Ohne Lichtschranke. Beim Erfassen von Frequenzen hast du prinzipiell 2 Möglichkeiten. 1. Torzeit definieren und die Anzahl Impulse pro Torzeit zählen. 2. Mit einer konstanten hohen Frequenz (Timertakt) einen Zähler solange hochzählen, bis genau eine (oder mehrere) Umdrehungen geschehen sind. Methode 1 nimmt man wenn die Frequenz hoch genug ist. Das Ergebnis wird (relativ) umso genauer je höher die Frequenz und die Torzeit ist. Methode 2 nimmt man eher bei niedrigen Frequenzen. Das Ergebnis wird umso genauer je niedriger die zu ermittelnde Frequenz ist.
Udo Schmitt schrieb: > Torzeit definieren und die Anzahl Impulse pro Torzeit zählen. So will ich es machenm wie oben beschrieben (dreht einigermaßen schnell) Die Motoren sind nicht brushless (Nano QX) Es ging mir eher darum, ob das mit den Timern so richtig ist / funktionieren kann - oder manchmal gibt es ja noch einen Trick, der das Ganze vereinfacht..
Arno schrieb: > Udo Schmitt schrieb: >> Torzeit definieren und die Anzahl Impulse pro Torzeit zählen. > > So will ich es machenm wie oben beschrieben (dreht einigermaßen schnell) Dann laß uns doch mal ein paar Schätzungen machen. Sagen wir mal, der Propeller rotiert mit 1000rpm. Das sind 16.67 Umdrehungen pro Sekunde. Du willst ein Meßintervall von 500ms nutzen. In dieser Zeit kriegst du dann 8 Komma zerquetschte Impulse rein. Wegen der Asynchronität zwischen Signal und Abtastzeitpunkt werden es also entweder 8 oder 9 Impulse sein. Der wahre Wert liegt irgendwo dazwischen, der Fehler ist also bis zu 1/8 oder 12.5%. Reicht dir das wirklich? OK, in der Praxis wird der Propeller mehrflügelig sein und die Lichtschranke mehrmals pro Umdrehung unterbrechen. Das reduziert den Fehler um einen Faktor (bei zweiflügeligen Propellern: um Faktor 2). Aber es bleibt doch ein gewisser Zweifel an der Meßmethode. Denn natürlich funktioniert sie um so schlechter, je langsamer der Propeller dreht. Im Gegenzug die Periodendauermessung. Selbst wenn dein Mega8 nur mit 1MHz tickert, kannst du eine Periode problemlos auf 1µs genau ausmessen. Einfach Timer 1 mit dem µC-Takt laufen lassen und deine Lichtschranke an eine Input Capture Einheit hängen. Die Peridendauer bei 1000rpm ist 60ms, wenn du die auf 1µs genau auflösen kannst, ist der Fehler 1/60000 ~= 0.0017%. Bei 10000rpm wäre der Fehler immer noch nur 0.017%. Und du kriegst Meßwerte auch noch viel schneller als nur zweimal pro Sekunde. XL
Arno schrieb: > Ist das so gedacht mit den Timern / geht es einfacher/besser? 2 x zu suchen ist am einfachsten: 1. Suche unter 'Projekte & Code' nach DREHZAHL 2. Suche Dir eine der vielen Möglichkeiten aus.
Axel, Du hast mich überzeugt. Darüber hinaus brauche ich dann nur 1 Timer und kann ich dann input capture / noise canceler verwenden.
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.