Apakah Perbezaan Antara Potentiometer Arduino dan Rotary Encoder

Apakah Perbezaan Antara Potentiometer Arduino Dan Rotary Encoder



Potensiometer dan pengekod berputar kedua-duanya digunakan untuk mengesan kedudukan putaran atau pengesanan. Ia adalah peranti elektromekanikal yang digunakan mempunyai pelbagai aplikasi dalam bidang elektronik. Mereka juga boleh dihubungkan dengan Arduino untuk membuat projek yang berbeza. Artikel ini adalah untuk menunjukkan perbezaan asas antara potensiometer dan pengekod berputar.

Apa itu Potensiometer

Potentiometer ialah rheostat, atau kita boleh memanggilnya perintang berubah-ubah. Nilai rintangan berbeza-beza mengikut putaran aci potensiometer. Potensiometer hanya boleh beralih kepada jarak yang ditetapkan. Terdapat kedua-dua potensiometer analog dan digital, tetapi ia hampir serupa. Potensiometer analog boleh disambungkan dengan mikropengawal pada Arduino, Raspberry Pi dan peranti lain. Potentiometer mempunyai tiga pin iaitu pin voltan input Vcc, Ground Pin GND, dan pin isyarat input. Pin isyarat menyediakan input kepada Arduino.









Apa itu Rotary Encoder

Pengekod putar merasakan kedudukan sudut tombol putar dan menghantar isyarat kepada mikropengawal atau mana-mana peranti lain yang disambungkan. Ia mempunyai cakera dengan kawasan sesentuh jarak sama rata yang disambungkan ke pin biasa. Pengekod putar juga mempunyai butang tekan terbina dalam atau suis putar yang memberikan isyarat ON dan OFF mengikut keperluan khusus.







Gambarajah Pinout dan Penerangan Pin Pengekod Rotary

Rajah yang diberikan di bawah menunjukkan pin pengekod berputar. Pin ini diterangkan seperti berikut:

Keluar B atau CLK



Pin ini memberikan output berapa kali tombol atau pengekod berputar telah diputar. Setiap kali apabila tombol diputar, CLK melengkapkan kitaran TINGGI dan RENDAH. Ia dikira sebagai satu putaran.

Keluar A atau DT

Ini ialah pin keluaran kedua pengekod berputar yang menentukan arah putaran. Ia ketinggalan 90° di belakang isyarat CLK. Oleh itu, jika keadaannya tidak sama dengan keadaan CLK maka arah putaran adalah mengikut arah jam, jika tidak, lawan arah jam.

Tukar

Pin suis digunakan untuk memeriksa sama ada butang tekan ditekan atau tidak.

Vcc

Pin ini disambungkan kepada bekalan 5V

GND

Pin ini disambungkan ke Ground

Perbezaan Antara Potentiometer dan Rotary Encoder

Spesifikasi Potensiometer Pengekod Rotary
Putaran Potentiometer boleh diputar hanya dalam satu arah, dan itu juga untuk tiga perempat bulatan. Rotary Encoder mampu berputar 360° secara berterusan dalam kedua-dua arah jam dan lawan jam.
Peranti Analog atau Digital Potentiometer kebanyakannya peranti input analog yang mengukur perubahan kedudukan melalui perubahan nilai perintang Pengekod berputar ialah peranti input digital yang mengesan kedudukan sudut dan memberikan nilai digital.

Bilangan Jawatan Input Potentiometer mempunyai bilangan kedudukan input yang tidak terhingga di mana nilai boleh diambil kerana ia adalah peranti analog Pengekod berputar mempunyai bilangan kedudukan input yang terhad.

Menyediakan Potensiometer dengan Arduino

Potentiometer lebih mudah untuk disediakan dengan Arduino daripada pengekod berputar. Potentiometer hanya mempunyai tiga pin VCC, GND, dan pin INPUT yang disambungkan ke Arduino. Antara muka potensiometer dengan Arduino ditunjukkan di bawah:

Memprogramkan potensiometer dalam Arduino adalah lebih mudah daripada pengekod berputar. Diberikan di bawah adalah contoh kod sintaks untuk kedua-duanya.

Kod Contoh untuk Potensiometer

periuk const int = A0; // Isytihar pin input
persediaan kosong ( ) {
   pinMod ( periuk, INPUT ) ; // Nilai persediaan diambil daripada potensiometer sebagai input
Bersiri.mulakan ( 9600 ) ;
}
gelung kosong ( ) {
int potValue = analogRead ( periuk ) ; // Baca nilai input yang diambil oleh potensiometer
peta ( potValue, 0 , 1023 , 0 , 255 ) ; // Menskalakan nilai input untuk dipadankan 8 -sedikit
Serial.println ( potValue ) ; // Mencetak nilai yang telah dimasukkan ke potensiometer
kelewatan ( 100 ) ;
}

