Indholdsfortegnelse:

Cactus 2000: 7 trin
Cactus 2000: 7 trin

Video: Cactus 2000: 7 trin

Video: Cactus 2000: 7 trin
Video: ЗАКРИЧАЛ – ПОТЕРЯЛ ₽200.000 / ТРЭШКЭШ: Тишина 2024, Juli
Anonim
Kaktus 2000
Kaktus 2000

PROJEKT MIDI-CONTROLEUR 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 disposition:

  • Une carte DE0 Nano Soc
  • Des oscilloskoper, des multimetre
  • Des compants de différents types (amplificatør, modstand, 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 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. 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 haut-parleur. Finallement, il nous a fallu créer des effets sonores pour modifier le son.

Engelsk:

I løbet af vores fjerde skoleår realiserede vi en midi-controller. For at gøre dette havde vi til rådighed:

  • Et kort DE0 Nano Soc
  • Oscilloskoper, multimetre
  • Komponenter af forskellige typer (forstærker, modstand, kapacitet …)
  • En mikrofon og en højttaler
  • En lille skærm

Vi var nødt til at gennemgå forskellige farlige trin for at gøre projektet til en succes. Vi vil introducere dig til denne Instructable.

For det første designet til det grundlæggende kredsløb, der kræves for at gendanne mikrofonens søn og lave højttaleren. Når kredsløbet blev trukket, skulle printkortet udføres på softwaren Altium. Mens to elever havde travlt med at styre input- og output -PCB'erne, arbejdede de to andre med at køre DE0 Nano Soc -kortet, så kortet kunne opfange mikrofonprøverne og give et signal til højttaleren. Endelig var vi nødt til at oprette lydeffekter for at ændre lyden.

Trin 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

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

Vs = Ve (1 + Z1/Z2)

På en valgmulighed får gevinst de 101 en mettant R1 = 100 kOhm et R2 = 1 kOhm.

Cet forstærker kan bruge en forstærker til en lille mikro.

(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 forstærker 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 / årti. La fréquence de coupure choisit er 20 kHz.

Engelsk:

Det første trin er at oprette et kredsløb, der kan tage signalet, der sendes på mikrofonen, for at overføre det til DE0 Nano Soc -kortet. Over diagrammet over vores post.

(1) Inverteren genopretter 5 Volt og omdanner den til - 5 V. Den - 5 V tjener for den forstærker, vi vil se nedenfor.

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

Vs = Ve (1 + Z1 / Z2)

En forstærkning på 101 blev valgt ved at indstille R1 = 100 kOhm og R2 = 1 kOhm.

Denne forstærker bruges til at forstærke lyden fra mikrofonen.

(3) De to modstande skaber en forskydning, så udgangsspændingen er mellem 0 og 4 V.

(4) Mikrofonen, der forstærkes af forstærkeren.

(5) AGC (automatisk forstærkningskontrol)

(6) Endelig oprettede vi et andenordens lavpasfilter med to RC'er. Ordre 2 var nødvendig for at have en dæmpning på -40db / årti. Den valgte cutoff -frekvens er 20 kHz.

Trin 2: Conception Du Circuit En Sortie / Design af Output Circuit

Opfattelse Du Circuit En Sortie / Design af Output Circuit
Opfattelse Du Circuit En Sortie / Design af Output Circuit

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 (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 og signal analogique (nécessaire pour le haut parleur)

(2) La capacité va servir a virer la composante continue the 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 over vores output.

(1) DAC (Digital til Analog Converter), som gør det muligt at gendanne det digitale signal, der sendes af DE0 Nano Soc -kortet og konvertere det til et analogt signal (nødvendigt for højttaleren).

(2) Kapaciteten vil blive brugt til at overføre den kontinuerlige komponent i vores signal.

(3) Montering, der forstærker effekten af vores signal. Vi tog ordningen:

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

side 10

Denne ordning gør det muligt at få en gevinst på 200, hvilket er nødvendigt, fordi vores signal er virkelig svagt.

Trin 3: Conception Des PCB / Design af PCB

Conception Des PCB / Design af PCB
Conception Des PCB / Design af PCB

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

Menudesign -> Opdater PCB -dokument.

Ensuite, klik på "Valider ændringer". Pour chaque changement validé, un crochet vert apparaît dans la colonne: «Check».

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;

  • Menuen "Lag" giver dig mulighed for at vælge mellem lag, der kan bruges til printkort.
  • I menuen "Drill Drawing" kan du også finde det, du gerne vil have.
  • Menuen "Apertures" i 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 vores kredsløb blev instantieret, var vi nødt til at sætte dem på printkort.

For at gøre dette bruger vi Altium -softwaren. Alt skal være korrekt forbundet, klik derefter på:

Menudesign -> Opdater PCB -dokument.

Klik derefter på "Valider ændringer". For hver valideret ændring vises et grønt flueben i kolonnen "Check".

Derefter har du en ny fane, der åbnes, og du bliver nødt til at placere komponenterne i dette vindue.

Derefter skal du gå til menuen "File" -> "Output Output" -> "Gerber Files"

Et vindue åbnes, i dette finder du;

Menuen "Lag", der giver dig mulighed for at vælge, hvilke lag der understøtter dit printkort. Menuen "Boretegning", hvor alt skal fjernes. Menuen "Apertures", hvor du skal kontrollere "Embedded appertures".

Er alle hans trin afsluttet?

Lad os gå tilbage nu til vinduet med komponenterne på denne, du klikker på

Fil-> Produktionsoutput -> NC borefiler

Det er endelig slut, alt du skal gøre er at give 3D -printeren filerne.

Du finder vedhæftede fotos af vores to printkort.

Trin 4: Périphériques Pour La Carte DE0 Nano Soc / periferiudstyr til DE0 Nano Soc -kortet

Périphériques Pour La Carte DE0 Nano Soc / periferiudstyr til DE0 Nano Soc -kortet
Périphériques Pour La Carte DE0 Nano Soc / periferiudstyr til 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 conception and 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:

  • Kommunikation SPI pour le DAC
  • ADC pour recupérer les valeurs analogique de notre signal et les convertir og donnée digitales
  • HPS (processeur) pour gérer tout les codes
  • GPIO pour les boutons qui vont servir à exécuter certains effets
  • Mémoire (på chiphukommelse)

Engelsk:

IP -kernerne er optimeret til Intel FPGA -enheder og kan let implementeres for at reducere design og testtid.

Takket være Qsys -softwaren var vi i stand til at oprette integrerede eksterne enheder på vores kort. Her er en liste over den enhed, vi tilføjede:

  • SPI -kommunikation til DAC
  • ADC for at hente de analoge værdier fra vores signal og konvertere dem til digitale data
  • HPS (processor) til at styre alle koder
  • GPIO til de knapper, der bruges til at klare visse effekter
  • Hukommelse (på chipens hukommelse)

Trin 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 guidé par 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.

Engelsk:

Vi var nødt til at forstå og styre skærmen LT24, den styres af en simuleret NIOS -processor. For at starte det læser vi meget dokumentation om det.

I sidste ende bruges vores skærm til at vise FFT til den ønskede effekt.

Trin 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 anvender nos déclarations (oui un peu exhaustif …):

Jeg vil vise dig koderne i C ++, der var nyttige for os til at skabe lydeffekter.

For det første alle vores udsagn (ja lidt udtømmende …):

#omfatte

#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 (0x040000AS_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 hjælp af navneområde std; const lang 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 global = 0; int i = 0; korte data, data2;

Ci-dessous une de nos fonctions permettant la modulation:

Nedenfor en af vores funktioner, der tillader modulering:

tomrumsmodulation (int freq)

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

Voici notre fonction main:

Disse er vores vigtigste funktion:

int main (int argc, char ** argv)

{flygtig usigneret lang *h2p_lw_spi_addr = NULL; flygtig usigneret lang *h2p_lw_led_addr = NULL; flygtig usigneret lang *h2p_lw_adc_addr = NULL; flygtig usigneret lang *h2p_lw_blue_addr = NULL; flygtig usigneret lang *h2p_lw_red_addr = NULL; flygtig usigneret lang *h2p_lw_black_addr = NULL; void *virtual_base; int fd; printf ("1 / n"); // kortlæg adresserummet for spi -registre til brugerrum, så vi kan interagere med dem. // vi kortlægger faktisk hele CSR -området for HPS, da vi ønsker at få adgang til forskellige registre inden for dette område, hvis ((fd = open ("/dev/mem", (O_RDWR | O_SYNC))) == -1) {printf ("FEJL: kunne ikke åbne \"/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 ("FEJL: mmap () mislykkedes … / n"); tæt (fd); retur (1); } printf ("4 / n"); printf ("5 / n"); h2p_lw_spi_addr = virtual_base + ((usigneret lang) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (usigneret lang) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((usigneret lang) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (usigneret lang) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((usigneret lang) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (usigneret lang) (HW_REGS_MASK)); h2p_lw_blue_addr = virtual_base + ((usigneret lang) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (usigneret lang) (HW_REGS_MASK)); h2p_lw_black_addr = virtual_base + ((usigneret lang) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (usigneret lang) (HW_REGS_MASK)); h2p_lw_red_addr = virtual_base + ((usigneret lang) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (usigneret lang) (HW_REGS_MASK)); // int i = 0; int data; 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)); 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 (ud); returnere 0; }

Trin 7: Le Final / finalen

Le Final / finalen
Le Final / finalen

Français:

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 komponenter 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 sidste gengivelse af vores Cactus 2000.

Vi sætter input- og output -printkortene, der er forbundet til DE0 Nano Soc -kortet.

Derefter placeres dets komponenter i en gul boks.

På boksen er et diaspotentiometer, som kan styre lydstyrken, knapper og knapper, der starter nogle effekter, og en skærm, der viser FFT.

Højttaleren er placeret vinkelret på knapperne. Mikrofonen er placeret på den anden side af boksen i forhold til højttaleren.

Det er alt for i dag.

Håber at denne instruktør er nyttig for dig.

Anbefalede: