Innholdsfortegnelse:

Cactus 2000: 7 trinn
Cactus 2000: 7 trinn

Video: Cactus 2000: 7 trinn

Video: Cactus 2000: 7 trinn
Video: Связала 3 штуки за один вечер и продала по 2000 рублей 💯 ИДЕТ ВСЕМ! Шапка спицами без шва просто. 2024, Juli
Anonim
Kaktus 2000
Kaktus 2000

PROJEKT MIDI-KONTROLLØR EISE4

Fransk:

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

  • Une carte DE0 Nano Soc
  • Des oscilloskoper, des multimetre
  • Det er forskjellige typer komposanter (amplifikatører, motstand, kapasitet …)
  • 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 Instruerbar.

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. Anheng 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 haut-parleur. Finallement, il nous a fallu créer des effets sonores pour modifier le son.

Engelsk:

I løpet av vårt fjerde skoleår realiserte vi en midi-kontroller. For å gjøre dette hadde vi til rådighet:

  • Et kart DE0 Nano Soc
  • Oscilloskoper, multimetre
  • Komponenter av forskjellige typer (forsterker, motstand, kapasitet …)
  • En mikrofon og en høyttaler
  • En liten skjerm

Vi måtte gå gjennom forskjellige farlige trinn for å gjøre prosjektet til en suksess. Vi vil introdusere deg for denne Instructable.

For det første utformingen av grunnkretsen som kreves for å gjenopprette sønnen til mikrofonen og lage høyttaleren. Når kretsløpet ble trukket, skulle kretskortet gjøres på programvaren Altium. Mens to studenter var opptatt med å håndtere inngangs- og utgangskortene, jobbet de to andre med å kjøre DE0 Nano Soc -kortet slik at kortet kunne hente mikrofonprøvene og gi et signal til høyttaleren. Til slutt måtte vi lage lydeffekter for å endre lyden.

Trinn 1: Conception Du Circuit En Entrée / Entrance Circuit Design

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

Fransk:

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 formule suivante:

Vs = Ve (1 + Z1/Z2)

På en valgmulighet en gevinst de 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 spanning de sortie soit includes entre 0 et 4 V.

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

(5) CAG (Controle Automatique de Gain)

(6) Hell 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 / tiår. La fréquence de coupure choisit est 20 kHz.

Engelsk:

Det første trinnet er å sette opp en krets som kan ta signalet som sendes på mikrofonen for å overføre det til DE0 Nano Soc -kortet. Over diagrammet over oppføringen vår.

(1) Omformeren vil gjenopprette 5 Volt og omdanne den til - 5 V. Den - 5 V tjener for forsterkeren som vi vil se nedenfor.

(2) Her har vi en ikke-inverterende forsterker. I henhold til følgende formel:

Vs = Ve (1 + Z1 / Z2)

En forsterkning på 101 ble valgt ved å sette R1 = 100 kOhm og R2 = 1 kOhm.

Denne forsterkeren vil bli brukt til å forsterke lyden til mikrofonen.

(3) De to motstandene vil skape en forskyvning slik at utgangsspenningen er mellom 0 og 4 V.

(4) Mikrofonen som vil bli forsterket av forsterkeren.

(5) AGC (automatisk forsterkningskontroll)

(6) Til slutt opprettet vi et andreordens lavpassfilter med to RC-er. Ordre 2 var nødvendig for å ha en demping på -40db / tiår. Den valgte grensefrekvensen er 20 kHz.

Trinn 2: Conception Du Circuit En Sortie / Design of Output Circuit

Conception Du Circuit En Sortie / Design of Output Circuit
Conception Du Circuit En Sortie / Design of Output Circuit

Fransk:

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 (Digital to Analog Converter) qui va permettre de récupérer le signal numérique envoyer par la carte DE0 Nano Soc et le convertir and 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 schéma:

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

side 10

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

Engelsk:

Over diagrammet for utgangen vår.

(1) DAC (Digital to Analog Converter) som lar deg gjenopprette det digitale signalet som sendes av DE0 Nano Soc -kortet og konvertere det til et analogt signal (nødvendig for høyttaleren).

(2) Kapasiteten vil bli brukt til å overføre den kontinuerlige komponenten i vårt signal.

(3) Montering som forsterker kraften til signalet vårt. Vi tok opplegget:

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

side 10

Denne ordningen gjør det mulig å ha en gevinst på 200 som er nødvendig fordi signalet vårt er veldig svakt.

Trinn 3: Conception Des PCB / Design of PCB

Conception Des PCB / Design of PCB
Conception Des PCB / Design of PCB

Fransk:

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:

Menydesign -> Oppdater PCB -dokument.

Ensuite, klikk på «Bekreft endringer». Hell chaque changement validé, un crochet vert apparaît dans la colonne: «Sjekk».

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

Puis, il faut aller dans le menu "File" -> "Fabrication Output" -> "Gerber Files"

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

  • Le menu "Layers" qui vous permettra de choisir sur quel lagen va s'appuyer votre PCB.
  • Le menu "Drill Drawing" dans lequel il faut que tout soit décocher.
  • Menyen "Apertures" dans lequel il 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

File-> Fabrication Output -> NC Drill Files

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.

Engelsk:

Når kretsene våre ble øyeblikkelig, måtte vi sette dem på PCB.

For å gjøre dette bruker vi Altium -programvaren. Alt må være riktig tilkoblet, klikk deretter på:

Menydesign -> Oppdater PCB -dokument.

Klikk deretter på "Bekreft endringer". For hver validerte endring vises en grønn hake i "Sjekk" -kolonnen.

Etter det vil du ha en ny fane som åpnes, og du må plassere komponentene i dette vinduet.

Deretter må du gå til "File" -> "Output Output" -> "Gerber Files" -menyen

Et vindu åpnes, i dette finner du;

"Lag" -menyen som lar deg velge hvilke lag som vil støtte PCB. "Drill Drawing" -menyen der alt må fjernes. Menyen "Apertures" der du må sjekke "Embedded appertures".

Er alle trinnene hans fullført?

La oss gå tilbake til vinduet med komponentene på denne du klikker på

File-> Manufacturing Output -> NC Drill Files

Det er endelig over, alt du trenger å gjøre er å gi 3D -skriveren filene.

Du finner vedlagte bilder av våre to PCB -er.

Trinn 4: Périphériques Pour La Carte DE0 Nano Soc / eksterne enheter for DE0 Nano Soc -kortet

Périphériques Pour La Carte DE0 Nano Soc / eksterne enheter for DE0 Nano Soc -kortet
Périphériques Pour La Carte DE0 Nano Soc / eksterne enheter for DE0 Nano Soc -kortet

Francais:

Les cœurs IP sont optimisés pour les périphériques Intel FPGA and peuvent être implémentés pour réduire la concepty and the temps de test.

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

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

  • Kommunikasjon SPI pour le DAC
  • ADC pour recupérer les valeurs analogique de notre signal et les convertir and donnée digitales
  • HPS (prosessor) pour gérer tout les codes
  • GPIO pour les boutons qui vont servir à exécuter sertains effets
  • Mémoire (på chip -minne)

Engelsk:

IP -kjernene er optimalisert for Intel FPGA -enheter og kan enkelt implementeres for å redusere design og testtid.

Takket være Qsys -programvaren klarte vi å lage innebygde eksterne enheter på kartet vårt. Her er en liste over enheten vi la til:

  • SPI -kommunikasjon for DAC
  • ADC for å hente de analoge verdiene fra signalet vårt og konvertere dem til digitale data
  • HPS (prosessor) for å administrere alle koder
  • GPIO for knappene som skal brukes til å takle visse effekter
  • Minne (på minnet til brikken)

Trinn 5: L'écran LT24

L'écran LT24
L'écran LT24

Fransk:

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

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

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

Engelsk:

Vi måtte forstå og administrere LT24 -skjermen, den vil bli styrt av en simulert NIOS -prosessor. For å starte det, leser vi mye dokumentasjon om det.

Til slutt brukes skjermen vår til å vise FFT, til ønsket effekt.

Trinn 6: Codes Utiles En C ++ / Nyttige koder i C ++

Codes Utiles En C ++ / Nyttige koder i C ++
Codes Utiles En C ++ / Nyttige koder i C ++

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

Voici d'abord tar i betraktning nos déclarations (oui un peu exhaustif …):

Jeg skal vise deg kodene i C ++ som var nyttige for oss for å lage lydeffekter.

Først alle våre uttalelser (ja litt uttømmende …):

#inkludere

#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_de) 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 ved bruk av navneområde std; const lang SAMPLE_RATE = 12500000; // Création de la configuration og 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 global = 0; int i = 0; korte data, data2;

Ci-dessous une de nos fonctions permettant la modulation:

Under en av våre funksjoner som tillater modulering:

tomromsmodulering (int frekv.)

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

Hovedsak:

Disse er vår hovedfunksjon:

int main (int argc, char ** argv)

{flyktig usignert lang *h2p_lw_spi_addr = NULL; flyktig usignert lang *h2p_lw_led_addr = NULL; flyktig usignert lang *h2p_lw_adc_addr = NULL; flyktig usignert lang *h2p_lw_blue_addr = NULL; flyktig usignert lang *h2p_lw_red_addr = NULL; flyktig usignert lang *h2p_lw_black_addr = NULL; void *virtual_base; int fd; printf ("1 / n"); // kartlegge adresserommet for spi -registrene i brukerrom slik at vi kan samhandle med dem. // vi vil faktisk kartlegge hele CSR -spennet til HPS siden vi ønsker å få tilgang til forskjellige registre innenfor det området hvis ((fd = open ("/dev/mem", (O_RDWR | O_SYNC))) == -1) {printf ("FEIL: kunne ikke åpne \"/dev/mem / "… / n"); retur (1); } printf ("2 / n"); virtual_base = mmap (NULL, HW_REGS_SPAN, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, HW_REGS_BASE); printf ("3 / n"); hvis (virtual_base == MAP_FAILED) {printf ("FEIL: mmap () mislyktes … / n"); lukk (fd); retur (1); } printf ("4 / n"); printf ("5 / n"); h2p_lw_spi_addr = virtual_base + ((usignert lang) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (usignert lang) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((usignert lang) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (usignert lang) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((usignert lang) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (usignert lang) (HW_REGS_MASK)); h2p_lw_blue_addr = virtual_base + ((usignert lang) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (usignert lang) (HW_REGS_MASK)); h2p_lw_black_addr = virtual_base + ((usignert lang) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (usignert lang) (HW_REGS_MASK)); h2p_lw_red_addr = virtual_base + ((usignert lang) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (usignert lang) (HW_REGS_MASK)); // int i = 0; int data; int i = 0, j; // Création de la configuration og 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)); mens (1) {data = *(h2p_lw_adc_addr+2); hvis (*h2p_lw_blue_addr == 1) data = ekko (data, 20); hvis (*h2p_lw_black_addr == 1) alt_write_word (h2p_lw_led_addr, 0x0F); hvis (*h2p_lw_red_addr == 0) alt_write_word (h2p_lw_led_addr, 0xF0); alt_write_word (h2p_lw_spi_addr+1, data | 0b111000000000000); } gratis (config); gratis (in); gratis (ut); retur 0; }

Trinn 7: Le Final / finalen

Le Final / finalen
Le Final / finalen

Fransk:

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

Nous avons mis les PCB entrée and 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 effets, 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.

Engelsk:

Her er vi (endelig) den siste gjengivelsen av vår Cactus 2000.

Vi setter inngangs- og utgangskortene som er koblet til DE0 Nano Soc -kortet.

Deretter plasseres komponentene i en gul boks.

På esken er et lysbildepotensiometer, som kan styre volumet på lyden, knappene og knappene som vil starte noen effekter, og en skjerm som viser FFT.

Høyttaleren er plassert vinkelrett på knappene. Mikrofonen er plassert på den andre siden av esken i forhold til høyttaleren.

Det var alt for i dag.

Håper at denne instruksen er nyttig for deg.

Anbefalt: