Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
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
Seuraavan kiertokooderin tuottama pulssivirta on yllä olevan kuvan mukainen.
Vaihe 2: 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
- 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
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ö
1 = pyörivän käynnistyspainikkeen arvo, kun sitä ei ole painettu