Kuo skiriasi Arduino potenciometras ir rotacinis kodavimo įrenginys?

Kuo Skiriasi Arduino Potenciometras Ir Rotacinis Kodavimo Irenginys



Potenciometrai ir sukamieji kodavimo įrenginiai naudojami sukimuisi ar padėčiai nustatyti. Tai elektromechaniniai įtaisai, naudojami įvairiems tikslams elektronikos srityje. Jie taip pat gali būti susieti su „Arduino“, kad būtų galima kurti įvairius projektus. Šis straipsnis skirtas parodyti esminius potenciometro ir rotacinio kodavimo skirtumus.

Kas yra potenciometras

Potenciometras yra reostatas arba galime jį vadinti kintamu rezistoriumi. Atsparumo vertė kinta priklausomai nuo potenciometro veleno sukimosi. Potenciometrai gali suktis tik iki nustatyto atstumo. Yra ir analoginių, ir skaitmeninių potenciometrų, tačiau jie yra beveik panašūs. Analoginiai potenciometrai gali būti sujungti su Arduino, Raspberry Pi ir kitų įrenginių mikrovaldikliais. Potenciometras turi tris kaiščius, kurie yra įvesties įtampos kaištis Vcc, Ground Pin GND ir įvesties signalo kaištis. Signalo kaištis suteikia įvestį į Arduino.









Kas yra Rotary Encoder

Sukamieji kodavimo įrenginiai nustato sukamosios rankenėlės kampinę padėtį ir siunčia signalą į mikrovaldiklį ar bet kurį kitą įrenginį, prie kurio jie yra prijungti. Jame yra diskas su tolygiai išdėstytomis kontaktinėmis sritimis, kurios yra prijungtos prie bendro kaiščio. Sukamieji kodavimo įrenginiai taip pat turi įmontuotą mygtuką arba sukamąjį jungiklį, kuris pagal specifinius reikalavimus duoda ĮJUNGIMO ir IŠJUNGIMO signalus.







Rotary Encoder Pinout diagrama ir kaiščio aprašymas

Žemiau pateiktoje diagramoje pavaizduoti rotacinio kodavimo prietaiso kaiščiai. Šie kaiščiai apibūdinami taip:

Iš B arba CLK



Šis kaištis parodo, kiek kartų rankenėlė arba sukamasis koduotuvas pasisuko. Kiekvieną kartą, kai pasukama rankenėlė, CLK užbaigia HIGH ir LOW ciklą. Jis skaičiuojamas kaip vienas apsisukimas.

Iš A arba DT

Tai antrasis rotacinio kodavimo įrenginio išvesties kaištis, kuris nustato sukimosi kryptį. Jis atsilieka 90° nuo CLK signalo. Todėl, jei jo būsena nėra lygi CLK būsenai, tada sukimosi kryptis yra pagal laikrodžio rodyklę, kitu atveju – prieš laikrodžio rodyklę.

Perjungti

Jungiklio kaištis naudojamas patikrinti, ar mygtukas paspaustas, ar ne.

Vcc

Šis kaištis yra prijungtas prie 5 V maitinimo šaltinio

GND

Šis kaištis yra prijungtas prie žemės

Skirtumas tarp potenciometro ir rotacinio kodavimo

Specifikacija Potenciometras Rotary Encoder
Rotacija Potenciometrą galima pasukti tik viena kryptimi, taip pat tris ketvirtadalius apskritimo. Rotary Encoder gali nuolat suktis 360° tiek pagal laikrodžio rodyklę, tiek prieš laikrodžio rodyklę.
Analoginis arba skaitmeninis įrenginys Potenciometras dažniausiai yra analoginis įvesties įrenginys, matuojantis padėties pasikeitimą pasikeitus rezistoriaus vertei Sukamasis kodavimo įrenginys yra skaitmeninis įvesties įrenginys, kuris nustato kampinę padėtį ir pateikia skaitmenines reikšmes.

Įvesties pozicijų skaičius Potenciometras turi begalinį skaičių įvesties pozicijų, kuriose galima paimti reikšmes, nes tai yra analoginis įrenginys Sukamieji kodavimo įrenginiai turi ribotą įvesties padėčių skaičių.

Potenciometro nustatymas naudojant Arduino

Potenciometrą lengviau nustatyti naudojant „Arduino“ nei sukamuoju koduotuvu. Potenciometras turi tik tris kaiščius VCC, GND ir INPUT kaištį, kuris yra prijungtas prie Arduino. Potenciometro sąsaja su Arduino parodyta žemiau:

„Arduino“ potenciometro programavimas yra lengvesnis nei rotacinio kodavimo įrenginio. Toliau pateikiami abiejų jų sintaksės kodų pavyzdžiai.

Potenciometro kodo pavyzdys

const int pot = A0; // Deklaruoti įvesties kaištį
tuščias nustatymas ( ) {
   pinMode ( puodas, ĮVESTIS ) ; // Sąrankos vertė paimta iš potenciometro kaip įvestis
Serialas.begin ( 9600 ) ;
}
tuščia kilpa ( ) {
int potValue = analogRead ( puodą ) ; // Nuskaitykite potenciometro įvesties vertę
žemėlapis ( potValue, 0 , 1023 , 0 , 255 ) ; // Įvesties vertės mastelis, kad ji atitiktų 8 - bitai
Serial.println ( potValue ) ; // Spausdina vertę, kuri buvo įvesta į potenciometrą
delsimas ( 100 ) ;
}

Potenciometro kodas yra labai lengvas ir paprastas. Paprasčiausiai deklaruojama, kad analoginis Arduino įvesties kaištis ima įvestį iš potenciometro, o tada funkcijos analogRead () ir map () naudojamos nuskaityti ir pateikti tikslią potenciometro skaitymo vertę.

Rotary Encoder sąsaja su Arduino

Rotacinis kodavimo įrenginys turi penkis kaiščius. Sukamojo kodavimo VCC ir GND yra prijungti prie Arduino. Likę kaiščiai CLK, DT ir SW yra prijungti prie skaitmeninių Arduino įvesties kaiščių.

„Arduino“ kodas, skirtas rotaciniam kodavimo įrenginiui

// Rotary Encoder įėjimai
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int skaitiklis = 0 ;
int currentCLKSstate;
int lastCLKState;
String currentDirection = '' ;
nepasirašytas long lastButtonPressTime = 0 ;
tuščias nustatymas ( ) {
// Nustatykite kodavimo kaiščius kaip įėjimai
    pinMode ( CLK_PIN, INPUT ) ;
    pinMode ( DT_PIN, INPUT ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Nustatykite serijinį monitorių
Serialas.begin ( 9600 ) ;
// Perskaitykite pradinę CLK būseną
lastCLKState = digitalRead ( CLK_PIN ) ;
}
tuščia kilpa ( ) {
// Skaitykite dabartinę CLK būseną
currentCLKState = digitalRead ( CLK_PIN ) ;
// Jeigu paskutinis ir dabartinė CLK būsena skiriasi, tada atsirado pulsas
// Reaguoti tik į 1 būsenos keitimas, kad būtų išvengta dvigubo skaičiavimo
jeigu ( dabartinėCLKState ! = paskutinėCLKState && dabartinėCLKState == 1 ) {
// Jei DT būsena skiriasi nuo CLK būsenos, tada
// kodavimo įrenginys sukasi prieš laikrodžio rodyklę, todėl sumažinkite
jeigu ( skaitmeninis skaitymas ( DT_PIN ) ! = dabartinėCLKState ) {
counter--;
currentDirection = 'CCW' ;
} Kitas {
// Enkoderis sukasi pagal laikrodžio rodyklę, todėl didinkite
skaitiklis++;
currentDirection = 'CW' ;
}
Serial.print ( 'Sukimosi kryptis:' ) ;
Serial.print ( currentDirection ) ;
Serial.print ( ' | Priešinė vertė: ' ) ;
Serial.println ( skaitiklis ) ;
}
// Prisiminkite, paskutinis CLK būsena
lastCLKState = dabartinėCLKState;
// Perskaitykite mygtuko būseną
int buttonState = skaitmeninis skaitymas ( SW_PIN ) ;
// Jei aptinkame LOW signalą, paspaudžiamas mygtukas
jeigu ( buttonState == LOW ) {
// Jei praėjo 50 ms nuo paskutinis LOW pulsas, tai reiškia, kad
// mygtukas buvo paspaustas, atleistas ir dar kartą paspaustas
jeigu ( mln ( ) - LastButtonPressTime > penkiasdešimt ) {
Serial.println ( 'Mygtukas paspaustas!' ) ;
}
// Prisiminkite, paskutinis mygtuko paspaudimo įvykis laikas
lastButtonPressTime = mil ( ) ;
}
// Įdėkite in nedidelis vėlavimas padėti atmesti skaitymą
delsimas ( 1 ) ;
}

Aukščiau pateiktame kode CLK kaiščio būsena tikrinama naudojant loop() funkciją. Jei jis nėra lygus ankstesnei būsenai, tai rodo, kad sukamoji rankenėlė pasisuko. Dabar, norint patikrinti rankenėlės sukimosi kryptį, dabartinė CLK būsena lyginama su DT būsena. Jei abi būsenos yra nevienodos, tai rodo, kad rankenėlė sukasi pagal laikrodžio rodyklę, o priešpriešinis dydis padidina jos reikšmę, kad parodytų sukamosios rankenėlės padėtį. Priešingu atveju mažėja priešprieša.

Programos

Potenciometrai dažniausiai naudojami ten, kur reikalinga valdymo funkcija. Jie naudojami garsumo valdymui, LED ryškumo valdymui. Kita vertus, sukamieji kodavimo įrenginiai siūlo platų pritaikymo spektrą. Jie naudojami robotikoje, medicinos įrangoje, automatikoje ir žaidimuose.

Išvada

Potenciometrai ir rotaciniai kodavimo įrenginiai yra ypač naudingi elektronikos prietaisai. Sukamieji kodavimo įrenginiai yra pažangūs, palyginti su potenciometrais, nes jie gali nuolat suktis iki 360°. Panašiai jie turi daugiau pritaikymų šiuolaikinėje elektronikoje ir yra šiek tiek sunkiau naudojami nei potenciometrai .