Sadržaj:

Rotacijski davač - Shvatite i koristite ga (Arduino/drugi Μkontroler): 3 koraka
Rotacijski davač - Shvatite i koristite ga (Arduino/drugi Μkontroler): 3 koraka

Video: Rotacijski davač - Shvatite i koristite ga (Arduino/drugi Μkontroler): 3 koraka

Video: Rotacijski davač - Shvatite i koristite ga (Arduino/drugi Μkontroler): 3 koraka
Video: БЕСПЛАТНАЯ АНГЛИЙСКАЯ ВЕРСИЯ FLPROG 2024, Srpanj
Anonim
Rotacijski davač - razumjeti i koristiti ga (Arduino/drugi Μkontroler)
Rotacijski davač - razumjeti i koristiti ga (Arduino/drugi Μkontroler)

Rotacijski davač je elektromehanički uređaj koji pretvara rotacijsko gibanje u digitalne ili analogne informacije. Može se okretati u smjeru kazaljke na satu ili u suprotnom smjeru. Postoje dvije vrste rotacijskih davača: apsolutni i relativni (inkrementalni) davači.

Dok apsolutni davač daje vrijednost proporcionalnu trenutnom kutu osovine, inkrementalni davač daje korak vratila i njegov smjer. (U ovom slučaju imamo inkrementalni davač)

Rotacijski davači postaju sve popularniji jer možete koristiti dvije funkcije u jednom električnom modulu: Jednostavni prekidač za potvrdu rada i okretni davač za navigaciju, npr. kroz jelovnik.

Inkrementalni rotacijski davač generira dva izlazna signala dok mu se vratilo okreće. Ovisno o smjeru, jedan od signala vodi drugi. (Pogledaj ispod)

Korak 1: Razumijevanje izlaznih podataka

Razumijevanje izlaznih podataka
Razumijevanje izlaznih podataka

Kao što vidite kada se vratilo davača počne okretati u smjeru kazaljke na satu, izlaz A prvo pada na LOW, a izlaz B slijedi ga. U smjeru suprotnom od kazaljke na satu, radnja se okreće suprotno.

Sada samo moramo to implementirati na naš µController (koristio sam Arduino Nano).

Korak 2: Izgradite krug

Izgradite krug
Izgradite krug
Izgradite krug
Izgradite krug

Kao što sam već opisao, izlazi stvaraju HIGH i LOW bok. Da bismo postigli čistu HIGH vrijednost na podatkovnom pinu A i B µKontrolera, moramo dodati otpornike za povlačenje. Uobičajeni pin C ide ravno na tlo za LOW bok.

Za dobivanje informacija o unutarnjem prekidaču (tipkalo) upotrijebit ćemo druga dva pina. Jedan od njih ide na VCC, a drugi na podatkovni pin µControlera. Moramo dodati i pull-down otpornik na podatkovni pin kako bismo dobili čisti LOW.

Također je moguće koristiti unutarnje pull-up i pull-down otpornike vašeg µControlera!

U mom slučaju isječak izgleda ovako:

  • +3, 3V => +3, 3V (Arduino) (također moguće +5V)
  • GND => GND (Arduino)
  • A => Pin10
  • B =>

    Pribadača

    11

  • C => GND
  • SW =>

    Pribadača

    12

Korak 3: Pisanje koda

int pinA = 10; // unutarnji prekidač A int pinB = 11; // unutarnji prekidač B int pinSW = 12; // prekidač (pritisnuti koder) int encoderPosCount = 0; // počinje od nule, promijenite ako želite

int positionval;

bool switchval; int mrotateLast; int mrotirati;

void setup () {

int mrotateLast = digitalRead (pinA); Serial.begin (9600); kašnjenje (50); }

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

int readencoder () {

mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// gumb se rotira if (digitalRead (pinB)! = mrotate) {// prekidač A se prvo promijenio -> rotirajući enkoder u smjeru kazaljke na satuPosCount ++; Serial.println ("rotirano u smjeru kazaljke na satu"); } else {// prekidač B se prvo promijenio-> rotirajući koder u smjeru kazaljke na satuPosCount--; Serial.println ("rotirano u smjeru suprotnom od kazaljke na satu"); }

Serial.print ("Položaj kodera:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; povratni enkoderPosCount; } bool readwitch () {

if (digitalRead (pinSW)! = 0) {// prekidač je pritisnut

while (digitalRead (pinSW)! = 0) {} // prekidač je trenutno pritisnut switchval = 1; } else {switchval = 0;} // prekidač nije pritisnut return switchval; }

Sada možete okrenuti davač i varijabla enkoderPosCount će odbrojavati ako rotirate u smjeru kazaljke na satu i odbrojavati ako rotirate u smjeru suprotnom od kazaljke na satu.

To je to! Jednostavno i korisno.

Slobodno promijenite i izvedite kod. Možete ga implementirati u svoj projekt.

Također ću prenijeti LED projekt u kojem sam pomoću kodera postavio svjetlinu LED dioda.

Preporučeni: