Daftar Isi:

Rotary Encoder - Memahami dan Menggunakannya (Arduino/Pengendali lainnya): 3 Langkah
Rotary Encoder - Memahami dan Menggunakannya (Arduino/Pengendali lainnya): 3 Langkah

Video: Rotary Encoder - Memahami dan Menggunakannya (Arduino/Pengendali lainnya): 3 Langkah

Video: Rotary Encoder - Memahami dan Menggunakannya (Arduino/Pengendali lainnya): 3 Langkah
Video: BELAJAR ARDUINO #78 - Rotary Encoder Sangat Berguna 2024, November
Anonim
Rotary Encoder - Memahami dan Menggunakannya (Arduino/Pengendali lainnya)
Rotary Encoder - Memahami dan Menggunakannya (Arduino/Pengendali lainnya)

Rotary encoder adalah perangkat elektro-mekanis yang mengubah gerakan rotasi menjadi informasi digital atau analog. Itu bisa berputar searah jarum jam atau berlawanan arah jarum jam. Ada dua jenis enkoder putar: enkoder absolut dan relatif (incremental).

Sementara encoder absolut menghasilkan nilai yang sebanding dengan sudut poros saat ini, encoder tambahan mengeluarkan langkah poros dan arahnya. (Dalam hal ini kami memiliki encoder tambahan)

Rotary encoder menjadi lebih populer karena Anda dapat menggunakan dua fungsi dalam satu modul listrik: Sakelar sederhana untuk mengonfirmasi operasi dan rotary encoder untuk bernavigasi, mis. melalui sebuah menu.

Rotary encoder inkremental menghasilkan dua sinyal output saat porosnya berputar. Tergantung pada arahnya, salah satu sinyal memimpin yang lain. (Lihat di bawah)

Langkah 1: Memahami Data Output

Memahami Data Keluaran
Memahami Data Keluaran

Seperti yang Anda lihat ketika poros encoder mulai berputar searah jarum jam, Output A jatuh ke LOW terlebih dahulu dan Output B mengikutinya. Dalam arah berlawanan arah jarum jam operasi berubah berlawanan.

Sekarang kita hanya perlu mengimplementasikan ini pada Controller kita (saya menggunakan Arduino Nano).

Langkah 2: Bangun Sirkuit

Bangun Sirkuit
Bangun Sirkuit
Bangun Sirkuit
Bangun Sirkuit

Seperti yang saya jelaskan sebelumnya, output membuat sisi TINGGI dan RENDAH. Untuk mendapatkan TINGGI yang bersih pada pin data A dan B dari Controller kita harus menambahkan resistor Pull-Up. Pin C umum langsung ke ground untuk sayap RENDAH.

Untuk mendapatkan informasi tentang saklar internal (push-button) kita akan menggunakan dua pin lainnya. Salah satunya pergi ke VCC dan yang lainnya ke Pin data dari Controller. Kami juga harus menambahkan Resistor Pull-Down ke pin data untuk mendapatkan RENDAH yang bersih.

Anda juga dapat menggunakan resistor Pull-Up dan Pull-Down internal dari Controller Anda!

Dalam kasus saya pinout terlihat seperti:

  • +3, 3V => +3, 3V (Arduino)(juga +5V mungkin)
  • GND => GND (Arduino)
  • A => Pin10
  • B =>

    Pin

    11

  • C => GND
  • SW =>

    Pin

    12

Langkah 3: Menulis Kode

int pinA = 10; //saklar internal A int pinB = 11; //saklar internal B int pinSW = 12; //switch (Encoder ditekan) int encoderPosCount = 0; // mulai dari nol, ubah jika kamu mau

int posisival;

pergantian bo; int mrotateTerakhir; int mrotate;

batalkan pengaturan() {

int mrotateLast = digitalRead(pinA); Serial.begin (9600); penundaan(50); }

void loop() { readencoder(); if(readswitch() == 1){ Serial.println("Switch = 1"); } }

int pembaca kode (){

mrotate = digitalRead(pinA); if (mrotate != mrotateLast){ //knob berputar if (digitalRead(pinB) != mrotate) { //switch A diubah terlebih dahulu -> berputar searah jarum jam encoderPosCount ++; Serial.println("diputar searah jarum jam"); } else {// sakelar B diubah terlebih dahulu -> berputar berlawanan arah jarum jam encoderPosCount--; Serial.println("diputar berlawanan arah jarum jam"); }

Serial.print("Posisi Encoder: "); Serial.println(encoderPosCount); Serial.println(""); } mrotateLast = mrotate; kembali encoderPosCount; } sakelar baca bool(){

if(digitalRead(pinSW)!=0){ // sakelar ditekan

while(digitalRead(pinSW)!=0){} //switch saat ini ditekan switchval = 1; } else{switchval = 0;} //switch tidak ditekan return switchval; }

Sekarang Anda dapat memutar encoder dan variabel encoderPosCount akan menghitung jika Anda memutar searah jarum jam dan menghitung mundur jika Anda memutar berlawanan arah jarum jam.

Itu dia! Sederhana dan bermanfaat.

Jangan ragu untuk mengubah dan menjalankan kodenya. Anda dapat menerapkannya dalam proyek Anda.

Saya juga akan mengunggah proyek LED di mana saya menggunakan encoder untuk mengatur kecerahan LED saya.

Direkomendasikan: