Sisällysluettelo:

Rotary Encoderin opetusohjelma Arduinolla: 6 vaihetta
Rotary Encoderin opetusohjelma Arduinolla: 6 vaihetta

Video: Rotary Encoderin opetusohjelma Arduinolla: 6 vaihetta

Video: Rotary Encoderin opetusohjelma Arduinolla: 6 vaihetta
Video: LDmicro 19: Навигация по меню поворотного энкодера (программирование лестничной схемы ПЛК микроконтроллера с помощью LDmicro) 2024, Heinäkuu
Anonim
Opetusohjelma Rotary Encoder Arduinolla
Opetusohjelma Rotary Encoder Arduinolla

Pyörivä anturi on elektroninen komponentti, joka pystyy seuraamaan liikettä ja asentoa pyöriessä. Pyörivä anturi käyttää optisia antureita, jotka voivat tuottaa pulsseja pyörivän anturin pyöriessä. Kiertokooderin käyttöä tavallisesti mekaanisena tai robotti -liikkeenvalvontana voidaan käyttää myös näytön valikon valintaan. Pyörivässä anturissa on kaksi lähtöä, jotta se voi erottaa negatiivisen (CW) ja positiivisen (CCW) pyörimisen, ja siinä on myös yksi painike.

Vaihe 1: Pyörivän anturin pulssivirta

Pyörivän enkooderin pulssivirta
Pyörivän enkooderin pulssivirta

Seuraavan kiertokooderin tuottama pulssivirta on yllä olevan kuvan mukainen.

Vaihe 2: Kiertokooderin kiinnitys

Kiertokooderin kiinnitys
Kiertokooderin kiinnitys

Selitys:

  • GND GND
  • + + 5V
  • Pyörivän anturin SW -painike, kun sitä painetaan
  • DT -tiedot
  • CLK -tiedot 2

Yksi DT- tai CLK -nastoista on liitettävä Arduino Unon keskeytysjalkaan, tai molemmat DT- ja CLK -liittimet on kytketty keskeytystappiin.

Vaihe 3: Kaavio

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

Vaihe 4: Koodi

Koodi
Koodi

Seuraavassa opetusohjelmassa, jota käytetään keskeytyksenä, on Arduino Unon PIN 2, kun taas PIN 3: ta käytetään vain tavallisena syöttönä.

#define encoder0PinA 2 #define encoder0PinB 3 #define encoder0Btn 4 int encoder0Pos = 0; void setup () {Serial.begin (9600); pinMode (kooderi0PinA, INPUT_PULLUP); pinMode (kooderi0PinB, INPUT_PULLUP); pinMode (kooderi0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; void loop () {int btn = digitalRead (encoder0Btn); Sarjanjälki (btn); Serial.print (""); Serial.print (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } jos (valRotary {

Serial.print ("CCW");

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

Yllä olevan luonnoksen rivillä 10 käytetään Arduino Unon nastan 2 keskeyttämistä. Toiminnossa "doEncoder" lasketaan pyörivä anturi. Jos DT: n ja CLK: n (Arduino Unon pin -keskeytys) arvo on sama, "encoder0Pos" -muuttujaa lisätään / lisätään, tämän ehdon lisäksi "encoder0Pos" -muuttujaa pienennetään.

Vaihe 5: Selitys

ValRotary -arvo on käynnissä olevien vaiheiden määrän arvo. ValRotary -arvo saadaan pyörivän anturianturin lukema jaettuna 2,5. Testistä saadaan arvo 2,5, koska yksi pyörivän anturin vaihe voi ylittää 1, joten jaa se arvolla 2,5 arvolla vaiheen ja myös lukuviiveen mukaan.

Linjalla 19 - 25 on ohjelma, joka määrittää, onko pyörivä pyörivä anturi CW vai CCW. Rivien 19 - 25 selitys on silloin, kun pyörivän anturin nykyinen lukema on suurempi kuin edellinen pyörivä data, joka ilmaistiin sitten CW: nä. Jos nykyinen lukema on pienempi kuin edellinen lukema, se ilmoitetaan CCW: nä.

Vaihe 6: Lähtö

Lähtö
Lähtö

1 = pyörivän käynnistyspainikkeen arvo, kun sitä ei ole painettu

Suositeltava: