Përmbajtje:

Kodifikues rrotullues - Kuptojeni dhe përdorni atë (Arduino/ΜController tjetër): 3 hapa
Kodifikues rrotullues - Kuptojeni dhe përdorni atë (Arduino/ΜController tjetër): 3 hapa

Video: Kodifikues rrotullues - Kuptojeni dhe përdorni atë (Arduino/ΜController tjetër): 3 hapa

Video: Kodifikues rrotullues - Kuptojeni dhe përdorni atë (Arduino/ΜController tjetër): 3 hapa
Video: 3 простых изобретения с двигателем постоянного тока 2024, Nëntor
Anonim
Kodifikues rrotullues - Kuptojeni dhe Përdorni (Arduino/ΜController tjetër)
Kodifikues rrotullues - Kuptojeni dhe Përdorni (Arduino/ΜController tjetër)

Një kodues rrotullues është një pajisje elektro-mekanike e cila shndërron lëvizjen rrotulluese në informacion dixhital ose analog. Mund të kthehet në drejtim të akrepave të orës ose në drejtim të kundërt. Ekzistojnë dy lloje të kodifikuesve rrotullues: Kodifikuesit absolut dhe relativ (rritës).

Ndërsa një kodues absolut nxjerr një vlerë proporcionale me këndin aktual të boshtit, një kodues shtesë nxjerr hapin e boshtit dhe drejtimin e tij. (Në këtë rast kemi një kodues shtesë)

Koduesit rrotullues po bëhen më të popullarizuar sepse jeni në gjendje të përdorni dy funksione në një modul elektrik: Një ndërprerës i thjeshtë për konfirmimin e operimeve dhe kodifikues rrotullues për të lundruar, p.sh. përmes një menuje.

Një kodues rrotullues shtesë gjeneron dy sinjale dalëse ndërsa boshti i tij po rrotullohet. Në varësi të drejtimit, njëri prej sinjaleve e çon tjetrin. (Shikoni më poshtë)

Hapi 1: Kuptimi i të dhënave të prodhimit

Kuptimi i të dhënave të daljes
Kuptimi i të dhënave të daljes

Siç mund ta shihni kur boshti i koduesit fillon të rrotullohet në drejtim të akrepave të orës, Dalja A bie në LOW së pari dhe Dalja B e ndjek atë. Në drejtim të kundërt të akrepave të orës, operacioni kthehet në të kundërt.

Tani na mbetet vetëm ta zbatojmë këtë në µController -in tonë (kam përdorur një Arduino Nano).

Hapi 2: Ndërtoni qarkun

Ndërtoni qarkun
Ndërtoni qarkun
Ndërtoni qarkun
Ndërtoni qarkun

Siç e kam përshkruar më parë daljet krijojnë një krah të Lartë dhe të UL. Për të marrë një HIGH të pastër në kunjat e të dhënave A dhe B të μController duhet të shtojmë rezistorë Pull-Up. Pin C i zakonshëm shkon drejtpërdrejt në tokë për krahun LOW.

Për të marrë informacion në lidhje me ndërprerësin e brendshëm (butonin shtypës) ne do të përdorim dy kunjat e tjerë. Njëri prej tyre shkon në VCC dhe tjetri në një Pin të dhënash të µController. Ne gjithashtu duhet të shtojmë një Rezistor Tërheqës në pinin e të dhënave për të marrë një LOW të pastër.

Alsoshtë gjithashtu e mundur të përdorni rezistorë të brendshëm Pull-Up dhe Pull-Down të µC Controller tuaj!

Në rastin tim pinout duket si:

  • +3, 3V => +3, 3V (Arduino) (gjithashtu +5V e mundur)
  • GND => GND (Arduino)
  • A => Pin10
  • B =>

    Gjilpere

    11

  • C => GND
  • SW =>

    Gjilpere

    12

Hapi 3: Shkrimi i Kodit

int pinA = 10; // ndërprerës i brendshëm A int pinB = 11; // ndërprerës i brendshëm B int pinSW = 12; // kaloni (Kodifikuesi i shtypur) int encoderPosCount = 0; // fillon me zero, ndryshoni nëse dëshironi

int pozicionale;

bool switchval; int mrotateMë fundit; int mrotate;

void setup () {

int mrotateLast = digitalRead (pinA); Serial.filloj (9600); vonesë (50); }

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

int readencoder () {

mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// çelësi po rrotullohet nëse (digitalRead (pinB)! = mrotate) {// switch A ndryshoi së pari -> rrotullohet kodifikuesi në drejtim të akrepave të orësPosCount ++; Serial.println ("rrotullohet në drejtim të akrepave të orës"); } else {// kaloni B ndryshoi së pari-> rrotullohet koduesi kundër akrepave të orës encoderPosCount--; Serial.println ("rrotullohet në drejtim të kundërt të akrepave të orës"); }

Serial.print ("Pozicioni i koduesit:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; kodifikuesi i kthimitPosCount; } bool readwitch () {

nëse (digitalRead (pinSW)! = 0) {// është shtypur çelësi

ndërsa (digitalRead (pinSW)! = 0) {} // kaloni aktualisht është shtypur switchval = 1; } else {switchval = 0;} // switch është switchval i pakapshëm i kthimit; }

Tani mund ta ktheni koduesin dhe variabla encoderPosCount do të numërohet nëse rrotulloheni në drejtim të akrepave të orës dhe numëroni mbrapsht nëse rrotulloheni në drejtim të kundërt.

Kjo eshte! Thjesht dhe e dobishme.

Ndjehuni të lirë të ndryshoni dhe të kryeni kodin. Mund ta zbatoni në projektin tuaj.

Unë gjithashtu do të ngarkoj një projekt LED ku kam përdorur koduesin për të vendosur shkëlqimin e LED -ve të mia.

Recommended: