- Bahan yang Dibutuhkan
- Bagaimana Cara Kerja Rotary Encoder?
- Jenis Rotary Encoder
- KY-040 Rotary Encoder Pinout dan deskripsi
- Diagram Sirkuit Rotary Encoder Arduino
- Memprogram Arduino Anda untuk Rotary Encoder
- Cara Kerja Rotary Encoder dengan Arduino
Sebuah Rotary encoder adalah perangkat input yang membantu pengguna untuk berinteraksi dengan sistem. Ini lebih terlihat seperti potensiometer Radio tetapi mengeluarkan rangkaian pulsa yang membuat aplikasinya unik. Ketika kenop Encoder diputar, ia berputar dalam bentuk langkah-langkah kecil yang membantunya digunakan untuk mengendalikan stepper / motor Servo, menavigasi melalui urutan menu dan Menaikkan / menurunkan nilai suatu angka dan banyak lagi.
Pada artikel ini kita akan mempelajari tentang berbagai jenis Rotary Encoder dan cara kerjanya. Kami juga akan menghubungkannya dengan Arduino dan mengontrol nilai integer dengan memutar Encoder dan menampilkan nilainya pada layar LCD 16 * 2. Di akhir tutorial ini Anda akan merasa nyaman menggunakan Rotary Encoder untuk proyek Anda. Jadi mari kita mulai…
Bahan yang Dibutuhkan
- Rotary Encoder (KY-040)
- Arduino UNO
- 16 * 2 LCD alfanumerik
- Potensiometer 10k
- Papan tempat memotong roti
- Menghubungkan kabel
Bagaimana Cara Kerja Rotary Encoder?
Rotary Encoder adalah transduser elektromekanis, artinya mengubah gerakan mekanis menjadi pulsa elektronik. Ini terdiri dari sebuah kenop yang ketika berputar akan bergerak selangkah demi selangkah dan menghasilkan urutan rangkaian pulsa dengan lebar yang telah ditentukan untuk setiap langkah. Ada banyak jenis Encoder masing-masing dengan mekanisme kerjanya sendiri, kita akan belajar tentang jenisnya nanti tetapi untuk saat ini mari kita berkonsentrasi hanya pada Encoder Inkremental KY040 karena kita menggunakannya untuk tutorial kita.
Struktur mekanis internal untuk Encoder ditunjukkan di bawah ini. Ini pada dasarnya terdiri dari cakram melingkar (warna abu-abu) dengan bantalan konduktif (warna tembaga) ditempatkan di atas cakram melingkar ini. Bantalan konduktif ini ditempatkan pada jarak yang sama seperti yang ditunjukkan di bawah ini. Pin Output dipasang di atas disc melingkar ini, sedemikian rupa sehingga ketika kenop berputar bantalan konduktif bersentuhan dengan pin output. Disini terdapat dua buah pin keluaran yaitu Output A dan Output B seperti pada gambar dibawah.
Bentuk gelombang keluaran yang dihasilkan oleh pin Output A dan Output B ditampilkan dalam warna biru dan hijau masing-masing. Ketika bantalan konduktif berada tepat di bawah pin, itu menjadi tinggi sehingga tepat waktu dan ketika bantalan konduktif menjauh, pin menjadi rendah sehingga waktu mati dari bentuk gelombang yang ditunjukkan di atas. Nah, jika kita menghitung jumlah pulsa kita akan bisa menentukan berapa langkah Encoder telah dipindahkan.
Sekarang pertanyaan yang mungkin muncul adalah, mengapa kita membutuhkan dua sinyal pulsa ketika satu sudah cukup untuk menghitung jumlah langkah yang diambil saat memutar kenop. Ini karena kita perlu mengidentifikasi ke arah mana kenop telah diputar. Jika Anda melihat kedua pulsa tersebut, Anda dapat melihat bahwa keduanya berada di luar fase 90 °. Karenanya ketika kenop diputar searah jarum jam, Output A akan menjadi tinggi terlebih dahulu dan ketika kenop diputar berlawanan arah jarum jam, Output B akan menjadi tinggi terlebih dahulu.
Jenis Rotary Encoder
Ada banyak jenis encoder putar di pasaran yang dapat dipilih perancang sesuai dengan aplikasinya. Jenis yang paling umum tercantum di bawah ini
- Encoder Inkremental
- Encoder Mutlak
- Encoder Magnetik
- Encoder Optik
- Pembuat Enkode Laser
Encoder ini diklasifikasikan berdasarkan sinyal Output dan teknologi penginderaan, Encoder Inkremental dan Encoder Absolut diklasifikasikan berdasarkan sinyal Output dan Encoder Magnetik, Optik dan Laser diklasifikasikan berdasarkan Teknologi Penginderaan. The Encoder yang digunakan di sini adalah jenis Encoder Incremental.
KY-040 Rotary Encoder Pinout dan deskripsi
Pinout dari encoder putar jenis KY-040 Incremental ditunjukkan di bawah ini
Dua pin pertama (Ground dan Vcc) digunakan untuk menyalakan Encoder, biasanya suplai + 5V digunakan. Selain memutar kenop searah jarum jam dan berlawanan arah jarum jam, encoder juga memiliki sakelar (Active low) yang dapat ditekan dengan menekan kenop di dalam. Sinyal dari sakelar ini diperoleh melalui pin 3 (Sakelar). Akhirnya ia memiliki dua pin keluaran yang menghasilkan bentuk gelombang seperti yang telah dibahas di atas. Sekarang mari kita belajar bagaimana menghubungkannya dengan Arduino.
Diagram Sirkuit Rotary Encoder Arduino
Diagram rangkaian lengkap Interfacing Rotary Encoder dengan Arduino ditunjukkan pada gambar di bawah ini
Rotary Encoder memiliki 5 pin sesuai urutan yang ditunjukkan pada label di atas. Dua pin pertama adalah Ground dan Vcc yang dihubungkan ke Ground dan pin + 5V dari Arduino. Sakelar encoder terhubung ke pin digital D10 dan juga ditarik tinggi melalui resistor 1k. Kedua pin keluaran masing-masing terhubung ke D9 dan D8.
Untuk menampilkan nilai variabel mana yang akan dinaikkan atau diturunkan dengan memutar Rotary encoder kita membutuhkan modul tampilan. Yang digunakan di sini biasanya tersedia layar LCD numerik 16 * 2 Alpha. Kami telah menghubungkan layar untuk dioperasikan dalam mode 4-bit dan telah menyalakannya menggunakan pin + 5V Arduino. Potensiometer digunakan untuk mengatur kontras layar LCD. Jika Anda ingin tahu lebih banyak tentang Antarmuka layar LCD dengan Arduino ikuti tautannya. Sirkuit lengkap dapat dibangun di atas papan tempat memotong roti, penampilan saya seperti ini di bawah ini setelah semua koneksi selesai.
Memprogram Arduino Anda untuk Rotary Encoder
Sangat mudah dan langsung untuk memprogram papan Arduino untuk menghubungkan Rotary Encoder dengannya jika Anda telah memahami prinsip kerja Rotary Encoder. Kita hanya perlu membaca jumlah pulsa untuk menentukan berapa banyak putaran yang telah dilakukan encoder dan memeriksa pulsa mana yang lebih tinggi terlebih dahulu untuk menemukan ke arah mana encoder diputar. Dalam tutorial ini kita akan menampilkan angka yang sedang naik atau turun pada baris pertama LCD dan arah Encoder di baris kedua. Program lengkap untuk melakukan hal yang sama dapat ditemukan di bagian bawah halaman ini dengan Video Demonstrasi, tidak memerlukan perpustakaan apa pun. Sekarang, mari kita bagi program menjadi bagian-bagian kecil untuk memahami cara kerjanya.
Karena kami telah menggunakan layar LCD, kami menyertakan pustaka kristal cair yang secara default ada di Arduino IDE. Kemudian kami menentukan pin untuk menghubungkan LCD dengan Arduino. Akhirnya kami menginisialisasi layar LCD pada pin tersebut.
#include
Selanjutnya di dalam fungsi pengaturan , kami menampilkan pesan pengantar di layar LCD, lalu menunggu selama 2 detik agar pesan tersebut dapat dibaca pengguna. Ini untuk memastikan bahwa LCD berfungsi dengan baik.
lcd.print ("Rotary Encoder"); // Baris Pesan Intro 1 lcd.setCursor (0, 1); lcd.print ("Dengan Arduino"); // Intro Message line 2 delay (2000); lcd.clear ();
Encoder Rotary memiliki tiga pin output yang akan menjadi pin INPUT untuk Arduino. Ketiga pin ini masing-masing adalah Switch, Output A dan Output B. Ini dideklarasikan sebagai Input menggunakan fungsi pinMode seperti yang ditunjukkan di bawah ini.
// pin Deklarasi mode pinMode (Encoder_OuputA, INPUT); pinMode (Encoder_OuputB, INPUT); pinMode (Encoder_Switch, INPUT);
Di dalam fungsi pengaturan void , kita membaca status dari pin keluaran A untuk memeriksa status terakhir dari pin tersebut. Kami kemudian akan menggunakan informasi ini untuk membandingkan dengan nilai baru untuk memeriksa pin mana (Output A atau Output B) yang sudah tinggi.
Previous_Output = digitalRead (Encoder_OuputA); // Baca nilai awal Output A
Akhirnya di dalam fungsi loop utama, kita harus membandingkan nilai Output A dan Output B dengan Output Sebelumnya untuk memeriksa mana yang lebih tinggi terlebih dahulu. Hal ini dapat dilakukan hanya dengan membandingkan nilai keluaran arus A dan B dengan keluaran sebelumnya seperti gambar di bawah ini.
if (digitalRead (Encoder_OuputA)! = Previous_Output) { if (digitalRead (Encoder_OuputB)! = Previous_Output) { Encoder_Count ++; lcd.clear (); lcd.print (Encoder_Count); lcd.setCursor (0, 1); lcd.print ("Searah Jarum Jam"); }
Dalam kode di atas yang kedua jika kondisi dijalankan jika Output B telah berubah dari output sebelumnya. Dalam hal ini, nilai variabel encoder bertambah dan LCD menampilkan bahwa encoder diputar searah jarum jam . Demikian pula jika itu jika kondisi gagal, dalam berikutnya lagi kondisi kita pengurangan variabel dan tampilan yang encoder diputar di berlawanan arah jarum jam arah. Kode yang sama ditunjukkan di bawah ini.
lain { Encoder_Count--; lcd.clear (); lcd.print (Encoder_Count); lcd.setCursor (0, 1); lcd.print ("Anti - Searah Jarum Jam"); } }
Terakhir, pada akhir loop utama kita harus memperbarui nilai keluaran sebelumnya dengan nilai keluaran saat ini sehingga loop dapat diulang dengan logika yang sama. Kode berikut melakukan hal yang sama
Previous_Output = digitalRead (Encoder_OuputA);
Hal opsional lainnya adalah memeriksa apakah sakelar di Encoder telah ditekan. Ini dapat dimonitor dengan memeriksa pin sakelar pada pembuat kode putar. Pin ini merupakan pin low aktif, artinya pin akan low saat tombol ditekan. Jika tidak ditekan pin tetap tinggi, kami juga telah menggunakan resistor pull up untuk memastikan tetap tinggi saat sakelar tidak ditekan sehingga menghindari kondisi floating point.
if (digitalRead (Encoder_Switch) == 0) {lcd.clear (); lcd.setCursor (0, 1); lcd.print ("Tombol ditekan"); }
Cara Kerja Rotary Encoder dengan Arduino
Setelah perangkat keras dan kode siap, cukup unggah kode ke papan Arduino dan nyalakan Papan Arduino. Anda dapat menyalakannya melalui kabel USB atau menggunakan adaptor 12V. Saat dinyalakan, LCD akan menampilkan pesan intro dan kemudian kosong. Sekarang putar rotary encoder dan Anda akan melihat nilainya mulai bertambah atau berkurang berdasarkan arah yang Anda putar. Baris kedua akan menunjukkan kepada Anda apakah pembuat enkode diputar searah jarum jam atau berlawanan arah jarum jam. Gambar di bawah menunjukkan hal yang sama
Juga saat tombol ditekan, baris kedua akan menampilkan tombol ditekan. Pekerjaan lengkap dapat ditemukan di video di bawah ini. Ini hanyalah contoh program untuk menghubungkan Encoder dengan Arduino dan memeriksa apakah itu berfungsi seperti yang diharapkan. Setelah Anda sampai di sini, Anda harus dapat menggunakan encoder untuk setiap proyek dan program Anda yang sesuai.
Harap Anda memahami tutorial dan semuanya berjalan sebagaimana mestinya. Jika Anda memiliki masalah, gunakan bagian komentar atau forum untuk bantuan teknis.