Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
electronics:zss600-001-100b-5l [2019-03-31 14:01] Martin Prochnowelectronics:zss600-001-100b-5l [2019-03-31 15:47] – [ZSS600-001-100B-5L mit Arduino Pro Micro auslesen] 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 auslesen. Ich nutze dazu einen Arduino-Pro-Micro-Clone.+Zum Auslesen der Impulse nutze ich einen Arduino Pro Micro.
  
 {{:electronics:rotary_encoder_arduino.jpg?direct&600|}} {{:electronics:rotary_encoder_arduino.jpg?direct&600|}}
Zeile 13: Zeile 13:
 ^ Encoder ^ Arduino Pro Micro ^ ^ Encoder ^ Arduino Pro Micro ^
 | 0V      | GNC               | | 0V      | GNC               |
-| Vcc     | RAW (5V)          |+| Vcc     | RAW (5V direkt von USB) |
 | A       | D2                | | A       | D2                |
 | B       | D3                | | B       | D3                |
Zeile 21: Zeile 21:
 ===== Code ===== ===== Code =====
  
-Der Encoder prelltdaher ist ein Debouncing notwendig~700µSec hat sich in meinen Tests als guter Wert herausgestellt.+Die folgenden beiden Bilder zeigen die Impulsfolge beim Drehen des Encoders (Kanal 1 ist Encoder-Ausgang AKanal 2 ist Encoder-Ausgang B). 
 + 
 +{{:electronics:rotary_encoder_cw.png?nolink|Drehen im Uhrzeigersinn}} {{:electronics:rotary_encoder_ccw.png?nolink|Drehen gegen den Uhrzeigersinn}} 
 + 
 +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:
 } }
 </sxh> </sxh>
 +
 +<note>Wenn ein anderer Arduino-Typ verwendet werden soll, muss der Teil mit dem Einlesen der Input-Register angepasst werden. Und wahrscheinlich ist der verwendete Interrupt auch ein anderer.
 +</note>
  
 {{tag>Arduino}} {{tag>Arduino}}
  • Zuletzt geändert: 2019-03-31 20:20