Cov txheej txheem:

Cactus 2000: 7 Kauj Ruam
Cactus 2000: 7 Kauj Ruam

Video: Cactus 2000: 7 Kauj Ruam

Video: Cactus 2000: 7 Kauj Ruam
Video: Sisnab muas & Pajntsais vwj: Tub yug nyuj - Ntxhais paj ntaub. 12/12/2022 2024, Kaum ib hlis
Anonim
Cactus 2000
Cactus 2000

KEV MIDI-CONTROLEUR EISE 4

Français:

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

  • Une carte DE0 Nano Soc
  • Des oscilloscopes, des multimètres
  • Des composants de différents types (amplificateur, résistance, capacité…)
  • Un micro thiab un haut-parleur
  • Ib qho tsis txaus ntseeg

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 Qhia.

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. Nrog rau cov khoom qab zib hauv Circuit Court, nrog 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 teeb liab pour le haut-parleur. Qhov kawg, nws yog ib qho kev poob qis ntawm cov neeg ua haujlwm rau kev hloov kho tus tub.

Lus Askiv:

Thaum peb lub xyoo kawm ntawv plaub, peb pom tau tias yog tus tswj nruab nrab. Txhawm rau ua qhov no, peb muaj ntawm peb pov tseg:

  • Daim ntawv qhia DE0 Nano Soc
  • Oscilloscopes, multimeter
  • Cheebtsam ntawm ntau hom sib txawv (amplifier, tsis kam, muaj peev xwm …)
  • Lub microphone thiab tus hais lus
  • Ib qho screen me ntsis

Peb yuav tsum mus dhau ntau qib kev phom sij kom ua kom txoj haujlwm tiav. Peb yuav qhia koj txog Phau Ntawv Qhia no.

Ua ntej tshaj plaws, kev tsim qauv ntawm cov txheej txheem yooj yim yuav tsum tau rov qab tus tub ntawm lub microphone thiab ua tus hais lus. Thaum cov duab kos, PCB yuav tsum ua tiav ntawm software Altium. Thaum ob tus tub ntxhais kawm tau tibneeg hu tauj coob tswj cov tswv yim thiab tso tawm PCBs, lwm ob tus tau ua haujlwm los khiav daim DE0 Nano Soc daim npav kom daim npav tuaj yeem khaws cov qauv mic thiab muab lub teeb liab rau tus hais lus. Thaum kawg, peb yuav tsum tsim cov suab los hloov lub suab.

Kauj Ruam 1: Kev Xav Du Circuit En Enrée / Nkag Mus Rau Hauv Circuit Tsim

Conception Du Circuit En Entrée / Nkag Nkag Tsim Circuit Court
Conception Du Circuit En Entrée / Nkag Nkag Tsim Circuit Court

Français:

La première étape suav nrog à mettre en qhov chaw un Circuit qui puisse prendre le teeb tsa tus neeg sawv cev sur le micro pour le transmettre à la carte DE0 Nano Soc.

Ci-dessus le schéma de notre entrée.

(1) L'inverseur v 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)

Ntawm qhov xaiv tsis tau txais txiaj ntsig 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 nro de sortie soit sib xyaw ua ke 0 thiab 4 V.

(4) Le micro qui va retre amplifier par l'amplificateur.

(5) CAG (Controle Automatique de Gain)

(6) Pour finir, nous avons créé un filtre passe-bas du ob ordre avec deux RC. L'ordre 2 était nécessaire pour avoir une atténuation de - 40db / xyoo caum. La fréquence de coupure choisit yog 20 kHz.

Lus Askiv:

Thawj kauj ruam yog teeb tsa Circuit uas tuaj yeem siv lub teeb liab xa mus rau lub microphone kom xa mus rau daim npav DE0 Nano Soc. Saum toj no daim duab ntawm peb nkag.

(1) Lub inverter yuav rov qab 5 Volt thiab hloov nws mus rau - 5 V. Qhov - 5 V yuav ua haujlwm rau lub tshuab hluav taws xob peb yuav pom hauv qab no.

(2) Ntawm no peb muaj lub suab tsis hloov pauv. Raws li cov mis hauv qab no:

Vs = Ve (1 + Z1 / Z2)

Qhov nce ntawm 101 tau xaiv los ntawm kev teeb tsa R1 = 100 kOhm thiab R2 = 1 kOhm.

Lub tshuab hluav taws xob no yuav siv los ua kom nrov nrov ntawm lub microphone.

(3) Ob lub resistors yuav tsim qhov offset kom cov zis hluav taws xob nyob nruab nrab ntawm 0 thiab 4 V.

(4) Lub microphone uas yuav ua kom nrov nrov los ntawm lub suab nrov.

(5) AGC (Tsis Siv Neeg Tau Txais Kev Tswj)

(6) Thaum kawg, peb tsim qhov kev txiav txim qis qis thib ob nrog ob RCs. Kev txiav txim 2 xav tau kom muaj qhov txo qis ntawm -40db / xyoo. Qhov txiav tawm zaus xaiv yog 20 kHz.

Kauj Ruam 2: Kev Xav Du Circuit En Sortie / Tsim ntawm Circuit Circuit Output

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

Français:

Dans un temps thib ob, 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 en signal analogique (nécessaire pour le haut parleur)

(2) La capacité va servir a virer la composante txuas ntxiv de notre teeb liab.

(3) Montage qui va permettre d'amplifier la puissance de notre teeb liab. Peb muaj peev xwm ua tau raws li qhov xav tau:

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

nplooj ntawv 10

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

Lus Askiv:

Saum toj no daim duab ntawm peb cov zis.

(1) DAC (Digital to Analog Converter) uas yuav tso cai rov qab cov teeb liab xa los ntawm DE0 Nano Soc daim npav thiab hloov nws mus rau hauv lub teeb liab analog (tsim nyog rau lub suab nrov).

(2) Lub peev xwm yuav raug siv los hloov cov khoom txuas mus ntxiv ntawm peb lub teeb liab.

(3) Mounting uas yuav ua kom muaj zog ntawm peb lub teeb liab. Peb coj cov txheej txheem:

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

nplooj ntawv 10

Cov phiaj xwm no ua rau nws muaj peev xwm nce 200 uas yog qhov tsim nyog vim tias peb lub teeb liab tsis muaj zog tiag.

Kauj Ruam 3: Kev Xav Des PCB / Tsim ntawm PCB

Kev Xav Des PCB / Tsim ntawm PCB
Kev Xav Des PCB / Tsim ntawm PCB

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

Ntawv Tsim Khoom -> Hloov Kho Cov Ntawv PCB.

Ensuite, cliquez sur "Validate Changes". Ncuav chaque changement validé, un crochet vert apparaît dans la colonne: «Txheeb xyuas».

Lub Plaub Hlis, vous aurez un nouvel onglet qui va s'ouvrir et il faudra placer les composants dans cette fenêtre.

Tam sim no, nyob rau hauv cov ntawv qhia zaub mov "File" -> "Fabrication Output" -> "Gerber Files"

Nyob rau hauv qhov kev ua si, dans celle-ci vous trouverez;

  • Le menu "Layers" qui vous permettra de choisir sur quel layers va s'appuyer votre PCB.
  • Le cov ntawv qhia "Laum Teeb Duab" dans lequel il faut que tout soit décocher.
  • Cov ntawv qhia zaub mov "Apertures" dans lequel il faut cocher "Embedded appertures".

Toute ses étapes sont complétées?

Revenons maintenant f 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.

Lus Askiv:

Thaum peb cov kev hloov pauv tam sim peb yuav tsum muab tso rau hauv PCBs.

Txhawm rau ua qhov no, peb siv Altium software. Txhua yam yuav tsum tau txuas nrog raug yog nyem rau ntawm:

Ntawv Tsim Khoom -> Hloov Kho Cov Ntawv PCB.

Tom qab ntawv nyem rau "Validate Changes". Rau txhua qhov kev hloov pauv uas tau lees paub, lub cim ntsuab tshwm nyob hauv kab "Kos".

Tom qab ntawd, koj yuav muaj lub tab tshiab uas yuav qhib thiab koj yuav tsum tso cov khoom nyob hauv lub qhov rai no.

Tom qab ntawd koj yuav tsum mus rau "File" -> "Output Output" -> "Gerber Files" menu

Lub qhov rais qhib, hauv qhov no koj yuav pom;

Cov ntawv "Layers" uas yuav tso cai rau koj xaiv cov txheej twg yuav txhawb koj li PCB. "Drill Drawing" ntawv qhia zaub mov qhov twg txhua yam yuav tsum tsis raug txheeb xyuas. Cov ntawv qhia zaub mov "Apertures" uas koj yuav tsum txheeb xyuas "Embedded appertures".

Tag nrho nws cov kauj ruam ua tiav?

Cia peb rov qab tam sim no mus rau lub qhov rais nrog cov khoom siv ntawm qhov no koj nyem rau

File -> Manufacturing Output -> NC Drill Files

Nws yog qhov kawg, txhua yam koj yuav tsum tau ua yog muab 3D tshuab luam ntawv cov ntaub ntawv.

Koj yuav pom cov duab txuas ntawm peb ob lub PCBs.

