Teil II, Drehzahlmesser
- Details
- Zugriffe: 11828
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.
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. |
||
Hier die Anzeige mit zusätzlichen Informationen. Impulse, Messzeit und daraus gemittelte Drehzahl in U/min. |
||
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. |
||
Der Reflexsensor ist hier schon mit dem Kabel verlötet, die vier Anschlüsse sind durch Schrumpfschlauch vor Kurzschluss geschützt. |
||
Das gedrehte Gehäuse für den Sensor ... |
||
... hierin wird der Sensor mit einem Zweikomponentenkleber verklebt und erhält somit eine gute mechanische Festigkeit. |
||
Der Testlauf mit dem fertigen Sensormodul am Versuchsaufbau. |
||
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. | ||
Das fertige Sensorkabel mit Sensorhalter vorbereitet für den Einbau an der Drehbank. |
||
Hier noch ein Blick auf den Sensor, sowie die Halterung ... |
||
... bevor er an seinem Einbauort verschraubt wird. |
Timing-Diagramm für die Messung | ||
Skizze für die Sensor-Halterung | ||
Plan für die Kodierscheibe | ||
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 |