Potensiometer dan enkoder putar terlihat hampir identik pada pandangan pertama, tetapi cara kerjanya berbeda. Temukan cara menggunakan keduanya dengan Arduino.

Di antara komponen kontrol pengguna elektronik, kenop putar menonjol sebagai salah satu yang paling memuaskan untuk digunakan. Mereka dapat melengkapi layar sentuh dan perangkat input lainnya, serta bekerja dengan baik dengan tombol dan sakelar. Tapi bagaimana Anda bisa menambahkan kenop ke proyek Arduino DIY Anda sendiri?

Anda memiliki dua opsi utama: potensiometer atau enkoder putar. Komponen-komponen ini mungkin terlihat serupa, tetapi metode penggunaannya dengan perangkat seperti papan mikrokontroler Arduino sangat berbeda. Mari kita lihat bagaimana mereka membandingkan satu sama lain.

Potensiometer vs. Encoder Putar

Sebagian besar potensiometer dan enkoder putar yang akan ditemui oleh penggemar DIY memiliki faktor bentuk yang serupa. Mereka memiliki alas berbentuk kubus atau silinder dengan kaki penghubung terpasang, dan poros bundar yang berputar dan memiliki lubang untuk dudukan topi.

instagram viewer

Beberapa potensiometer memang terlihat berbeda, seperti yang berbentuk slide panjang, seperti yang ditemukan di dek pencampuran musik. Ketika datang ke jenis rotary, bagaimanapun, pada pandangan pertama mereka terlihat hampir identik dengan rotary encoder, jadi Anda akan dimaafkan jika mengira keduanya sama.

Apa itu Potensiometer?

Potensiometer pada dasarnya adalah resistor variabel. Saat poros diputar, resistansi di dalam potensiometer berubah, memungkinkan pengguna mengubah properti sirkuit tanpa harus membangunnya kembali. Potensiometer dapat berupa analog dan digital, tetapi potensiometer digital meniru potensiometer analog dan ini membuatnya sangat mirip untuk digunakan.

Potensiometer selalu memiliki titik awal dan akhir yang ditentukan di mana poros tidak dapat diputar lagi. Beberapa potensiometer terasa bergelombang saat diputar, tetapi banyak juga yang halus, seperti yang ditemukan pada stereo lama.

Meskipun analog, potensiometer bekerja dengan baik dengan mikrokontroler. Anda bisa dengan mudah mengatur potensiometer dengan Raspberry Pi Pico atau Arduino.

Apa Itu Rotary Encoder?

Rotary encoders menentukan posisi porosnya menggunakan sensor untuk memberikan sinyal analog atau digital ke perangkat yang terhubung dengannya. Ini memberi tahu perangkat di mana posisi encoder berada. Di samping poros yang berputar, rotary encoder biasanya juga memiliki tombol bawaan yang digerakkan dengan mendorong poros ke bawah.

Tidak seperti potensiometer, rotary encoders dapat berputar tanpa henti, dan mereka hampir selalu memiliki tonjolan taktil untuk setiap posisi poros. Banyak mobil modern menggunakan rotary encoder untuk mengontrol sistem hiburan mereka.

Cara Menggunakan Potensiometer Dengan Arduino

Berkat desainnya yang sederhana, menggunakan potensiometer dengan Arduino itu sederhana. Potensiometer Anda memiliki tiga konektor: ground, output, dan vref. Pin ground dan vref masing-masing terhubung ke konektor GND dan 5V di Arduino Anda, sedangkan pin output potensiometer terhubung ke salah satu input analog di papan Anda.

Kode Potensiometer Arduino

Kode potensiometer Arduino Anda dimulai dengan dasar mempersiapkan() Dan lingkaran() template yang akan Anda lihat saat membuat file baru di Arduino IDE. Pertama, tambahkan a int variabel di awal kode untuk mendaftarkan koneksi pin analog pot—dalam hal ini, A0.

constint potensiometer = A0;

Setelah ini, mempersiapkan() fungsinya sederhana: Anda hanya perlu mendeklarasikan pin potensiometer Anda sebagai input. Anda juga dapat memulai koneksi serial jika Anda ingin mengirim data ke PC Anda untuk diagnosa.

ruang kosongmempersiapkan(){
pinMode (potensiometer, INPUT);
Serial.mulai(9600);
}

Selanjutnya, saatnya untuk mengatur lingkaran() fungsi. Mulailah dengan membuat sebuah int variabel menggunakan analogRead() berfungsi untuk menyimpan posisi potensiometer anda. Setelah ini, Anda dapat menggunakan peta() berfungsi untuk mengurangi ukuran nilai yang Anda hadapi—dalam contoh ini agar sesuai dengan spesifikasi PWM, misalnya untuk mengontrol kecerahan LED. Tambahkan penundaan singkat untuk memastikan stabilitas.

ruang kosonglingkaran(){
int nilai potensiometer = analogRead (potensiometer);
peta (Nilai Potensiometer, 0, 1023, 0, 255);
Serial.println(nilai potensiometer);
penundaan (10);
}

Sekarang setelah Anda memiliki posisi potensiometer, Anda dapat menggunakannya dengan bagian kode lainnya. Misalnya, sebuah jika pernyataan akan bekerja dengan baik untuk memicu kode ketika potensiometer berada di posisi tertentu.

constint potensiometer = A0;

ruang kosongmempersiapkan(){
pinMode (potensiometer, INPUT);
Serial.mulai(9600);
}

ruang kosonglingkaran(){
int nilai potensiometer = analogRead (potensiometer);
peta (Nilai Potensiometer, 0, 1023, 0, 255);
Serial.println(nilai potensiometer);
penundaan (10);
}

Cara Menggunakan Rotary Encoder Dengan Arduino

Rotary encoder memerlukan kode yang lebih rumit daripada potensiometer, tetapi masih cukup mudah untuk digunakan. Rotary encoder Anda memiliki lima pin: arde, VCC, pin tombol (SW), keluaran A (CLK), dan keluaran B (DT). Pin ground dan VCC masing-masing terhubung ke konektor ground dan 5V pada Arduino Anda, sedangkan pin SW, CLK, dan BT terhubung ke konektor digital individu pada Arduino.

Kode Arduino Rotary Encoder

Untuk membuat kode kita lebih sederhana dan lebih mudah digunakan, kita akan menggunakan pustaka Arduino SimpleRotary yang dibuat oleh MPrograms di GitHub. Pastikan Anda telah menginstal pustaka ini sebelum mulai mengerjakan kode Anda.

Sama seperti kode potensiometer Anda, Anda dapat memulai skrip rotary encoder Anda dengan Arduino dasar mempersiapkan() Dan lingkaran() templat fungsi. Mulailah dengan mendeklarasikan pustaka SimpleRotary dan menetapkan pin enkoder Anda dalam urutan ini; CLK, DT, dan SW.

#termasuk 
SimpleRotary putar(1,2,3);

Anda tidak perlu menambahkan apa pun ke akun Anda mempersiapkan() fungsi kecuali jika Anda ingin menggunakan monitor serial untuk mendiagnosa rotary encoder Anda.

ruang kosongmempersiapkan(){
Serial.mulai(9600);
}

Itu lingkaran() fungsi adalah cerita yang berbeda. Penentuan putaran poros encoder dimulai dengan a putar.putar() pemanggilan fungsi yang ditugaskan ke sebuah int variabel. Jika hasilnya 1, encoder berputar searah jarum jam. Jika hasilnya 2, encoder berputar berlawanan arah jarum jam. Hasilnya akan selalu 0 jika pembuat enkode belum diputar sejak pemeriksaan terakhir.

Anda dapat gunakan jika pernyataan untuk memicu kode lain tergantung pada arah rotasi pembuat enkode.

ruang kosonglingkaran(){
int encoderRotasi;
encoderRotation = rotary.rotate();

if (encoderRotation == 1) {
Serial.println("searah jarum jam");
}

if (encoderRotation == 2) {
Serial.println("berlawanan arah jarum jam");
}
}

Anda juga perlu menambahkan beberapa kode untuk tombol enkoder Anda ke lingkaran() fungsi. Proses ini sangat mirip, kecuali Anda akan menggunakan putar.push() fungsi, bukan putar.putar().

ruang kosonglingkaran(){
int encoderTombol;
encoderButton = rotary.push();

jika (tombol encoder == 1) {
Serial.println("tombol ditekan");
}
}

Skrip ini cukup sederhana, dan Anda dapat melakukan banyak hal untuk membuatnya sendiri. Sebaiknya periksa dokumentasi proyek SimpleRotary untuk memastikan bahwa Anda menggunakan semua fitur utamanya. Setelah disatukan, kode encoder Anda akan terlihat seperti ini.

#termasuk 
SimpleRotary putar(1,2,3);

ruang kosongmempersiapkan(){
Serial.mulai(9600);
}

ruang kosonglingkaran(){
int encoderRotasi;
encoderRotation = rotary.rotate();

if (encoderRotation == 1) {
Serial.println("searah jarum jam");
}

if (encoderRotation == 2) {
Serial.println("berlawanan arah jarum jam");
}

int encoderTombol;
encoderButton = rotary.push();

jika (tombol encoder == 1) {
Serial.println("tombol ditekan");
}
}

Cara Memilih Antara Potensiometer dan Enkoder Putar untuk Proyek

Seperti yang Anda lihat, rotary encoders dan potensiometer bekerja sangat berbeda. Kedua komponen ini memberi Anda cara baru untuk mengontrol proyek elektronik Anda, tetapi mana yang harus Anda pilih?

Potensiometer terjangkau dan mudah digunakan, tetapi hanya memungkinkan rentang masukan yang terbatas. Ini membuatnya hebat ketika Anda ingin mengontrol kecerahan LED, atau menaikkan dan menurunkan daya ke komponen tertentu, dan tugas serupa lainnya.

Rotary encoders memberikan lebih banyak cakupan daripada potensiometer. Dimasukkannya tombol tekan berarti sangat bagus untuk sistem kontrol menu, seperti yang terlihat di banyak mobil modern. Jenis komponen ini menjadi sangat populer di ruang bangunan keyboard mekanis. Anda bahkan bisa membangun sebuah macropad kecil dengan encoder built-in.

Tampilan Serupa, Komponen Berbeda

Dengan semua informasi ini, Anda harus siap untuk memulai proyek elektronik dengan potensiometer atau enkoder putar. Komponen-komponen ini dapat memberi Anda banyak kendali atas sirkuit yang Anda buat, tetapi Anda perlu memastikan bahwa Anda memilih opsi yang tepat untuk proyek Anda.