Sisukord:

Pöörleva kodeerija õpetus Arduinoga: 6 sammu
Pöörleva kodeerija õpetus Arduinoga: 6 sammu

Video: Pöörleva kodeerija õpetus Arduinoga: 6 sammu

Video: Pöörleva kodeerija õpetus Arduinoga: 6 sammu
Video: LDmicro 21: seadistage C -režiim ja Arduino Mega (mikrokontrolleri programmeerimine LDmicro abil) 2024, Juuli
Anonim
Pöörleva kodeerija õpetus koos Arduinoga
Pöörleva kodeerija õpetus koos Arduinoga

Pöörlemiskooder on elektrooniline komponent, mis on võimeline pöörlemisel jälgima liikumist ja asendit. Pöördkooder kasutab optilisi andureid, mis võivad pöördkodeerija pöörlemisel genereerida impulsse. Pöörleva kodeerija kasutamist tavaliselt mehaanilise või robotliikumismonitorina saab kasutada ka ekraanil menüüvaliku tegemiseks. Pöörlemiskoodril on kaks väljundit, nii et see suudab eristada negatiivset (CW) ja positiivset (CCW) pöörlemist ning sellel on ka üks nupp.

Samm: pöörleva kodeerija impulssvoog

Pöörleva kodeerija impulssvoog
Pöörleva kodeerija impulssvoog

Järgmise pöörleva kodeerija poolt genereeritud impulsi vool on sarnane ülaltoodud pildiga.

2. samm: pöörleva kodeerija väljalülitamine

Pöörleva kodeerija pinout
Pöörleva kodeerija pinout

Selgitus:

  • GND GND
  • + + 5V
  • Pöörleva kodeerija SW -nupp vajutamisel
  • DT andmed
  • CLK andmed 2

Üks DT- või CLK -tihvtidest peab olema ühendatud Arduino Uno katkestusjalaga või mõlemad DT ja CLK on ühendatud katkestusnõelaga.

3. samm: skemaatiline

Skeem
Skeem
  • GND ja GND Arduino Uno
  • + à + 5V Arduino Uno
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

4. samm: kood

Kood
Kood

Järgmises õpetuses, mida kasutatakse katkestusena, on Arduino Uno PIN 2, samas kui PIN 3 kasutatakse ainult tavalise sisendina.

#defineeri kooder0PinA 2 #defineeri kooder0PinB 3 #defineeri kooder0Btn 4 int kodeerija0Pos = 0; void setup () {Serial.begin (9600); pinMode (kooder0PinA, INPUT_PULLUP); pinMode (kooder0PinB, INPUT_PULLUP); pinMode (kodeerija0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; void loop () {int btn = digitalRead (encoder0Btn); Serial.print (btn); Serial.print (""); Serial.print (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } kui (valRotary {

Serial.print ("CCW");

} lastValRotary = valRotary; Serial.println (""); viivitus (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } else {encoder0Pos--; } valRotary = kodeerija0Pos/2.5; }

Ülaltoodud visandi reas 10 kasutatakse Arduino Uno tihvti 2 katkestamist. Funktsioonis "doEncoder" arvutatakse pöörleva kodeerija järgi. Kui DT ja CLK (Arduino Uno pin katkestus) väärtus on sama, suurendatakse / lisatakse muutujat "encoder0Pos", lisaks sellele tingimusele vähendatakse muutujat "encoder0Pos".

5. samm: selgitus

ValRotary väärtus on jooksvate sammude arvu väärtus. ValRotary väärtus saadakse pöörleva anduri koodri lugemisväärtusest, mis on jagatud 2,5 -ga. Katse tulemusel saadakse väärtus 2,5, kuna üks pöörleva kodeerija samm võib ületada 1, seega jagage selle väärtusega 2,5 vastavalt sammule ja ka lugemisviivituse lisamisele.

Reas 19 - 25 on programm, mis määrab kindlaks, kas pöörlev pöördkooder CW või CCW. Ridade 19 - 25 seletus on siis, kui praeguse pöörleva kodeerija näidud on suuremad kui eelmised pöörlevad andmed, mis seejärel väljendati CW -na. Kui praegune näit on väiksem kui eelmine, siis on see märgitud CCW -na.

6. samm: väljund

Väljund
Väljund

1 = pöördnupu käivitusnupu väärtus, kui seda pole vajutatud

Soovitan: