Apa Perbedaan Antara Potensiometer Arduino dan Rotary Encoder

Apa Perbedaan Antara Potensiometer Arduino Dan Rotary Encoder



Potensiometer dan enkoder putar keduanya digunakan untuk mendeteksi rotasi atau merasakan posisi. Mereka adalah perangkat elektromekanis yang digunakan memiliki beragam aplikasi di bidang elektronik. Mereka juga dapat dihubungkan dengan Arduino untuk membuat proyek yang berbeda. Artikel ini adalah untuk menunjukkan perbedaan mendasar antara potensiometer dan rotary encoder.

Apa itu Potensiometer

Potensiometer adalah rheostat, atau kita dapat menyebutnya resistor variabel. Nilai resistansi bervariasi sesuai dengan putaran poros potensiometer. Potensiometer hanya dapat berputar ke jarak yang ditentukan. Ada potensiometer analog dan digital, tetapi keduanya hampir serupa. Potensiometer analog dapat dihubungkan dengan mikrokontroler di Arduino, Raspberry Pi, dan perangkat lainnya. Potensiometer memiliki tiga pin yaitu pin tegangan input Vcc, Pin Ground GND, dan pin sinyal input. Pin sinyal memberikan input ke Arduino.









Apa itu Rotary Encoder

Encoder putar merasakan posisi sudut kenop putar dan mengirim sinyal ke mikrokontroler atau perangkat lain yang terhubung dengannya. Ini memiliki disk dengan area kontak dengan jarak yang sama yang terhubung ke pin umum. Encoder putar juga memiliki tombol tekan atau sakelar putar bawaan yang memberikan sinyal HIDUP dan MATI sesuai dengan persyaratan khusus.







Diagram Pinout dan Deskripsi Pin dari Rotary Encoder

Diagram yang diberikan di bawah ini menunjukkan pin dari rotary encoder. Pin ini dijelaskan sebagai berikut:

Keluar B atau CLK



Pin ini memberikan output berapa kali kenop atau rotary encoder telah diputar. Setiap kali kenop diputar, CLK melengkapi siklus TINGGI dan RENDAH. Itu dihitung sebagai satu putaran.

Keluar A atau DT

Ini adalah pin keluaran kedua dari rotary encoder yang menentukan arah putaran. Tertinggal 90° di belakang sinyal CLK. Oleh karena itu, jika keadaannya tidak sama dengan keadaan CLK maka arah putarannya searah jarum jam, sebaliknya berlawanan arah jarum jam.

Mengalihkan

Pin sakelar digunakan untuk memeriksa apakah tombol tekan ditekan atau tidak.

Vcc

Pin ini terhubung ke suplai 5V

GND

Pin ini terhubung ke Ground

Perbedaan Antara Potensiometer dan Rotary Encoder

Spesifikasi Potensiometer Encoder Putar
Rotasi Potensiometer hanya dapat diputar dalam satu arah, dan itu juga untuk tiga perempat lingkaran. Rotary Encoder mampu berputar 360° terus menerus baik searah jarum jam maupun berlawanan arah jarum jam.
Perangkat Analog atau Digital Potensiometer sebagian besar merupakan perangkat input analog yang mengukur perubahan posisi melalui perubahan nilai resistor Rotary encoder adalah perangkat input digital yang merasakan posisi sudut dan memberikan nilai digital.

Jumlah Posisi Input Sebuah potensiometer memiliki jumlah posisi input yang tak terhingga di mana nilai dapat diambil karena merupakan perangkat analog Rotary encoders memiliki jumlah posisi input yang terbatas.

Menyiapkan Potensiometer dengan Arduino

Potensiometer lebih mudah diatur dengan Arduino daripada rotary encoder. Potensiometer hanya memiliki tiga pin VCC, GND, dan satu pin INPUT yang terhubung ke Arduino. Antarmuka potensiometer dengan Arduino ditunjukkan di bawah ini:

Memprogram potensiometer di Arduino lebih mudah daripada rotary encoder. Diberikan di bawah ini adalah contoh kode sintaks untuk keduanya.

Kode Contoh untuk Potensiometer

const int pot = A0; // Mendeklarasikan pin masukan
pengaturan batal ( ) {
   pinMode ( panci, MASUKAN ) ; // Nilai penyetelan diambil dari potensiometer sebagai memasukkan
Serial.mulai ( 9600 ) ;
}
lingkaran kosong ( ) {
int potValue = analogRead ( pot ) ; // Baca nilai input yang diambil oleh potensiometer
peta ( nilai pot, 0 , 1023 , 0 , 255 ) ; // Menskalakan nilai input agar sesuai 8 -sedikit
Serial.println ( potValue ) ; // Mencetak nilai yang dimasukkan ke potensiometer
menunda ( 100 ) ;
}

Kode potensiometer sangat mudah dan sederhana. Pin input analog Arduino hanya dideklarasikan untuk mengambil input dari potensiometer, dan kemudian fungsi analogRead() dan map() digunakan untuk membaca dan memberikan nilai pembacaan yang tepat dari potensiometer.

Menghubungkan Rotary Encoder dengan Arduino

Rotary encoder memiliki lima pin. VCC dan GND dari rotary encoder terhubung ke Arduino. Pin CLK, DT, dan SW yang tersisa terhubung ke pin input digital Arduino.

Kode Arduino untuk Rotary Encoder

// Input Encoder Putar
#menentukan CLK_PIN 2
#menentukan DT_PIN 3
#menentukan SW_PIN 4
int penghitung = 0 ;
intCLKState saat ini;
int lastCLKSState;
StringArahArus = '' ;
unsigned long lastButtonPressTime = 0 ;
pengaturan batal ( ) {
// Atur pin enkoder sebagai input
    pinMode ( CLK_PIN, INPUT ) ;
    pinMode ( DT_PIN, INPUT ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Atur Monitor Serial
Serial.mulai ( 9600 ) ;
// Baca status awal CLK
lastCLKState = digitalRead ( CLK_PIN ) ;
}
lingkaran kosong ( ) {
// Baca status CLK saat ini
currentCLKState = digitalRead ( CLK_PIN ) ;
// Jika terakhir dan kondisi CLK saat ini berbeda, Kemudian terjadi pulsa
// Bereaksi hanya 1 perubahan status untuk menghindari penghitungan ganda
jika ( CLKState saat ini ! = lastCLKSState && CLKState saat ini == 1 ) {
// Jika status DT berbeda dengan status CLK, Kemudian
// encoder berputar berlawanan arah jarum jam, jadi kurangi
jika ( digitalRead ( DT_PIN ) ! = StatusCLKS saat ini ) {
menangkal--;
Arah arus = 'CCW' ;
} kalau tidak {
// Encoder berputar searah jarum jam, jadi bertambah
penghitung++;
Arah arus = 'CW' ;
}
Serial.cetak ( 'Arah Rotasi:' ) ;
Serial.cetak ( CurrentDirection ) ;
Serial.cetak ( ' | Nilai Penghitung: ' ) ;
Serial.println ( menangkal ) ;
}
// Ingat terakhir negara bagian CLK
lastCLKState = StatusCLKSterakhir;
// Baca status tombol
int buttonState = digitalRead ( SW_PIN ) ;
// Jika kami mendeteksi sinyal LOW, tombol ditekan
jika ( buttonState == RENDAH ) {
// Jika 50ms telah berlalu sejak terakhir Denyut nadi RENDAH, artinya
// tombol telah ditekan, dilepaskan, dan ditekan lagi
jika ( mili ( ) - Waktu Tekan Tombol Terakhir > lima puluh ) {
Serial.println ( 'Tombol Ditekan!' ) ;
}
// Ingat terakhir acara tekan tombol waktu
lastButtonPressTime = mili ( ) ;
}
// Meletakkan di dalam sedikit penundaan untuk membantu menghilangkan bacaan
menunda ( 1 ) ;
}

Dalam kode yang diberikan di atas, status pin CLK diperiksa dalam fungsi loop(). Jika tidak sama dengan keadaan sebelumnya, ini menunjukkan bahwa kenop putar telah berputar. Sekarang, untuk memeriksa arah putaran kenop, keadaan CLK saat ini dibandingkan dengan keadaan DT. Jika kedua keadaan tidak sama, ini menunjukkan bahwa kenop telah berputar searah jarum jam dan berlawanan dengan kenaikan nilainya untuk menunjukkan posisi kenop putar. Dalam kasus sebaliknya, counter decrements.

Aplikasi

Potensiometer terutama digunakan di mana fungsi kontrol diperlukan. Mereka digunakan dalam kontrol volume, kontrol kecerahan LED. Di sisi lain, pembuat enkode Rotary menawarkan berbagai macam aplikasi. Mereka digunakan dalam robotika, peralatan medis, otomatisasi, dan game.

Kesimpulan

Potensiometer dan rotary encoders keduanya merupakan perangkat yang sangat berguna di bidang elektronik. Rotary encoders lebih maju dibandingkan dengan potensiometer, karena dapat berputar terus menerus hingga 360°. Demikian pula, mereka memiliki lebih banyak aplikasi dalam elektronik modern, dan mereka sedikit lebih sulit digunakan daripada potensiometer .