Բովանդակություն:

Կակտուս 2000. 7 քայլ
Կակտուս 2000. 7 քայլ

Video: Կակտուս 2000. 7 քայլ

Video: Կակտուս 2000. 7 քայլ
Video: Красивая шаль крючком: вяжется быстро, легко. Мастер класс: вязание крючком для начинающих. Схема 2024, Նոյեմբեր
Anonim
Կակտուս 2000
Կակտուս 2000

JՐԱԳԻՐ MIDI-CONTROLEUR EISE4

Ֆրանսերեն:

Lors de notre quatrième année d'école ingénieur, nous avons réalisé un midi-contrôleur. Pour ce faire, nous avions à notre disposition:

  • Une carte DE0 Nano Soc
  • Des oscilloscopes, des multimètres
  • Տարբեր տեսակների բաղադրիչներ (ուժեղացուցիչ, դիմադրություն, տարողունակություն …)
  • Un micro and un haut-parleur
  • Un petit ecran

Il nous a fallu passer par différentes étapes périlleuses afin de réussir le projet. Nous allons vous les présenter dans cet Instructable:

Pour commencer, le dessin du circuit de base était nécessaire afin de récupérer le son du micro et le rendre au haut-parleur. Une fois le circuit dessiner, le PCB- ը թողել է faire sur le logiciel Altium- ը: Pendant que deux élèves s'occupaient de gérer les PCB de l'entrée et de la sortie, les deux autres s'occupaient de faire fonctionner la carte DE0 Nano Soc afin que la carte puisse récupérer les echantillons du micro et redonner un signal pour le le haut-parleur. Վերջապես, il nous a fallu créer des effets sonores pour modifier le son.

Անգլերեն:

Մեր դպրոցի չորրորդ տարում մենք հասկացանք միդի-վերահսկիչ: Դա անելու համար մենք մեր տրամադրության տակ ունեինք.

  • Քարտեզ DE0 Nano Soc
  • Օսցիլոսկոպներ, բազմաչափեր
  • Տարբեր տեսակի բաղադրիչներ (ուժեղացուցիչ, դիմադրություն, հզորություն …)
  • Խոսափող և բարձրախոս
  • Մի փոքր էկրան

Մենք ստիպված էինք տարբեր վտանգավոր քայլերի միջով անցնել նախագիծը հաջողության հասնելու համար: Մենք ձեզ կներկայացնենք այս Instructable- ը:

Նախ, խոսափողի որդուն վերականգնելու և բարձրախոսը դարձնելու համար անհրաժեշտ հիմնական սխեմայի ձևավորում: Շղթայի վիճակահանությունից հետո PCB- ն պետք է կատարվեր Altium ծրագրակազմի վրա: Մինչ երկու ուսանողներ զբաղված էին մուտքային և ելքային PCB- ների կառավարմամբ, մյուս երկուսը աշխատում էին գործարկել DE0 Nano Soc քարտը, որպեսզի քարտը կարողանար վերցնել խոսափողի նմուշները և ազդանշան հաղորդել բարձրախոսին: Ի վերջո, մենք ստիպված եղանք ձայնային էֆեկտներ ստեղծել ՝ ձայնը փոխելու համար:

Քայլ 1. Conception Du Circuit En Entre / Entrance Circuit Design

Conception Du Circuit En Entrée / Entrance Circuit Design
Conception Du Circuit En Entrée / Entrance Circuit Design

Ֆրանսերեն:

La première étape αποτελούν à mettre en place un circuit qui puisse prendre le ազդանշանային դեսպանորդ sur le micro pour le transmettre à la carte DE0 Nano Soc.

Ci-dessus le schéma de notre entrée.

(1) L'inverseur va permettre de récupérer le 5 Volt et le transformer en - 5 V. Le - 5 V servira pour l'amplificateur que nous verrons ci -dessous.

(2) Ici, nous avons un amplificateur non-inversur. D'après la formule suivante:

Vs = Ve (1 + Z1/Z2)

Ընտրված շահույթի վրա 101 en mettant R1 = 100 kOhm et R2 = 1 kOhm:

Cet amplificateur va servir a amplifier le son du micro.

(3) Les deux résistances vont créer un offset afin que la tension de sortie soit compris entre 0 և 4 V

(4) Le micro qui va être amplifier par l'amplificateur.

(5) CAG (Controle Automatique de Gain)

(6) Pour finir, nous avons créé un filtre passe-bas du second ordre avec deux RC. L'ordre 2 était nécessaire pour avoir une atténuation de - 40 դբ / տասնամյակ: Միացման արագության արագությունը կազմում է 20 կՀց:

Անգլերեն:

Առաջին քայլը միացում ստեղծելն է, որը կարող է վերցնել խոսափողի վրա ուղարկված ազդանշանը ՝ այն փոխանցելու DE0 Nano Soc քարտին: Մեր մուտքի գծապատկերից վեր:

(1) Inverter- ը կվերականգնի 5 Վոլտը և կվերածի այն - 5 Վ -ի: - 5 V- ը կծառայի ուժեղացուցիչի համար, որը մենք կտեսնենք ստորև:

(2) Այստեղ մենք ունենք ոչ շրջվող ուժեղացուցիչ: Ըստ հետևյալ բանաձևի.

Vs = Ve (1 + Z1 / Z2)

101 -ի շահույթն ընտրվել է ՝ սահմանելով R1 = 100 kOhm և R2 = 1 kOhm:

Այս ուժեղացուցիչը կօգտագործվի խոսափողի ձայնը ուժեղացնելու համար:

(3) Երկու դիմադրիչները կստեղծեն օֆսեթ, որպեսզի ելքային լարումը լինի 0 -ից 4 Վ -ի միջև:

(4) Խոսափողը, որն ուժեղացնելու է ուժեղացուցիչը:

(5) AGC (շահույթի ավտոմատ հսկողություն)

(6) Վերջապես, մենք ստեղծեցինք երկրորդ կարգի ցածր անցման զտիչ `երկու RC- ով: 2 -րդ կարգը անհրաժեշտ էր -40 դԲ / տասնամյակ թուլացում ունենալու համար: Ընտրված անջատման հաճախականությունը 20 կՀց է:

Քայլ 2. Conception Du Circuit En Sortie / Output Circuit- ի նախագծում

Conception Du Circuit En Sortie / Output Circuit- ի նախագծում
Conception Du Circuit En Sortie / Output Circuit- ի նախագծում

Ֆրանսերեն:

Dans un second temps, nous avons penser à la création du circuit en sortie:

Ci-dessus le schéma de notre sortie.

(1) Le DAC (Թվայինից անալոգային փոխարկիչ), որը վերաբերում է ազդանշանային թվային ներկայացուցչին ՝ DE la Nano Soc և փոխակերպում ազդանշանային անալոգիայի համար (անհրաժեշտ է պարունակել լրացուցիչ պարամետրեր)

(2) La capacité va servir a virer la composante continue de notre ազդանշանը.

(3) Montage qui va permettre d'amplifier la puissance de notre ազդանշան. Nous avons prit le schéma:

www.ti.com/lit/ds/symlink/lm386.pdf

էջ 10

Չեմ թույլատրվում օգտագործել 200 ավտոմեքենա, քանի որ դա անհրաժեշտ է, քանի որ ազդանշանն անհնար է:

Անգլերեն:

Մեր ելքի գծապատկերից վեր:

(1) DAC (Թվային անալոգային փոխարկիչ), որը թույլ կտա վերականգնել DE0 Nano Soc քարտով ուղարկված թվային ազդանշանը և այն վերածել անալոգային ազդանշանի (անհրաժեշտ է բարձրախոսի համար):

(2) Հզորությունը կօգտագործվի մեր ազդանշանի շարունակական բաղադրիչը փոխանցելու համար:

(3) Տեղադրում, որը կուժեղացնի մեր ազդանշանի հզորությունը: Մենք վերցրինք սխեման.

www.ti.com/lit/ds/symlink/lm386.pdf

էջ 10

Այս սխեման հնարավորություն է տալիս ունենալ 200 շահույթ, որն անհրաժեշտ է, քանի որ մեր ազդանշանն իսկապես թույլ է:

Քայլ 3. Հայեցակարգ Desc PCB / PCB- ի ձևավորում

PCB- ի հայեցակարգը / PCB- ի ձևավորում
PCB- ի հայեցակարգը / PCB- ի ձևավորում

Ֆրանսերեն:

Մենք չենք կարող միացնել միացման սխեմաներ, որոնք թույլ են տալիս միացնել PCB- ն:

Pour ce faire, nous avons utiliser le logiciel Altium: Il faut que tout soit correctement connecter puis cliquer sur:

Մենյուի ձևավորում -> Թարմացրեք PCB փաստաթուղթը:

Անշուշտ, ընտրեք «Վավերացնել փոփոխությունները»: Pour chaque chancement validé, un crochet vert apparaît dans la colonne: «Ստուգեք»:

Après cela, vous aurez un nouvel onglet qui va s'ouvrir et il faudra placer les composants dans cette fenêtre.

Այս դեպքում դուք կարող եք ընտրել «Ֆայլ» -> «Արտադրության արդյունք» -> «Gerber ֆայլեր» ընտրացանկը:

Une fenêtre s'ouvre, dans celle-ci vous trouverez;

  • Le menu "Layers" qui vous permettra de choisir sur quel շերտերը va s'appuyer votre PCB.
  • Le menu "Drill Drawing" dans lequel il faut que tout soit décocher:
  • Le menu "Apertures" dans lequel il faut cocher "Embedded appertures":

Toute ses étapes sont complétées?

Revenons maintenanceenant à la fenêtre avec les composants sur celle-ci vous cliquez sur

Ֆայլ-> Արտադրության արտադրանք -> NC փորված ֆայլեր

C'est enfin finit, il ne reste plus qu'à donner à l'imprimante 3D les fichiers:

Vous trouverez ci-joint les photos de nos deux PCB.

Անգլերեն:

Երբ մեր սխեմաները հաստատվեցին, մենք ստիպված էինք դրանք տեղադրել PCB- երի վրա:

Դա անելու համար մենք օգտագործում ենք Altium ծրագրակազմը: Ամեն ինչ պետք է ճիշտ միացված լինի, այնուհետև կտտացրեք ՝

Մենյուի ձևավորում -> Թարմացրեք PCB փաստաթուղթը:

Այնուհետև կտտացրեք «Փոփոխությունների վավերացում»: Յուրաքանչյուր հաստատված փոփոխության համար «Չեկ» սյունակում հայտնվում է կանաչ նշան:

Դրանից հետո դուք կունենաք նոր ներդիր, որը կբացվի, և դուք ստիպված կլինեք բաղադրիչները տեղադրել այս պատուհանում:

Այնուհետեւ դուք պետք է գնաք «Ֆայլ» -> «Ելքի ելք» -> «Գերբեր ֆայլեր» ընտրացանկ

Պատուհան է բացվում, այս մեկում դուք կգտնեք.

«Շերտեր» ընտրացանկը, որը թույլ կտա ձեզ ընտրել, թե որ շերտերն են աջակցելու ձեր PCB- ին: «Drill Drawing» ընտրացանկը, որտեղ ամեն ինչ պետք է չստուգվի: «Բացեր» ընտրացանկը, որում դուք պետք է ստուգեք «Ներկառուցված բացվածքներ»:

Նրա բոլոր քայլերն ավարտվա՞ծ են:

Եկեք հիմա վերադառնանք պատուհանին, որի վրա սեղմում եք այս բաղադրիչները

Ֆայլ-> Արտադրության արտադրանք -> NC փորվածք ֆայլեր

Վերջապես ամեն ինչ ավարտվեց, մնում է միայն 3D տպիչին տալ ֆայլերը:

Կից կարող եք գտնել մեր երկու PCB- ների լուսանկարները:

Քայլ 4: Périphériques Pour La Carte DE0 Nano Soc / ծայրամասային սարքեր DE0 Nano Soc քարտի համար

Périphériques Pour La Carte DE0 Nano Soc / ծայրամասային սարքեր DE0 Nano Soc քարտի համար
Périphériques Pour La Carte DE0 Nano Soc / ծայրամասային սարքեր DE0 Nano Soc քարտի համար

Francais:

Les cœurs IP sont optimisés pour les périphériques Intel FPGA և peuvent ttre implémentés pour réduire la conception et le temps de test.

Grâce au logiciel Qsys nous avons pu créer des périphériques embarqués dans notre carte.

Voici une liste des périphériques que nous avons ajouter:

  • Communication SPI pour le DAC
  • ADC pour recupérer les valeurs analogique de notre signal and les convertir en donnée digitales
  • HPS (processseur) pour gérer tout les կոդերը
  • GPIO pour les boutons qui vont servir à exécuter sures effets
  • Mémoire (չիպի հիշողության վրա)

Անգլերեն:

IP միջուկները օպտիմիզացված են Intel FPGA սարքերի համար և կարող են հեշտությամբ իրականացվել ՝ նվազեցնելու նախագծման և փորձարկման ժամանակը:

Qsys ծրագրաշարի շնորհիվ մենք կարողացանք ներկառուցված ծայրամասային սարքեր ստեղծել մեր քարտեզի վրա: Ահա մեր ավելացրած սարքի ցուցակը.

  • SPI հաղորդակցություն DAC- ի համար
  • ADC ՝ մեր ազդանշանից անալոգային արժեքները վերցնելու և դրանք թվային տվյալների փոխարկելու համար
  • HPS (պրոցեսոր) `բոլոր կոդերը կառավարելու համար
  • GPIO կոճակների համար, որոնք կօգտագործվեն որոշակի էֆեկտների հաղթահարման համար
  • Հիշողություն (չիպի հիշողության վրա)

Քայլ 5: L'écran LT24

L'écran LT24
L'écran LT24

Ֆրանսերեն:

Il nous a fallu comprendre et gérer l'écran LT24 celui-ci sera guidé par un processseur simulé NIOS.

Pour l'initaliser, nous avons lu beaucoup de documentations sur celui-ci.

Au final, notre écran sert à afficher la FFT, sélectionner l'effet voulu.

Անգլերեն:

Մենք ստիպված էինք հասկանալ և կառավարել LT24 էկրանը, այն կառաջնորդվի մոդելավորված NIOS պրոցեսորով: Այն նախաձեռնելու համար մենք կարդում ենք դրա վերաբերյալ բազմաթիվ փաստաթղթեր:

Ի վերջո, մեր էկրանը օգտագործվում է FFT- ի ցուցադրման համար `ցանկալի էֆեկտի:

Քայլ 6: Օգտակար կոդեր En C ++ / Օգտակար կոդեր C ++ - ում

Օգտակար կոդեր En C ++ / Օգտակար կոդեր C ++ - ում
Օգտակար կոդեր En C ++ / Օգտակար կոդեր C ++ - ում

Je vais vous montrer les codes en C ++ qui nous ont utiles afin de réaliser des effets sonores.

Voici d'abord toutes nos délalarations (oui un peu exhaustif…):

Ես ձեզ ցույց կտամ C ++ - ի այն կոդերը, որոնք մեզ համար օգտակար էին ձայնային էֆեկտներ ստեղծելու համար:

Նախ, մեր բոլոր հայտարարությունները (այո, մի փոքր սպառիչ…).

#ներառում

#ներառել #ներառել #ներառել #ներառել #ներառել #ներառել #ներառել #ներառել #ներառել "WavUtils.cpp" #Include "Biquad.cpp" #include #include #include #include "hps_0.h" #include "hps.h" #ներառել "alt_gpio.h" #include "hwlib.h" #include "socal.h" #include #include "kiss_fft.h" #սահմանել nbpoint 1000 #սահմանել HW_REGS_BASE (ALT_STM_OFST) #def0 HW_REGS_SPAN HW_REGS_SPAN - 1) #սահմանել PI 3.1415926535 #սահմանել NFFT 80 #սահմանել FE 41000 #սահմանել F2 10000 #սահմանել F1 5925 #սահմանել PH 5000 #սահմանել PB 15000 #սահմանել MOD 2000 ՝ օգտագործելով անվան տարածքի std; const երկար SAMPLE_RATE = 12500000; // Création de la configuration et des buffers in et out pour s (t) et S (f) const kiss_fft_cfg config = kiss_fft_alloc (NFFT, 0, NULL, NULL); const kiss_fft_cfg config_inv = kiss_fft_alloc (NFFT, 1, NULL, NULL); kiss_fft_cpx*in = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx)); kiss_fft_cpx*out = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx)); kiss_fft_cpx*inv = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx)); queueoutBuf; int գլոբալ = 0; int i = 0; կարճ տվյալներ, տվյալներ 2;

Ci-dessous une de nos fonctions permettant la modulation:

Ստորև ՝ մեր գործառույթներից մեկը, որը թույլ է տալիս մոդուլյացիա.

դատարկ մոդուլյացիա (int հաճախականություն)

{if (i <NFFT) {data = data*cos (2*PI*freq*i/FE); .r = տվյալների մեջ; i ++; } else i = "0"; }

Voici notre fonction հիմնական:

Սրանք մեր հիմնական գործառույթներն են.

int հիմնական (int argc, char ** argv)

{անկայուն անստորագիր երկար *h2p_lw_spi_addr = NULL; անկայուն անստորագիր երկար *h2p_lw_led_addr = NULL; անկայուն անստորագիր երկար *h2p_lw_adc_addr = NULL; անկայուն անստորագիր երկար *h2p_lw_blue_addr = NULL; անկայուն անստորագիր երկար *h2p_lw_red_addr = NULL; անկայուն անստորագիր երկար *h2p_lw_black_addr = NULL; դատարկ *վիրտուալ_բազա; int fd; printf ("1 / n"); // քարտեզագրեք spi ռեգիստրների հասցեների տարածքը օգտվողի տարածության մեջ, որպեսզի կարողանանք նրանց հետ շփվել: // մենք իրականում քարտեզագրելու ենք HPS- ի ամբողջ CSR- ի տարածքը, քանի որ մենք ցանկանում ենք մուտք գործել տարբեր գրանցամատյաններ այդ ժամանակահատվածում, եթե ((fd = open ("/dev/mem", (O_RDWR | O_SYNC))) == -1) {printf ("ՍԽԱԼ. չհաջողվեց բացել \"/dev/mem / "… / n"); վերադարձ (1); } printf ("2 / n"); վիրտուալ_բազա = մմ քարտ (NULL, HW_REGS_SPAN, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, HW_REGS_BASE); printf ("3 / n"); if (virtual_base == MAP_FAILED) {printf ("ERROR: mmap () failed … / n"); փակել (fd); վերադարձ (1); } printf ("4 / n"); printf ("5 / n"); h2p_lw_spi_addr = վիրտուալ_բազա + ((երկար չստորագրված) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (երկար չստորագրված) (HW_REGS_MASK)); h2p_lw_led_addr = վիրտուալ_բազա + ((երկար չստորագրված) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (երկար չստորագրված) (HW_REGS_MASK)); h2p_lw_adc_addr = վիրտուալ_բազա + ((երկար չստորագրված) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) և (երկար ստորագրված) (HW_REGS_MASK)); h2p_lw_blue_addr = վիրտուալ_բազա + ((երկար չստորագրված) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (երկարաժամկետ անստորագիր) (HW_REGS_MASK)); h2p_lw_black_addr = վիրտուալ_բազա + ((երկար չստորագրված) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (երկարաժամկետ անստորագիր) (HW_REGS_MASK)); h2p_lw_red_addr = վիրտուալ_բազա + ((երկար չստորագրված) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (երկար չստորագրված) (HW_REGS_MASK)); // int i = 0; int տվյալներ; int i = 0, j; // Création de la configuration et des buffers in et out pour s (t) et S (f) const kiss_fft_cfg config = kiss_fft_alloc (NFFT, 0, NULL, NULL); kiss_fft_cpx*in = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx)); kiss_fft_cpx*out = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx)); իսկ (1) {data = *(h2p_lw_adc_addr+2); եթե (*h2p_lw_blue_addr == 1) տվյալներ = արձագանք (տվյալներ, 20); եթե (*h2p_lw_black_addr == 1) alt_write_word (h2p_lw_led_addr, 0x0F); եթե (*h2p_lw_red_addr == 0) alt_write_word (h2p_lw_led_addr, 0xF0); alt_write_word (h2p_lw_spi_addr+1, տվյալներ | 0b11100000000000000); } անվճար (կազմաձևում); անվճար (ներսում); անվճար (դուրս); վերադարձ 0; }

Քայլ 7: Le Final / The Final

Le Final / եզրափակիչ
Le Final / եզրափակիչ

Ֆրանսերեն:

Eh voilà (enfin) le rendu final de notre Cactus 2000:

Nous avons mis les PCB entrée et sortie qui sont reliés à la carte DE0 Nano Soc.

Ensuite, ses composants sont placés à l'interieur d'une boite jaune.

Sur la boîte on trouve un potentiomètre glissière, qui permet de gérer le volume du son, des potentiomètres et des boutons qui permettrons de lancer sures effets, ainsi que un ecran qui permettra d'afficher la FFT.

Le haut-parleur is positionné perpendiculairement par rapport aux boutons. Le micro est positionné de l'autre coté de la boîte par rapport au haut-parleur.

C'est tout pour aujourd'hui.

Հաճելիորեն հրահանգելի է, եթե դա օգտակար է:

Անգլերեն:

Ահա (վերջապես) մեր Cactus 2000 -ի վերջնական կատարումը:

Մենք դնում ենք մուտքային և ելքային PCB- ները, որոնք միացված են DE0 Nano Soc տախտակին:

Այնուհետեւ, դրա բաղադրիչները տեղադրվում են դեղին վանդակի ներսում:

Տուփի վրա տեղադրված է սլայդ պոտենցիոմետր, որը կարող է կառավարել ձայնի ծավալը, կոճակները և կոճակները, որոնք կբացեն որոշ էֆեկտներ և էկրան, որը կցուցադրի FFT- ը:

Բարձրախոսը տեղադրված է կոճակներին ուղղահայաց: Խոսափողը տեղադրված է տուփի մյուս կողմում `բարձրախոսի համեմատ:

Այսքանը այսօրվա համար:

Հուսով եմ, որ այս հրահանգը օգտակար է ձեզ համար:

Խորհուրդ ենք տալիս: