Satura rādītājs:

Rotācijas kodētājs - saprotiet un izmantojiet to (Arduino/cits ontrolkontrolleris): 3 soļi
Rotācijas kodētājs - saprotiet un izmantojiet to (Arduino/cits ontrolkontrolleris): 3 soļi

Video: Rotācijas kodētājs - saprotiet un izmantojiet to (Arduino/cits ontrolkontrolleris): 3 soļi

Video: Rotācijas kodētājs - saprotiet un izmantojiet to (Arduino/cits ontrolkontrolleris): 3 soļi
Video: ЭОЛОПИЛ – КАК СКАЗАТЬ ЭОЛОПИЛ? #эолопил (EOLOPILE - HOW TO SAY EOLOPILE? #eolopile) 2024, Jūlijs
Anonim
Rotācijas kodētājs - izprast un izmantot to (Arduino/cits ontrolkontrolleris)
Rotācijas kodētājs - izprast un izmantot to (Arduino/cits ontrolkontrolleris)

Rotācijas kodētājs ir elektromehāniska ierīce, kas rotācijas kustību pārvērš digitālā vai analogā informācijā. Tas var griezties pulksteņrādītāja virzienā vai pretēji pulksteņrādītāja virzienam. Ir divu veidu rotējošie kodētāji: absolūtie un relatīvie (inkrementālie) kodētāji.

Lai gan absolūtais kodētājs izvada vērtību, kas ir proporcionāla pašreizējam vārpstas leņķim, inkrementālais kodētājs parāda vārpstas soli un tā virzienu. (Šajā gadījumā mums ir inkrementālais kodētājs)

Rotējošie kodētāji kļūst arvien populārāki, jo vienā elektriskajā modulī varat izmantot divas funkcijas: Vienkāršs slēdzis darbību apstiprināšanai un rotējošais kodētājs navigācijai, piem. izmantojot izvēlni.

Papildu rotējošais kodētājs ģenerē divus izejas signālus, kamēr tā vārpsta rotē. Atkarībā no virziena viens no signāliem ved otru. (Skatīt zemāk)

1. darbība: izvaddatu izpratne

Izpratnes datu izpratne
Izpratnes datu izpratne

Kā redzat, kad kodētāja vārpsta sāk griezties pulksteņrādītāja virzienā, izeja A vispirms nokrīt līdz LOW, un izeja B seko tai. Pretēji pulksteņrādītāja virzienam darbība pagriežas pretēji.

Tagad mums tas vienkārši jāievieš mūsu µController (es izmantoju Arduino Nano).

2. solis: izveidojiet ķēdi

Izveidojiet ķēdi
Izveidojiet ķēdi
Izveidojiet ķēdi
Izveidojiet ķēdi

Kā es aprakstīju iepriekš, izejas rada HIGH un LOW flangu. Lai iegūtu tīru HIGH pie µController datu tapas A un B, mums jāpievieno Pull-Up rezistori. Kopējā tapa C iet taisni uz zemes LOW flangam.

Lai iegūtu informāciju par iekšējo slēdzi (spiedpogu), mēs izmantosim pārējās divas tapas. Viens no tiem nonāk VCC, bet otrs - µController datu tapā. Mums ir arī jāpievieno nolaižamais rezistors datu tapai, lai iegūtu tīru LOW.

Ir iespējams izmantot arī jūsu µController iekšējos pacelšanas un nolaišanas rezistorus!

Manā gadījumā pinout izskatās šādi:

  • +3, 3V => +3, 3V (Arduino) (iespējams arī +5V)
  • GND => GND (Arduino)
  • A => Pin10
  • B =>

    Piespraude

    11

  • C => GND
  • SW =>

    Piespraude

    12

3. darbība: koda rakstīšana

int pinA = 10; // iekšējais slēdzis A int pinB = 11; // iekšējais slēdzis B int pinSW = 12; // slēdzis (nospiests kodētājs) int encoderPosCount = 0; // sākas ar nulli, mainiet, ja vēlaties

int positionval;

bool switchval; int mrotateLast; int mrotate;

void setup () {

int mrotateLast = digitalRead (pinA); Sērijas sākums (9600); kavēšanās (50); }

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

int readencoder () {

mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// poga griežas, ja (digitalRead (pinB)! = mrotate) {// vispirms mainīts slēdzis A -> rotējošs pulksteņrādītāja virzienā encoderPosCount ++; Serial.println ("pagriezts pulksteņrādītāja virzienā"); } cits {// vispirms mainīts slēdzis B-> rotējošs pretēji pulksteņrādītāja virzienam kodētājsPosCount--; Serial.println ("pagriezts pretēji pulksteņrādītāja virzienam"); }

Serial.print ("Kodētāja pozīcija:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; atgriezt kodētājuPosCount; } bool readswitch () {

ja (digitalRead (pinSW)! = 0) {// slēdzis ir nospiests

while (digitalRead (pinSW)! = 0) {} // slēdzis pašlaik ir nospiests switchval = 1; } else {switchval = 0;} // slēdzis nav nospiests atgriešanās slēdzis; }

Tagad jūs varat pagriezt kodētāju, un mainīgais kodētājsPosCount tiks skaitīts uz augšu, ja griezīsities pulksteņrādītāja virzienā, un skaitīs atpakaļ, ja pagriezīsiet pretēji pulksteņrādītāja virzienam.

Tieši tā! Vienkārši un noderīgi.

Jūtieties brīvi mainīt un izpildīt kodu. Jūs to varat īstenot savā projektā.

Es augšupielādēšu arī LED projektu, kurā es izmantoju kodētāju, lai iestatītu savu gaismas diožu spilgtumu.

Ieteicams: