Turinys:
- 1 žingsnis: „Breadboarding“
- 2 veiksmas: programavimas ir MIDI sąranka
- 3 žingsnis: bandymai ir eksperimentai
Video: MIDI valdomas žingsninis variklis su tiesiogine skaitmenine sinteze (DDS): 3 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Ar kada nors turėjote blogą mintį, kad TIKRAI turėjote virsti mini projektu? Na, aš žaidžiau su eskizu, kurį sukūriau „Arduino Due“, kad galėčiau kurti muziką naudojant AD9833 tiesioginės skaitmeninės sintezės (DDS) modulį … ir kažkada pagalvojau: „Ei, galbūt turėčiau pajungti žingsninį variklį/vairuotoją šis . Ir būtent ši idėja paskatino šį mažą duonos lentos projektą.
Į šį projektą bus įtrauktas kodas, skirtas MIDI per USB naudoti „Arduino Due“valdymui ir kvadratinių bangų siuntimui tarp AD9833 modulio ir žingsnio tvarkyklės. Taip pat bus schema ir pagrindinės instrukcijos, kaip tai prijungti prie „Arduino Due“.
Priedai:
Ko jums reikės šiam projektui:
Arduino Due
PASTABA: kodas yra parašytas „Due“, tačiau jis taip pat turėtų veikti ir (arba) būti pritaikytas nuliui. Jis naudoja „Arduino“MIDIUSB biblioteką, kuriai reikalingas vietinis USB prievadas.
Duonos lenta be litavimo + džemperiai
AD9833 pertraukos modulis
„A4988 Stepper Driver“(arba panaši)
„NEMA 17“žingsninis variklis (arba panašus)
- 24 V maitinimo šaltinis (atkreipkite dėmesį, aš pasirinkau šią 24 voltų vertę, nes ji buvo didesnė už vardinę žingsninio variklio įtampą. Jei naudosite didesnį variklį, jūsų įgyvendinimas gali skirtis)
1 žingsnis: „Breadboarding“
Pagrindinė idėja yra ta, kad tiesioginės skaitmeninės sintezės IC sukurs kvadratinę bangą, kad būtų galima valdyti žingsninio variklio vairuotojo „žingsnio“kaištį. Šis žingsninis vairuotojas tada judins variklį nurodytu garso dažniu. Variklio kryptis yra šiek tiek savavališka, kol jis juda teisingu dažniu.
Man labiau patinka naudoti „boardboarding“-pirmiausia paleisti maitinimo kaiščius ir pagrindus, o tada pradėti naudoti visas kitas, be maitinimo jungtis.
Žemė:
- Prijunkite AD9833 modulio AGND ir DGND kaiščius prie GND bėgelio ant lentos.
- Prijunkite du „GND“kaiščius prie „Stepper Driver“prie „GND Rail“
- Perkelkite tai į vieną iš „Arduino Due“GND kaiščių
3.3V galia:
- Prijunkite „Stepper Driver“VDD kaištį prie duonos lentos V+ bėgelio
- Prijunkite AD9833 modulio VCC kaištį prie duonos lentos V+ bėgelio
- Perkelkite tai į „Arduino Due“3.3V kištuką
24V galia:
- Prijunkite VMOT kaištį prie 24 V nuolatinės srovės maitinimo šaltinio (priklausomai nuo pasirinkto variklio, galbūt norėsite paleisti aukštesnį arba žemesnį maitinimo bėgelį)
Ryšys tarp modulių:
- Prijunkite ADUT3333 modulio OUT kaištį prie variklio tvarkyklės STEP kaiščio
Stepper vairuotojo jungtys:
- Prijunkite žingsninio variklio jungtis prie 2B/2A/1A/1B kaiščių. Poliškumas nėra toks svarbus, kol vairuotojo fazės sutampa su žingsninio variklio fazėmis.
- Sujunkite RESET ir SLEEP kaiščius ir perkelkite juos į „Arduino Due“kaištį 8.
- Prijunkite DIR kaištį prie 3.3V bėgelio
AD9833 modulio jungtys:
- Prijunkite SCLK prie „Arduino Due“SCK kaiščio. Atkreipkite dėmesį, kad šis kaištis yra 6 kontaktų ICSP antraštėje šalia mikrovaldiklio, o ne įprastose išorinėse moterų antraštėse.
- Prijunkite SDATA kaištį prie „Due“MOSI kaiščio. Atminkite, kad šis kaištis yra 6 kontaktų ICSP antraštėje šalia mikrovaldiklio, o ne įprastose išorinėse moterų antraštėse.
- Prijunkite FSYNC prie „Arduino Due Pin 6“(tai šio projekto „Chip Select“kaištis)
Dabar, kai duonos lenta yra visiškai surinkta, atėjo laikas pažvelgti į kodą!
2 veiksmas: programavimas ir MIDI sąranka
Pridėtas.ino eskizas paims USB-MIDI įvestis per „Arduino Due“vietinį USB prievadą ir naudos juos AD9833 valdymui. Šis lustas turi DAC, kuris veikia 25 MHz dažniu ir 28 bitų dažnio skiriamąja geba (bendras perteklius už tai, ko čia reikia), o didžioji dalis kodo yra sukonfigūruota paleisti ir išvesti kvadratinę bangą.
Pastaba: yra du USB prievadai. Vienas iš jų yra skirtas programuoti plokštę, o kitas-MIDI per USB komunikacijai
Atminkite, kad šis eskizas neveiks taip, kaip yra „Arduino Uno“- šis projektas yra specifinis, nes jam reikia vietinio USB „Arduino Due“ar panašiuose įrenginiuose
Tinkinimo parinktys:
- Yra 2 režimai, kuriuos galima nustatyti naudojant išankstinio apdorojimo makrokomandos apibrėžimą. Jei „#define STOPNOTES“paliekamas nepažeistas, žingsnelis sustos tarp natų. Tai ne visada pageidaujama (pavyzdžiui, grojant greituosius arpeggius), todėl, norėdami pakeisti šį elgesį, tiesiog ištrinkite arba pakomentuokite tą #define teiginį ir žingsnelį, kai jie bus paleisti.
-Naudoju pigią 2 oktavų MIDI klaviatūrą su oktavos aukštyn/žemyn mygtuku, bet jei neturite šios parinkties, galite oktavą perkelti žemiau pateikto dažnio vertimą padaugindami arba padalydami iš 2 galių.
MIDI į dažnį vertimas atliekamas naudojant šią eilutę „playNote“funkcijoje: int f_out = (int) (27,5*pow (2, ((float) midiNote-33)/12));
- Aš linkęs naudoti savo kompiuterį sąsajai per USB MIDI - tai galite padaryti iš savo mėgstamos skaitmeninės garso darbo vietos (DAW) programinės įrangos. Jei tokios neturite, šią sistemą nustatyti gana paprasta naudojant LMMS - nemokamą atviro kodo platformą. Kai jis bus įdiegtas ir paleistas, tiesiog nustatykite „Arduino Due“kaip MIDI išvesties įrenginį, o jei naudojate USB MIDI klaviatūrą, nustatykite tai kaip įvestį.
3 žingsnis: bandymai ir eksperimentai
Laikas pažaisti žingsninį variklį!
Kaip minėta, visa to idėja buvo savotiškas eksperimentas, todėl būtinai eksperimentuokite patys!
Rekomenduojamas:
Žingsninis variklis valdomas žingsninis variklis be mikrovaldiklio!: 6 žingsniai
Žingsninis variklis valdomas žingsninis variklis be mikrovaldiklio!: Šiame greitam instrukcijoje mes pagaminsime paprastą žingsninio variklio valdiklį, naudodami žingsninį variklį. Šiam projektui nereikia sudėtingų grandinių ar mikrovaldiklio. Taigi, nesivaržydami, pradėkime
Žingsninis variklis valdomas žingsninis variklis be mikrovaldiklio (V2): 9 žingsniai (su paveikslėliais)
Žingsninis variklis valdomas žingsninis variklis be mikrovaldiklio (V2): Viename iš ankstesnių instrukcijų parodžiau, kaip valdyti žingsninį variklį naudojant žingsninį variklį be mikrovaldiklio. Tai buvo greitas ir įdomus projektas, tačiau jis turėjo dvi problemas, kurios bus išspręstos šioje instrukcijoje. Taigi, sąmojingai
Žingsninio variklio valdomas lokomotyvo modelis - Žingsninis variklis kaip rotacinis kodavimo įrenginys: 11 žingsnių (su nuotraukomis)
Žingsninio variklio valdomas lokomotyvo modelis | Žingsninis variklis kaip rotacinis kodavimo įrenginys: Viename iš ankstesnių instrukcijų mes išmokome naudoti žingsninį variklį kaip rotacinį kodavimo įrenginį. Šiame projekte mes dabar naudosime tą žingsninį variklį, sukamą sukamąjį kodavimo įrenginį, norėdami valdyti lokomotyvą, naudodami „Arduino“mikrovaldiklį. Taigi, be fu
Žingsninis variklis Valdomas žingsninis variklis - Žingsninis variklis kaip rotacinis kodavimo įrenginys: 11 žingsnių (su nuotraukomis)
Žingsninis variklis Valdomas žingsninis variklis | Žingsninis variklis Kaip rotacinis kodavimo įrenginys: Ar pora žingsninių variklių guli ir norite ką nors padaryti? Šioje instrukcijoje naudokime žingsninį variklį kaip rotacinį kodavimo įrenginį, kad valdytumėte kito žingsninio variklio padėtį naudodami „Arduino“mikrovaldiklį. Taigi, be jokių papildomų pastangų, pradėkime
Šviesos valdomas žingsninis variklis + sieninis laikiklis/stovas: 6 žingsniai
Šviesos valdomas žingsninis variklis + sieninis laikiklis/stovas: Šis stovas naudojamas „Arduino“valdomam žingsniniam varikliui, skirtam automatiškai valdyti užuolaidą pagal šviesos lygį kambaryje. Taip pat galite pridėti LCD ekraną, kad išspausdintumėte šviesos lygį. 3D pavara skirta tik demonstravimui