Drehzahlmesser mit Mega8 - einfachstes Prinzip?

Gast #3713480
Lesenswert?

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?
Gast #3713487
Lesenswert?

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.
#3713493
Lesenswert?

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.
Gast #3713501
Lesenswert?

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..
#3713540
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren