Turinys:

MIDI valdomas žingsninis variklis su tiesiogine skaitmenine sinteze (DDS): 3 žingsniai
MIDI valdomas žingsninis variklis su tiesiogine skaitmenine sinteze (DDS): 3 žingsniai

Video: MIDI valdomas žingsninis variklis su tiesiogine skaitmenine sinteze (DDS): 3 žingsniai

Video: MIDI valdomas žingsninis variklis su tiesiogine skaitmenine sinteze (DDS): 3 žingsniai
Video: MIDI-интерфейс Arduino, часть 01 Схемы MIDI INPUT, OUTPUT и THRU 2024, Lapkritis
Anonim
MIDI valdomas žingsninis variklis su tiesioginės skaitmeninės sintezės (DDS) mikroschema
MIDI valdomas žingsninis variklis su tiesioginės skaitmeninės sintezės (DDS) mikroschema
MIDI valdomas žingsninis variklis su tiesioginės skaitmeninės sintezės (DDS) mikroschema
MIDI valdomas žingsninis variklis su tiesioginės skaitmeninės sintezės (DDS) mikroschema
MIDI valdomas žingsninis variklis su tiesioginės skaitmeninės sintezės (DDS) mikroschema
MIDI valdomas žingsninis variklis su tiesioginės skaitmeninės sintezės (DDS) mikroschema
MIDI valdomas žingsninis variklis su tiesioginės skaitmeninės sintezės (DDS) mikroschema
MIDI valdomas žingsninis variklis su tiesioginės skaitmeninės sintezės (DDS) mikroschema

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“

Breadboarding
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

Programavimas ir MIDI sąranka
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: