Bagaimana Rotary Encoder Bekerja dan Menghubungkannya dengan Arduino

Bagaimana Rotary Encoder Bekerja Dan Menghubungkannya Dengan Arduino



Rotary Encoder adalah perangkat elektromekanis penting yang memiliki beragam kegunaan di bidang elektronik. Artikel ini akan menjelaskan tentang jenis dan cara kerja rotary encoder beserta interfacingnya dengan Arduino.

Apa itu Rotary Encoder

Rotary encoder adalah perangkat input digital yang merasakan posisi sudut tombol putar dan mengirimkan sinyal ke mikrokontroler atau perangkat lain yang terhubung dengannya. Mereka bisa berputar 360° tanpa henti. Ini juga disebut encoder poros. Ini digunakan dalam printer, elektronik audio, motor, dan pengontrol.









Jenis Encoder Rotary

Terutama ada dua jenis rotary encoders yang diputuskan berdasarkan sinyal keluaran yang dihasilkan oleh mereka. Jenis-jenis ini diberi nama:



Encoder Putar Tambahan

Encoder jenis ini menghitung putaran kenop putar dalam bentuk pulsa. Ketika kenop diputar sekali, pulsa dihasilkan. Untuk setiap pulsa, penghitung bertambah untuk menunjukkan posisi sudut poros.





Encoder Putar Mutlak

Encoder jenis ini memberikan posisi sudut mutlak poros, karena memiliki kode terpisah untuk setiap posisi poros, dan mengukur sudut melalui kode tersebut. Tidak perlu penghitung untuk memberikan keluaran posisi sudut. Bahkan jika rotary encoder absolut tidak diberi daya, nilai masing-masing untuk posisi sudut tetap dipertahankan. Ini juga merupakan pembuat enkode berbiaya rendah.



Cara kerja Rotary Encoder

Encoder putar terdiri dari disk dengan area dengan jarak yang sama yang terhubung ke pin C umum yang di-ground. Dua pin lainnya A dan B adalah pin kontak yang melakukan kontak dengan C ketika kenop putar diputar. Ketika pin A atau B terhubung ke ground, maka sinyal dihasilkan. Sinyal-sinyal ini dihasilkan dari pin output yang 90° keluar dari fase. Ini karena pin A terhubung ke ground saat kenop diputar searah jarum jam, dan pin B terhubung ke ground terlebih dahulu saat kenop diputar berlawanan arah jarum jam. Oleh karena itu, arah putaran kenop ditentukan melalui sambungan ini.

Jika keadaan B tidak sama dengan A , maka kenop telah diputar searah jarum jam.


Jika keadaan B sama dengan A, kenop telah berputar berlawanan arah jarum jam.

Konfigurasi Pin dari Rotary Encoder

Diagram yang diberikan di bawah ini memberikan pinout dari rotary encoder yang menunjukkan pin keluaran A dan B, sakelar putar yang dapat digunakan sebagai tombol tekan, dan pin untuk catu daya.

Pin Deskripsi Rotary Encoder

Berikut ini adalah deskripsi yang diberikan untuk semua pin rotary encoder.

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 ditekan atau tidak.

VCC

Pin ini terhubung ke suplai 5V

GND

Pin ini terhubung ke Ground

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;
Arah arus tali = '' ;
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 Seri
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 penurunannya
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 = statusCLKState saat ini;
// 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.

Kesimpulan

Rotary encoders adalah sensor posisi canggih yang dapat berputar terus menerus. Mereka tersedia dalam dua jenis: inkremental dan absolut. Rotary encoder bekerja dengan cara menghitung pulsa yang dihasilkan akibat putaran knob. Ini memiliki beragam aplikasi dalam elektronik kehidupan sehari-hari hingga otomasi industri.