Inhoudsopgave:

Cactus 2000: 7 stappen
Cactus 2000: 7 stappen

Video: Cactus 2000: 7 stappen

Video: Cactus 2000: 7 stappen
Video: Actiefotografie voor Beginners (In 7 stappen & tips!) | Canon Nederland 2024, Juli-
Anonim
Cactus 2000
Cactus 2000

PROJECT MIDI-CONTROLEUR EISE4

Frans:

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

  • Une carte DE0 Nano Soc
  • Des oscilloscopen, des multimeters
  • Des composants de différents types (amplificateur, résistance, capacité…)
  • Un micro et un haut-parleur
  • Un petit ecran

Er is een nieuwe passer par différentes étapes perilleuses afin de réussir le projet. Nous allons vous les présenter dans cet Instructable.

Voorbereiding, het ontwerp van het circuit van de basis van de nécessaire van de recuperer van de micro en het renderen van het haut-parleur. Une fois le circuit dessiner, le PCB était à faire sur le logiciel Altium. Hanger met een tweede levend gebruik van de PCB van de ingang en van de sortie, van de tweede levensgenieter van de kaart DE0 Nano Soc afin que la carte puisse récupérer les echantillons du micro et redonner un signal pour le haut-parleur. Finallement, il nous a fallu créer des effets sonores pour modifier le son.

Engels:

Tijdens ons vierde leerjaar hebben we een midi-controller gerealiseerd. Hiervoor hadden we de beschikking over:

  • Een kaart DE0 Nano Soc
  • Oscilloscopen, multimeters
  • Componenten van verschillende typen (versterker, weerstand, capaciteit …)
  • Een microfoon en een luidspreker
  • Een klein scherm

We hebben verschillende gevaarlijke stappen moeten doorlopen om het project tot een succes te maken. We zullen u kennis laten maken met deze Instructable.

Ten eerste, het ontwerp van het basiscircuit dat nodig is om de zoon van de microfoon te herstellen en de luidspreker te maken. Nadat het circuit getekend was, moest de PCB worden gemaakt op de software Altium. Terwijl twee studenten bezig waren met het beheer van de input- en output-PCB's, werkten de andere twee aan de DE0 Nano Soc-kaart, zodat de kaart de microfoonsamples kon oppikken en een signaal voor de spreker kon geven. Ten slotte moesten we geluidseffecten maken om het geluid te veranderen.

Stap 1: Conception Du Circuit En Entrée / Entree Circuit Design

Conception Du Circuit En Entree / Entree Circuit Design
Conception Du Circuit En Entree / Entree Circuit Design

Frans:

La première étape bestaat uit een mettre en plaats een circuit met een signaal dat de signaalgever op micro-zenders à la carte DE0 Nano Soc.

Ci-dessus le schema 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. Van de volgende formule:

Vs = Ve(1 + Z1/Z2)

Op een keuze un gain de 101 en mettant R1 = 100 kOhm en R2 = 1 kOhm.

Cet amplificateur va servir een versterker le son du micro.

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

(4) De micro qui va être versterker door de versterker.

(5) CAG (Controle Automatique de Gain)

(6) Giet het laatste, nieuwe creaties en filters voor de tweede orde avec deux RC. L'ordre 2 était nécessaire pour avoir une atténuation de - 40db / decade. La fréquence de coupure choisit est 20 kHz.

Engels:

De eerste stap is het opzetten van een circuit dat het signaal dat op de microfoon wordt verzonden, kan verzenden naar de DE0 Nano Soc-kaart. Boven het schema van onze inzending.

(1) De omvormer zal de 5 Volt recupereren en omzetten in - 5 V. De - 5 V zal dienen voor de versterker die we hieronder zullen zien.

(2) Hier hebben we een niet-inverterende versterker. Volgens de volgende formule:

Vs = Ve (1 + Z1 / Z2)

Er werd een versterking van 101 gekozen door R1 = 100 kOhm en R2 = 1 kOhm in te stellen.

Deze versterker wordt gebruikt om het geluid van de microfoon te versterken.

(3) De twee weerstanden zullen een offset creëren zodat de uitgangsspanning tussen 0 en 4 V ligt.

(4) De microfoon die door de versterker wordt versterkt.

(5) AGC (automatische versterkingsregeling)

(6) Ten slotte hebben we een laagdoorlaatfilter van de tweede orde gemaakt met twee RC's. Order 2 was nodig om een demping van -40db / decade te hebben. De gekozen afsnijfrequentie is 20 kHz.

Stap 2: Conception Du Circuit En Sortie / Ontwerp van het uitgangscircuit

Conception Du Circuit En Sortie / Ontwerp van het uitgangscircuit
Conception Du Circuit En Sortie / Ontwerp van het uitgangscircuit

Frans:

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

Ci-dessus le schema de notre sortie.

(1) De DAC (digitaal-naar-analoog-omzetter) is een goed hulpmiddel voor het herwinnen van het signaalnummer envoyer par la carte DE0 Nano Soc et le convertir en signal analogique (nécessaire pour le haut parleur)

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

(3) Montage qui va permettre d'amplifier la puissance de notre signal. Nous avons prit le schema:

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

pagina 10

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

Engels:

Boven het diagram van onze output.

(1) De DAC (Digital to Analog Converter) waarmee het digitale signaal dat door de DE0 Nano Soc-kaart is verzonden, kan worden hersteld en omgezet in een analoog signaal (nodig voor de luidspreker).

(2) De capaciteit zal worden gebruikt om de continue component van ons signaal over te dragen.

(3) Montage die de kracht van ons signaal zal versterken. We hebben het schema genomen:

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

pagina 10

Dit schema maakt het mogelijk om een versterking van 200 te hebben, wat nodig is omdat ons signaal erg zwak is.

Stap 3: Conception Des PCB / Ontwerp van de PCB

Conception Des PCB / Ontwerp van de PCB
Conception Des PCB / Ontwerp van de PCB

Frans:

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 correction connecter puis cliquer sur:

Menu Ontwerp -> Update PCB-document.

Ensuite, klik op "Wijzigingen valideren". Pour chaque changement validé, un crochet vert apparaît dans la colonne: «Check».

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

U kunt het menu "Bestand" -> "Fabrieksuitvoer" -> "Gerber-bestanden" bekijken

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

  • Het menu "Lagen" qui vous permettra de choisir sur quel lagen va s'appuyer votre PCB.
  • Het menu "Boortekening" is gelijk aan het niveau van de faut que tout soit décocher.
  • Het menu "Apertures" is gelijk aan de faut cocher "Embedded appertures".

Toute ses étapes sont complétées ?

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

Bestand-> Fabricage-uitvoer -> NC-boorbestanden

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.

Engels:

Toen onze circuits eenmaal waren geïnstantieerd, moesten we ze op PCB's plaatsen.

Hiervoor gebruiken we de Altium-software. Alles moet correct aangesloten zijn klik dan op:

Menu Ontwerp -> Update PCB-document.

Klik vervolgens op "Wijzigingen valideren". Voor elke gevalideerde wijziging verschijnt een groen vinkje in de kolom "Controleren".

Daarna heeft u een nieuw tabblad dat wordt geopend en moet u de componenten in dit venster plaatsen.

Dan moet je naar het menu "Bestand" -> "Uitvoer" -> "Gerber-bestanden" gaan

Er gaat een venster open, hierin vind je;

Het menu "Lagen" waarmee u kunt kiezen welke lagen uw PCB ondersteunen. Het menu "Boortekening" waar alles moet worden uitgeschakeld. Het menu "Apertures" waarin je "Embedded Appertures" moet aanvinken.

Zijn al zijn stappen voltooid?

Laten we nu teruggaan naar het venster met de componenten waarop u klikt

Bestand-> Productie-output -> NC-boorbestanden

Het is eindelijk voorbij, het enige wat je hoeft te doen is de 3D-printer de bestanden te geven.

U vindt bijgevoegd de foto's van onze twee PCB's.

Stap 4: Perifere producten voor de DE0 Nano Soc / Randapparatuur voor de DE0 Nano Soc-kaart

Periferie voor de kaart DE0 Nano Soc / Randapparatuur voor de DE0 Nano Soc-kaart
Periferie voor de kaart DE0 Nano Soc / Randapparatuur voor de DE0 Nano Soc-kaart

Frans:

Lees meer IP-adressen voor optimale prestaties van Intel FPGA en nieuwe implementaties van concepten en temps van 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:

  • Communicatie SPI voor de DAC
  • ADC voor recuperatie van analoge waarden van signalen en van digitale conversies
  • HPS (processeur) voor alle codes
  • GPIO pour les boutons qui vont servir à exécuter bepaalde effecten
  • Mémoire (op chipgeheugen)

Engels:

De IP-cores zijn geoptimaliseerd voor Intel FPGA-apparaten en kunnen eenvoudig worden geïmplementeerd om ontwerp- en testtijd te verkorten.

Dankzij de Qsys-software waren we in staat om embedded randapparatuur in onze kaart te creëren. Hier is een lijst van het apparaat dat we hebben toegevoegd:

  • SPI-communicatie voor de DAC
  • ADC om de analoge waarden uit ons signaal op te halen en om te zetten naar digitale gegevens
  • HPS (processor) om alle codes te beheren
  • GPIO voor de knoppen die worden gebruikt om met bepaalde effecten om te gaan
  • Geheugen (op het geheugen van de chip)

Stap 5: L'écran LT24

L'écran LT24
L'écran LT24

Frans:

Er is een nieuw comprendre en meer informatie over de LT24 celui-ci sera guidé par un processeur simulé NIOS.

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

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

Engels:

We moesten het scherm LT24 begrijpen en beheren, het wordt geleid door een gesimuleerde NIOS-processor. Om het op gang te brengen, lezen we er veel documentatie over.

Uiteindelijk wordt ons scherm gebruikt om de FFT weer te geven, met het gewenste effect.

Stap 6: Codes Utiles En C++ / Nuttige codes in C++

Codes Utiles En C++ / Nuttige codes in C ++
Codes Utiles En C++ / Nuttige codes in 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 exhaustif…):

Ik ga je de codes in C++ laten zien die voor ons nuttig waren om geluidseffecten te creëren.

Allereerst al onze uitspraken (ja een beetje uitputtend…):

#erbij betrekken

#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_SPAN (0x04000000_REGSMA) 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 met namespace std; const lang SAMPLE_RATE = 1250000; // Creatie van de configuratie en buffers in en uit voor s (t) en 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 globaal = 0; int ik = 0; korte gegevens, gegevens2;

Ci-dessous une de nos fonctions permettant la modulatie:

Hieronder een van onze functies die modulatie mogelijk maken:

leegte modulatie (int freq)

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

Voici notre fonction main:

Deze onze belangrijkste functie:

int main(int argc, char **argv)

{ vluchtige unsigned long *h2p_lw_spi_addr=NULL; vluchtig unsigned long *h2p_lw_led_addr=NULL; vluchtig unsigned long *h2p_lw_adc_addr=NULL; vluchtig unsigned long *h2p_lw_blue_addr=NULL; vluchtig unsigned long *h2p_lw_red_addr=NULL; vluchtig unsigned long *h2p_lw_black_addr=NULL; void *virtual_base; int fd; printf("1\n"); // wijs de adresruimte voor de spi-registers in de gebruikersruimte zodat we ermee kunnen communiceren. // we brengen de hele CSR-spanwijdte van de HPS in kaart, omdat we toegang willen hebben tot verschillende registers binnen die spanwijdte if((fd = open("/dev/mem", (O_RDWR | O_SYNC))) == -1) { printf("FOUT: kon \"/dev/mem\"…\n" niet openen; terugkeer(1); } printf("2\n"); virtual_base = mmap(NULL, HW_REGS_SPAN, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, HW_REGS_BASE); printf("3\n"); if(virtual_base == MAP_FAILED) { printf("FOUT: mmap() mislukt…\n"); sluiten (fd); terugkeer(1); } printf("4\n"); printf("5\n"); h2p_lw_spi_addr = virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_blue_addr= virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_black_addr= virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_red_addr= virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (unsigned long) (HW_REGS_MASK)); //int i=0; int-gegevens; int i = 0, j; // Creatie van de configuratie en buffers in en uit voor s (t) en 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)); while(1){ data = *(h2p_lw_adc_addr+2); if(*h2p_lw_blue_addr == 1) data = echo(data, 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, data | 0b111000000000000); } gratis(configuratie); gratis (binnen); gratis(uit); retourneer 0; }

Stap 7: Le Final / de Finale

Le Finale / de Finale
Le Finale / de Finale

Frans:

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

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

Ensuite, ses composants sont places à l'interieur d'une boite jaune.

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

Le haut-parleur est positionné perpendiculairement par rapport aux boutons. Het 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.

Engels:

Hier zijn we (eindelijk) de definitieve weergave van onze Cactus 2000.

We plaatsen de input- en output-PCB's die zijn aangesloten op het DE0 Nano Soc-bord.

Vervolgens worden de componenten in een gele doos geplaatst.

Op de doos bevindt zich een schuifpotentiometer, die het volume van het geluid kan regelen, knoppen en knoppen die enkele effecten zullen starten, en een scherm dat de FFT zal weergeven.

De luidspreker staat loodrecht op de knoppen. De microfoon bevindt zich aan de andere kant van de doos ten opzichte van de luidspreker.

Dat is alles voor vandaag.

In de hoop dat dit Instructable nuttig voor u is.

Aanbevolen: