Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision | ||
electronics:zss600-001-100b-5l [2019-03-31 14:01] – Martin Prochnow | electronics:zss600-001-100b-5l [2019-03-31 15:25] – Martin Prochnow | ||
---|---|---|---|
Zeile 5: | Zeile 5: | ||
Als Versorgungsspannung werden 5V benötigt. Pro voller Umdrehung sendet er 100 Impulse. | Als Versorgungsspannung werden 5V benötigt. Pro voller Umdrehung sendet er 100 Impulse. | ||
- | Bevor ich mit dem Ding etwas anstellen kann, muss ich erst einmal die Impulse | + | Zum Auslesen der Impulse nutze ich einen Arduino Pro Micro. |
{{: | {{: | ||
Zeile 21: | Zeile 21: | ||
===== Code ===== | ===== Code ===== | ||
- | Der Encoder | + | Die folgenden beiden Bilder zeigen die Impulsfolge beim Drehen des Encoders (Kanal 1 ist Encoder-Ausgang A, Kanal 2 ist Encoder-Ausgang B). |
+ | |||
+ | {{: | ||
+ | |||
+ | Wenn A auf High steht, muss geprüft werden, ob B auf Low (Drehung im Uhrzeigersinn) oder auch auf High (Drehung gegen den Uhrzeigersinn) steht. | ||
+ | |||
+ | Damit das ganze zügig passiert, wird A mittels Interrupt überwacht. | ||
Der Zustand der Pins wird über das entsprechende Input-Register direkt eingelesen, um mit der Abarbeitung des Interrupt-Handlers so schnell wie möglich fertig zu werden. | Der Zustand der Pins wird über das entsprechende Input-Register direkt eingelesen, um mit der Abarbeitung des Interrupt-Handlers so schnell wie möglich fertig zu werden. | ||
+ | |||
+ | Der Encoder prellt, daher ist ein Debouncing notwendig. ~700µSec hat sich in meinen Tests als guter Wert herausgestellt. | ||
<sxh cpp> | <sxh cpp> | ||
Zeile 67: | Zeile 75: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | < | ||
+ | </ | ||
{{tag> | {{tag> |