mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Drehzahlmessung mit Hallsensor


Autor: Mauritz M. (mauritz)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich habe grade eine schöne Drehzahlmessung gebastelt.
Sie funktioniert auch einwandfrei, für kleinere Drehzahlen.
Diese werden über 7 LEDs angezeigt und mit Hallsensoren gemessen.
Doch bei höheren Drehzahlen fangen mir die LEDs an zu blinken und ich 
weiß einfach nicht warum.
Die Abfragrate der Zählfunktion beträgt 2 ms. Die maximale Dauer einer 
Umdrehung des Systems liegt jedoch bei 50 ms, was meiner Meinung ja 
ausreichend sein müsste.

Ich hoffe es nimmt sich jemand kurz die Zeit und wirft einen Blick auf 
die C-Datei. Und ja, ich habe nicht sonderlich elegant programmiert, 
aber es soll ja nur funktionieren :)

Vielen Dank im Voraus,

Grüße, Mauritz

Autor: Mauritz M. (mauritz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht sollte ich noch mit anführen, dass ein Atmega8 mit 12 MHz 
gequarzt ist. Vielleicht ist es dann jmdm klar =)

Danke!
Mauritz

Autor: MC_AVR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mauritz.

Ich kann dir jetzt nicht direkt bei deinem Problem so helfen, aber wie 
ich aus deinem C-Programm erschließen kann, benutzt du nicht die TIMER 
des Atmega8, die eigentlich für Drehzahlmessungen gut geeignet sind.

Der Atmega8 hat einen Input  Capture Pin, welcher ein Interrupt auslöst, 
wenn an dessen Eingang eine Pegeländerung (High->Low oder Low->High) 
stattfindet. D.h. du könntest den Output Pin deines Hallsensors mit 
diesem PIN Verbinden und mit den TIMERN die Zeit zwischen zwei 
Interrupts messen. Es gibt auch eine Möglichkeit, ich glaube das nennt 
sich Noise Canceling, ein Interrupt erst dann auszulösen, wenn das 
Signal am Input Capture Pin 4-Systemtakte lang identisch bleibt. D.h. 
damit könntest du eventuelle "ausreißer" etwas ausgrenzen. Ich empfehle 
dir das AVR-GCC Tutorial durchzulesen um somit mehr Informationen über 
den ICP und den Timern zu erhalten.

Ich hoffe ich konnte dir damit irgendwie helfen ansonsten frohes 
Schaffen !

MfG,
MC_AVR

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.