Мазмуну:
- Жабдуулар
- 1 -кадам: Обзор
- 2 -кадам: Районду чогултуу
- 3 -кадам: Район кантип иштейт
- 4 -кадам: Кодекс кантип иштейт
- 5 -кадам: Ырды программалоо
- 6 -кадам: Пикир билдирүү
Video: Arduino жана DC мотору менен ыр жасоо: 6 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Башка күнү, Arduino жөнүндө кээ бир макалаларды жылдырып жатып, мен кыска мелодияларды түзүү үчүн Arduino башкарган тепкич моторлорун колдонгон кызыктуу долбоорду байкадым. Arduino тепкич моторун музыкалык ноталарга туура келген белгилүү бир жыштыкта иштетүү үчүн PWM (Pulse Width Modulation) пинин колдонгон. Кайсы жыштыктар ойногонун убакыт боюнча, кадам моторунан ачык обон угулат.
Бирок, мен өзүмдү сынап көргөндө, мендеги тепкич мотору обон жаратуу үчүн бат айланбай турганын байкадым. Анын ордуна, мен Arduinoго программалоо жана туташуу үчүн салыштырмалуу жөнөкөй DC моторун колдондум. Жалпы L293D IC моторду Arduino PWM пининен оңой эле айдап кетүү үчүн колдонулушу мүмкүн жана Arduinoдогу жергиликтүү тон () функциясы керектүү жыштыкты түзө алат. Мени таң калтырганы, мен онлайн режиминде DC моторун колдонгон эч кандай мисалдарды же долбоорлорду тапкан жокмун, андыктан бул Нускамалар аны оңдоого менин жообум. Баштайлы!
P. S. Менимче, сиз буга чейин Arduino менен бир аз тажрыйбага ээ жана анын программалоо тили жана жабдыктары менен таанышсыз. Сиз массивдер эмне экенин, PWM деген эмне жана аны кантип колдонуу керектигин жана чыңалуу менен токтун кантип иштээрин билишиңиз керек. Эгерде сиз азырынча жок болсоңуз же Arduino -ны жаңы эле баштасаңыз, кабатыр болбоңуз: бул Arduino расмий веб -сайтынан баштоо барагын байкап көрүңүз жана качан даяр болсоңуз, ошол жерге кайтып келиңиз.:)
Жабдуулар
- Ардуино (Мен UNO колдонгом, бирок эгер кааласаң, башка Arduino колдоно аласың)
- Стандарттык 5V DC мотору, желдеткичи тиркелгени жакшы ("схеманы чогултуудагы" сүрөттү караңыз)
- L293D IC
- Сиз ойногуңуз келген ырдагы ноталар сыяктуу көптөгөн баскычтар
- Breadboard
- Jumper Wires
1 -кадам: Обзор
Бул жерде долбоор кантип иштейт: Arduino берилген жыштыкта квадрат толкунун пайда кылат, аны L293Dге чыгарат. L293D моторду Arduino берген жыштыкта иштетүү үчүн колдонгон тышкы электр булагына туташтырылган. DC кыймылдаткычынын огунун айлануусун алдын алуу менен, мотор үнүн же нотасын чыгаруучу жыштыкта өчүп, күйүп жатканын угууга болот. Биз Arduinoго баскычтар басылганда жазууларды ойнотууну же аларды автоматтык түрдө ойнотууну программалай алабыз.
2 -кадам: Районду чогултуу
Районду чогултуу үчүн, жөн гана Fritzing диаграммасын аткарыңыз.
Ишара: Мотордон келген нотаны билик айланбаганда угуу жакшы. Мен моторумдун валына желдеткич коюп, желдеткичти кыймылда кармап туруу үчүн бир нече скотч менен колдондум (сүрөттү караңыз). Бул валдын бурулушуна тоскоол болуп, так, угулуучу үндү чыгарды. Моторуңуздун таза үнүн алуу үчүн бир аз оңдоп -түзөөгө туура келиши мүмкүн.
3 -кадам: Район кантип иштейт
L293D салыштырмалуу жогорку чыңалуу, реле жана мотор сыяктуу жогорку агымдагы түзмөктөрдү айдоо үчүн колдонулган IC. Arduino көпчүлүк моторлорду түздөн -түз чыгара албайт (жана мотордун арткы EMFи Arduino сезимтал санариптик схемасына зыян келтириши мүмкүн), андыктан L293D сыяктуу IC тышкы электр энергиясы менен DC моторун оңой айдоо үчүн колдонулушу мүмкүн. L293Dге сигнал киргизүү Arduinoго зыян келтирбестен, ошол эле сигналды DC моторуна чыгарат.
Жогоруда L293Dдин маалымат барагынан пинут/функционалдык схемасы келтирилген. Биз 1 моторду гана айдап жүргөндүктөн (L293D 2ди айдай алат), бизге ICдин бир жагы гана керек. Pin 8 - бул кубат, pin 4 жана 5 - GND, pin 1 - PWM чыгаруу Arduino, жана пин 2 жана 7 мотордун багытын көзөмөлдөйт. 2 -пин жогору жана 7 -пин төмөн болсо, мотор бир тарапка, ал эми 2 -пин төмөн жана 7 -пин жогору болгондо, мотор башка тарапка айланат. Мотордун кандай жол менен айланганы бизге маани бербегендиктен, эгер алар бири -биринен айырмаланып турса, 2 жана 7 -төөнөгүчтөр ТӨМӨН же ЖОК экени маанилүү эмес. 3 жана 6 -пиндер моторго туташат. Кааласаңыз, бардыгын башка тарапка туташтырсаңыз болот (9-16-казыктар), бирок кубат жана PWM казыктары орундарды алмаштырарын билиңиз.
Эскертүү: Эгерде сиз Ардуинону колдонуп жатсаңыз, анда ар бир баскычка төөнөгүчтөрү жок болсо, анда сиз бардык өчүргүчтөрдү ушул аналогдук пинге туташтыруу үчүн резисторлордун тармагын колдоно аласыз, мисалы. Бул кантип иштээри бул долбоордун алкагынан тышкары, бирок эгер сиз качандыр бир R-2R DACти колдонуп жүргөн болсоңуз, анда аны тааныш болушуңуз керек. Көңүл буруңуз, аналогдук пин колдонуу коддун чоң бөлүктөрүн кайра жазууну талап кылат, анткени Button китепканасы аналог казыктар менен колдонулбайт.
4 -кадам: Кодекс кантип иштейт
Бардык баскычтарды башкарууну жеңилдетүү үчүн, мен Madleech "Button" аттуу китепкананы колдондум. Мен биринчи кезекте китепкананы киргиздим. Кийинки, 8-22-саптарда мен Twinkle, Twinkle, Little Star (мисал ыр) ойноо үчүн керектүү ноталардын жыштыгын, L293D айдоо үчүн колдоно турган пинимди жана баскычтарды аныктадым.
Орнотуу функциясында мен Сериалды, баскычтарды баштап, L293D үчүн драйвердин пинин чыгаруу режимине койдум.
Акыры, негизги укурукта мен баскыч басылганын текшердим. Эгер бар болсо, Arduino тиешелүү нотаны ойнойт жана нота атын Сериялык Мониторго басып чыгарат (сиздин нотаңызда кайсы ноталар бар экенин билүү үчүн пайдалуу). Эгерде нота чыгарылса, arduino noTone () менен каалаган үндү токтотот.
Тилекке каршы, китепкананын структуралашкандыгынан улам, бир нотага 2 шарттын колдонулушуна караганда, баскыч басылганын же анча -мынча түрдө чыгарылганын текшерүүнүн жолун таба алган жокмун. Бул коддун дагы бир кемчилиги, эгер сиз бир эле убакта эки баскычты басып, анан бирин коё турган болсоңуз, анда эки нота да токтотулат, анткени noTone () кайсы нота аны козгогонуна карабай, кандайдыр бир ноталардын түзүлүшүн токтотот.
5 -кадам: Ырды программалоо
Жазууларды ойнотуу үчүн баскычтарды колдонуунун ордуна, Arduino программасын сизге автоматтык түрдө обон ойнотууга программаласа болот. Бул жерде мотордо Twinkle, Twinkle, Little Star ойногон биринчи эскиздин өзгөртүлгөн версиясы. Эскиздин биринчи бөлүгү бирдей - нота жыштыктарын жана тонПинди аныктайт. Биз bpm = "100" боюнча жаңы бөлүккө жетебиз. Мен мүнөтүнө соккуларды (bpm) койдум, андан кийин bpm барабар болгон миллисекунддун санын аныктоо үчүн математиканы колдоном. Бул үчүн мен өлчөмдүү анализ деп аталган ыкманы колдондум (кабатыр болбоңуз - бул анча кыйын эмес). Эгерде сиз качандыр бир кезде орто мектептин химия курсун алган болсоңуз, анда бирдиктерди алмаштыруу үчүн сөзсүз түрдө өлчөмдүү анализди колдонгонсуз. Теңдемедеги эч нерсе тактыктын аягына чейин тегеректелбешин камсыз кылуу үчүн floats () бар.
Бизде ms/beat саны болгондон кийин, мен музыкада кездешкен ар кандай ноталардын узактыгынын миллисекунддук маанилерин табуу үчүн аны тиешелүү түрдө бөлдүм же көбөйттүм. Мен андан кийин ар бир нотанын массивин хронологиялык тартипте, экинчисин ар бир нотанын узактыгы менен жасайм. Ар бир нотанын индекси анын узактыгынын индекси менен дал келиши өтө маанилүү, антпесе сиздин обонуңуз өчүп калат. Мен мисал катары Twinkle, Twinkle, Little Star үчүн ноталарды койдум, бирок сиз каалаган ырды же ноталардын ырааттуулугун сынап көрсөңүз болот.
Чыныгы сыйкырчылык цикл функциясында болот. Ар бир нота үчүн мен beat_values массивинде көрсөтүлгөн убакытка чейин обонду ойнойм. Бул жерде обон ойнобой турган кечиктирүүнү колдонуунун ордуна, мен миллис () функциясы менен программа башталгандан берки убакытты жаздым жана учурдагы убакыттан алып салдым. Убакыт мен белги beat_values массивинде көрсөтүлүүчү убакыттан ашып кеткенде, мен эскертмени токтотом. For циклинин кийинкиге калтырылышы ноталардын ортосундагы боштукту кошуу үчүн, ошол эле жыштыктагы кийинки ноталар биригип кетпешин камсыз кылат.
6 -кадам: Пикир билдирүү
Бул бул долбоор үчүн. Эгер сиз түшүнбөгөн нерсе болсо, же кандайдыр бир сунуштарыңыз болсо, мага кайрылуудан тартынбаңыз. Бул менин биринчи Нускамаларым болгондуктан, мен бул мазмунду жакшыртуу боюнча комментарийлерди жана сунуштарды абдан баалайм. Кийинки жолу көрүшкөнчө!
Сунушталууда:
DC мотору тегиз башталат, потенциометрди колдонуп, ылдамдык жана багыт, OLED дисплей жана баскычтар: 6 кадам
Потенциометрди, OLED дисплейди жана баскычтарды колдонуу менен DC моторунун тегиз башталышы, ылдамдыгы жана багыты: Бул окуу куралында биз L298N DC MOTOR CONTROL драйверин жана потенциометрди DC моторунун тегиз башталышын, ылдамдыгын жана багытын эки баскыч менен жана OLED дисплейинде потенциометрдин маанисин көрсөтүү. Демонстрациялык видеону көрүү
DC мотору жана позиция жана ылдамдыкты көзөмөлдөө үчүн Encoder: 6 кадам
DC Motor жана Encoder Position жана Speed Control үчүн: Киришүү Биз Университеттин Tun Hussei Onn Malaysia (UTHM) студенти UQD10801 (Robocon I) тобубуз .Бизде бул курста 9 группа бар. Менин тобум 2 -топ. Биздин топтун ишмердүүлүгү DC позиция жана ылдамдыкты көзөмөлдөө үчүн мотор жана кодер. Биздин топтун объектиси
Электр Мотору + Фиджет Мотору: 12 кадам
Электр Мотору + Фиджет Мотору: Инструкциялоочу сөздөрдү колдонуңуз, бул 2 электромотор менен иштөө. Электр кыймылдаткычы эң чоң болуп саналат. Твид - бул кыймылсыз мотор, ал эми магнит кеңири таралган
Single Coil индукциялык мотору / Электр мотору: 6 кадам
Single Coil индукциялык мотору / Электр мотору: Бул долбоордо биз бир катушкалуу асинхроникалык моторду жасайбыз Коммерциялык, жана алда канча иштелип чыккан, бул электр кыймылдаткычынын версиялары көпчүлүк альтернативдүү приборлордо колдонулат. Биздин мотордун жогорку моменти жок, бул көбүрөөк иштөө жөнүндө
DC мотору менен айлануучу стол чырагын кантип жасоо керек: 5 кадам (сүрөттөр менен)
DC мотору менен айлануучу стол чырагын кантип жасаса болот: Бул татаал же оор техниканы талап кылбаган, жаркыраган айлануучу чыракты куруунун жөнөкөй жана эффективдүү жолу Демек, сиз өзүңүздүн жарык түсүңүздү колдоно аласыз же жасай аласыз