Sisällysluettelo:

Pyörivä kooderi - ymmärrä ja käytä sitä (Arduino/muu Μohjain): 3 vaihetta
Pyörivä kooderi - ymmärrä ja käytä sitä (Arduino/muu Μohjain): 3 vaihetta

Video: Pyörivä kooderi - ymmärrä ja käytä sitä (Arduino/muu Μohjain): 3 vaihetta

Video: Pyörivä kooderi - ymmärrä ja käytä sitä (Arduino/muu Μohjain): 3 vaihetta
Video: Lesson 97: Controlling Servo Motor using Rotary Encoder and Display Angle On LCD 2024, Joulukuu
Anonim
Rotary Encoder - Ymmärrä ja käytä sitä (Arduino/muu Μohjain)
Rotary Encoder - Ymmärrä ja käytä sitä (Arduino/muu Μohjain)

Kiertokooderi on sähkömekaaninen laite, joka muuntaa pyörimisliikkeen digitaaliseksi tai analogiseksi tiedoksi. Se voi kääntyä myötä- tai vastapäivään. Pyörivää anturia on kahdenlaisia: absoluuttinen ja suhteellinen (inkrementaalinen) anturi.

Vaikka absoluuttianturi antaa arvon, joka on verrannollinen akselin nykyiseen kulmaan, inkrementaalianturi antaa akselin askeleen ja sen suunnan (tässä tapauksessa meillä on inkrementaalianturi)

Pyörivät anturit ovat yhä suositumpia, koska voit käyttää kahta toimintoa yhdessä sähkömoduulissa: Yksinkertainen kytkin toimintojen vahvistamiseen ja kiertokooderi navigointiin, esim. valikon kautta.

Inkrementaalinen pyörivä anturi tuottaa kaksi lähtösignaalia akselin pyöriessä. Suunnasta riippuen yksi signaaleista johtaa toista. (Katso alempaa)

Vaihe 1: Tulostustietojen ymmärtäminen

Tulostustietojen ymmärtäminen
Tulostustietojen ymmärtäminen

Kuten näet, kun anturin akseli alkaa pyöriä myötäpäivään, lähtö A putoaa ensin LOW -asentoon ja lähtö B seuraa sitä. Toimintaa käännetään vastapäivään.

Nyt meidän on vain otettava tämä käyttöön µControllerissamme (käytin Arduino Nano).

Vaihe 2: Rakenna piiri

Rakenna piiri
Rakenna piiri
Rakenna piiri
Rakenna piiri

Kuten edellä kuvattiin, lähdöt luovat HIGH- ja LOW -kyljen. Jotta saisimme puhtaan HIGH: n µControllerin datanastat A ja B, meidän on lisättävä Pull-Up-vastukset. Yhteinen tappi C menee suoraan maahan LOW -kylkeä varten.

Saadaksesi tietoa sisäisestä kytkimestä (painike) käytämme kahta muuta nastaa. Toinen niistä menee VCC: hen ja toinen µControllerin datatappiin. Meidän on myös lisättävä alasvetovastus datanappiin saadaksemme puhtaan LOW.

On myös mahdollista käyttää µControllerin sisäisiä ylös- ja alasvetovastauksia!

Minun tapauksessani pinout näyttää tältä:

  • +3, 3V => +3, 3V (Arduino) (myös +5V mahdollista)
  • GND => GND (Arduino)
  • A => Pin10
  • B =>

    Kiinnitä

    11

  • C => GND
  • SW =>

    Kiinnitä

    12

Vaihe 3: Koodin kirjoittaminen

int pinA = 10; // sisäinen kytkin A int pinB = 11; // sisäinen kytkin B int pinSW = 12; // kytkin (painettu Encoder) int encoderPosCount = 0; // alkaa nollasta, muuta jos haluat

int positionval;

bool -kytkin; int mrotateLast; int mrotate;

void setup () {

int mrotateLast = digitalRead (pinA); Sarja.alku (9600); viive (50); }

tyhjä silmukka () {lukukooderi (); if (readswitch () == 1) {Serial.println ("Kytkin = 1"); }}

int readencoder () {

mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// nuppi pyörii jos (digitalRead (pinB)! = mrotate) {// kytkin A muutettiin ensin -> pyörivä myötäpäivään encoderPosCount ++; Serial.println ("kierretty myötäpäivään"); } else {// kytkin B vaihdettu ensin-> pyörivä vastapäivään anturiPosCount--; Serial.println ("käännetty vastapäivään"); }

Serial.print ("Encoder Position:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; palauta kooderiPosCount; } bool lukukytkin () {

if (digitalRead (pinSW)! = 0) {// -kytkintä painetaan

while (digitalRead (pinSW)! = 0) {} // kytkintä painetaan parhaillaan switchval = 1; } else {switchval = 0;} // kytkin on painamaton paluu switchval; }

Nyt voit kääntää anturia ja muuttuja encoderPosCount laskee ylöspäin, jos käännät myötäpäivään, ja laskee alas, jos kierrät vastapäivään.

Se siitä! Yksinkertaisesti ja hyödyllisesti.

Voit vapaasti muuttaa ja suorittaa koodin. Voit toteuttaa sen projektissasi.

Lähetän myös LED -projektin, jossa käytin enkooderia LED -valojen kirkkauden säätämiseen.

Suositeltava: