Përmbajtje:

Bërja e këngëve me një Arduino dhe një motor DC: 6 hapa
Bërja e këngëve me një Arduino dhe një motor DC: 6 hapa

Video: Bërja e këngëve me një Arduino dhe një motor DC: 6 hapa

Video: Bërja e këngëve me një Arduino dhe një motor DC: 6 hapa
Video: ESP32 Tutorial 15 - DC Motor Speed Control with ESP32 L293D | SunFounder's ESP32 IoT Learnig kit 2024, Qershor
Anonim
Bërja e këngëve me një Arduino dhe një motor DC
Bërja e këngëve me një Arduino dhe një motor DC

Ditën tjetër, ndërsa po shfletoja disa artikuj rreth Arduino, pashë një projekt interesant i cili përdorte motorë stepper të kontrolluar nga Arduino për të krijuar melodi të shkurtra. Arduino përdori një kunj PWM (Pulse Width Modulation) për të drejtuar motorin stepper në frekuenca të veçanta, që korrespondojnë me notat muzikore. Nga koha se cilat frekuenca luanin kur, një melodi e qartë mund të dëgjohej nga motori stepper.

Sidoqoftë, kur e provova vetë, zbulova se motori stepper që kam nuk mund të rrotullohet aq shpejt sa të krijojë një ton. Në vend të kësaj, kam përdorur një motor DC, i cili është relativisht i thjeshtë për tu programuar dhe lidhur me një Arduino. Një IC i zakonshëm L293D mund të përdoret për të drejtuar me lehtësi motorin nga një kunj Arduino PWM, dhe funksioni i tonit amtare () në Arduino mund të gjenerojë frekuencën e nevojshme. Për habinë time, nuk gjeta asnjë shembull ose projekt duke përdorur një motor DC në internet, dhe kështu që kjo Instructables është përgjigja ime për ta rregulluar atë. Le të fillojmë!

P. S. Supozoj se ju tashmë keni një përvojë me Arduino dhe jeni njohur me gjuhën dhe harduerin e tij të programimit. Ju duhet të dini se çfarë janë vargjet, çfarë është PWM dhe si ta përdorni atë, dhe si funksionon tensioni dhe rryma, vetëm për të përmendur disa gjëra. Nëse nuk jeni ende atje ose sapo keni filluar Arduino, mos u shqetësoni: provoni këtë faqe për të filluar nga faqja zyrtare e Arduino dhe kthehuni sa herë që të jeni gati.:)

Furnizimet

  • Arduino (Kam përdorur një UNO, por ju mund të përdorni një Arduino tjetër nëse dëshironi)
  • Motori standard 5V DC, mundësisht ai që mund të ketë një tifoz të bashkangjitur (shihni foton në "Montimi i qarkut"
  • L293D IC
  • Po aq butona sa shënime në këngën që dëshironi të luani
  • Breadboard
  • Telat Jumper

Hapi 1: Vështrim i përgjithshëm

Ja se si funksionon projekti: Arduino do të krijojë një valë katrore në një frekuencë të caktuar, të cilën e nxjerr në L293D. L293D është i lidhur me një furnizim të jashtëm të energjisë të cilin e përdor për të fuqizuar motorin në frekuencën që jepet nga Arduino. Duke parandaluar rrotullimin e boshtit të motorit DC, motori mund të dëgjohet duke u fikur dhe ndezur në frekuencën, e cila prodhon një ton, ose notë. Ne mund ta programojmë Arduino të luajë shënime kur shtypen butonat, ose t'i luajë ato automatikisht.

Hapi 2: Montimi i qarkut

Montimi i Qarkut
Montimi i Qarkut
Montimi i Qarkut
Montimi i Qarkut

Për të mbledhur qarkun, thjesht ndiqni diagramin Fritzing më sipër.

Këshillë: Shënimi nga motori dëgjohet më së miri kur boshti nuk rrotullohet. Kam vendosur një tifoz në boshtin e motorit tim dhe kam përdorur një shirit ngjitës për ta mbajtur ventilatorin të palëvizshëm ndërsa motori ka funksionuar (shiko foton). Kjo parandaloi kthimin e boshtit dhe prodhoi një ton të qartë dhe të dëgjueshëm. Ju mund të keni nevojë të bëni disa rregullime për të marrë një ton të pastër nga motori juaj.

Hapi 3: Si funksionon qarku

Si funksionon qarku
Si funksionon qarku

L293D është një IC që përdoret për drejtimin e pajisjeve me tension relativisht të lartë, me rrymë të lartë, siç janë stafetat dhe motorët. Arduino nuk është në gjendje të drejtojë shumicën e motorëve drejtpërdrejt nga dalja e tij (dhe EMF e pasme nga motori mund të dëmtojë qarkun dixhital të ndjeshëm të Arduino), kështu që një IC si L293D mund të përdoret me një furnizim me energji të jashtme për të drejtuar me lehtësi motorin DC. Futja e një sinjali në L293D do të japë të njëjtin sinjal në motorin DC pa rrezikuar dëmtimin e Arduino.

Më sipër është një skemë pinout/funksionale e L293D nga fleta e të dhënave të saj. Meqenëse po drejtojmë vetëm 1 motor (L293D mund të drejtojë 2), na duhet vetëm njëra anë e IC. Pin 8 është fuqia, kunjat 4 dhe 5 janë GND, kunja 1 është dalja PWM nga Arduino, dhe kunjat 2 dhe 7 kontrollojnë drejtimin e motorit. Kur kunja 2 është e LART and dhe kunja 7 është E ULT, motori rrotullohet në një drejtim, dhe kur kunja 2 është LOW dhe kunja 7 është LART, motori rrotullohet në anën tjetër. Meqenëse nuk na intereson se në cilën drejtim rrotullohet motori, nuk ka rëndësi nëse kunjat 2 dhe 7 janë të UL orT ose T HIGH LART, përderisa ato janë të ndryshme nga njëra -tjetra. Kunjat 3 dhe 6 lidhen me motorin. Nëse dëshironi, mund të lidhni gjithçka me anën tjetër (kunjat 9-16), por kini parasysh që kunjat e energjisë dhe PWM ndërrojnë vendet.

Shënim: Nëse jeni duke përdorur një Arduino i cili nuk ka kunja të mjaftueshme për secilin buton, mund të përdorni një rrjet rezistencash për të lidhur të gjithë ndërprerësit në një kunj analog, si në këtë udhëzues. Si funksionon kjo është jashtë fushëveprimit të këtij projekti, por nëse keni përdorur ndonjëherë një DAC R-2R duhet ta gjeni të njohur. Vini re se përdorimi i një kunj analog do të kërkojë që pjesë të mëdha të kodit të rishkruhen, pasi biblioteka e Button nuk mund të përdoret me kunjat analoge.

Hapi 4: Si funksionon Kodi

Për ta bërë më të lehtë trajtimin e të gjithë butonave, kam përdorur një bibliotekë të quajtur "Button" nga madleech. Unë përfshiva bibliotekën gjëja e parë. Më tej, në rreshtat 8-22, unë përcaktova frekuencat për notat e nevojshme për të luajtur Twinkle, Twinkle, Little Star (kënga shembull), kunjin që do të përdor për të drejtuar L293D dhe butonat.

Në funksionin e konfigurimit, fillova Serialin, butonat dhe vendosa pinin e drejtuesit për L293D në modalitetin e daljes.

Më në fund, në lakin kryesor kontrollova për të parë nëse është shtypur një buton. Nëse ka, Arduino luan shënimin përkatës dhe printon emrin e shënimit në Monitor Serial (e dobishme për të ditur se cilat shënime janë ato në pjatën tuaj). Nëse lëshohet një shënim, arduino ndalon çdo tingull me noTone ().

Fatkeqësisht, për shkak të mënyrës së strukturimit të bibliotekës, nuk mund të gjeja një mënyrë për të kontrolluar nëse një buton është shtypur ose lëshuar në një mënyrë më pak të folur sesa përdorimi i 2 kushteve për shënim. Një e metë tjetër e këtij kodi është se nëse shtypni dy butona njëkohësisht dhe pastaj lëshoni njërën prej tyre, të dy shënimet do të ndalen, sepse noTone () ndalon çdo shënim të gjeneruar pavarësisht se cila shënim e ka shkaktuar atë.

Hapi 5: Programimi i një kënge

Në vend që të përdorni butona për të luajtur shënime, gjithashtu mund të programoni Arduino që të luajë një melodi për ju automatikisht. Këtu është një version i modifikuar i skicës së parë që luan Twinkle, Twinkle, Little Star në motor. Pjesa e parë e skicës është e njëjtë - përcaktimi i frekuencave të shënimeve dhe tonit Pin. Ne arrijmë në pjesën e re në bpm = "100". I caktoj rrahjet në minutë (bpm), dhe pastaj përdor matematikë për të kuptuar numrin e milisekondave për rrahje që barazohet me bpm. Për ta bërë këtë, unë përdor një teknikë të quajtur analiza dimensionale (mos u shqetësoni - nuk është aq e vështirë sa duket). Nëse keni marrë ndonjëherë një kurs kimie të shkollës së mesme, patjetër që keni përdorur analizën dimensionale për të konvertuar midis njësive. Notat () janë atje për të siguruar që asgjë në ekuacion të rrumbullakoset deri në fund për saktësi.

Pasi të kemi numrin e ms/beat, e ndava ose shumëzova atë në mënyrë të përshtatshme për të gjetur vlerat e milisekondës të kohëzgjatjeve të ndryshme të notave të gjetura në muzikë. Unë pastaj bëj një grup të çdo shënimi sipas rendit kronologjik, dhe një tjetër me kohëzgjatjen e secilës shënim. Criticalshtë kritike që indeksi i secilës notë të përputhet me indeksin e kohëzgjatjes së tij, përndryshe, melodia juaj do të tingëllojë. Vendosa shënimet për Twinkle, Twinkle, Little Star këtu si shembull, por ju mund të provoni çdo këngë ose sekuencë shënimesh që dëshironi.

Magjia e vërtetë ndodh në funksionin e lakut. Për secilën prej shënimeve, unë luaj tonin për një kohë të caktuar në grupin beat_values. Në vend që të përdor vonesën këtu, e cila do të bënte që toni të mos luhej, regjistrova kohën që kur programi filloi me funksionin millis (), dhe e zbres atë nga koha aktuale. Kur koha tejkalon kohën që kam specifikuar që shënimi të zgjasë në grupin beat_values, e ndaloj shënimin. Vonesa pas lakut for është për të shtuar një hendek midis shënimeve, duke siguruar që shënimet pasuese me të njëjtën frekuencë të mos përzihen së bashku.

Hapi 6: Komente

Kjo është ajo për këtë projekt. Nëse ka diçka që nuk e kuptoni, ose nëse keni ndonjë sugjerim, ju lutem mos hezitoni të më kontaktoni. Meqenëse ky është udhëzuesi im i parë, do të vlerësoja shumë komentet dhe sugjerimet se si të përmirësohet kjo përmbajtje. Shihemi heren tjeter!

Recommended: