Tartalomjegyzék:

Rotációs kódoló - megértése és használata (Arduino/egyéb Μvezérlő): 3 lépés
Rotációs kódoló - megértése és használata (Arduino/egyéb Μvezérlő): 3 lépés

Videó: Rotációs kódoló - megértése és használata (Arduino/egyéb Μvezérlő): 3 lépés

Videó: Rotációs kódoló - megértése és használata (Arduino/egyéb Μvezérlő): 3 lépés
Videó: CS50 2013 - Week 9 2024, Július
Anonim
Rotációs kódoló - megértése és használata (Arduino/egyéb ΜController)
Rotációs kódoló - megértése és használata (Arduino/egyéb ΜController)

A forgó kódoló egy elektromechanikus eszköz, amely a forgó mozgást digitális vagy analóg információvá alakítja. Az óramutató járásával megegyező vagy az óramutató járásával ellentétes irányba foroghat. Kétféle forgó jeladó létezik: abszolút és relatív (növekményes) kódolók.

Míg egy abszolút jeladó az aktuális tengelyszöggel arányos értéket ad ki, egy inkrementális jeladó a tengely lépését és annak irányát adja ki. (Ebben az esetben inkrementális kódolóval rendelkezünk)

A forgó jeladók egyre népszerűbbek, mert két funkciót használhat egy elektromos modulban: Egy egyszerű kapcsoló a műveletek megerősítéséhez és a forgó kódoló a navigáláshoz, pl. menü segítségével.

Az inkrementális forgó jeladó két kimeneti jelet generál, miközben a tengely forog. Az iránytól függően az egyik jel vezeti a másikat. (lásd lejjebb)

1. lépés: A kimeneti adatok megértése

A kimeneti adatok megértése
A kimeneti adatok megértése

Amint láthatja, amikor a jeladó tengelye forogni kezd az óramutató járásával megegyező irányba, az A kimenet először LOW -ra csökken, és a B kimenet követi. Az óramutató járásával ellentétes irányban a művelet ellentétesen fordul.

Most már csak ezt kell végrehajtanunk a µControllerünkön (egy Arduino Nano -t használtam).

2. lépés: Építse fel az áramkört

Építsd meg az áramkört
Építsd meg az áramkört
Építsd meg az áramkört
Építsd meg az áramkört

Amint azt korábban leírtam, a kimenetek HIGH és LOW szárnyat hoznak létre. Ahhoz, hogy a µController A és B adattüskéjén tiszta HIGH-ot kapjunk, hozzá kell adnunk a Pull-Up ellenállásokat. A közös C csap közvetlenül a földre kerül az LOW szárnyhoz.

A belső kapcsolóról (nyomógomb) való tájékozódáshoz a másik két érintkezőt használjuk. Az egyik a VCC -hez, a másik pedig a µController adattüskéjéhez megy. Hozzá kell adnunk egy lehúzható ellenállást is az adattűhöz, hogy tiszta LOW értéket kapjunk.

A µController belső felhúzó és lehúzó ellenállásait is használhatja!

Esetemben a pinout így néz ki:

  • +3, 3V => +3, 3V (Arduino) (+5V is lehetséges)
  • GND => GND (Arduino)
  • A => Pin10
  • B =>

    11

  • C => GND
  • SW =>

    12

3. lépés: A kód írása

int pinA = 10; // belső kapcsoló A int pinB = 11; // belső kapcsoló B int pinSW = 12; // kapcsoló (lenyomva Encoder) int encoderPosCount = 0; // nulláról indul, változtasd meg, ha akarod

int pozícióval;

bool switchval; int mrotateLast; int mrotate;

void setup () {

int mrotateLast = digitalRead (pinA); Sorozat.kezdet (9600); késleltetés (50); }

void loop () {readencoder (); if (readswitch () == 1) {Serial.println ("Switch = 1"); }}

int readencoder () {

mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// a gomb forog, ha (digitalRead (pinB)! = mrotate) {// az A kapcsoló először megváltozott -> az óramutató járásával megegyező irányban forgó kódolóPosCount ++; Serial.println ("jobbra forgatva"); } else {// a B kapcsoló először megváltozott-> az óramutató járásával ellentétes irányban forgó kódolóPosCount--; Serial.println ("az óramutató járásával ellentétes irányba forgatva"); }

Serial.print ("Encoder Position:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; return encoderPosCount; } bool readswitch () {

ha (digitalRead (pinSW)! = 0) {// kapcsoló le van nyomva

while (digitalRead (pinSW)! = 0) {} // kapcsoló jelenleg lenyomva switchval = 1; } else {switchval = 0;} // kapcsoló nincs megnyomva return switchval; }

Most elforgathatja a kódolót, és az encoderPosCount változó felfelé számol, ha az óramutató járásával megegyező irányba forgatja, és visszaszámol, ha az óramutató járásával ellentétes irányba forgatja.

Ez az! Egyszerűen és hasznos.

Nyugodtan módosítsa és hajtsa végre a kódot. Ezt megvalósíthatja projektjében.

Feltöltök egy LED projektet is, ahol a kódolóval állítottam be a LED -ek fényerejét.

Ajánlott: