www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frequenzmessung mit Input-Capture - Drehzahl geht bei Stillstand nicht auf Null


Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich Werte für meine Drehzahlerkennung zwei Impulse aus und errechne mir 
die Drehzahl anhand der beiden Zeitwerte, des Taktes und der Overflows.
Soweit funktioniert das super.
Wenn aber der Lüfter aufhört zu drehen und dann still steht, bleibt eine 
kleine Drehzahl (kleiner als 10) übrig, die ich nicht auf Null gesetzt 
bekomme.
Im Moment blende ich Drehzahlen kleiner als 10 aus und setze dafür den 
Wert 0. Das ist, wie ich finde, nur eine Notlösung.

Wie kann ich, wenn der Lüfter tatsächlich steht und noch ein 
Drehzahlwert ansteht, diesen auf 0 setzen?
Ich verwende einen ATmega8 und AVR Studio inklusive WinAVR.
Als Eingangspin für die Impulse nehme ich ICP1.

Vielen Dank,
Alexander

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wie kann ich, wenn der Lüfter tatsächlich steht und noch ein
> Drehzahlwert ansteht, diesen auf 0 setzen?
So etwa:
  Drehzahl = 0;

Hast du dir schon mal überlegt, was mit dem Capture passiert, wenn keine 
Flanke mehr kommt?

Du wirst also ein Timeout brauchen, das z.B. mit irgendwelchen 
Flanken/Pegeln am Impulseingang zurückgesetzt und mit einem Timer 
hochgezählt wird.

Oder du merkst dir den aktuellen Capture-Stand und siehst nach, ob der 
sich ändert. Falls der sich nicht mehr ändert, lässt du dein Timeout 
hochlaufen.

Es ist auf jeden Fall Handarbeit nötig.

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,

ich hatte nicht daran gedacht, dass der Timer immer weiter läuft und 
sich die Overflows erhöhen.

Ich hatte vorher
if (Ergebnis <= 10)
{
Ergebnis = 0.0;
}

Wenn ich stattdessen
if (Overflows > 5000)
{
Ergebnis = 0.0;
}
schreibe, sollte ich doch erkennen, dass sich der Lüfter nicht mehr 
dreht, da bei der ersten positiven Flanke die Overflows auf 0 gesetzt 
werden?!
Ich werde meine Gedanken aber auf jeden Fall ausprobieren!

Gruß,
Alexander

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.