Sisukord:

Pöörlev kodeerija - mõistke ja kasutage seda (Arduino/muu Μkontroller): 3 sammu
Pöörlev kodeerija - mõistke ja kasutage seda (Arduino/muu Μkontroller): 3 sammu

Video: Pöörlev kodeerija - mõistke ja kasutage seda (Arduino/muu Μkontroller): 3 sammu

Video: Pöörlev kodeerija - mõistke ja kasutage seda (Arduino/muu Μkontroller): 3 sammu
Video: Переработка энкодера колеса прокрутки мыши и его тестирование с помощью Arduino Nano 2024, November
Anonim
Pöörlev kodeerija - mõistke seda ja kasutage seda (Arduino/muu ontrolkontroller)
Pöörlev kodeerija - mõistke seda ja kasutage seda (Arduino/muu ontrolkontroller)

Pöörlemiskooder on elektromehaaniline seade, mis muudab pöörleva liikumise digitaalseks või analoogteabeks. See võib pöörata päripäeva või vastupäeva. Pöörlevaid andureid on kahte tüüpi: absoluutsed ja suhtelised (inkrementaalsed) kodeerijad.

Kui absoluutne kodeerija väljastab väärtuse, mis on proportsionaalne võlli praeguse nurgaga, siis inkrementaalne kooder väljastab võlli sammu ja selle suuna. (Sel juhul on meil inkrementaalne kodeerija)

Pöördkodeerijad muutuvad üha populaarsemaks, kuna saate ühes elektrimoodulis kasutada kahte funktsiooni: Lihtne lüliti töö kinnitamiseks ja pöördkodeerija navigeerimiseks, nt. menüü kaudu.

Inkrementaalne pöörlev kodeerija tekitab võlli pöörlemise ajal kaks väljundsignaali. Sõltuvalt suunast juhib üks signaale teist. (vt allpool)

1. samm: väljundandmete mõistmine

Väljundandmete mõistmine
Väljundandmete mõistmine

Nagu näete, kui kodeerimisvõll hakkab päripäeva pöörlema, langeb väljund A kõigepealt madalale ja väljund B järgneb sellele. Vastupäeva liikumine muutub vastupidiseks.

Nüüd peame selle lihtsalt rakendama oma µControlleris (ma kasutasin Arduino Nano).

Samm: ehitage vooluring

Ehita vooluring
Ehita vooluring
Ehita vooluring
Ehita vooluring

Nagu ma eelnevalt kirjeldasin, loovad väljundid HIGH ja LOW külje. Puhta KÕRGE saamiseks µKontrolleri nööpnõeltele A ja B peame lisama tõmbetakistid. Ühine tihvt C läheb LOW külje jaoks otse maapinnale.

Sisemise lüliti (surunupp) kohta teabe saamiseks kasutame kahte ülejäänud tihvti. Üks neist läheb VCC -sse ja teine µKontrolleri andmeside. Puhta LOW saamiseks peame andmestikule lisama ka tõmbetakistuse.

Samuti on võimalik kasutada µController sisemisi tõmbe- ja tõmbetakistusi!

Minu puhul näeb pinout välja selline:

  • +3, 3V => +3, 3V (Arduino) (võimalik ka +5V)
  • GND => GND (Arduino)
  • A => Pin10
  • B =>

    Kinnita

    11

  • C => GND
  • SW =>

    Kinnita

    12

Samm: koodi kirjutamine

int pinA = 10; // sisemine lüliti A int pinB = 11; // sisemine lüliti B int pinSW = 12; // lüliti (vajutatud Encoder) int encoderPosCount = 0; // algab nullist, soovi korral muutke

int positionval;

bool lüliti; int mrotateLast; int mrotate;

tühine seadistus () {

int mrotateLast = digitalRead (pinA); Seriaalne algus (9600); viivitus (50); }

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

int readencoder () {

mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// nupp pöörleb if (digitalRead (pinB)! = mrotate) {// lüliti A muutus kõigepealt -> pöörlev päripäeva kodeerijaPosCount ++; Serial.println ("pööratud päripäeva"); } else {// vahetati kõigepealt lüliti B-> pöörlev vastupäeva kodeerijaPosCount--; Serial.println ("pööratud vastupäeva"); }

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

kui (digitalRead (pinSW)! = 0) {// lülitit vajutatakse

while (digitalRead (pinSW)! = 0) {} // lüliti on praegu vajutatud switchval = 1; } else {switchval = 0;} // lüliti on vajutamata tagasitulek switchval; }

Nüüd saate kodeerijat pöörata ja muutuja encoderPosCount loeb üles, kui pöörate päripäeva, ja loendab alla, kui keerate vastupäeva.

See ongi! Lihtsalt ja kasulik.

Muutke ja täitke julgelt koodi. Saate seda oma projektis rakendada.

Laadin üles ka LED -projekti, kus kasutasin kodeerijat oma valgusdioodide heleduse määramiseks.

Soovitan: