atmega Drehzahlmessung

OP #2649314
Lesenswert?
• ▲
▼
Hallo,
Ich würde gerne die Drehzahl eines Propellers mittels 
Lichtschranke(IS471F) und atmega644 messen. Die Drehzahl des Motors ist 
max. 5000 U/min also so ca. 85Hz.
Propeller mit 2 Flügel => 170Hz.

Daher will ich nun Frequenzen zwischen 0 - 170Hz messen.
Und die Auflösung sollte min. 10U/min => 0.15Hz betragen.

Sollte man das ganze per Software Periodendauermessung mittels Interrupt 
mit Flankentriggerung und Timer als Zeitbasis realisieren oder gibt es 
da noch andere Möglichkeiten?
#2649328
Lesenswert?
• ▲
▼
blogger b. schrieb:
> Ich würde gerne die Drehzahl eines Propellers mittels
> Lichtschranke(IS471F) und atmega644 messen. Die Drehzahl des Motors ist
> max. 5000 U/min also so ca. 85Hz.
> Propeller mit 2 Flügel => 170Hz.
>
> Daher will ich nun Frequenzen zwischen 0 - 170Hz messen.
> Und die Auflösung sollte min. 10U/min => 0.15Hz betragen.

Schau mal hier in die Codesammlung:

Beitrag "einfache Drehzahlmessung mit ATmega88"
Beitrag "4-Kanal Drehzahlmessung mit ATmega88"

Vielleicht paßt das ja.

Christian.
Gast #2649345
Lesenswert?
• ▲
▼
>zwischen 0 - 170Hz messen.
>Auflösung sollte min. 10U/min => 0.15Hz betragen.

Ohne jetzt die komplette Fehlerfortpflanzung zu bemühen. Mal eine 
Überschlagsrechnung:

Du willst also zwischen 170,00 und 170,15Hz unterscheiden.

  1          1
------  -  ------   = 5,18µs.
170,00     170,15

Du musst also bei der Messung der Periodendauer eine Genauigkeit von 5µs 
erreichen.

>Periodendauermessung mittels Interrupt mit Flankentriggerung

Da ich nicht davon ausgehe, dass das System prellt, würde ich es mit 
ICP-Interrupt und geeignetem Timertakt lösen.
OP #2649448
Lesenswert?
• ▲
▼
Stimmt mein Vorgang?

Ich setze den Zähltakt mittels Vorteiler auf < 5,18µs (also >192.836kHz)
TCCR1B CS10,CS11,CS12

bei 20Mhz FCPU/64 = 312.5kHz > 192.836kHz

Auflösung 1/FCPU/64 = 3.2µs


Overflow in 2^16 * 1/FCPU/64 = 209ms

=>minimal messbare Freqenz bei 1/209ms = 4.76

Beim ICP setze ich die Flankentriggerung auf fallend Reg ICES
Beim ICP interrupt lese ich die Periodendauer aus dem ICR und Setze TCNT 
zurück

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.