Drehzahlmesser

Elektronischer Drehzahlmesser

Warum und wozu überhaupt?

Fragt mich ein Bekannter:

Sag mal, ich habe da meinen Motor etwas erleichtert, der dreht jetzt so schnell hoch, dass der alte Drehzahlmesser da drin nicht mitkommt und immer so hinterher hinkt. Kannst du da was bauen?
Klar kann ich - und die meisten der benötigten Teile habe ich auch noch in der Restekiste.

Schaltplan

Schaltplan des Drehzahlmessers

Der Schaltplan der Schaltung (klicken zum Vergrößern)
Hier gibts den Schaltplan als Eagle-Datei.

Das Zündsignal gelangt über einen Tiefpass mit R2 und C7 auf den Input Capture-Eingang des Mikrocontrollers, die LEDs werden per Multiplexing über die Transistoren angesteuert. Der Quarz liefert den Takt, der Spannungsregler 7805 reguliert die Spannung des Bordnetzes auf die 5V, die der Mikrocontroller benötigt. Am Eingang sorgt die Diode für einen gewissen Verpolschutz und ein paar Kondensatoren stabilisieren die verschiedenen Betriebsspannungen.

Firmware bzw. Software

So ein Mikrocontroller macht nichts, ohne dass er programmiert wird. Dazu ist in dieser Schaltung der 2x5-polige Anschluss vorgesehen - Pinbelegung nach ATMEL ISP-Standard. Wer tiefer in die Programmierung einsteigen möchte, dem empfehle ich die Webseite www.mikrocontroller.net, die sich nicht nur, aber auch mit AVRs auseinandersetzt. Die Herstellerfirma Atmel hat ebenfalls einige interessante Datenblätter, die beim Verständnis der Firmware sicherlich helfen.

Kommen wir nun zur Firmware: Hier findet ihr den gesamten Quelltext zur Kompilierung mit avr-gcc 4.4.3 und avr-libc 1.6.8 (Fehler- und Erfolgsmeldungen mit anderen Versionen nehme ich gerne hier auf) und hier eine Hex-Datei für die ganz eiligen, die der Quelltext nicht interessiert.

Was macht denn aber nun die Firmware? Nun, zunächst werden verschiedene Timer aktiviert. Timer 1 dient der Zeitmessung, dazu werden der Überlauf-IRQ und der Input-Capture-IRQ aktiviert. Für das Display wird der Überlauf-IRQ von Timer 0 aktiviert.

Bei jeder fallenden Flanke auf dem Zündungssignal wird der aktuelle Zählerstand des Timer 1 gespeichert. Aus der Differenz zwischen den Zählerständen und dazwischen aufgetretenen Überläufen wird von der Funktion RPMgetRPM die Drehzahl berechnet. Diese Funktion wird aus der Hauptschleife ca. alle 10ms aufgerufen und aus 16 Werten ein Mittelwert berechnet, der dann auf die LEDs ausgegeben wird.

Aufbau

Ich kann und will hier keine Anleitung zum Löten geben, daher nur ein paar kurze Anmerkungen:

Zusammenfassung meiner Dateien zu dem Projekt:

FAQs, Nutzerkommentare

Ich freue mich natürlich über Rückmeldungen zu diesem Projekt. Bei häufiger auftretenden Fragen werde ich diese hier auch aufnehmen. Bitte berücksichtigt aber, dass ich diese Seite in meiner Freizeit pflege und in der Regel keine Zeit habe, grundlegende Löt- oder Programmierkenntnisse o.a. zu vermitteln - dafür gibt es andere Seiten im Netz.