Isi kandungan:

Rotary Encoder - Memahami dan Menggunakannya (Arduino / MController lain): 3 Langkah
Rotary Encoder - Memahami dan Menggunakannya (Arduino / MController lain): 3 Langkah

Video: Rotary Encoder - Memahami dan Menggunakannya (Arduino / MController lain): 3 Langkah

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

Pengekod putar adalah alat elektro-mekanikal yang mengubah gerakan putaran menjadi maklumat digital atau analog. Ia boleh berpusing mengikut arah jam atau lawan arah jam. Terdapat dua jenis pengekod putar: Pengekod mutlak dan relatif (tambahan).

Walaupun pengekod mutlak menghasilkan nilai sebanding dengan sudut poros semasa, pengekod tambahan mengeluarkan langkah poros dan arahnya. (Dalam kes ini kita mempunyai pengekod tambahan)

Pengekod putar menjadi lebih popular kerana anda dapat menggunakan dua fungsi dalam satu modul elektrik: Suis mudah untuk mengesahkan operasi dan pengekod putar untuk menavigasi, mis. melalui menu.

Pengekod putar tambahan menghasilkan dua isyarat output semasa porosnya berputar. Bergantung pada arah, salah satu isyarat memimpin yang lain. (lihat di bawah)

Langkah 1: Memahami Data Output

Memahami Data Output
Memahami Data Output

Seperti yang anda lihat apabila poros pengekod mula berputar mengikut arah jam, Output A jatuh ke RENDAH terlebih dahulu dan Output B mengikutinya. Dalam arah lawan arah jam, operasi bertukar bertentangan.

Sekarang kita hanya perlu melaksanakannya pada µController kami (saya menggunakan Arduino Nano).

Langkah 2: Bina Litar

Bina Litar
Bina Litar
Bina Litar
Bina Litar

Seperti yang saya jelaskan sebelum output membuat sayap TINGGI dan RENDAH. Untuk mendapatkan TINGGI bersih pada pin data A dan B dari µController, kita harus menambah perintang Pull-Up. Pin C biasa terus ke tanah untuk sayap RENDAH.

Untuk mendapatkan maklumat mengenai suis dalaman (tekan butang) kami akan menggunakan dua pin yang lain. Salah satunya pergi ke VCC dan yang lain ke Pin data dari µController. Kita juga harus menambahkan Pull-Down Resistor ke pin data untuk mendapatkan RENDAH yang bersih.

Anda juga boleh menggunakan perintang Pull-Up dan Pull-Down dalaman dari µController anda!

Dalam kes saya, pinout kelihatan seperti:

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

    Sematkan

    11

  • C => GND
  • SW =>

    Sematkan

    12

Langkah 3: Menulis Kod

int pinA = 10; // suis dalaman A pin pin = 11; // suis dalaman B int pinSW = 12; // beralih (Encoder ditekan) int encoderPosCount = 0; // bermula pada sifar, ubah jika anda mahu

kedudukan kedudukan int;

suis bool; int mrotateLast; int mrotate;

batal persediaan () {

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

gelung kosong () {readencoder (); if (readswitch () == 1) {Serial.println ("Tukar = 1"); }}

int readencoder () {

mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// kenop berputar jika (digitalRead (pinB)! = mrotate) {// beralih A diubah terlebih dahulu -> berputar mengikut arah jam encoderPosCount ++; Serial.println ("diputar mengikut arah jam"); } lain {// suis B diubah terlebih dahulu -> berputar berlawanan arah jarum jam encoderPosCount--; Serial.println ("diputar berlawanan arah jam"); }

Serial.print ("Posisi Pengekod:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; kembali encoderPosCount; } penyusun bacaan bool () {

jika (digitalRead (pinSW)! = 0) {// suis ditekan

sementara (digitalRead (pinSW)! = 0) {} // suis sedang ditekan suis selang = 1; } lain {switchval = 0;} // suis ialah suis pulangan tidak dimampatkan; }

Sekarang anda boleh menghidupkan pengekod dan pemboleh ubah encoderPosCount akan dihitung jika anda berputar mengikut arah jam dan mengira ke bawah jika anda berpusing berlawanan arah jam.

Betul! Cukup dan berguna.

Jangan ragu untuk menukar dan melaksanakan kodnya. Anda boleh melaksanakannya dalam projek anda.

Saya juga akan memuat naik projek LED di mana saya menggunakan pengekod untuk menetapkan kecerahan LED saya.

Disyorkan: