Encoder rotary, atau disebut shaft encoder, adalah perangkat elektro-mekanik yang mengubah posisi sudut atau gerakan poros atau poros ke sinyal output analog atau digital. Retary encoder dapat diaplikasikan sebagai kenali untuk memilih sebuah menu atau mengatur suatu menu, untuk dapat menggunakan rotary encoder sebelumnya kita perlu mengetahui cara membaca input dari rotary encoder.
Jenis-jenis encoder rotary:
-
Encoder inkremental:
- Menghasilkan serangkaian pulsa saat poros berputar.
- Menghitung pulsa untuk menentukan posisi dan kecepatan relatif.
- Tidak dapat menentukan posisi absolut tanpa titik referensi.
- Di gunakan dalam aplikasi seperti kontrol motor, robotika, dan mesin CNC.
-
Encoder absolut:
- Memberikan kode digital unik untuk setiap posisi poros.
- Melaporkan posisi absolut secara langsung, bahkan setelah mati listrik.
- Di gunakan dalam aplikasi di mana penentuan posisi yang presisi sangat penting, seperti otomasi industri, perangkat medis, dan teleskop.
1. Alat / Bahan
- Arduino IDE Download
- Arduino UNO 1 Buah
- Rotary Encoder 1 Buah
- Project Board 1 Buah
- Kabel Jumper Secukupnya
Kemudian Untuk mendapatkan komponen elektronik di atas silahkan temukan disini.
Baca Juga : Menambah Pin Arduino Uno dengan I2C PCF8574 IO Expander
2. Skema Rangkaian
Berikut Gambar Rangkaian Membaca Input Dari Rotary Encoder
Keterangan:
- 5V – VCC Rotary Encoder
- GND – GND Rotary Encoder
- D8 – SW
- D7 –DT
- D6 –CLK
Baca Juga : Membaca Input Dari Rotary Encoder
3. Langkah Kerja
- PertamaSiapkan alat dan bahan
- Kedua Lakukan proses wiring dengan menggunakan Gambar skematik rangkaian di atas
- Ketiga Buka software Arduino IDE yang telah terinstal pada laptop/komputer
- Kemudian Ketikkan sketch program pada halaman Arduino IDE
- Terakhir Lakukan proses uploading program
4. Sketch Program
/* Program Membaca Input Dari Rotary Encoder dibuat oleh Indobot */ #define outputA 6 //CLK pada pin D6 #define outputB 7 //DT pada pin D7 #define button 8 //SW pada pin D8 int counter = 0; //Variabel penghitung nilai int aState; //Variabel kondisi int aLastState; //Variabel kondisi terakhir void setup() { pinMode (outputA,INPUT_PULLUP); //Sertting sebagai input pullup pinMode (outputB,INPUT_PULLUP); pinMode (button,INPUT_PULLUP); Serial.begin (9600); //Mulai komunikasi serial aLastState = digitalRead(outputA); //Baca kondisi terakhir CLK } void loop() { aState = digitalRead(outputA); //Baca kondisi CLK if (aState != aLastState){ //Jika ada perubahan kondisi, maka if (digitalRead(outputB) != aState) { //Jika berputar ke kiri, maka counter ++; //Nilai bertambah } else { //Jika berputar ke kanan, maka counter --; //Nilai berkurang } Serial.print("Position: "); Serial.println(counter); //Tampilkan nilai } aLastState = aState; //Rekam kondisi if(digitalRead(button) == LOW){ //Jika tombol ditekan, maka Serial.println("Button pressed"); //Tampilkan text delay(200); //Jeda pembacaan 200ms } }
Kesimpulan:
Program bekerja dengan menampilkan hasil putaran dari rotary encoder. Ketika rotary encoder di putar kekanan serial monitor kemudian akan menampilkan nilai input rotary encorder.