Mundarija:
- 1 -qadam: O'chirish diagrammasi
- 2 -qadam: qismlar ro'yxati
- 3 -qadam: nazariya
- 4 -qadam: dasturiy ta'minot
Video: Oddiy aylanadigan dekoder: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Bu yo'riqnomada Arduino Uno R3 yordamida ketma -ket aylanadigan kodlovchi kodini ochishning oddiy usuli tasvirlangan.
Yilni dasturiy ta'minot dasturlari o'tish sonini hisoblash, kontaktlarning sakrashini yo'q qilish va aylanish yo'nalishini aniqlash uchun ishlatiladi. Qo'shimcha komponentlar va qidirish jadvallari talab qilinmaydi.
Kodning uzilish va uzilishsiz versiyalari taqdim etiladi.
Kodning uzilish versiyasi faqat bitta uzilish pinini talab qiladi.
Rasmlar:
- Ochilish fotosurati yig'ilgan enkoderni ko'rsatadi.
- Skrinshotda uzilish versiyasining kodi va enkoder milining soat yo'nalishi bo'yicha va teskari yo'nalishda aylantirilganda hisobi ko'rsatiladi.
- Videoda tez aylanish paytida hisoblar ko'rsatilgan.
1 -qadam: O'chirish diagrammasi
Enkoderning ulanish sxemasi shakl 1da ko'rsatilgan.
Jumper simlari to'g'ridan -to'g'ri kodlovchi pinlariga lehimlanadi.
Agar hisoblash yo'nalishi teskari bo'lsa, ikkita ko'k simni almashtiring.
2 -qadam: qismlar ro'yxati
Quyidagi qismlar https://www.aliexpress.com/ saytidan olingan.
- USB kabel bilan faqat 1 Arduino UNO R3.
- 1 faqat kalitli ketma -ket aylanadigan kodlovchi (EC11 yoki unga teng).
- Milga mos keladigan 1 ta tugma.
- 3 faqat Arduino erkak-erkak jumper simlari.
3 -qadam: nazariya
Ketma-ket aylanadigan kodlovchi ikkita kvadrat to'lqinni hosil qiladi, ularning har biri 1-rasmda ko'rsatilgandek 90 gradusga siljiydi.
Kontakt A va B kontaktidagi mantiqiy naqshlar mil 1 dan 6 gacha pozitsiyalar bo'ylab soat yo'nalishi bo'yicha (CW) va soat sohasi farqli o'laroq (CCW) aylantirilganda farq qiladi.
Burilish yo'nalishini aniqlashning keng tarqalgan usullari quyidagilardan iborat:
- apparat
- egizak uzilishlar
- naqsh qidirish jadvallari
Ushbu loyiha qidiruv jadvallarini talab qilmaydigan dasturiy usuldan foydalanadi. [1]
Yo'nalish
A Kontakt va B kontaktlarining chiqish naqshlarini ko'rib chiqish o'rniga, A kontaktiga e'tibor qaratsak.
Agar biz har bir A kontaktli o'tishidan keyin B kontaktini tanlasak, shuni ta'kidlaymiz:
- A kontakt va B kontaktlari CW kodlovchi aylantirilganda qarama -qarshi mantiqiy holatlarga ega
- A kodi va B kontaktining kodi CCW aylantirilganda bir xil mantiqiy holatga ega
Haqiqiy kod:
// ----- O'tishlarni hisoblash
CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); if (CurrentStateA == CurrentStateB) Hisob ++; if (CurrentStateA! = CurrentStateB) Count--; LastStateA = CurrentStateA; }
Bu usul quyidagi afzalliklarga ega:
- qidirish jadvallari shart emas
- faqat bitta uzilish liniyasi talab qilinadi
Chiqib ketish
Barcha mexanik kodlovchilar "kontaktdan sakrash" dan aziyat chekishadi.
Agar kontaktlarning zanglashiga olib kelishi aniq bo'lmasa, uning mantiqiy holati yuqori kontaktdan pastgacha o'zgaradi. Bu noto'g'ri hisob -kitoblarga olib keladi.
Kontaktning sakrashini bostirishning bir usuli - har bir kontaktli kontaktga kichik kondansatör qo'shish. Kondensator va u bilan bog'liq tortishish qarshiligi yuqori chastotalarni samarali qisqartiradigan va kalit kuchlanishining oqilona ko'tarilishiga/tushishiga imkon beruvchi integratorni hosil qiladi.
Ushbu yondashuvning salbiy tomoni shundaki, agar kodlovchi o'qi tez aylantirilsa, o'tishni o'tkazib yuborish mumkin.
Dasturiy ta'minotni o'chirish
Bu usulda nolga o'rnatilgan ikkita hisoblagich (ochiq, yopiq) ishlatiladi. [2]
A kontaktida o'tish aniqlangandan so'ng:
- Kontakt A bilan doimiy ravishda so'rov o'tkazing.
- Ochiq hisoblagichni ko'paytiring va A kontakti yuqori bo'lsa, Yopiq hisoblagichni qayta o'rnating.
- Yopiq hisoblagichni oshiring va "A" kontakti past bo'lsa, "ochiq" hisoblagichni qayta o'rnating.
- Hisoblagichlardan biri oldindan belgilangan songa yetganda, pastadirdan chiqing. Biz har qanday kontaktdan keyin barqaror holatni samarali qidiramiz.
Haqiqiy kod:
// ----- Kontaktni o'chirish A
while (1) {if (digitalRead (ContactA)) {// ----- ContactA ochiq Yopiq = 0; // Bo'sh qarama -qarshi integrator Open ++; // Agar integratsiya qilish (Ochish> MaxCount) HIGH qaytarilsa; } else {// ----- ContactA yopiq ochiq = 0; // Bo'sh qarama -qarshi integrator Yopiq ++; // Integratsiya qilish, agar (Yopiq> MaxCount) LOW past bo'lsa; }}
Kontakt B va Kontakt B o'tishlari bir -biriga to'g'ri kelmagani uchun, B kontaktidan voz kechishning hojati yo'q.
Hisoblash
Mexanik "ushlab turish" sizning hisobingizni ikki baravar oshiradi, chunki bosish o'rtasida ikkita hisob qayd etiladi (1 -rasmga qarang).
"Qo'lga olinmaganlar" sonini quyida ko'rsatilgan modul 2 arifmetikasi yordamida aniqlash mumkin.
Haqiqiy kod:
// ----- "cheklanganlar" ni hisoblang
if (Hisob % 2 == 0) {Serial.print ("Hisoblash:"); Serial.println (Count / 2); }
Manbalar
Qo'shimcha ma'lumotni quyidagi manzilda topishingiz mumkin.
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
4 -qadam: dasturiy ta'minot
Bu loyiha Ardino Uno R3 IDE (integratsiyalashgan ishlab chiqish muhiti) ning so'nggi versiyasini talab qiladi, uni https://www.arduino.cc/en/main/software dan olish mumkin.
Quyidagi ikkita Arduino eskizini yuklab oling (ilova qilingan)
- rotary_encoder_1.ino (ovoz berish versiyasi)
- rotary_encoder_2.no (uzilish versiyasi)
O'zingiz yoqtirgan versiyani ikki marta bosing va ekrandagi ko'rsatmalarga amal qiling.
Xursand bo'ling…
Boshqa ko'rsatmalarni ko'rish uchun shu erni bosing.
Tavsiya:
Arduino va aylanadigan kodlovchi bilan taymer: 5 qadam
Arduino va Rotary Enkoder bilan taymer: Taymer - bu sanoat va maishiy ishlarda tez -tez ishlatiladigan asbob. Bu yig'ilish arzon va oson, shuningdek, ehtiyojlarga qarab tanlangan dasturni yuklay oladi. Men yozgan bir nechta dasturlar bor, Ardui uchun
Doimiy aylanadigan quyosh dvigateli: 5 qadam (rasmlar bilan)
Doimiy aylanayotgan quyosh dvigateli: kim doimiy ravishda harakatlanuvchi qurilma yasashni orzu qilmaydi? To'xtovsiz yugurish, kechayu kunduz, yoz va qish, bulutli osmon va ichki yorug'lik sharoitlari. Bu pulsli motor juda uzoq vaqt ishlaydi, ehtimol umrimdan ham uzunroq
Servo dvigatel va tezlikni boshqarish yordamida aylanadigan fanat: 6 qadam
Servo dvigatel va tezlikni boshqarish yordamida aylanadigan fanat: Ushbu qo'llanmada biz fanni servo dvigatel, potansiyometr, arduino va Visuino yordamida sozlanishi tezlik bilan aylantirishni o'rganamiz. Videoni tomosha qiling
Oddiy oddiy ovoz kuchaytirgichi: 5 qadam
Oddiy oddiy ovoz kuchaytirgichi: Musiqa hayotiy ahamiyatga ega bo'lishi mumkin. Bu qanday his -tuyg'ularni aniqlash, men shaxsan tonna musiqa eshitaman. Bu mening energiyamning siridir. Hatto, sizlar uchun postlar yozayotganda, men musiqaga e'tibor beraman. Shunday qilib, keling, Tran bilan asosiy kuchaytirgich mavzusiga o'tamiz
Ipod yoki boshqa Mp3 pleerni oddiy va baland ovozli kuchaytirgichsiz oddiy uy dinamiklariga ulang !: 4 qadam
Ipod yoki boshqa Mp3 pleerni oddiy va baland ovozli kuchaytirgichsiz oddiy uy ma'ruzachilariga ulang !: Sizda qo'shimcha stereo karnaylar bormi, ular chalg'igan stereolari bilan kelganmi yoki sizda hech qanday sabab yo'qmi? Bu yo'riqnomada men ularni qanday qilib har qanday Mp3 pleerga yoki ovoz porti bo'lgan har qanday qurilmaga ulash mumkinligini ko'rsataman