Isi kandungan:
Video: Decoder Rotary Mudah: 4 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Instruksional ini menerangkan kaedah mudah untuk menyahkod pengekod putar berurutan menggunakan Arduino Uno R3.
Rutin perisian padat digunakan untuk menghitung jumlah peralihan, menghilangkan kenalan kenalan, dan menentukan arah putaran. Komponen tambahan dan jadual pencarian tidak diperlukan.
Versi kod gangguan dan tanpa gangguan disediakan.
Versi interupsi kod hanya memerlukan pin interrupt tunggal.
Gambar:
- Foto pembukaan menunjukkan pengekod yang dipasang.
- Tangkapan skrin menunjukkan kod untuk versi gangguan dan kiraan ketika batang pengekod diputar mengikut arah jam dan berlawanan arah jam.
- Video menunjukkan kiraan semasa putaran pantas.
Langkah 1: Diagram Litar
Gambar rajah pendawaian pengekod ditunjukkan dalam rajah 1.
Wayar pelompat dipateri terus ke pin pengekod.
Tukar kedua wayar biru jika arah kiraan terbalik.
Langkah 2: Senarai Bahagian
Bahagian berikut diperoleh dari
- 1 sahaja Arduino UNO R3 dengan Kabel USB.
- 1 pengekod putar berurutan sahaja (EC11 atau setara) dengan suis.
- 1 butang sahaja yang sesuai dengan aci.
- 3 wayar jumper lelaki-ke-lelaki Arduino sahaja.
Langkah 3: Teori
Pengekod berputar berurutan menghasilkan dua gelombang persegi yang masing-masing dipindahkan oleh 90 darjah seperti yang ditunjukkan dalam Rajah 1.
Corak logik pada Contact A dan Contact B berbeza apabila poros diputar mengikut arah jam (CW) dan lawan arah jam (CCW) melalui kedudukan 1 hingga 6.
Kaedah umum untuk menentukan arah putaran termasuk:
- perkakasan
- berkembar mengganggu
- jadual carian corak
Projek ini menggunakan kaedah perisian yang tidak memerlukan jadual carian. [1]
Arah
Daripada melihat corak output dari Contact A dan Contact B mari fokus pada Contact A.
Sekiranya kita mencuba Contact B selepas setiap peralihan Contact A, kita perhatikan bahawa:
- Kenalan A dan Kenalan B mempunyai keadaan logik yang berlawanan apabila pengekod diputar CW
- Kenalan A dan Kenalan B mempunyai keadaan logik yang sama apabila pengekod diputar CCW
Kod sebenar:
// ----- Hitung peralihan
CurrentStateA = stateContactA (); jika (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); jika (CurrentStateA == CurrentStateB) Hitung ++; jika (CurrentStateA! = CurrentStateB) Hitung--; LastStateA = CurrentStateA; }
Kaedah ini menawarkan kelebihan berikut:
- jadual carian tidak diperlukan
- hanya satu talian gangguan diperlukan
Tolak
Semua pengekod mekanikal mengalami “contact bounce”.
Sekiranya kenalan suis tidak membuat / pecah dengan bersih keadaan logiknya akan bergegas dengan pantas dari TINGGI ke RENDAH sehingga kontak suis berhenti. Ini menghasilkan pengiraan yang salah.
Salah satu kaedah untuk menekan lantunan kenalan adalah dengan menambahkan kapasitor kecil di setiap kenalan suis. Kapasitor dan perintang pull-up yang bersangkutan membentuk integrator yang memendekkan frekuensi tinggi dengan berkesan dan membolehkan voltan suis naik / turun dengan anggun.
Kelemahan pendekatan ini adalah bahawa peralihan mungkin terlepas jika poros pengekod diputar dengan cepat.
Melengkapkan Perisian
Kaedah ini menggunakan dua pembilang (Terbuka, Tertutup) yang telah ditetapkan ke sifar. [2]
Setelah peralihan dikesan pada Kenalan A:
- Pungutan suara secara terus menerus Hubungi A.
- Tingkatkan pembuka Buka, dan tetapkan semula penghitung Tertutup, setiap kali Kenalan A TINGGI.
- Tingkatkan penghitung Tertutup, dan tetapkan semula pembuka Buka, setiap kali Kenalan A RENDAH.
- Keluar dari gelung apabila salah satu pembilang mencapai kiraan yang telah ditentukan. Kami secara efektif mencari tempoh keadaan stabil berikutan kenalan yang melambung.
Kod sebenar:
// ----- Menolak Kenalan A
sementara (1) {if (digitalRead (ContactA)) {// ----- ContactA Terbuka Ditutup = 0; // Integrator bertentangan kosong Buka ++; // Integrasikan jika (Open> MaxCount) mengembalikan TINGGI; } lain {// ----- ContactA Ditutup Terbuka = 0; // Integrator bertentangan kosong Ditutup ++; // Integrasikan jika (Closed> MaxCount) kembali RENDAH; }}
Tidak perlu untuk menolak Kenalan B kerana peralihan Kenalan A dan Kenalan B tidak bertepatan.
Mengira
“Penahanan” mekanikal berkesan menggandakan jumlah anda kerana dua pertuduhan didaftarkan antara klik (lihat rajah 1).
Bilangan "penahanan" dapat ditentukan menggunakan aritmetik modulo 2 seperti yang ditunjukkan di bawah.
Kod sebenar:
// ----- Hitung "tahanan"
jika (Kira% 2 == 0) {Serial.print ("Count:"); Serial.println (Kiraan / 2); }
Rujukan
Maklumat lebih lanjut boleh didapati di:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
Langkah 4: Perisian
Projek ini memerlukan versi terbaru dari Ardino Uno R3 IDE (persekitaran pembangunan bersepadu) yang tersedia dari
Muat turun setiap dua lakaran Arduino berikut (dilampirkan)
- rotary_encoder_1.ino (versi pengundian)
- rotary_encoder_2.no (versi gangguan)
Klik dua kali pada versi pilihan anda dan ikuti arahan di skrin.
Selamat menikmati …
Klik di sini untuk melihat arahan saya yang lain.
Disyorkan:
Mudah Mudah Mengubah Warna Mengubah Lampu Kiub Rubik Tanpa Wayar: 10 Langkah (dengan Gambar)
Mudah Mudah Mengubah Warna Mengubah Lampu Kubus Rubik Tanpa Wayar: Hari ini kita akan membina lampu Rubik Cube-esque yang hebat ini yang berubah warna berdasarkan sisi mana yang naik. Kubus ini menggunakan bateri LiPo kecil, yang dicas oleh kabel mikro-usb standard, dan, dalam ujian saya, jangka hayat bateri selama beberapa hari. Ini
Cara Cepat dan Mudah untuk Mengubah Skrin Kunci Anda dalam 6 Langkah Mudah (Windows 8-10): 7 Langkah
Cara Cepat dan Mudah untuk Mengubah Skrin Kunci Anda dalam 6 Langkah Mudah (Windows 8-10): Ingin menukar sesuatu pada komputer riba atau PC anda? Mahukan perubahan dalam suasana anda? Ikuti langkah cepat dan mudah ini untuk berjaya memperibadikan skrin kunci komputer anda
DIY MusiLED, LED Diselaraskan Muzik Dengan Aplikasi Windows & Linux Satu-klik (32-bit & 64-bit). Mudah Dicipta, Mudah Digunakan, Mudah Dihantar: 3 Langkah
DIY MusiLED, LED Diselaraskan Muzik Dengan Aplikasi Windows & Linux Satu-klik (32-bit & 64-bit). Mudah Dicipta, Mudah Digunakan, Mudah Dihantar: Projek ini akan membantu anda menyambungkan 18 LED (6 Merah + 6 Biru + 6 Kuning) ke Papan Arduino anda dan menganalisis isyarat masa nyata Kad Suara komputer anda dan menyampaikannya kepada LED untuk menyalakannya mengikut kesan rentak (Snare, High Hat, Kick)
Reka Bentuk PCB Dengan Langkah Mudah dan Mudah: 30 Langkah (dengan Gambar)
Reka Bentuk PCB Dengan Langkah Mudah dan Mudah: HELLO FRIENDS Tutorialnya sangat berguna dan mudah bagi mereka yang ingin belajar reka bentuk PCB mari kita mulakan
Guitar Amp Tilt Stand - Mudah Seperti Log Lincoln - Kecil, Mudah Alih, Mudah, Stabil, Murah atau Percuma: 9 Langkah
Guitar Amp Tilt Stand - Mudah Seperti Log Lincoln - Kecil, Mudah Alih, Sederhana, Stabil, Murah atau Percuma.: Gitar amp kecondongan amp - semudah log lincoln. kecil, mudah alih, sederhana, stabil, murah atau percuma menggunakan papan lapis sekerap. Bagus untuk kombo amp, reka bentuk yang lebih besar boleh digunakan untuk punggung terbuka