Turinys:

Kaktusas 2000: 7 žingsniai
Kaktusas 2000: 7 žingsniai

Video: Kaktusas 2000: 7 žingsniai

Video: Kaktusas 2000: 7 žingsniai
Video: Dinamika | M.A.M.A. 2021 2024, Liepa
Anonim
Kaktusas 2000
Kaktusas 2000

PROJEKTŲ VIDUTINIS KONTROLĖS EISE4

Français:

Lors de notre quatrième année d'école ingénieur, nous avons réalisé un midi-contrôleur. Užpildykite teisingumą, nous avions à notre disposition:

  • Neįprastas meniu DE0 Nano Soc
  • Osciloskopai, daugialypiai
  • Įvairių tipų kompozitoriai (stiprintuvas, rezistorius, talpa …)
  • Un micro ir 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 Instructable.

Supilkite pradžią, le dessin du circuit de base était nécessaire afin de récupérer le son du micro et le rendre au haut-parleur. Unikalus grandinės desineris, PCB, kuris yra teisingas dėl logikos „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'occupa de 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.

Anglų:

Per ketvirtus mokyklos metus supratome midi valdiklį. Norėdami tai padaryti, turėjome:

  • Žemėlapis DE0 Nano Soc
  • Osciloskopai, multimetrai
  • Įvairių tipų komponentai (stiprintuvas, varža, talpa …)
  • Mikrofonas ir garsiakalbis
  • Mažas ekranas

Kad projektas būtų sėkmingas, turėjome atlikti įvairius pavojingus veiksmus. Mes supažindinsime jus su šia instrukcija.

Pirma, pagrindinės grandinės dizainas, reikalingas mikrofono sūnui atkurti ir garsiakalbiui pagaminti. Ištraukus grandinę, PCB turėjo būti padaryta naudojant „Altium“programinę įrangą. Kol du studentai užsiėmė įvesties ir išvesties PCB valdymu, kiti du dirbo norėdami paleisti „DE0 Nano Soc“kortelę, kad kortelė galėtų paimti mikrofono pavyzdžius ir duoti signalą garsiakalbiui. Galiausiai, norėdami pakeisti garsą, turėjome sukurti garso efektus.

1 žingsnis: koncepcija „Du Circuit En Entrée“/ įėjimo grandinės dizainas

Koncepcija „Du Circuit En Entrée“/ Įėjimo grandinės dizainas
Koncepcija „Du Circuit En Entrée“/ Įėjimo grandinės dizainas

Français:

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)

Pasirinkus vieną padidėjimą, 101 m mantant R1 = 100 kOhm ir R2 = 1 kOhm.

Cet stiprintuvas su stiprintuvu le son du micro.

(3) Les deux résistances vont créer un offset afin que laension de sortie soit susideda iš 0 ir 4 V.

(4) Stiprintuvas su mikroprocesoriumi.

