Kuinka Rotary Encoder toimii ja liitä se Arduinoon

Kuinka Rotary Encoder Toimii Ja Liita Se Arduinoon



Rotary Encoder on tärkeä sähkömekaaninen laite, jolla on monia käyttötarkoituksia elektroniikan alalla. Tämä artikkeli selittää pyörivän kooderin tyypit ja toiminnan sekä sen liitännät Arduinoon.

Mikä on Rotary Encoder

Pyörivä anturi on digitaalinen syöttölaite, joka tunnistaa kiertonupin kulma-asennon ja lähettää signaaleja mikro-ohjaimeen tai muuhun laitteeseen, johon ne on kytketty. Ne voivat pyöriä 360° pysähtymättä. Sitä kutsutaan myös akselienkooderiksi. Sitä käytetään tulostimissa, äänielektroniikassa, moottoreissa ja ohjaimissa.









Pyörivien kooderien tyypit

Pyöriviä koodereita on pääasiassa kahden tyyppisiä, jotka päätetään niiden tuottaman lähtösignaalin perusteella. Nämä tyypit ovat nimeltään:



Inkrementaalinen Rotary Encoder

Tämän tyyppinen kooderi laskee kiertonupin kierrokset pulssien muodossa. Kun nuppia kerran käännetään, syntyy pulssi. Jokaista pulssia kohti laskuri kasvaa akselin kulma-asennon osoittamiseksi.





Absoluuttinen Rotary Encoder

Tämän tyyppinen anturi antaa akselin absoluuttisen kulma-asennon, koska sillä on erillinen koodi jokaiselle akselin asennolle ja se mittaa kulman koodin kautta. Se ei tarvitse laskuria antaakseen kulma-asennon. Vaikka absoluuttinen pyörivä anturi on jännitteetön, vastaavat kulma-asemien arvot säilyvät. Se on myös edullinen kooderi.



Rotary Encoderin toiminta

Pyörivä anturi koostuu levystä, jonka alueet ovat tasavälein ja jotka on kytketty maadoitettuun yhteiseen nastaan ​​C. Kaksi muuta tappia A ja B ovat kosketustappeja, jotka koskettavat C:tä, kun kiertonuppia kierretään. Kun nasta A tai B kytketään maahan, syntyy signaali. Nämä lähtönastoista generoidut signaalit ovat 90° epävaiheessa. Tämä johtuu siitä, että nasta A kytkeytyy maahan, kun nuppia käännetään myötäpäivään, ja nasta B kytkeytyy ensin maahan, kun nuppia käännetään vastapäivään. Siksi nupin pyörimissuunta määräytyy näiden liitosten kautta.

Jos valtio B ei ole yhtä suuri kuin A , sitten nuppi on kääntynyt myötäpäivään.


Jos B:n tila on yhtä suuri kuin A, nuppi on kääntynyt vastapäivään.

Rotary Encoderin pin-konfiguraatio

Alla oleva kaavio esittää kiertoanturin nastat, joissa näkyy lähtönastat A ja B, kiertokytkin, jota voidaan käyttää painopainikkeena, ja nastat virransyöttöä varten.

Pin Kuvaus Rotary Encoder

Seuraavassa on annettu kuvaus kaikista pyörivistä kooderin nastoista.

Out B tai CLK

Tämä nasta näyttää, kuinka monta kertaa nuppi tai pyörivä anturi on pyörinyt. Joka kerta kun nuppia käännetään, CLK suorittaa HIGH- ja LOW-jakson. Se lasketaan yhdeksi kierrokseksi.

Out A tai DT

Tämä on pyörivän kooderin toinen lähtönasta, joka määrittää pyörimissuunnan. Se on 90° jäljessä CLK-signaalista. Siksi, jos sen tila ei ole yhtä suuri kuin CLK:n tila, pyörimissuunta on myötäpäivään, muuten vastapäivään.

Vaihtaa

Kytkintappia käytetään tarkistamaan, onko painiketta painettu vai ei.

VCC

Tämä nasta on kytketty 5V syöttöön

GND

Tämä nasta on kytketty maahan

Rotary Encoderin liittäminen Arduinoon

Pyörivässä kooderissa on viisi nastaa. Pyörivän kooderin VCC ja GND on kytketty Arduinon vastaavaan. Loput nastat CLK, DT ja SW on kytketty Arduinon digitaalisiin tulonastoihin.

Arduino-koodi Rotary Encoderille

// Pyörivien enkooderin tulot
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int laskuri = 0 ;
int nykyinenCLKState;
int lastCLKState;
Merkkijonon virran suunta = '' ;
allekirjoittamaton long lastButtonPressTime = 0 ;
tyhjä asetus ( ) {
// Aseta kooderin nastat kuten tulot
    pinMode ( CLK_PIN, INPUT ) ;
    pinMode ( DT_PIN, INPUT ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Asenna Serial Monitor
Serial.begin ( 9600 ) ;
// Lue CLK:n alkutila
lastCLKState = digitalRead ( CLK_PIN ) ;
}
tyhjä silmukka ( ) {
// Lue CLK:n nykyinen tila
currentCLKState = digitalRead ( CLK_PIN ) ;
// Jos kestää ja CLK:n nykyinen tila on erilainen, sitten pulssi tapahtui
// Reagoi vain 1 tilan muutos kaksinkertaisen laskennan välttämiseksi
jos ( nykyinenCLKState ! = lastCLKState && nykyinenCLKState == 1 ) {
// Jos DT-tila on eri kuin CLK-tila, sitten
// Anturi pyörii vastapäivään, joten vähennys
jos ( digitaalinen luku ( DT_PIN ) ! = nykyinenCLKState ) {
laskuri--;
currentDirection = 'CCW' ;
} muu {
// Enkooderi pyörii myötäpäivään, joten lisää
laskuri++;
currentDirection = 'CW' ;
}
Serial.print ( 'Kiertosuunta:' ) ;
Serial.print ( nykyinen suunta ) ;
Serial.print ( ' | Laskuriarvo: ' ) ;
Serial.println ( laskuri ) ;
}
// Muista kestää CLK tila
lastCLKState = nykyinenCLKState;
// Lue painikkeen tila
int buttonState = digitaalinenLue ( SW_PIN ) ;
// Jos havaitsemme LOW-signaalin, painiketta painetaan
jos ( buttonState == LOW ) {
// Jos 50 ms on kulunut kestää LOW pulssi, se tarkoittaa, että
// -painiketta on painettu, vapautettu ja painettu uudelleen
jos ( millis ( ) - lastButtonPressTime > viisikymmentä ) {
Serial.println ( 'Nappia painettu!' ) ;
}
// Muista kestää painikkeen painallustapahtuma aika
lastButtonPressTime = millis ( ) ;
}
// Laittaa sisään pieni viive auta heikentää lukemaa
viive ( 1 ) ;
}


Yllä annetussa koodissa CLK-nastan tila tarkistetaan loop()-funktiossa. Jos se ei ole sama kuin edellinen tila, se osoittaa, että kiertonuppi on pyörinyt. Nyt nupin pyörimissuunnan tarkistamiseksi CLK:n nykyistä tilaa verrataan DT:n tilaan. Jos molemmat tilat ovat erisuuruisia, se osoittaa, että nuppi on kiertynyt myötäpäivään, ja laskuri lisää sen arvoa näyttääkseen kiertonupin asennon. Päinvastaisessa tapauksessa laskuri laskee.

Johtopäätös

Pyörivät anturit ovat kehittyneitä asentoantureita, jotka voivat pyöriä jatkuvasti. Niitä on saatavana kahta tyyppiä: inkrementaalinen ja absoluuttinen. Pyörivä anturi toimii laskemalla pulsseja, jotka syntyvät nupin pyörimisestä. Sillä on monenlaisia ​​sovelluksia jokapäiväisen elämän elektroniikasta teollisuusautomaatioon.