Kod potensiometer adalah sangat mudah dan ringkas. Pin input analog Arduino hanya diisytiharkan untuk mengambil input daripada potensiometer, dan kemudian fungsi analogRead() dan map() digunakan untuk membaca dan memberikan nilai bacaan yang tepat daripada potensiometer.

Mengantaramuka Pengekod Rotary dengan Arduino

Pengekod berputar mempunyai lima pin. VCC dan GND pengekod berputar disambungkan kepada Arduino. Pin selebihnya CLK, DT, dan SW disambungkan ke pin input digital Arduino.

Kod Arduino untuk Pengekod Rotary

// Input Pengekod Putar
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int kaunter = 0 ;
int semasaCLKSstate;
int lastCLKSstate;
Arah arus rentetan = '' ;
lama tidak ditandatanganiButtonPressTime = 0 ;
persediaan kosong ( ) {
// Tetapkan pin pengekod sebagai input
    mod pin ( CLK_PIN, INPUT ) ;
    mod pin ( DT_PIN, INPUT ) ;
    mod pin ( SW_PIN, INPUT_PULLUP ) ;
// Sediakan Monitor Bersiri
Bersiri.mulakan ( 9600 ) ;
// Baca keadaan awal CLK
lastCLKSstate = digitalRead ( CLK_PIN ) ;
}
gelung kosong ( ) {
// Baca keadaan semasa CLK
semasaCLKSstate = digitalRead ( CLK_PIN ) ;
// Jika terakhir dan keadaan semasa CLK berbeza, kemudian nadi berlaku
// Bertindak balas kepada sahaja 1 perubahan negeri untuk mengelakkan kiraan berganda
jika ( semasaCLKSstate ! = lastCLKSstate && semasaCLKSstate == 1 ) {
// Jika keadaan DT berbeza daripada keadaan CLK, kemudian
// pengekod berputar melawan arah jam, jadi berkurangan
jika ( digitalRead ( DT_PIN ) ! = semasaCLKSstate ) {
kaunter--;
Arah semasa = 'CCW' ;
} lain {
// Pengekod berputar mengikut arah jam, jadi bertambah
kaunter++;
Arah semasa = 'CW' ;
}
Bersiri.cetak ( 'Arah Putaran:' ) ;
Bersiri.cetak ( Arah semasa ) ;
Bersiri.cetak ( ' | Nilai Balasan: ' ) ;
Serial.println ( kaunter ) ;
}
// Ingatlah terakhir negeri CLK
lastCLKSstate = semasaCLKSstate;
// Baca keadaan butang
int buttonState = digitalRead ( SW_PIN ) ;
// Jika kita mengesan isyarat LOW, butang ditekan
jika ( buttonState == RENDAH ) {
// Jika 50ms telah berlalu sejak terakhir Nadi RENDAH, ia bermakna bahawa
// butang telah ditekan, dilepaskan dan ditekan semula
jika ( millis ( ) - LastButtonPressTime > lima puluh ) {
Serial.println ( 'Butang Ditekan!' ) ;
}
// Ingatlah terakhir acara tekan butang masa
lastButtonPressTime = millis ( ) ;
}
// Letak dalam kelewatan sedikit ke membantu debounce bacaan
kelewatan ( 1 ) ;
}

Dalam kod yang diberikan di atas, keadaan pin CLK disemak dalam fungsi gelung(). Jika ia tidak sama dengan keadaan sebelumnya, ia menunjukkan bahawa tombol berputar telah berputar. Sekarang, untuk menyemak arah putaran tombol, keadaan CLK sekarang dibandingkan dengan keadaan DT. Jika kedua-dua keadaan adalah tidak sama, ia menunjukkan bahawa tombol telah berputar mengikut arah jam dan balas menambah nilainya untuk menunjukkan kedudukan tombol berputar. Dalam kes yang bertentangan, pengurangan balas.

Aplikasi

Potensiometer digunakan terutamanya di mana fungsi kawalan diperlukan. Ia digunakan dalam kawalan kelantangan, kawalan kecerahan LED. Sebaliknya, pengekod Rotary menawarkan pelbagai aplikasi. Ia digunakan dalam robotik, peralatan perubatan, automasi, dan permainan.

Kesimpulan

Potensiometer dan pengekod berputar adalah kedua-dua peranti yang amat berguna dalam bidang elektronik. Pengekod berputar maju berbanding dengan potensiometer, kerana ia boleh berputar secara berterusan hingga 360°. Begitu juga, mereka mempunyai lebih banyak aplikasi dalam elektronik moden, dan mereka sedikit lebih sukar untuk digunakan daripada potensiometer. .