Mundarija:
- Ta'minotlar
- 1 -qadam: umumiy nuqtai
- 2 -qadam: O'chirish sxemasini yig'ish
- 3 -qadam: O'chirish sxemasi qanday ishlaydi
- 4 -qadam: Kod qanday ishlaydi
- 5 -qadam: Qo'shiqni dasturlash
- 6 -qadam: Teskari aloqa
Video: Arduino va doimiy dvigatel yordamida qo'shiqlar yaratish: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Boshqa kuni, Arduino haqidagi ba'zi maqolalarni ko'rib chiqayotganda, men Arduino tomonidan boshqariladigan step motorlaridan qisqa ohanglar yaratish uchun qiziqarli loyihani ko'rdim. Arduino PWM (Pulse Width Modulation) pinidan foydalanib, step motorini musiqiy notalarga mos keladigan ma'lum chastotalarda ishga tushirdi. Qaysi chastotalar qachon ijro etilishini aniqlasangiz, step motoridan aniq ohang eshitiladi.
Ammo, men buni o'zim sinab ko'rganimda, menda qadam motorining ohang yaratish uchun etarlicha tez aylana olmasligi aniqlandi. Buning o'rniga, men Arduino -ga dasturlash va ulanish uchun nisbatan oddiy bo'lgan shahar motorini ishlatardim. Dvigatelni Arduino PWM pinidan osongina haydash uchun oddiy L293D IC ishlatilishi mumkin va Arduino -dagi mahalliy ohang () funktsiyasi kerakli chastotani yaratishi mumkin. Ajablanarlisi shundaki, men Internetda doimiy dvigatelni ishlatadigan misollar yoki loyihalarni topmadim, shuning uchun bu ko'rsatmalarni tuzatish uchun mening javobim. Qani boshladik!
P. S. Menimcha, siz allaqachon Arduino bilan tajribaga egasiz va uning dasturlash tili va uskunalari bilan tanishsiz. Siz qatorlar nima ekanligini, PWM nima ekanligini va undan qanday foydalanishni, kuchlanish va oqim qanday ishlashini bilishingiz kerak. Agar siz Arduino -ni hali yo'q yoki endigina boshlagan bo'lsangiz, xavotir olmang: Arduino -ning rasmiy veb -saytining boshlang'ich sahifasini sinab ko'ring va tayyor bo'lganingizda qaytib keling.:)
Ta'minotlar
- Arduino (men UNO -dan foydalanganman, lekin agar xohlasangiz, boshqa Arduino -dan foydalanishingiz mumkin)
- Oddiy 5V shahar dvigateli, yaxshisi fanat o'rnatilgan bo'lishi mumkin ("O'chirish" bo'limidagi rasmga qarang)
- L293D IC
- Qaysi qo'shiqda eslatmalar bo'lsa, shunchalik ko'p tugmalar bosiladi
- Non paneli
- Jumper simlari
1 -qadam: umumiy nuqtai
Mana, loyiha qanday ishlaydi: Arduino ma'lum chastotada kvadrat to'lqin hosil qiladi, uni L293D ga chiqaradi. L293D dvigatelni Arduino tomonidan berilgan chastotada quvvatlantirish uchun ishlatiladigan tashqi quvvat manbaiga ulangan. Dvigatel motorining milining aylanishiga to'sqinlik qilib, dvigatelning tovushini yoki notasini chiqaradigan chastotada o'chirish va yoqish eshitiladi. Biz Arduino -ni tugmalar bosilganda eslatmalarni ijro etish yoki avtomatik ravishda ijro etish uchun dasturlashimiz mumkin.
2 -qadam: O'chirish sxemasini yig'ish
Zanjirni yig'ish uchun yuqoridagi Fritzing diagrammasiga amal qilish kifoya.
Maslahat: Dvigatelning eslatmasi mil aylanmagan paytda yaxshi eshitiladi. Men dvigatel miliga fanat qo'ydim va dvigatel ishlayotganda fanni ushlab turish uchun yopishqoq lenta ishlatardim (rasmga qarang). Bu milning burilishiga to'sqinlik qildi va aniq, eshitiladigan ohang yaratdi. Dvigateldan toza ohang olish uchun sizga biroz o'zgartirish kerak bo'ladi.
3 -qadam: O'chirish sxemasi qanday ishlaydi
L293D - bu yuqori voltli, o'rni va dvigatellari kabi yuqori oqim qurilmalarini haydash uchun ishlatiladigan IC. Arduino ko'pgina dvigatellarni to'g'ridan -to'g'ri chiqishidan haydab chiqara olmaydi (va dvigatelning orqa EMF -si Arduino -ning sezgir raqamli elektron tizimiga zarar etkazishi mumkin), shuning uchun L293D kabi IC tashqi quvvat manbai bilan DC motorini oson haydash uchun ishlatilishi mumkin. L293D -ga signalni kiritish xuddi shu signalni Arduino -ga zarar etkazmasdan shahar motoriga chiqaradi.
Yuqorida L293D ning ma'lumotlar jadvalidagi pinout/funktsional sxemasi ko'rsatilgan. Biz faqat 1 dvigatelni boshqarayotganimiz uchun (L293D 2 haydash mumkin), bizga ICning faqat bir tomoni kerak. 8 -pin - quvvat, 4 va 5 -pinlar GND, 1 -pin - Arduino -dan PWM chiqishi, 2 va 7 -pinlar esa dvigatel yo'nalishini boshqaradi. Qachonki 2 -pin YUQOR va 7 -chi past bo'lsa, vosita bir tomonga, 2 -pin past va 7 -pin yuqori bo'lsa, vosita boshqa tomonga aylanadi. Dvigatelning qay tomonga burilishi bizni qiziqtirmagani uchun, agar ular bir -biridan farq qilsa, 2 va 7 -gachasi pinlar past yoki baland bo'lishi muhim emas. 3 va 6 -pinlar dvigatelga ulanadi. Agar xohlasangiz, hamma narsani boshqa tomonga ulashingiz mumkin (9-16-pinlar), lekin shuni bilingki, quvvat va PWM pinlari joylarni almashtiradi.
Eslatma: Agar sizda har bir tugma uchun etarli pin bo'lmagan Arduino -dan foydalanayotgan bo'lsangiz, rezistorlar tarmog'idan foydalanib, barcha kalitlarni bitta analog pinga ulashingiz mumkin, masalan, ko'rsatmalarda. Bu qanday ishlaydi, bu loyiha doirasidan tashqarida, lekin agar siz hech qachon R-2R DAC dan foydalanmagan bo'lsangiz, uni tanish deb topishingiz kerak. E'tibor bering, analog pin yordamida kodning katta qismini qayta yozish kerak bo'ladi, chunki Button kutubxonasini analog pinlar bilan ishlatib bo'lmaydi.
4 -qadam: Kod qanday ishlaydi
Barcha tugmalarni boshqarishni osonlashtirish uchun men Madleech tomonidan "Button" nomli kutubxonadan foydalandim. Men birinchi navbatda kutubxonani kiritdim. Keyingi, 8-22-qatorlarda men Twinkle, Twinkle, Little Star (qo'shiq namunasi) chalish uchun zarur bo'lgan yozuvlar chastotasini, L293D haydash uchun ishlatiladigan pinni va tugmalarni aniqladim.
O'rnatish funktsiyasida men Serialni, tugmalarni ishga tushirdim va L293D uchun haydovchi pinini chiqish rejimiga qo'ydim.
Nihoyat, asosiy tsiklda men tugma bosilganligini tekshirdim. Agar shunday bo'lsa, Arduino mos yozuvni o'ynaydi va eslatma nomini Serial monitorga bosib chiqaradi (sizning yozuvlar panelida qaysi yozuvlar borligini bilish uchun foydalidir). Agar eslatma chiqarilsa, arduino noTone () bilan har qanday tovushni to'xtatadi.
Afsuski, kutubxonaning tuzilishi tufayli men har bir yozuv uchun 2 ta shart ishlatishdan ko'ra, tugma bosilganmi yoki yo'qmi, tekshirish usulini topa olmadim. Bu kodning yana bir kamchiliklari shundaki, agar siz bir vaqtning o'zida ikkita tugmani bosib, keyin bittasini qo'yib yuborsangiz, ikkala eslatma ham to'xtatiladi, chunki noTone () qaysi yozuvni qo'zg'atganidan qat'i nazar, har qanday eslatmani yaratishni to'xtatadi.
5 -qadam: Qo'shiqni dasturlash
Eslatmalarni ijro etish uchun tugmachalarni ishlatishning o'rniga, siz Arduino -ni avtomatik ravishda siz uchun musiqani ijro etishga dasturlashingiz mumkin. Bu motorda Twinkle, Twinkle, Little Star o'ynaydigan birinchi eskizning o'zgartirilgan versiyasi. Eskizning birinchi qismi bir xil - yozuv chastotalari va ohangni belgilaydi. Biz yangi qismga bpm = "100" da etib boramiz. Men daqiqada urish tezligini o'rnatdim (bpm), keyin bpm ga teng bo'lgan millisekundlar sonini aniqlash uchun matematikadan foydalaning. Buning uchun men o'lchovli tahlil deb nomlangan texnikani qo'lladim (xavotir olmang - bu unchalik qiyin emas). Agar siz o'rta maktabda kimyo kursini o'tgan bo'lsangiz, siz birliklar o'rtasida konvertatsiya qilish uchun aniq o'lchovli tahlildan foydalangansiz. Floats () aniqlik uchun oxirigacha tenglamadagi hech narsa yaxlitlanmasligini ta'minlash uchun mavjud.
Bizda ms/beat soni bo'lganidan so'ng, men musiqada topilgan har xil nota davomiyligining millisekundlik qiymatlarini topish uchun uni to'g'ri taqsimladim yoki ko'paytirdim. Keyin men har bir eslatmani xronologik tartibda, ikkinchisini esa har bir yozuvning davomiyligi bilan tuzaman. Har bir notaning indeksi uning davomiyligi indeksiga to'g'ri kelishi juda muhim, aks holda sizning ohangingiz o'chadi. Men misol sifatida Twinkle, Twinkle, Little Star uchun eslatmalarni qo'ydim, lekin siz xohlagan qo'shiqni yoki yozuvlar ketma -ketligini sinab ko'rishingiz mumkin.
Haqiqiy sehr loop funktsiyasida sodir bo'ladi. Har bir eslatma uchun men beat_values qatorida ko'rsatilgan vaqt davomida ohangni o'ynayman. Bu erda ohang ijro etilmasligi uchun kechiktirishni ishlatishning o'rniga, millis () funktsiyasi bilan dastur boshlangan vaqtni yozdim va uni hozirgi vaqtdan olib tashladim. Vaqt men beat_values qatorida eslatmani ko'rsatgan vaqtdan oshib ketganda, men eslatmani to'xtataman. For tsiklidan keyin kechikish, eslatmalar orasidagi bo'shliqni qo'shib, bir xil chastotali keyingi yozuvlar bir -biriga qo'shilmasligini ta'minlaydi.
6 -qadam: Teskari aloqa
Bu loyiha uchun shunday. Agar siz tushunmaydigan biror narsa bo'lsa yoki takliflaringiz bo'lsa, iltimos, men bilan bog'laning. Bu mening birinchi ko'rsatmalari bo'lgani uchun, men ushbu tarkibni yaxshilash bo'yicha sharhlar va takliflarni juda qadrlayman. Keyingi safar ko'rishguncha!
Tavsiya:
Bosqichli dvigatel, mikrokontroldorsiz qadamli dvigatel!: 6 qadam
Bosqichli dvigatel, mikrokontroldersiz boshqariladigan qadamli dvigatel!: Tezkor yo'riqnomada biz qadam dvigatelidan foydalanib, oddiy qadamli dvigatelni boshqaramiz. Ushbu loyiha murakkab sxemani yoki mikrokontrollerni talab qilmaydi. Shunday qilib, ko'p vaqt sarflamasdan, boshlaylik
Quvvat asboblari uchun yugurish yo'lakchali doimiy dvigatel va PWM tezlikni boshqaruvchisidan foydalaning: 13 qadam (rasmlar bilan)
Quvvat asboblari uchun yugurish yo'lakchali DC dvigateli va PWM tezlikni boshqaruvchisidan foydalaning: Metall kesish frezalari va tornalari, burg'ulash dastgohlari, arra, zımpara va boshqalar kabi elektr asboblari. Tasodifan, ko'pchilik yugurish yo'laklari 80-260 VDC dvigatelidan foydalanadi
Arduino bilan cho'tkasi bo'lmagan doimiy dvigatel (BLDC): 4 qadam (rasmlar bilan)
Arduino bilan cho'tkasi bo'lmagan doimiy dvigatelni (BLDC) o'zaro bog'lash: Bu Arduino yordamida cho'tkasi bo'lmagan shahar motorini qanday ulash va ishlatish haqida qo'llanma. Agar sizda biron bir savol yoki sharh bo'lsa, iltimos, sharhlar yoki pochta orqali rautmithil [at] gmail [dot] com ga yozing. Siz men bilan twitterda @mithilraut bilan bog'lanishingiz mumkin
Flyback transformatorida yoki karnayda PWM uchun ADC yordamida Arduino bilan qo'shiqlar ijro etish: 4 qadam
Flyback transformatorida yoki karnayda PWM uchun ADC yordamida Arduino bilan qo'shiqlar ijro eting: Salom bolalar, bu mening boshqa o'rgatuvchi qismim (bu juda qiyin edi), asosan, men ushbu loyihada Arduino -dagi ADC va TIMER -ni ishlatganman. Ovoz signalini PWM signaliga aylantiring, bu avvalgi ko'rsatmaga qaraganda ancha oson
1A dan 40A gacha 1000 Vt gacha bo'lgan doimiy dvigatel uchun joriy BOOST konvertori: 3 qadam
1000 Vtgacha bo'lgan 1A dan 40A gacha bo'lgan joriy BOOST konverteri: Salom! Bu videoda siz tranzistorlar va markaziy transformatorli 1000 Vt va 40 Ampergacha bo'lgan yuqori amperli DC dvigatellari uchun oqim kuchaytirgichini qanday qilishni o'rganasiz. chiqishdagi oqim juda yuqori, lekin kuchlanish r bo'ladi