Kauj Ruam 4: Périphériques Pour La Carte DE0 Nano Soc / Peripherals rau DE0 Nano Soc Card

Périphériques Pour La Carte DE0 Nano Soc / Peripherals rau DE0 Nano Soc Card
Périphériques Pour La Carte DE0 Nano Soc / Peripherals rau DE0 Nano Soc Card

Francais:

Les cœurs IP sont optimisés pour les périphériques Intel FPGA et peuvent être implémentés pour réduire la conception et 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:

  • Kev sib txuas lus SPI rau le DAC
  • ADC muab cov neeg txais rov qab los rau cov laus analogique de notre teeb liab thiab hloov pauv mus rau hauv cov digitales
  • HPS (tus txheej txheem) nchuav cov neeg ua lej rau cov lej
  • GPIO pour les boutons qui vont servir à exécuter certains effets
  • Mémoire (ntawm nti nco)

Lus Askiv:

IP cores tau ua kom zoo dua rau Intel FPGA cov cuab yeej thiab tuaj yeem siv tau yooj yim los txo qhov tsim thiab sim sijhawm.

Ua tsaug rau Qsys software peb muaj peev xwm los tsim cov khoom siv txuas ntxiv hauv peb daim ntawv qhia. Nov yog cov npe ntawm cov cuab yeej peb tau ntxiv:

  • Kev sib txuas lus SPI rau DAC
  • ADC kom rov muab cov txiaj ntsig sib piv los ntawm peb lub teeb liab thiab hloov pauv mus rau cov ntaub ntawv digital
  • HPS (processor) los tswj hwm txhua tus lej
  • GPIO rau cov nyees khawm uas yuav siv los daws qee yam teebmeem
  • Nco (ntawm lub cim xeeb ntawm lub nti)

Kauj Ruam 5: L'écran LT24

L'écran LT24: koj puas xav tau ntau tus thwjtim?
L'écran LT24: koj puas xav tau ntau tus thwjtim?

Français:

Peb tau ntsib qhov kev nkag siab zoo dua thiab tau txais txiaj ntsig zoo LT24 celui-ci sera cov lus qhia rau txheej txheem kev sim sim NIOS.

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

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

Lus Askiv:

Peb yuav tsum nkag siab thiab tswj lub vijtsam LT24 nws yuav raug coj los ntawm kev sim ua NIOS tus txheej txheem. Txhawm rau pib nws, peb nyeem ntau cov ntaub ntawv ntawm nws.

Thaum kawg, peb lub vijtsam tau siv los tso saib FFT, kom tau txais txiaj ntsig zoo.

Kauj Ruam 6: Codes Utiles En C ++ / Cov lej muaj txiaj ntsig hauv C ++

Codes Utiles En C ++ / Cov lej muaj txiaj ntsig hauv C ++
Codes Utiles En C ++ / Cov lej muaj txiaj ntsig hauv 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…):

Kuv yuav qhia koj cov lej hauv C ++ uas muaj txiaj ntsig zoo rau peb los tsim cov suab nrov.

Ua ntej, tag nrho peb cov lus (yog me ntsis dhau…):

#suav nrog

#include #include #include #include #include #include #include #include #include "WavUtils.cpp" #include "Biquad.cpp" #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 (0x04000000K) 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 siv namespace std; const ntev SAMPLE_RATE = 12500000; // Création de la configuration et des buffers hauv et tawm ncuav s (t) et S (f) const kiss_fft_cfg teeb tsa = kiss_fft_alloc (NFFT, 0, NULL, NULL); const kiss_fft_cfg config_inv = kiss_fft_alloc (NFFT, 1, NULL, NULL); kiss_fft_cpx*hauv = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx)); kiss_fft_cpx*tawm = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx))); kiss_fft_cpx*inv = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx))); queueoutBuf; int ntiaj teb = 0; int kuv = 0; cov ntaub ntawv luv, cov ntaub ntawv 2;

Ci-dessous une de nos fonctions permettant la modulation:

Hauv qab ib ntawm peb cov haujlwm tso cai hloov kho:

void modulation (int zaus)

{yog (kuv <NFFT) {data = data*cos (2*PI*freq*i/FE); hauv .r = cov ntaub ntawv; kuv ++; } lwm yam kuv = "0"; }

Voici notre fonction lub ntsiab:

Nov yog peb lub luag haujlwm tseem ceeb:

int lub ntsiab (int argc, char ** argv)

{volatile unsigned long *h2p_lw_spi_addr = NULL; volatile unsigned ntev *h2p_lw_led_addr = NULL; volatile unsigned ntev *h2p_lw_adc_addr = NULL; volatile unsigned ntev *h2p_lw_blue_addr = NULL; volatile unsigned ntev *h2p_lw_red_addr = NULL; volatile unsigned ntev *h2p_lw_black_addr = NULL; void *virtual_base; koj fd;. printf ("1 / n"); nim. // daim ntawv qhia chaw chaw nyob rau spi sau npe rau hauv qhov chaw siv yog li peb tuaj yeem cuam tshuam nrog lawv. // peb yuav ua daim ntawv qhia tag nrho CSR ncua ntawm HPS txij li peb xav nkag mus rau ntau yam kev sau npe nyob hauv lub sijhawm ntawd yog ((fd = qhib ("/dev/mem", (O_RDWR | O_SYNC))) == -1) {printf ("YOOJ YIM: tsis tuaj yeem qhib \"/dev/mem / "… / n"); rov qab (1); } printf ("2 / n"); cov. virtual_base = mmap (NULL, HW_REGS_SPAN, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, HW_REGS_BASE); printf ("3 / n"); nim. yog (virtual_base == MAP_FAILED) {printf ("ERROR: mmap () ua tsis tiav … / n"); kaw (fd); rov qab (1); } printf ("4 / n"); cov. printf ("5 / n"); nim. h2p_lw_spi_addr = virtual_base + ((tsis tau kos npe ntev) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (tsis kos npe ntev) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((tsis tau kos npe ntev) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (tsis kos npe ntev) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((tsis tau kos npe ntev) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (tsis kos npe ntev) (HW_REGS_MASK)); h2p_lw_blue_addr = virtual_base + ((tsis tau kos npe ntev) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (tsis kos npe ntev) (HW_REGS_MASK)); h2p_lw_black_addr = virtual_base + ((tsis tau kos npe ntev) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (tsis kos npe ntev) (HW_REGS_MASK)); h2p_lw_red_addr = virtual_base + ((tsis tau kos npe ntev) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (tsis kos npe ntev) (HW_REGS_MASK)); // int kuv = 0; int cov ntaub ntawv; int kuv = 0, j; // Création de la configuration et des buffers hauv et tawm ncuav s (t) et S (f) const kiss_fft_cfg teeb tsa = kiss_fft_alloc (NFFT, 0, NULL, NULL); kiss_fft_cpx*hauv = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx)); kiss_fft_cpx*tawm = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx))); thaum (1) {data = *(h2p_lw_adc_addr+2); yog (*h2p_lw_blue_addr == 1) data = ncha (data, 20); yog (*h2p_lw_black_addr == 1) alt_write_word (h2p_lw_led_addr, 0x0F); yog (*h2p_lw_red_addr == 0) alt_write_word (h2p_lw_led_addr, 0xF0); alt_write_word (h2p_lw_spi_addr+1, data | 0b111000000000000); } pub dawb (teeb tsa); dawb (hauv); dawb (tawm); rov 0; }

Kauj Ruam 7: Le Final / Final

Le Final / Qhov Kawg
Le Final / Qhov Kawg

Français:

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

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

Ensuite, ses composants sont placés à l'interieur d'une boite jaune.

Sur la boîte rau trouve un potentiomètre glissière, qui permet de gérer le ntim du son, des potentiomètres et des boutons qui permettrons de lancer lees paub effets, ainsi que un ecran qui permettra d'afficher la FFT.

Le haut-parleur yog txoj haujlwm sib koom ua ke kev sib koom tes pab nyiaj txiag. Le micro est positionné de l'autre coté de la boîte par kev sib raug zoo au haut-parleur.

C'est tout pour aujourd'hui.

En esperant que cet Instructable vous soit utile.

Lus Askiv:

Nov yog peb (thaum kawg) qhov kawg ua tiav ntawm peb Cactus 2000.

Peb muab cov tswv yim thiab tso tawm PCBs uas txuas nrog rau DE0 Nano Soc board.

Tom qab ntawd, nws cov khoom tau muab tso rau sab hauv lub thawv daj.

Ntawm lub npov yog lub ntsuas hluav taws xob swb, uas tuaj yeem tswj hwm lub suab, pob qhov rooj thiab cov nyees khawm uas yuav pib qee qhov cuam tshuam, thiab lub vijtsam uas yuav tso saib FFT.

Tus hais lus tau muab tso rau ib sab rau ntawm cov nyees khawm. Lub microphone nyob ntawm lwm sab ntawm lub npov txheeb ze rau tus hais lus.

Nov yog txhua yam rau hnub no.

Cia siab tias Phau Ntawv Qhia no muaj txiaj ntsig zoo rau koj.

Pom zoo: