Tartalomjegyzék:

Rotary Encoder bemutatója Arduino -val: 6 lépés
Rotary Encoder bemutatója Arduino -val: 6 lépés

Videó: Rotary Encoder bemutatója Arduino -val: 6 lépés

Videó: Rotary Encoder bemutatója Arduino -val: 6 lépés
Videó: Arduino Servo Control: How to Make a Laser Turret with XOD 2024, Július
Anonim
Oktató Rotary Encoder Arduino
Oktató Rotary Encoder Arduino

A forgó kódoló egy elektronikus alkatrész, amely képes forgás közben figyelni a mozgást és a helyzetet. A forgó kódoló optikai érzékelőket használ, amelyek impulzusokat generálhatnak a forgó kódoló forgásakor. A forgó jeladó általában mechanikus vagy robot mozgásfigyelőként is használható a menü menüválasztására a kijelzőn. A forgó jeladónak két kimenete van, így meg tudja különböztetni a negatív (CW) és a pozitív (CCW) forgást, és egyetlen gombja is van.

1. lépés: A forgó kódoló impulzusáramlása

Rotációs kódoló impulzusáramlása
Rotációs kódoló impulzusáramlása

A következő forgó jeladó által generált impulzusáram hasonló a fenti képhez.

2. lépés: A Rotary Encoder kioldása

Rotary Encoder pinout
Rotary Encoder pinout

Magyarázat:

  • GND GND
  • + + 5V
  • A forgó jeladó SW gombja megnyomáskor
  • DT adatok
  • CLK adatok 2

Az egyik DT vagy CLK csapot az Arduino Uno megszakító lábához kell csatlakoztatni, vagy mind a DT, mind a CLK csatlakozik a megszakító csaphoz.

3. lépés: Vázlatos

Vázlatos
Vázlatos
  • GND és GND Arduino Uno
  • + à + 5V Arduino Uno
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

4. lépés: Kód

Kód
Kód

A következő oktatóanyagban megszakításként az Arduino Uno 2 -es PIN -kódját használjuk, míg a 3 -as PIN -kódot csak normál bemenetként használjuk.

#define encoder0PinA 2 #define encoder0PinB 3 #define encoder0Btn 4 int encoder0Pos = 0; void setup () {Serial.begin (9600); pinMode (kódoló0PinA, INPUT_PULLUP); pinMode (kódoló0PinB, INPUT_PULLUP); pinMode (kódoló0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; void loop () {int btn = digitalRead (encoder0Btn); Soros.nyomat (btn); Serial.print (""); Serial.print (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } if (valRotary {

Serial.print ("CCW");

} lastValRotary = valRotary; Serial.println (""); késleltetés (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } else {encoder0Pos--; } valRotary = kódoló0Pos/2.5; }

A fenti vázlat 10. sorában az Arduino Uno 2. tű megszakítását engedélyezzük. A "doEncoder" funkciót a forgó kódolóból számítják ki. Ha a DT és a CLK (Arduino Uno pin megszakítása) értéke megegyezik, akkor az "encoder0Pos" változót növeljük / adjuk hozzá, ezen a feltételen kívül az "encoder0Pos" változó is csökken.

5. lépés: Magyarázat

A ValRotary érték a futó lépések számának értéke. A ValRotary értéket a forgó érzékelő jeladó leolvasási értékéből osztva 2,5 -tel kapjuk. A vizsgálat során 2,5 -es értéket kapunk, mivel a forgó jeladó egy lépése meghaladhatja az 1 -et, ezért ossza el 2,5 -tel az értékének megfelelően a lépés és az olvasási késleltetés hozzáadásával.

Míg a 19 - 25 sorban van egy program, amely meghatározza, hogy a CW vagy a CCW forgó forgó kódoló. A 19 - 25 sorok magyarázata az, amikor az aktuális forgó jeladó leolvasása nagyobb, mint a CW -ban kifejezett korábbi rotációs adatok. Míg ha az aktuális érték kisebb, mint az előző, akkor CCW -ként kell megadni.

6. lépés: Kimenet

Kimenet
Kimenet

1 = a forgókapcsoló indítógombjának értéke, ha nem nyomta meg

Ajánlott: