Isi kandungan:
Video: Rotary Encoder - Memahami dan Menggunakannya (Arduino / MController lain): 3 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
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
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
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:
Cara Menyiapkan Raspberry Pi dan Mula Menggunakannya: 4 Langkah
Cara Menyiapkan Pi Raspberry dan Mula Menggunakannya: Untuk pembaca masa depan, kita berada pada tahun 2020. Tahun di mana, jika anda bernasib baik kerana sihat dan tidak dijangkiti oleh Covid-19, anda, tiba-tiba , mendapat lebih banyak masa lapang daripada yang anda bayangkan. Jadi bagaimana saya boleh menyibukkan diri dengan cara yang tidak terlalu bodoh? Oh ya
"Robot Kit" ringkas untuk Kelab, Ruang Makmal Guru dan lain-lain: 18 Langkah
"Robot Kit" ringkas untuk Kelab, Ruang Makmal Guru dan lain-lain: Ideanya adalah untuk membina sebuah kit yang kecil namun boleh dikembangkan untuk ahli-ahli kami " Pertubuhan Seni Robotik TN Tengah ". Kami merancang bengkel di sekitar kit, terutamanya untuk pertandingan, seperti garis berikut dan perjalanan cepat. Kami telah menggabungkan Arduino
Flasher LED 31 Tahun untuk Rumah Api Model dan lain-lain: 11 Langkah (dengan Gambar)
Lampu LED 31 Tahun untuk Model Mercusuar Dll.: Mercusuar model mempunyai daya tarikan yang luas dan banyak pemilik mesti berfikir betapa senangnya jika, bukannya hanya duduk di sana, model itu sebenarnya melintas. Masalahnya ialah model rumah api cenderung kecil dengan sedikit ruang untuk bateri dan
Mod 3.3V untuk Sensor Ultrasonik (sediakan HC-SR04 untuk Logik 3.3V pada ESP32 / ESP8266, Foton Partikel, dan lain-lain): 4 Langkah
Mod 3.3V untuk Sensor Ultrasonik (sediakan HC-SR04 untuk Logik 3.3V pada ESP32 / ESP8266, Foton Partikel, dan lain-lain): TL; DR: Pada sensor, potong jejak ke pin Echo, kemudian sambungkan semula dengan menggunakan pembahagi voltan (Jejak gema - > 2.7kΩ - > Pin gema - > 4.7kΩ - > GND). Edit: Terdapat beberapa perbahasan mengenai sama ada ESP8266 sebenarnya bertoleransi 5V pada GPIO dalam
Cara Menyimpan Pemain MP3 Basah, Telefon Bimbit, Kamera, PDA, dan lain-lain: 8 Langkah
Cara Menyimpan Pemain MP3 yang Basah, Telefon Bimbit, Kamera, PDA, dan lain-lain: ***** SEBELUM ANDA MELAKUKAN APA SAJA, JANGAN MENGHIDUPKAN PERANGKAT ANDA ***** Saya akan mengetahuinya sebentar lagi, tetapi jika anda melakukannya, anda hanya menurunkan peluang menyimpannya. Keluarkan bateri. Sebilangan besar daripada kita berjaya melakukannya dengan satu cara atau yang lain. Anda lupa periksa je