Ano ang Pagkakaiba sa pagitan ng Arduino Potentiometer at Rotary Encoder

Ano Ang Pagkakaiba Sa Pagitan Ng Arduino Potentiometer At Rotary Encoder



Parehong ginagamit ang mga potentiometer at rotary encoder para makita ang pag-ikot o posisyon ng pakiramdam. Ang mga ito ay mga electromechanical device na ginagamit na may magkakaibang mga aplikasyon sa larangan ng electronics. Maaari din silang ma-interface sa Arduino para sa paggawa ng iba't ibang proyekto. Ang artikulong ito ay upang ipakita ang mga pangunahing pagkakaiba sa pagitan ng isang potentiometer at isang rotary encoder.

Ano ang isang Potentiometer

Ang potentiometer ay isang rheostat, o matatawag natin itong variable na risistor. Ang halaga ng paglaban ay nag-iiba ayon sa pag-ikot ng baras ng potentiometer. Ang mga potentiometer ay maaari lamang lumiko sa isang nakatakdang distansya. Mayroong parehong mga analog at digital potentiometer, ngunit halos magkapareho sila. Maaaring i-interface ang mga analog potentiometer sa mga microcontroller sa Arduino, Raspberry Pi, at iba pang device. Ang isang potentiometer ay nagtataglay ng tatlong pin na input voltage pin Vcc, Ground Pin GND, at ang input signal pin. Ang signal pin ay nagbibigay ng input sa Arduino.









Ano ang Rotary Encoder

Nararamdaman ng mga rotary encoder ang angular na posisyon ng rotary knob at nagpapadala ng signal sa microcontroller o anumang iba pang device kung saan sila nakakonekta. Mayroon itong disc na may pantay na espasyo sa mga contact area na konektado sa isang karaniwang pin. Ang mga rotary encoder ay mayroon ding built-in na push button o rotary switch na nagbibigay ng ON at OFF signal ayon sa mga partikular na kinakailangan.







Pinout Diagram at Pin Paglalarawan ng Rotary Encoder

Ang diagram na ibinigay sa ibaba ay nagpapakita ng mga pin ng rotary encoder. Ang mga pin na ito ay inilarawan bilang mga sumusunod:

Out B o CLK



Nagbibigay ang pin na ito ng output kung gaano karaming beses na umikot ang knob o rotary encoder. Sa bawat oras na kapag iniikot ang knob, nakumpleto ng CLK ang isang cycle ng HIGH at LOW. Ito ay binibilang bilang isang pag-ikot.

Out A o DT

Ito ang pangalawang output pin ng rotary encoder na tumutukoy sa direksyon ng pag-ikot. Nahuhuli ito ng 90° sa likod ng signal ng CLK. Samakatuwid, kung ang estado nito ay hindi katumbas ng estado ng CLK, ang direksyon ng pag-ikot ay clockwise, kung hindi, laban sa clockwise.

Lumipat

Ang switch pin ay ginagamit upang suriin kung ang push button ay pinindot o hindi.

Vcc

Ang pin na ito ay konektado sa isang 5V supply

GND

Ang pin na ito ay konektado sa Ground

Pagkakaiba sa pagitan ng Potentiometer at Rotary Encoder

Pagtutukoy Potensyomiter Rotary Encoder
Pag-ikot Ang potentiometer ay maaaring paikutin lamang sa isang direksyon, at iyon din para sa tatlong-ikaapat na bahagi ng isang bilog. Ang Rotary Encoder ay may kakayahang umiikot nang 360° nang tuluy-tuloy sa parehong clockwise at anticlockwise na direksyon.
Analog o Digital na Device Ang potentiometer ay kadalasang isang analog input device na sumusukat sa pagbabago sa posisyon sa pamamagitan ng pagbabago sa halaga ng isang risistor. Ang rotary encoder ay isang digital input device na nakadarama ng angular na posisyon at nagbibigay ng mga digital na halaga.

Bilang ng mga Posisyon ng Input Ang isang potentiometer ay may walang katapusang bilang ng mga posisyon ng pag-input kung saan maaaring kunin ang mga halaga dahil ito ay isang analog na aparato Ang mga rotary encoder ay may limitadong bilang ng mga posisyon sa pag-input.

Pag-set Up ng Potentiometer gamit ang Arduino

Ang potentiometer ay mas madaling i-set up gamit ang isang Arduino kaysa sa isang rotary encoder. Ang potentiometer ay mayroon lamang tatlong pin na VCC, GND, at isang INPUT pin na konektado sa Arduino. Ang interfacing ng potentiometer sa Arduino ay ipinapakita sa ibaba:

Ang pagprograma ng potentiometer sa Arduino ay mas madali kaysa sa rotary encoder. Ibinigay sa ibaba ang mga sample na syntax code para sa kanilang dalawa.

Sample Code para sa Potentiometer

const int pot = A0; // Ipahayag ang input pin
walang bisang setup ( ) {
   pinMode ( palayok, INPUT ) ; // Ang halaga ng pag-setup ay kinuha mula sa potentiometer bilang input
Serial.magsimula ( 9600 ) ;
}
walang laman na loop ( ) {
int potValue = analogRead ( palayok ) ; // Basahin ang halaga ng input na kinuha ng potentiometer
mapa ( potValue, 0 , 1023 , 0 , 255 ) ; // Pag-scale ng halaga ng input upang tumugma 8 -bit
Serial.println ( potValue ) ; // Nagpi-print ng value na na-input sa potentiometer
pagkaantala ( 100 ) ;
}

Ang potentiometer code ay napakadali at simple. Ang analog input pin ng Arduino ay simpleng idineklara na kumuha ng input mula sa potentiometer, at pagkatapos ay ang analogRead() at map() function ay ginagamit upang basahin at ibigay ang eksaktong halaga ng pagbabasa mula sa potentiometer.

Interfacing Rotary Encoder sa Arduino

Ang rotary encoder ay may limang pin. Ang VCC at GND ng rotary encoder ay konektado sa Arduino. Ang natitirang mga pin na CLK, DT, at SW ay konektado sa mga digital input pin ng Arduino.

Arduino Code para sa Rotary Encoder

// Mga Rotary Encoder Input
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int counter = 0 ;
int kasalukuyangCLKState;
int lastCLKSstate;
String kasalukuyang Direksyon = '' ;
matagal nang hindi pinirmahan ang hulingButtonPressTime = 0 ;
walang bisang setup ( ) {
// Itakda ang mga encoder pin bilang mga input
    pinMode ( CLK_PIN, INPUT ) ;
    pinMode ( DT_PIN, INPUT ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// I-setup ang Serial Monitor
Serial.magsimula ( 9600 ) ;
// Basahin ang unang estado ng CLK
lastCLKSstate = digitalRead ( CLK_PIN ) ;
}
walang laman na loop ( ) {
// Basahin ang kasalukuyang estado ng CLK
kasalukuyangCLKState = digitalRead ( CLK_PIN ) ;
// Kung huli at ang kasalukuyang estado ng CLK ay iba, pagkatapos isang pulso ang naganap
// React sa lang 1 pagbabago ng estado upang maiwasan ang dobleng bilang
kung ( kasalukuyangCLKSstate ! = hulingCLKSestado && kasalukuyangCLKSstate == 1 ) {
// Kung iba ang estado ng DT kaysa sa estado ng CLK, pagkatapos
// ang encoder ay umiikot sa counter-clockwise, kaya decrement
kung ( digitalRead ( DT_PIN ) ! = kasalukuyangCLKSstate ) {
kontra--;
kasalukuyang Direksyon = 'CCW' ;
} iba pa {
// Ang encoder ay umiikot sa clockwise, kaya dagdagan
counter++;
kasalukuyang Direksyon = 'CW' ;
}
Serial.print ( 'Direksyon ng Pag-ikot: ' ) ;
Serial.print ( kasalukuyang Direksyon ) ;
Serial.print ( ' | Counter Value: ' ) ;
Serial.println ( counter ) ;
}
// Tandaan ang huli estado ng CLK
hulingCLKState = kasalukuyangCLKState;
// Basahin ang estado ng pindutan
int buttonState = digitalRead ( SW_PIN ) ;
// Kung may nakita kaming LOW signal, pinindot ang button
kung ( buttonState == LOW ) {
// Kung 50ms na ang lumipas mula noong huli MABABANG pulso, nangangahulugan ito na ang
// ang pindutan ay pinindot, binitawan, at pinindot muli
kung ( millis ( ) - lastButtonPressTime > limampu ) {
Serial.println ( 'Pinindot ang Pindutan!' ) ;
}
// Tandaan ang huli kaganapan ng pagpindot sa pindutan oras
lastButtonPressTime = millis ( ) ;
}
// Ilagay sa isang bahagyang pagkaantala sa tulong i-debounce ang pagbabasa
pagkaantala ( 1 ) ;
}

Sa ibinigay na code sa itaas, ang estado ng CLK pin ay nasuri sa loop() function. Kung hindi ito katumbas ng dati nitong estado, ipinapakita nito na ang rotary knob ay umikot. Ngayon, upang suriin ang direksyon ng pag-ikot ng knob, ang kasalukuyang estado ng CLK ay inihambing sa estado ng DT. Kung ang parehong mga estado ay hindi pantay, ipinapakita nito na ang knob ay umikot nang pakanan at i-counter increments ang halaga nito upang ipakita ang posisyon ng rotary knob. Sa kabaligtaran ng kaso, counter decrements.

Mga aplikasyon

Ang mga potentiometer ay pangunahing ginagamit kung saan kinakailangan ang isang control function. Ginagamit ang mga ito sa kontrol ng dami, kontrol sa liwanag ng LED. Sa kabilang banda, nag-aalok ang mga Rotary encoder ng malawak na hanay ng mga application. Ginagamit ang mga ito sa robotics, medical equipment, automation, at gaming.

Konklusyon

Ang mga potentiometer at rotary encoder ay parehong partikular na kapaki-pakinabang na mga device sa larangan ng electronics. Ang mga rotary encoder ay advanced kumpara sa mga potentiometer, dahil maaari silang mag-rotate nang tuluy-tuloy sa 360°. Katulad nito, mayroon silang mas maraming application sa modernong electronics, at medyo mas mahirap gamitin ang mga ito kaysa sa mga potentiometer. .