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
Vielleicht sollte ich noch mit anführen, dass ein Atmega8 mit 12 MHz gequarzt ist. Vielleicht ist es dann jmdm klar =) Danke! Mauritz
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
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.