Sadržaj:

Kaktus 2000: 7 koraka
Kaktus 2000: 7 koraka

Video: Kaktus 2000: 7 koraka

Video: Kaktus 2000: 7 koraka
Video: Американский математик: "После чтения Корана у меня не осталось сомнений!" Профессор Джеффри Лэнг 2024, Srpanj
Anonim
Kaktus 2000
Kaktus 2000

MIDI-KONTROLEUR PROJEKTA EISE4

Français:

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 dispozicija:

  • Une carte DE0 Nano Soc
  • Des osciloskopi, des multimètres
  • Sastav različitih vrsta (pojačalo, otpor, kapacitet …)
  • Un micro et 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 était à faire sur le logiciel Altium. Privjesak 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 haut-parleur. Finallement, il nous a fallu créer des effets sonores pour modifier le son.

Engleski:

Tijekom četvrte godine škole realizirali smo midi kontroler. Da bismo to učinili, na raspolaganju smo imali:

  • Karta DE0 Nano Soc
  • Osciloskopi, multimetri
  • Komponente različitih vrsta (pojačalo, otpor, kapacitet …)
  • Mikrofon i zvučnik
  • Mali ekran

Morali smo proći razne opasne korake kako bi projekt uspio. Upoznat ćemo vas s ovim uputama.

Prvo, dizajn osnovnog kruga potreban je za oporavak sina mikrofona i izradu zvučnika. Nakon što je sklop izvučen, PCB je trebao biti izveden na softveru Altium. Dok su dva učenika bila zauzeta upravljanjem ulaznim i izlaznim PCB -ovima, druga dvojica su radila na pokretanju kartice DE0 Nano Soc kako bi kartica mogla pokupiti uzorke mikrofona i dati signal zvučniku. Konačno, morali smo stvoriti zvučne efekte za promjenu zvuka.

Korak 1: Koncepcija Du Circuit En Entrée / Dizajn ulaznog kruga

Conception Du Circuit En Entrée / Dizajn ulaznog kruga
Conception Du Circuit En Entrée / Dizajn ulaznog kruga

Français:

La première étape consiste à mettre en place un circuit qui puisse prendre le signal envoyer 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-inverseur. D'après la formulale suivante:

Vs = Ve (1 + Z1/Z2)

Na dobrom un dobitak od 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 stress de sortie soit entre 0 et 4 V.

(4) Le mikro qui va être pojačalo 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 - 40db / desetljeće. La fréquence de coupure choisit est 20 kHz.

Engleski:

Prvi korak je postavljanje kruga koji može prihvatiti signal koji šalje mikrofon za prijenos na karticu DE0 Nano Soc. Iznad dijagrama našeg unosa.

(1) Pretvarač će obnoviti 5 V i pretvoriti ga u - 5 V. - 5 V će poslužiti za pojačalo koje ćemo vidjeti u nastavku.

(2) Ovdje imamo neinvertirajuće pojačalo. Prema sljedećoj formuli:

Vs = Ve (1 + Z1 / Z2)

Dobit od 101 odabrana je postavljanjem R1 = 100 kOhm i R2 = 1 kOhm.

Ovo pojačalo će se koristiti za pojačavanje zvuka mikrofona.

(3) Dva otpornika stvorit će pomak tako da je izlazni napon između 0 i 4 V.

(4) Mikrofon koji će se pojačati pojačalom.

(5) AGC (automatska kontrola pojačanja)

(6) Na kraju smo stvorili niskopropusni filter drugog reda s dva RC-a. Narudžba 2 je bila potrebna za smanjenje od -40db / desetljeće. Odabrana granična frekvencija je 20 kHz.

Korak 2: Koncepcija Du Circuit En Sortie / Dizajn izlaznog kruga

Conception Du Circuit En Sortie / Dizajn izlaznog kruga
Conception Du Circuit En Sortie / Dizajn izlaznog kruga

Français:

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 (digitalno -analogni pretvarač) qui va permettre de recuperer le signal numérique envoyer par la carte DE0 Nano Soc et le convertir en analogique signal (potrebno za le haut parleur)

(2) Lapacité va servir a virer la composante continue de notre signal.

(3) Montirajte qui va permettre d'amplifier la puissance de notre signal. Nous avons prit le schéma:

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

stranica 10

Ce schéma permet d'avoir un gain de 200 qui est nécessaire car notre signal est vraiment faible.

Engleski:

Iznad dijagrama našeg izlaza.

(1) DAC (digitalno -analogni pretvarač) koji će omogućiti oporavak digitalnog signala koji šalje kartica DE0 Nano Soc i pretvoriti ga u analogni signal (potreban za zvučnik).

(2) Kapacitet će se koristiti za prijenos kontinuirane komponente našeg signala.

(3) Montaža koja će pojačati snagu našeg signala. Uzeli smo shemu:

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

stranica 10

Ova shema omogućuje dobitak od 200 koji je neophodan jer je naš signal doista slab.

Korak 3: Koncepcija des PCB -a / Dizajn PCB -a

Koncepcija PCB -a / Dizajn PCB -a
Koncepcija PCB -a / Dizajn PCB -a

Français:

Une fois que nos circuits on été instanciés il nous a fallu les mettre sur des PCB.

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

Dizajn izbornika -> Ažuriraj PCB dokument.

Vlastita kupaonica, kliknite na "Potvrdi promjene". Ulijte promjenu chaque validé, un crochet vert apparaît dans la colonne: «Ček».

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

U izborniku "File" -> "Fabrication Output" -> "Gerber Files" kliknite

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

  • Le menu "Layers" qui vous permettra de choisir sur quel Slojevi sa s'appuyera na vobre PCB -u.
  • Na izborniku "Crtanje bušilice" možete vidjeti ikonu koja ne znači da ste odabrali.
  • Na izborniku "Otvori" možete vidjeti "Ugrađeni otvori".

Toute ses étapes sont complétées?

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

Datoteka-> Izlaz proizvodnje -> NC datoteke za bušenje

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.

Engleski:

Kad su naši sklopovi nastali, morali smo ih staviti na tiskane ploče.

Da bismo to učinili, koristimo softver Altium. Sve mora biti ispravno povezano, a zatim kliknite na:

Dizajn izbornika -> Ažuriraj PCB dokument.

Zatim kliknite na "Provjeri promjene". Za svaku provjerenu promjenu u stupcu "Provjeri" pojavljuje se zelena kvačica.

Nakon toga imat ćete novu karticu koja će se otvoriti i komponente ćete morati postaviti u ovaj prozor.

Zatim morate otići na izbornik "Datoteka" -> "Izlazni izlaz" -> "Gerber datoteke"

Otvara se prozor, u ovom ćete pronaći;

Izbornik "Slojevi" koji će vam omogućiti da odaberete koji će slojevi podržavati vašu PCB. Izbornik "Drill Drawing" (Crtanje crteža) u kojem se sve ne mora provjeravati. Izbornik "Otvori" u kojem morate provjeriti "Ugrađeni otvori".

Jesu li svi njegovi koraci dovršeni?

Vratimo se sada prozoru sa komponentama na kojima kliknete

Datoteka-> Proizvodni izlaz -> NC datoteke za bušenje

Napokon je gotovo, sve što trebate učiniti je dati 3D pisaču datoteke.

U privitku ćete pronaći fotografije naše dvije PCB -a.

Korak 4: Périphériques Pour La Carte DE0 Nano Soc / periferija za karticu DE0 Nano Soc

Périphériques Pour La Carte DE0 Nano Soc / periferija za DE0 Nano Soc karticu
Périphériques Pour La Carte DE0 Nano Soc / periferija za DE0 Nano Soc karticu

Francuski:

Omogućite optimizaciju IP -a za poboljšanje Intel FPGA -e i zastrašujuće impresije za daljnje začeće i testiranje.

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:

  • Komunikacija SPI za DAC
  • ADC za recupérer les valeurs analogique not notre signal et les convertir en donnée digitales
  • HPS (procesor) unesite sve kodove
  • GPIO pour les boutons qui vont servir à exécuter određene učinke
  • Mémoire (na memoriji čipa)

Engleski:

IP jezgre optimizirane su za Intel FPGA uređaje i mogu se jednostavno implementirati kako bi se smanjilo vrijeme projektiranja i testiranja.

Zahvaljujući softveru Qsys uspjeli smo stvoriti ugrađene periferne uređaje na našoj karti. Evo popisa uređaja koje smo dodali:

  • SPI komunikacija za DAC
  • ADC za dohvaćanje analognih vrijednosti iz našeg signala i njihovo pretvaranje u digitalne podatke
  • HPS (procesor) za upravljanje svim kodovima
  • GPIO za gumbe koji će se koristiti za suočavanje s određenim efektima
  • Memorija (u memoriji čipa)

Korak 5: L'écran LT24

L'écran LT24
L'écran LT24

Français:

Il nous a fallu comprendre et gérer l'écran LT24 celui-ci sera guideé un un processeur 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.

Engleski:

Morali smo razumjeti i upravljati zaslonom LT24, njime će upravljati simulirani NIOS procesor. Da bismo ga pokrenuli, pročitali smo dosta dokumentacije o tome.

Na kraju se naš zaslon koristi za prikaz FFT -a, do željenog učinka.

Korak 6: Kodovi Utiles En C ++ / Korisni kodovi u C ++

Kodovi Utiles En C ++ / Korisni kodovi u C ++
Kodovi Utiles En C ++ / Korisni kodovi u 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éclarations (oui un peu excluustif …):

Pokazat ću vam kodove u C ++ koji su nam bili korisni za stvaranje zvučnih efekata.

Prvo, sve naše izjave (da, malo iscrpne …):

#uključi

#include #include #include #include #include #include #include #include #include "WavUtils.cpp" #include "Biquad.cpp" #include #include #include #include "hps_0.h" #include "hps.h" #include "alt_gpio.h" #include "hwlib.h" #include "socal.h" #include #include "kiss_fft.h" #define nbpoint 1000 #define HW_REGS_BASE (ALT_STM_OFST) #define HW_REGS_00x (0def HW_REGS_00x HW_REGS_SPAN - 1) #define PI 3.1415926535 #define NFFT 80 #define FE 41000 #define F2 10000 #define F1 5925 #define PH 5000 #define PB 15000 #define MOD 2000 pomoću imenskog prostora std; const long 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*veličinaof (kiss_fft_cpx)); kiss_fft_cpx*out = (kiss_fft_cpx*) malloc (NFFT*veličinaof (kiss_fft_cpx)); kiss_fft_cpx*inv = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx)); queueoutBuf; int global = 0; int i = 0; kratki podaci, podatak2;

Ci-dessous une de nos fonctions permettant la modulacija:

Ispod jedne od naših funkcija koja omogućuje modulaciju:

modulacija void (int freq)

{if (i <NFFT) {data = data*cos (2*PI*freq*i/FE); u .r = podaci; i ++; } else i = "0"; }

Voici notre fonction main:

Ovo su naša glavna funkcija:

int main (int argc, char ** argv)

{volatile unsigned long *h2p_lw_spi_addr = NULL; hlapljivo bez potpisa dugo *h2p_lw_led_addr = NULL; hlapljivo bez potpisa dugo *h2p_lw_adc_addr = NULL; hlapljivo bez potpisa dugo *h2p_lw_blue_addr = NULL; hlapljivo bez potpisa dugo *h2p_lw_red_addr = NULL; hlapljivo bez potpisa dugo *h2p_lw_black_addr = NULL; void *virtualna_baza; int fd; printf ("1 / n"); // preslikavamo adresni prostor za spi registre u korisnički prostor kako bismo mogli s njima komunicirati. // mi ćemo zapravo preslikati cijeli CSR raspon HPS -a budući da želimo pristupiti različitim registrima unutar tog raspona if ((fd = open ("/dev/mem", (O_RDWR | O_SYNC))) == -1) {printf ("POGREŠKA: nije moguće otvoriti \"/dev/mem / "… / n"); return (1); } printf ("2 / n"); virtualna_baza = mmapa (NULL, HW_REGS_SPAN, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, HW_REGS_BASE); printf ("3 / n"); if (virtual_base == MAP_FAILED) {printf ("POGREŠKA: mmap () nije uspjela … / n"); zatvoriti (fd); return (1); } printf ("4 / n"); printf ("5 / n"); h2p_lw_spi_addr = virtualna baza + ((bez potpisa dugo) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (bez potpisa bez duga) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((bez potpisa dugo) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (bez potpisa bez duga) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((bez potpisa dugo) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (bez potpisa bez duga) (HW_REGS_MASK)); h2p_lw_blue_addr = virtual_base + ((bez potpisa dugo) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (bez potpisa dugo) (HW_REGS_MASK)); h2p_lw_black_addr = virtualna baza + ((bez potpisa dugo) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (bez potpisa dugo) (HW_REGS_MASK)); h2p_lw_red_addr = virtual_base + ((bez potpisa dugo) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (bez potpisa bez duga) (HW_REGS_MASK)); // int i = 0; int podaci; 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*veličinaof (kiss_fft_cpx)); kiss_fft_cpx*out = (kiss_fft_cpx*) malloc (NFFT*veličinaof (kiss_fft_cpx)); while (1) {data = *(h2p_lw_adc_addr+2); if (*h2p_lw_blue_addr == 1) podatak = odjek (podaci, 20); if (*h2p_lw_black_addr == 1) alt_write_word (h2p_lw_led_addr, 0x0F); if (*h2p_lw_red_addr == 0) alt_write_word (h2p_lw_led_addr, 0xF0); alt_write_word (h2p_lw_spi_addr+1, podaci | 0b111000000000000); } besplatno (konfiguracija); slobodan (u); besplatno (van); return 0; }

Korak 7: Le Final / Završni

Le Final / Finale
Le Final / Finale

Français:

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 certains effects, ainsi que un ecran qui permettra d'afficher la FFT.

Le haut-parleur est 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.

En esperant que cet Instructable vous soit utile.

Engleski:

Ovdje smo (konačno) konačni prikaz našeg Cactus 2000.

Stavili smo ulazne i izlazne PCB -ove koji su spojeni na ploču DE0 Nano Soc.

Zatim se njegove komponente stavljaju u žutu kutiju.

Na kutiji je klizni potenciometar koji može upravljati glasnoćom zvuka, gumbi i gumbi koji će pokrenuti neke efekte te zaslon koji će prikazati FFT.

Zvučnik je postavljen okomito na gumbe. Mikrofon se nalazi s druge strane kutije u odnosu na zvučnik.

To je sve za danas.

Nadajući se da vam je ovaj Instructable koristan.

Preporučeni: