Cuprins:

Cactus 2000: 7 pași
Cactus 2000: 7 pași

Video: Cactus 2000: 7 pași

Video: Cactus 2000: 7 pași
Video: De ce nu ai CALDURA in MASINA? (5 MOTIVE) 2024, Iulie
Anonim
Cactus 2000
Cactus 2000

PROIECT 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 oscilloscopes, des multimètres
  • Despre compozitori de diferite tipuri (amplificator, rezistență, capacitate …)
  • Un micro et un haut-parleur
  • Un petit ecran

Il nous a fallu passer par diferite é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 era necesar 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 care la carte puisse récupérer les échantillons du micro et redonner un signal pour le haut-parleur. Finallement, il nous a fallu create des effets sonores pour modifier le son.

Engleză:

În al patrulea an de școală, am realizat un controler midi. Pentru a face acest lucru, am avut la dispoziție:

  • O hartă DE0 Nano Soc
  • Osciloscoape, multimetre
  • Componente de diferite tipuri (amplificator, rezistență, capacitate …)
  • Un microfon și un difuzor
  • Un mic ecran

A trebuit să parcurgem diferiți pași periculoși pentru a face proiectul un succes. Vă vom prezenta acest instructabil.

În primul rând, proiectarea circuitului de bază necesar pentru recuperarea fiului microfonului și realizarea difuzorului. După extragerea circuitului, PCB-ul urma să fie realizat pe software-ul Altium. În timp ce doi studenți erau ocupați cu gestionarea PCB-urilor de intrare și ieșire, ceilalți doi lucrau pentru a rula cardul DE0 Nano Soc, astfel încât cardul să poată prelua probele de microfon și să dea un semnal pentru difuzor. În cele din urmă, a trebuit să creăm efecte sonore pentru a schimba sunetul.

Pasul 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 prima étape constă în a pune în loc un circuit care poate lua semnala pe micro pentru transmiterea 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 formula suivante:

Vs = Ve (1 + Z1 / Z2)

On a choisit un gain de 101 en mettant R1 = 100 kOhm și R2 = 1 kOhm.

Cet amplificateur va servi a amplifier le son du micro.

(3) Les deux résistances vont create un offset afin that the tension de sortie soit comprises between 0 et 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 - 40db / decade. Frecvența de cupă alege este de 20 kHz.

Engleză:

Primul pas este de a configura un circuit care poate prelua semnalul trimis pe microfon pentru al transmite pe cardul DE0 Nano Soc. Deasupra diagramei intrării noastre.

(1) Invertorul va recupera 5 Volți și îl va transforma în - 5 V. - 5 V va servi pentru amplificatorul pe care îl vom vedea mai jos.

(2) Aici avem un amplificator fără inversare. Conform următoarei formule:

Vs = Ve (1 + Z1 / Z2)

Un câștig de 101 a fost ales prin setarea R1 = 100 kOhm și R2 = 1 kOhm.

Acest amplificator va fi folosit pentru a amplifica sunetul microfonului.

(3) Cele două rezistențe vor crea un offset astfel încât tensiunea de ieșire să fie între 0 și 4 V.

(4) Microfonul care va fi amplificat de amplificator.

(5) AGC (control automat al câștigului)

(6) În cele din urmă, am creat un filtru trece-jos de ordinul doi cu două RC-uri. Ordinul 2 era necesar pentru a avea o atenuare de -40db / deceniu. Frecvența de întrerupere aleasă este de 20 kHz.

Pasul 2: Conception Du Circuit En Sortie / Proiectarea circuitului de ieșire

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

Français:

Într-un al doilea timp, avem pensii la crearea circuitului în ieșire.

Ci-dessus le schéma de notre sortie.

(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. Am prit le schéma:

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

pagina 10

Ce schemă permite să obțină un câștig de 200 care este necesar car nostru de semnal este foarte slab.

Engleză:

Deasupra diagramei rezultatului nostru.

(1) DAC (Digital to Analog Converter) care va permite recuperarea semnalului digital trimis de cardul DE0 Nano Soc și transformarea acestuia într-un semnal analog (necesar difuzorului).

(2) Capacitatea va fi utilizată pentru a transfera componenta continuă a semnalului nostru.

(3) Montare care va amplifica puterea semnalului nostru. Am luat schema:

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

pagina 10

Această schemă face posibilă obținerea unui câștig de 200, care este necesar, deoarece semnalul nostru este foarte slab.

Pasul 3: Concepția Des PCB / Proiectarea PCB

Conception Des PCB / Proiectarea PCB-ului
Conception Des PCB / Proiectarea PCB-ului

Français:

Une fois que nos circuits ont é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 apoi clicker sur:

Proiectare meniu -> Actualizare document PCB.

Ensuite, faceți clic pe „Validați modificările”. 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 in the menu "File" -> "Fabrication Output" -> "Gerber Files"

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

  • Meniul "Layers" care vă permite să alegeți pe acel layer vă va apela PCB.
  • Le menu "Drill Drawing" în care trebuie să fie tot ce este decocher.
  • Meniul „Apertures” în care trebuie să 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 the files.

Veți găsi ci-joint les photos de nos deux PCB.

Engleză:

Odată ce circuitele noastre au fost instanțiate, a trebuit să le punem pe PCB-uri.

Pentru a face acest lucru, folosim software-ul Altium. Totul trebuie conectat corect, apoi faceți clic pe:

Proiectare meniu -> Actualizare document PCB.

Apoi faceți clic pe „Validați modificările”. Pentru fiecare modificare validată, apare o bifă verde în coloana „Verifică”.

După aceea, veți avea o nouă filă care se va deschide și va trebui să plasați componentele în această fereastră.

Apoi, trebuie să accesați meniul „Fișier” -> „Ieșire ieșire” -> „Fișiere Gerber”

Se deschide o fereastră, în aceasta veți găsi;

Meniul „Straturi” care vă va permite să alegeți ce straturi vă vor susține PCB-ul. Meniul „Drill Drawing” în care totul trebuie debifat. Meniul „Diafragme” în care trebuie să bifați „Diafragme încorporate”.

Toți pașii lui sunt finalizați?

Să ne întoarcem acum la fereastră cu componentele de pe aceasta pe care faceți clic

Fișier-> Ieșire de fabricație -> Fișiere NC Drill

În cele din urmă s-a terminat, tot ce trebuie să faceți este să dați fișierelor imprimantei 3D.

Veți găsi atașate fotografiile celor două PCB-uri.

Pasul 4: Périphériques Pour La Carte DE0 Nano Soc / Periferice pentru cardul DE0 Nano Soc

Périphériques Pour La Carte DE0 Nano Soc / Periferice pentru cardul DE0 Nano Soc
Périphériques Pour La Carte DE0 Nano Soc / Periferice pentru cardul DE0 Nano Soc

Francais:

Les cœurs IP sont optimisés pour les périphériques Intel FPGA și pot fi implementate pentru reducerea concepției și a timpului de testare.

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

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

  • Comunicare SPI pentru DAC
  • ADC pentru recuperarea valorilor analogice ale semnalului nostru și transformarea lor în date digitale
  • HPS (procesor) pentru a gestiona toate codurile
  • GPIO pour les boutons qui vont servir to executer certain effets
  • Mémoire (pe memorie cu cip)

Engleză:

Miezurile IP sunt optimizate pentru dispozitivele Intel FPGA și pot fi implementate cu ușurință pentru a reduce timpul de proiectare și testare.

Datorită software-ului Qsys am reușit să creăm periferice încorporate pe harta noastră. Iată o listă a dispozitivului pe care l-am adăugat:

  • Comunicare SPI pentru DAC
  • ADC pentru a prelua valorile analogice din semnalul nostru și a le converti în date digitale
  • HPS (procesor) pentru a gestiona toate codurile
  • GPIO pentru butoanele care vor fi utilizate pentru a face față anumitor efecte
  • Memorie (pe memoria cipului)

Pasul 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, à selecter the effect voulu.

Engleză:

A trebuit să înțelegem și să gestionăm ecranul LT24, acesta va fi ghidat de un procesor NIOS simulat. Pentru a-l iniția, am citit o mulțime de documentații despre el.

În cele din urmă, ecranul nostru este folosit pentru a afișa FFT, la efectul dorit.

Pasul 6: Coduri Utilizează En C ++ / Coduri utile în C ++

Coduri Utilizează En C ++ / Coduri utile în C ++
Coduri Utilizează En C ++ / Coduri utile în 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 …):

Vă voi arăta codurile din C ++ care ne-au fost utile pentru a crea efecte sonore.

În primul rând, toate afirmațiile noastre (da, puțin exhaustive …):

#include

#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) 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 folosind namespace std; const long SAMPLE_RATE = 12500000; // Crearea configurării și a bufferelor în 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; date scurte, date2;

Ci-jos o funcție care ne permite modularea:

Sub una dintre funcțiile noastre care permit modularea:

modulare nulă (frecvență int)

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

Voici notre function main:

Acestea sunt funcția noastră principală:

int main (int argc, char ** argv)

{volatile unsigned long * h2p_lw_spi_addr = NULL; volatil nesemnat lung * h2p_lw_led_addr = NULL; volatile nesemnate lungi * h2p_lw_adc_addr = NULL; volatil nesemnat lung * h2p_lw_blue_addr = NULL; volatile nesemnate lungi * h2p_lw_red_addr = NULL; volatil nesemnat lung * h2p_lw_black_addr = NULL; void * virtual_base; int fd; printf ("1 / n"); // mapăm spațiul de adrese pentru registrele spi în spațiul utilizatorului, astfel încât să putem interacționa cu acestea. // vom efectua o cartografiere în întregul interval CSR al HPS, deoarece dorim să accesăm diferite registre în intervalul respectiv dacă ((fd = open ("/ dev / mem", (O_RDWR | O_SYNC))) == -1) {printf ("EROARE: nu s-a putut deschide \" / dev / mem / "… / n"); return (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 ("EROARE: mmap () a eșuat … / n"); aproape (fd); return (1); } printf ("4 / n"); printf ("5 / n"); h2p_lw_spi_addr = virtual_base + ((nesemnat lung) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (nesemnat lung) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((nesemnat lung) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (nesemnat lung) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((nesemnat lung) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (nesemnat lung) (HW_REGS_MASK)); h2p_lw_blue_addr = virtual_base + ((nesemnat lung) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (nesemnat lung) (HW_REGS_MASK)); h2p_lw_black_addr = virtual_base + ((nesemnat lung) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (nesemnat lung) (HW_REGS_MASK)); h2p_lw_red_addr = virtual_base + ((nesemnat lung) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (nesemnat lung) (HW_REGS_MASK)); // int i = 0; date int; int i = 0, j; // Crearea configurării și a bufferelor în 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)); while (1) {data = * (h2p_lw_adc_addr + 2); if (* h2p_lw_blue_addr == 1) data = echo (date, 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, date | 0b111000000000000); } gratuit (config); gratuit (in); gratuit (afară); retur 0; }

Pasul 7: Le Final / Final

Le Final / the Final
Le Final / the Final

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 certain effets, ainsi care 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.

Engleză:

Iată (în sfârșit) redarea finală a Cactus 2000.

Am pus PCB-urile de intrare și ieșire care sunt conectate la placa DE0 Nano Soc.

Apoi, componentele sale sunt plasate într-o cutie galbenă.

Pe cutie este un potențiometru diapozitiv, care poate gestiona volumul sunetului, butoanelor și butoanelor care vor lansa unele efecte și un ecran care va afișa FFT.

Difuzorul este poziționat perpendicular pe butoane. Microfonul este poziționat pe cealaltă parte a cutiei în raport cu difuzorul.

Asta e tot pentru astăzi.

Sperând că acest instructabil vă va fi de folos.

Recomandat: