wemaus

Font Size

Cpanel

Teil II, Drehzahlmesser

Im 2. Teil wird nun das Projekt fortgesetzt. Auch hier wurde das Projetkt auf den Arduino, so wie bei der Füllstandsanzeige der Kaffeemaschine, umgestellt, weil es einfach einfacher ist, mit ihm zu entwickeln und diesen später auf einer Platine (z.B. Lochraster) einzusetzten.

 

Das Messprinzip:

Aufgrund der etwas anderen Programmierumgebung des Arduinos haben sich einige Änderungen und auch Verbesserungen in der Software ergeben. Diese sollen nun im Einzelnen vorgestellt werden.

Das grundsätzliche Messprinzip bleibt nahezu das Gleiche wie zuvor und kann im Timing-Diagramm nachvollzogen werden.

Um die Drehzahl berechnen zu können, werden die Impulse pro Umdrehung ermittelt und dann durch die dafür benötigte Zeit dividiert. Die Impulse werden mit Hilfe einer Kodierscheibe, welche in gleich große schwarze und weiße Flächen eingeteilt ist und sich auf der sich rotierenden Achse befindet, über einen Reflexkopler (CNY70) aufgenommen.

Mit einem nachgeschalteten Komparator (LM393) wird das Signal verstärkt und an den Eingang des Mikrokontrollers angepasst. Hier löst dann jede aufsteigende Flanke einen Interrupt (INT0) aus. In der dazugehörenden Interruptbehandlungsroutine  werden diese Impulse gezählt, sowie die dazugehörigen Zeitdifferenzen aufsummiert (add PT).

Dies geschieht nun so lange, bis der Timer, für die asynchrone Ausgabe, nach 400 ms einen Interrupt auslöst. Jetzt wird die Messung ausgewertet und wenn sie erfolgreich ist ausgegeben, ansonsten wird eine entsprechende Fehlermeldung angezeigt (output). Im Anschluss daran wiederholt sich der Messvorgang erneut.

Um Messfehler zu vermeiden, muss dafür gesorgt werden, dass ein möglicherweise während der Auswertung aufgetretener Interrupt, gelöscht wird (waiting, start PT). Würde dies nicht geschehen, könnte dadurch ein zusätzlicher Impuls mit kürzerer Periodendauer in die Mittelung des Messergebnisses einfließen und somit zu einer falschen und stark schwankenden Anzeige führen.

 

 

Drehzahlmesser mit Arduino

 

Der neue Messaufbau mit Arduino und dem LCD mit 4 x 20 Zeichen. Sieben Ports werden für das LCD (4-Bit Mode) benötigt, ein Port für einen Taster und Pin2 (INT0) für das zu messende Signal. Weitere sechs Ausgänge werden zum Debuggen verwendet. Der Messverstärker ist hier noch nicht aufgebaut.

Drehzahlanzeige im Debugmode

 

Hier die Anzeige mit zusätzlichen Informationen. Impulse, Messzeit und daraus gemittelte Drehzahl in U/min.

Drehzahlanzeige mit großen Ziffern

 

Durch drücken einer Taste beim Reset, lässt sich die Ausgabe auf erweiterte Informationen (s.o.) umschalten. Standardmäßig wird die Drehzahl, wie links im Bild, in großen Ziffern dargestellt.

Sensor CNY70

 

 

 

Der Reflexsensor ist hier schon mit dem Kabel verlötet, die vier Anschlüsse sind durch Schrumpfschlauch vor Kurzschluss geschützt. 

Sensorgehäuse mit Verschraubung

 

 

Das gedrehte Gehäuse für den Sensor ...

Sensor im Gehäuse verklebt

 

 

... hierin wird der Sensor mit einem Zweikomponentenkleber verklebt und erhält somit eine gute mechanische Festigkeit.

Test des Sensors

 

 

 

Der Testlauf mit dem fertigen Sensormodul am Versuchsaufbau.

Drehzahlmesser im Debugmodus Die Debug-Anzeige zeigt nun auch die gezählten Impulse pro Messung (i) an, zeigt die Einstellung für die Segmente der Kodierscheibe (I/U) und das Timing der Ausgabe (Tout) neben Drehzahl und Periodendauer an.
Sensor fertig verkabelt

 

 

 

Das fertige Sensorkabel mit Sensorhalter vorbereitet für den Einbau an der Drehbank.

Sensorhalter mit Sensor

 

 

 

Hier noch ein Blick auf den Sensor, sowie die Halterung ...

Angebauter Drehzahl-Sensor

 

 

 

... bevor er an seinem Einbauort verschraubt wird.

 

 

pdf Timing-Diagramm für die Messung
pdf Skizze für die Sensor-Halterung
pdf Plan für die Kodierscheibe
pdf Verdrahtungsplan (Fritzing)

 

 

Links:

Teil I 1. Teil, Drehzahlmesser
Teil III 3. Teil, Drehzahlmesser
Teil IV 4. Teil, Drehzahlmesser
 
Quellenangaben:

LCD, große Ziffern, S. 146

AVR, Hardware und C-Programmierung in der Praxis Florian Schäffer, Elektor-Verlag GmbH