(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 / dešimtmetį. Pasirinkta 20 kHz dažnis.

Anglų:

Pirmasis žingsnis yra sukurti grandinę, kuri galėtų perduoti mikrofone siunčiamą signalą ir perduoti jį į „DE0 Nano Soc“kortelę. Virš mūsų įrašo schemos.

(1) Keitiklis atgaus 5 voltų įtampą ir pavers jį į - 5 V. 5 V įtampa bus naudojama stiprintuvui, kurį matysime žemiau.

(2) Čia mes turime neinvertuojantį stiprintuvą. Pagal šią formulę:

Vs = Ve (1 + Z1 / Z2)

101 padidėjimas buvo pasirinktas nustatant R1 = 100 kOhm ir R2 = 1 kOhm.

Šis stiprintuvas bus naudojamas mikrofono garsui sustiprinti.

(3) Du rezistoriai sukurs poslinkį taip, kad išėjimo įtampa būtų nuo 0 iki 4 V.

(4) Mikrofonas, kurį sustiprins stiprintuvas.

(5) AGC (automatinis stiprinimo valdymas)

(6) Galiausiai sukūrėme antros eilės žemo dažnio filtrą su dviem RC. 2 užsakymas buvo reikalingas, kad jo slopinimas būtų -40 dB per dešimtmetį. Pasirinktas ribinis dažnis yra 20 kHz.

2 veiksmas: „Circuit“koncepcija „Sortie“/ išvesties grandinės dizainas

„Circuit“koncepcija „Sortie“/ išvesties grandinės dizainas
„Circuit“koncepcija „Sortie“/ išvesties grandinės dizainas

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“(skaitmeninis į analoginį keitiklį) gali pakeisti signalo numerio siuntėją iš la carte DE0 „Nano Soc“ir konvertuoti signalą analogiškai (necessaire pour le haut parleur)

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

(3) Stiprintuvo stiprinimo lazerinis signalas. Nous avons prit le schéma:

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

10 puslapis

Išsami informacija apie tai, kaip pasiekti 200 automobilių, nesvarbu, ar automobilis turi signalą, ar fraiment faible.

Anglų:

Virš mūsų išvesties diagramos.

(1) DAC (skaitmeninis į analoginį keitiklis), kuris leis atkurti skaitmeninį signalą, siunčiamą iš DE0 Nano Soc kortelės, ir paversti jį analoginiu signalu (būtinas garsiakalbiui).

(2) Pajėgumai bus naudojami nepertraukiamam mūsų signalo komponentui perduoti.

(3) Montavimas, kuris padidins mūsų signalo galią. Mes paėmėme schemą:

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

10 puslapis

Ši schema leidžia pasiekti 200 padidėjimą, kuris yra būtinas, nes mūsų signalas yra tikrai silpnas.

3 žingsnis: PCB koncepcija / PCB dizainas

PCB koncepcija / PCB dizainas
PCB koncepcija / PCB dizainas

Français:

Une fois que nos circuit ont eté 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:

Meniu dizainas -> Atnaujinti PCB dokumentą.

Atskiras vonios kambarys, spustelėkite „Patvirtinti pakeitimus“. Supilkite chaque changement validé, atsineškite nėrimo vertę pagal stulpelį: «Patikrinkite».

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

Atidarykite meniu „Failas“-> „Gamybos išvestis“-> „Gerber“failai

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

  • Meniu „Sluoksniai“galite pasirinkti chorasir sur quel sluoksnių sluoksnius, kuriuose yra PCB.
  • Meniu „Gręžimo piešimas“yra lequel il faut que tout soit décocher.
  • Meniu „Apertures“yra pratęsimas arba fauter cocher „Įterptosios apraiškos“.

Toute ses étapes sont complétées?

„Revenons“prižiūri a fencre avec les composants sur celle-ci vous cliquez sur

Failas-> Gamybos išvestis -> NC gręžimo failai

Tai yra galutinis, il ne reste plius qu'à donner à l'imprimante 3D fichiers.

Vous trouverez ci-joint les photos de nos deux PCB.

Anglų:

Kai mūsų grandinės buvo parodytos, turėjome jas įdėti į PCB.

Norėdami tai padaryti, mes naudojame „Altium“programinę įrangą. Viskas turi būti tinkamai prijungta, tada spustelėkite:

Meniu dizainas -> Atnaujinti PCB dokumentą.

Tada spustelėkite „Patvirtinti pakeitimus“. Kiekvieno patvirtinto pakeitimo stulpelyje „Tikrinti“rodoma žalia varnelė.

Po to turėsite naują skirtuką, kuris bus atidarytas, ir turėsite sudėti komponentus į šį langą.

Tada turite eiti į meniu „Failas“-> „Išvesties išvestis“-> „Gerbero failai“

Atsidarys langas, kuriame rasite;

Meniu „Sluoksniai“, kuriame galėsite pasirinkti, kurie sluoksniai palaikys jūsų PCB. Meniu „Gręžimo brėžinys“, kuriame viskas turi būti nepažymėta. Meniu „Diafragmos“, kuriame turite patikrinti „Įterptosios apraiškos“.

Ar visi jo žingsniai baigti?

Grįžkime prie lango, kuriame yra šio elemento, kurį spustelėjote

Failas-> Gamybos produkcija -> NC gręžimo failai

Pagaliau viskas baigta, tereikia duoti 3D spausdintuvui failus.

Pridedame dviejų mūsų PCB nuotraukų.

4 žingsnis: „Périphériques“supilkite „La Carte DE0 Nano Soc“/ „DE0 Nano Soc“kortelės periferinius įrenginius

Périphériques Pour La Carte DE0 Nano Soc / Periferiniai įrenginiai DE0 Nano Soc kortelei
Périphériques Pour La Carte DE0 Nano Soc / Periferiniai įrenginiai DE0 Nano Soc kortelei

Francais:

„IP Font“optimizuoja „Intel FPGA“technologiją ir suteikia puikią galimybę įgyvendinti koncepciją ir testo testus.

Grįžti prie logikos 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:

  • Ryšio SPI už DAC
  • ADC užpildo signalo signalo ir konvertuojančio skaitmeninio skaitmeninio signalo rekuperatorių
  • HPS (procesorius) įkelia daugiau kodų
  • GPIO supilkite boutons qui vont servir à exécuter certains effets
  • Mémoire (lusto atmintyje)

Anglų:

IP šerdys yra optimizuotos „Intel FPGA“įrenginiams ir gali būti lengvai įdiegtos, kad sutrumpėtų dizainas ir bandymo laikas.

„Qsys“programinės įrangos dėka savo žemėlapyje galėjome sukurti įterptųjų įrenginių. Čia yra mūsų pridėto įrenginio sąrašas:

  • SPI ryšys DAC
  • ADC, kad gautų analogines vertes iš mūsų signalo ir konvertuotų jas į skaitmeninius duomenis
  • HPS (procesorius) valdyti visus kodus
  • GPIO mygtukams, kurie bus naudojami tam tikriems efektams įveikti
  • Atmintis (lusto atmintyje)

5 žingsnis: „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.

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

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

Anglų:

Mes turėjome suprasti ir valdyti ekraną LT24, kurį vadovaus imituotas NIOS procesorius. Norėdami jį inicijuoti, perskaitėme daug dokumentacijos apie tai.

Galų gale mūsų ekranas naudojamas norint parodyti FFT, kad būtų pasiektas norimas efektas.

6 veiksmas: kodai Utiles En C ++ / Naudingi kodai C ++

Kodai Utiles En C ++ / Naudingi kodai C ++
Kodai Utiles En C ++ / Naudingi kodai C ++

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

„Voici d'abord“nurodo deklaracijas (oui un peu išsilieja…):

Aš jums parodysiu C ++ kodus, kurie mums buvo naudingi kuriant garso efektus.

Pirma, visi mūsų teiginiai (taip, šiek tiek išsamūs …):

#įtraukti

#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 (0x0de400) 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, naudojant vardų srities standartą; const ilgas 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; trumpi duomenys, duomenys2;

Ci-dessous une de nos fonctions permettant modulation:

Žemiau yra viena iš mūsų funkcijų, leidžiančių moduliuoti:

tuštumos moduliacija (dažnai)

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

Pagrindinė balso balso sistema:

Tai yra mūsų pagrindinė funkcija:

int main (int argc, char ** argv)

{nepastovus nepasirašytas ilgas *h2p_lw_spi_addr = NULL; nepastovus nepasirašytas ilgas *h2p_lw_led_addr = NULL; nepastovus nepasirašytas ilgas *h2p_lw_adc_addr = NULL; nepastovus nepasirašytas ilgas *h2p_lw_blue_addr = NULL; nepastovus nepasirašytas ilgas *h2p_lw_red_addr = NULL; nepastovus nepasirašytas ilgas *h2p_lw_black_addr = NULL; void *virtual_base; int fd; printf ("1 / n"); // susieti spi registrų adresų erdvę į vartotojo erdvę, kad galėtume su jais bendrauti. // mes iš tikrųjų susiejame žemėlapį per visą HPS CSR, nes norime pasiekti įvairius registrus per tą laikotarpį, jei ((fd = open ("/dev/mem", (O_RDWR | O_SYNC))) == -1) {printf ("KLAIDA: nepavyko atidaryti \"/dev/mem / "… / n"); grąžinimas (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 ("KLAIDA: mmap () nepavyko… / n"); uždaryti (fd); grąžinimas (1); } printf ("4 / n"); printf ("5 / n"); h2p_lw_spi_addr = virtual_base + ((ilgai nepasirašytas) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (ilgai nepasirašytas) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((ilgai nepasirašytas) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (ilgai nepasirašytas) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((ilgai nepasirašytas) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (ilgai nepasirašytas) (HW_REGS_MASK)); h2p_lw_blue_addr = virtual_base + ((ilgai nepasirašytas) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (ilgai nepasirašytas) (HW_REGS_MASK)); h2p_lw_black_addr = virtual_base + ((ilgai nepasirašytas) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (ilgai nepasirašytas) (HW_REGS_MASK)); h2p_lw_red_addr = virtual_base + ((ilgai nepasirašytas) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (ilgai nepasirašytas) (HW_REGS_MASK)); // int i = 0; int duomenys; 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)); o (1) {duomenys = *(h2p_lw_adc_addr+2); if (*h2p_lw_blue_addr == 1) duomenys = aidas (duomenys, 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, duomenys | 0b111000000000000); } nemokamai (konfigūracija); nemokamai (in); nemokamai (iš); grįžti 0; }

7 žingsnis: finalas / finalas

Finalas / finalas
Finalas / finalas

Français:

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

Daugybė PCB įvestų ir įvestų pagal užsakymą 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 yra padėtis perpendiculairement par rapport aux boutons. Le mikroautobuso buvimo vieta, kuriai priskiriamas „rapport au haut-parleur“.

C'est tout pour aujourd'hui.

En esperant que cet Instructable vous soit utile.

Anglų:

Štai (pagaliau) galutinis mūsų „Cactus 2000“atvaizdavimas.

Mes įdedame įvesties ir išvesties PCB, prijungtas prie DE0 Nano Soc plokštės.

Tada jo komponentai dedami į geltoną dėžutę.

Dėžutėje yra skaidrių potenciometras, galintis valdyti garso stiprumą, rankenėlės ir mygtukai, kurie paleidžia tam tikrus efektus, ir ekranas, kuriame bus rodomas FFT.

Garsiakalbis yra statmenas mygtukams. Mikrofonas yra kitoje dėžutės pusėje, palyginti su garsiakalbiu.

Tai viskas siandienai.

Tikimės, kad ši instrukcija jums naudinga.

Rekomenduojamas: