Bagaimana Rotary Encoder Berfungsi dan Mengantaramukakannya dengan Arduino

Bagaimana Rotary Encoder Berfungsi Dan Mengantaramukakannya Dengan Arduino



Rotary Encoder ialah peranti elektromekanikal penting yang mempunyai pelbagai kegunaan dalam bidang elektronik. Artikel ini akan menerangkan jenis dan cara kerja pengekod berputar bersama-sama antara mukanya dengan Arduino.

Apa itu Rotary Encoder

Pengekod berputar ialah peranti input digital yang mengesan kedudukan sudut tombol putar dan menghantar isyarat kepada mikropengawal atau mana-mana peranti lain yang disambungkan. Mereka boleh berputar 360° tanpa berhenti. Ia juga dipanggil pengekod aci. Ia digunakan dalam pencetak, elektronik audio, motor dan pengawal.









Jenis Pengekod Rotary

Terdapat terutamanya dua jenis pengekod berputar yang diputuskan berdasarkan isyarat keluaran yang dihasilkan oleh mereka. Jenis ini dinamakan:



Pengekod Rotary Bertambah

Pengekod jenis ini mengira putaran tombol putar dalam bentuk denyutan. Apabila tombol diputar sekali, nadi terhasil. Untuk setiap nadi, kenaikan pembilang untuk menunjukkan kedudukan sudut aci.





Pengekod Rotary Mutlak

Pengekod jenis ini memberikan kedudukan sudut mutlak aci, kerana ia mempunyai kod berasingan untuk setiap kedudukan aci, dan ia mengukur sudut melalui kod tersebut. Ia tidak memerlukan pembilang untuk memberikan output kedudukan sudut. Walaupun pengekod berputar mutlak dinyahtenagakan, nilai masing-masing untuk kedudukan sudut dikekalkan. Ia juga merupakan pengekod kos rendah.



Kerja Rotary Encoder

Pengekod berputar terdiri daripada cakera dengan kawasan yang sama jarak yang disambungkan kepada pin C biasa yang dibumikan. Dua pin A dan B yang lain ialah pin sesentuh yang bersentuhan dengan C apabila tombol putar diputar. Apabila pin A atau B disambungkan ke tanah, maka isyarat dijana. Isyarat yang dijana daripada pin output adalah 90° daripada fasa. Ini kerana pin A disambungkan ke tanah apabila tombol dipusingkan mengikut arah jam, dan pin B disambungkan ke tanah terlebih dahulu apabila tombol dipusing lawan jam. Oleh itu, arah putaran tombol ditentukan melalui sambungan ini.

Jika keadaan B tidak sama dengan A , maka tombol telah dipusingkan mengikut arah jam.


Jika keadaan B adalah sama dengan A, tombol telah dipusingkan ke arah lawan jam.

Konfigurasi Pin Pengekod Rotary

Rajah yang diberikan di bawah memberikan pinout pengekod berputar yang menunjukkan pin output A dan B, suis berputar yang boleh digunakan sebagai butang tekan, dan pin untuk bekalan kuasa.

Perihalan Pin Pengekod Rotary

Berikut ialah penerangan yang diberikan tentang semua pin pengekod berputar.

Keluar B atau CLK

Pin ini memberikan output berapa kali tombol atau pengekod berputar telah diputar. Setiap kali apabila tombol diputar, CLK melengkapkan kitaran TINGGI dan RENDAH. Ia dikira sebagai satu putaran.

Keluar A atau DT

Ini ialah pin keluaran kedua pengekod berputar yang menentukan arah putaran. Ia ketinggalan 90° di belakang isyarat CLK. Oleh itu, jika keadaannya tidak sama dengan keadaan CLK maka arah putaran adalah mengikut arah jam, jika tidak, lawan arah jam.

Tukar

Pin suis digunakan untuk memeriksa sama ada butang tekan ditekan atau tidak.

VCC

Pin ini disambungkan kepada bekalan 5V

GND

Pin ini disambungkan ke Ground

Mengantaramuka Pengekod Rotary dengan Arduino

Pengekod berputar mempunyai lima pin. VCC dan GND pengekod berputar disambungkan kepada Arduino. Pin selebihnya CLK, DT, dan SW disambungkan ke pin input digital Arduino.

Kod Arduino untuk Pengekod Rotary

// Input Pengekod Putar
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int kaunter = 0 ;
int semasaCLKSstate;
int lastCLKSstate;
Arah arus rentetan = '' ;
lama tidak ditandatanganiButtonPressTime = 0 ;
persediaan kosong ( ) {
// Tetapkan pin pengekod sebagai input
    mod pin ( CLK_PIN, INPUT ) ;
    mod pin ( DT_PIN, INPUT ) ;
    mod pin ( SW_PIN, INPUT_PULLUP ) ;
// Sediakan Monitor Bersiri
Bersiri.mulakan ( 9600 ) ;
// Baca keadaan awal CLK
lastCLKSstate = digitalRead ( CLK_PIN ) ;
}
gelung kosong ( ) {
// Baca keadaan semasa CLK
semasaCLKSstate = digitalRead ( CLK_PIN ) ;
// Sekiranya terakhir dan keadaan semasa CLK berbeza, kemudian nadi berlaku
// Bertindak balas kepada sahaja 1 perubahan negeri untuk mengelakkan kiraan berganda
jika ( semasaCLKSstate ! = lastCLKSstate && semasaCLKSstate == 1 ) {
// Jika keadaan DT berbeza daripada keadaan CLK, kemudian
// Pengekod berputar melawan arah jam, jadi penyusutan
jika ( digitalRead ( DT_PIN ) ! = semasaCLKSstate ) {
kaunter--;
Arah semasa = 'CCW' ;
} lain {
// Pengekod berputar mengikut arah jam, jadi bertambah
kaunter++;
Arah semasa = 'CW' ;
}
Bersiri.cetak ( 'Arah Putaran:' ) ;
Bersiri.cetak ( Arah semasa ) ;
Bersiri.cetak ( ' | Nilai Balasan: ' ) ;
Serial.println ( kaunter ) ;
}
// Ingatlah terakhir negeri CLK
lastCLKSstate = semasaCLKSstate;
// Baca keadaan butang
int buttonState = digitalRead ( SW_PIN ) ;
// Jika kita mengesan isyarat LOW, butang ditekan
jika ( buttonState == RENDAH ) {
// Jika 50ms telah berlalu sejak terakhir Nadi RENDAH, ia bermakna bahawa
// butang telah ditekan, dilepaskan dan ditekan semula
jika ( millis ( ) - LastButtonPressTime > lima puluh ) {
Serial.println ( 'Butang Ditekan!' ) ;
}
// Ingatlah terakhir acara tekan butang masa
lastButtonPressTime = millis ( ) ;
}
// Letak dalam kelewatan sedikit ke membantu debounce bacaan
kelewatan ( 1 ) ;
}


Dalam kod yang diberikan di atas, keadaan pin CLK disemak dalam fungsi gelung(). Jika ia tidak sama dengan keadaan sebelumnya, ia menunjukkan bahawa tombol berputar telah berputar. Sekarang, untuk menyemak arah putaran tombol, keadaan CLK sekarang dibandingkan dengan keadaan DT. Jika kedua-dua keadaan adalah tidak sama, ia menunjukkan bahawa tombol telah berputar mengikut arah jam dan balas menambah nilainya untuk menunjukkan kedudukan tombol berputar. Dalam kes yang bertentangan, pengurangan balas.

Kesimpulan

Pengekod berputar ialah penderia kedudukan lanjutan yang boleh berputar secara berterusan. Mereka boleh didapati dalam dua jenis: tambahan dan mutlak. Pengekod berputar berfungsi dengan mengira denyutan yang dihasilkan disebabkan oleh putaran tombol. Ia mempunyai pelbagai aplikasi dalam elektronik kehidupan harian kepada automasi industri.