Përmbajtje:

Kaktus 2000: 7 hapa
Kaktus 2000: 7 hapa

Video: Kaktus 2000: 7 hapa

Video: Kaktus 2000: 7 hapa
Video: Мазер, Кактус и Дельфин. 2000 г. Психоакустика 2024, Korrik
Anonim
Kaktus 2000
Kaktus 2000

PROJEKT MIDI-KONTROLLUES EISE4

Français:

Lors de notre quatrième année d'école ingénieur, nous avons réalisé un midi-contrôleur. Derdhni prirje të mira, nous avions à notre:

  • Une carte DE0 Nano Soc
  • Des oscilloscopes, des multimètres
  • Përbërësit e llojeve të ndryshme (amplifikatori, rezistenca, kapaciteti …)
  • 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 Instructable.

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 qark dessiner, në PCB është était à faire sur le logiciel Altium. Varëse që ka të bëjë me zgjedhjen e PCB de l'entrée et de la sortie, des 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. Përfundimisht, il nous a fallu créer des effets sonores pour modifier le son.

Anglisht:

Gjatë vitit të katërt të shkollës, ne kuptuam një kontrollues midi. Për ta bërë këtë, ne kishim në dispozicion:

  • Një hartë DE0 Nano Soc
  • Osciloskopë, multimetra
  • Përbërësit e llojeve të ndryshme (amplifikatori, rezistenca, kapaciteti …)
  • Një mikrofon dhe një altoparlant
  • Pak ekran

Na u desh të kalonim nëpër hapa të ndryshëm të rrezikshëm për ta bërë projektin një sukses. Ne do t'ju prezantojmë me këtë udhëzues.

Së pari, dizajni i qarkut bazë kërkohet për të rimarrë djalin e mikrofonit dhe për të bërë altoparlantin. Pasi të tërhiqej qarku, PCB do të bëhej në softuerin Altium. Ndërsa dy studentë ishin të zënë me menaxhimin e PCB -ve hyrëse dhe dalëse, dy të tjerët po punonin për të drejtuar kartën DE0 Nano Soc në mënyrë që karta të merrte mostrat e mikrofonit dhe të jepte një sinjal për altoparlantin. Më në fund, na u desh të krijonim efekte zanore për të ndryshuar tingullin.

Hapi 1: Konceptimi i Qarkut Du Hyrja / Hartimi i Qarkut Hyrës

Konceptimi i Qarkut të Dytë Hyrja / Projektimi i Qarkut Hyrës
Konceptimi i Qarkut të Dytë Hyrja / Projektimi i Qarkut Hyrës

Français:

La première étape konsistonte në metër në një vend ku qarku mund të paraprihej nga i dërguari i sinjalit në mikro derë transmetimin à la carte DE0 Nano Soc.

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

(1) L'inverseur per permettre de récupérer le 5 Volt et le transformator en - 5 V. Le - 5 V servira pour l'amplificateur que nous verrons ci -dessous.

(2) Ici, nous avons un amplificateur jo-inverseur. D'après la formula suivante:

Vs = Ve (1 + Z1/Z2)

Për një fitim të zgjedhur prej 101 en metant R1 = 100 kOhm dhe 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 tension de sortie soit compris entre 0 dhe 4 V.

(4) Lehtësia e amplifikatorit është shumë më e lartë.

(5) CAG (Kontrolli Automatik i Fitimit)

(6) Derdhni përfundime, nous avons créé un filtre passe-bas du ordre avec deux RC. L'ordre 2 duhet të shkruani një informacion në lidhje me zbritjen - 40db / dekadë. Frekuenca e përzgjedhjes së procesit është 20 kHz.

Anglisht:

Hapi i parë është krijimi i një qarku që mund të marrë sinjalin e dërguar në mikrofon për ta transmetuar atë në kartën DE0 Nano Soc. Mbi diagramin e hyrjes sonë.

(1) Inverteri do të rimarrë 5 Volt dhe do ta shndërrojë në - 5 V. The - 5 V do të shërbejë për amplifikatorin që do të shohim më poshtë.

(2) Këtu kemi një përforcues jo përmbysës. Sipas formulës së mëposhtme:

Vs = Ve (1 + Z1 / Z2)

Një fitim prej 101 u zgjodh duke vendosur R1 = 100 kOhm dhe R2 = 1 kOhm.

Ky përforcues do të përdoret për të përforcuar tingullin e mikrofonit.

(3) Dy rezistorët do të krijojnë një kompensim në mënyrë që voltazhi i daljes të jetë midis 0 dhe 4 V.

(4) Mikrofoni që do të amplifikohet nga përforcuesi.

(5) AGC (Kontrolli Automatik i Fitimit)

(6) Së fundi, ne krijuam një filtër të rendit të dytë me kalim të ulët me dy RC. Urdhri 2 ishte i nevojshëm për të pasur një zbutje prej -40db / dekadë. Frekuenca e ndërprerjes e zgjedhur është 20 kHz.

Hapi 2: Koncepti i Qarkut në Renditje / Projektimi i Qarkut të Daljes

Konceptimi i Qarkut të Re sipas Renditjes / Dizajni i Qarkut të Daljes
Konceptimi i Qarkut të Re sipas Renditjes / Dizajni i Qarkut të Daljes

Français:

Dans un temps dytë, 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 signal numérique embailer par la carte DE0 Nano Soc dhe le convertir en signal analogique (nécessaire pour le haut parleur)

(2) Kapaciteti dhe shërbimi i një komandimi të vazhdueshëm të sinjalit të vazhdueshëm.

(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

faqe 10

Kjo kërkesë për përfitimin e avionit nuk është më shumë se 200 është një sinjal i nevojshëm i makinës, i cili nuk është i mundur.

Anglisht:

Mbi diagramin e prodhimit tonë.

(1) DAC (Konvertuesi dixhital në analog) i cili do të lejojë të rikuperojë sinjalin dixhital të dërguar nga karta DE0 Nano Soc dhe ta shndërrojë atë në një sinjal analog (i nevojshëm për altoparlantin).

(2) Kapaciteti do të përdoret për të transferuar përbërësin e vazhdueshëm të sinjalit tonë.

(3) Montimi që do të përforcojë fuqinë e sinjalit tonë. Ne morëm skemën:

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

faqe 10

Kjo skemë bën të mundur që të kemi një fitim prej 200 i cili është i nevojshëm sepse sinjali ynë është vërtet i dobët.

Hapi 3: Konceptimi i PCB / Dizajni i PCB

Konceptimi Des PCB / Dizajni i PCB
Konceptimi Des PCB / Dizajni i PCB

Français:

Nuk mund të përdorni qarqe në instanciés il nous a fallu les mettre sur des PCB.

Hidh ce faire, nous avons utiliser le logiciel Altium. Il faut que tout soit korrigjim lidhës puis cliquer sur:

Dizajni i menysë -> Përditësoni dokumentin PCB.

Ensuite, klikoni në "Validate Changes". Derdhni chaque changement validé, un thur me grep vert apparaît dans la colonne: «Kontrolloni».

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 layer on s'appuyer votre PCB.
  • Le menu "Vizatimi i stërvitjes" dans lequel il faut que tout soit decocher.
  • Le menu "Apertures" dans lequel il faut cocher "Appertures të integruara".

Toute ses étapes sont complétées?

Revenons maintenanceenant à la fenêtre avec les composants sur celle-ci vous cliquez sur

Skedar-> Prodhimi i fabrikimit -> Skedarët e stërvitjes NC

C'est enfin finit, il ne reste plus qu'à donner à l'imprimante 3D les fichiers.

Ju mund të gjeni fotografi të përbashkëta në PCB të reja.

Anglisht:

Pasi qarqet tona u vërtetuan, na duhej t'i vendosnim në PCB.

Për ta bërë këtë, ne përdorim programin Altium. Çdo gjë duhet të jetë e lidhur saktë dhe pastaj klikoni mbi:

Dizajni i menysë -> Përditësoni dokumentin PCB.

Pastaj klikoni në "Validate Changes". Për çdo ndryshim të vërtetuar, një shenjë jeshile shfaqet në kolonën "Kontrollo".

Pas kësaj, do të keni një skedë të re që do të hapet dhe do t'ju duhet të vendosni përbërësit në këtë dritare.

Pastaj ju duhet të shkoni te menyja "File" -> "Output Output" -> "Gerber Files"

Hapet një dritare, në këtë do të gjeni;

Menyja "Shtresat" që do t'ju lejojë të zgjidhni se cilat shtresa do të mbështesin PCB -në tuaj. Menyja "Vizatimi i stërvitjes" ku gjithçka duhet të jetë e pakontrolluar. Menyja "Hapet" në të cilën duhet të kontrolloni "Hapësira të integruara".

A janë përfunduar të gjitha hapat e tij?

Le të kthehemi tani në dritare me përbërësit në këtë ku klikoni

Skedari-> Prodhimi i Prodhimit -> Skedarët NC të Stërvitjes

Më në fund ka mbaruar, gjithçka që duhet të bëni është t'i jepni skedarëve printerit 3D.

Bashkangjitur do të gjeni fotot e dy PCB -ve tona.

Hapi 4: Périphériques Pour La Carte DE0 Nano Soc / Periferikësh për Kartën DE0 Nano Soc

Périphériques Pour La Carte DE0 Nano Soc / Periferikësh për Kartën DE0 Nano Soc
Périphériques Pour La Carte DE0 Nano Soc / Periferikësh për Kartën DE0 Nano Soc

Francais:

Les cœurs IP sont optimisés pour les périphériques Intel FPGA dhe 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:

  • Komunikimi SPI pour le DAC
  • ADC pour recupérer les valeurs analogique de notre signal dhe les convertir en donnée digitales
  • HPS (processeur) pour gérer tout les kodet
  • GPIO pour les boutons qui vont servir à exécuter sigurts effets
  • Mémoire (në kujtesën e çipit)

Anglisht:

Bërthamat IP janë optimizuar për pajisjet Intel FPGA dhe mund të zbatohen lehtësisht për të zvogëluar kohën e projektimit dhe testimit.

Falë softuerit Qsys ne ishim në gjendje të krijonim pajisje periferike të ngulitura në hartën tonë. Këtu është një listë e pajisjes që kemi shtuar:

  • Komunikimi SPI për DAC
  • ADC për të tërhequr vlerat analoge nga sinjali ynë dhe për t'i kthyer ato në të dhëna dixhitale
  • HPS (procesor) për të menaxhuar të gjitha kodet
  • GPIO për butonat që do të përdoren për të përballuar efekte të caktuara
  • Kujtesa (në kujtesën e çipit)

Hapi 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 udhëzojnë par un processeur simulé NIOS.

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

Përfundimisht, notre écran sert à afficher la FFT, à sélectionner l'effet voulu.

Anglisht:

Ne duhej të kuptonim dhe menaxhonim ekranin LT24 ai do të udhëhiqet nga një procesor i simuluar NIOS. Për ta filluar atë, ne lexojmë shumë dokumentacion mbi të.

Në fund, ekrani ynë përdoret për të shfaqur FFT, në efektin e dëshiruar.

Hapi 6: Kodet Utiles En C ++ / Kodet e dobishme në C ++

Kodet e përdorura En C ++ / Kodet e dobishme në C ++
Kodet e përdorura En C ++ / Kodet e dobishme në C ++

Je vais vous montrer les kodet en C ++ qui nous ont utines de réaliser des effets sonores.

Voici d'abord nuk ka deklarata (oui un peu exhaustif…):

Unë do t'ju tregoj kodet në C ++ që ishin të dobishëm për ne për të krijuar efekte zanore.

Së pari, të gjitha deklaratat tona (po pak shteruese …):

#përfshi

#include #include #includ #include #include #includ #include #include #include "WavUtils.cpp" #include "Biquad.cpp" #include #include #include #include "hps_0.h" #Include "hps.h" #përfshi "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 HW_REGS_SPAN - 1) #përcakto PI 3.1415926535 #përcakto NFFT 80 #define FE 41000 #define F2 10000 #define F1 5925 #define PH 5000 #define PB 15000 #define MOD 2000 duke përdorur hapësirën e emrit std; konstant i gjatë 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 globale = 0; int i = 0; të dhëna të shkurtra, të dhëna2;

Fonksione të çrregullta jo de nos modulimi permettant:

Më poshtë një nga funksionet tona që lejon modulimin:

modulim i pavlefshëm (frekuenca int)

{nëse (i <NFFT) {të dhëna = të dhëna*cos (2*PI*frekuenca*i/FE); në .r = të dhëna; i ++; } tjetër i = "0"; }

Voici notre fonction kryesore:

Këto janë funksionet tona kryesore:

int kryesore (int argc, char ** argv)

{i paqëndrueshëm i panënshkruar gjatë *h2p_lw_spi_addr = NULL; i paqëndrueshëm i panënshkruar gjatë *h2p_lw_led_addr = NULL; i paqëndrueshëm i panënshkruar gjatë *h2p_lw_adc_addr = NULL; i paqëndrueshëm i panënshkruar gjatë *h2p_lw_blue_addr = NULL; i paqëndrueshëm i panënshkruar gjatë *h2p_lw_red_addr = NULL; i paqëndrueshëm i panënshkruar gjatë *h2p_lw_black_addr = NULL; void *baza virtuale; int fd; printf ("1 / n"); // hartoni hapësirën e adresave për regjistrat spi në hapësirën e përdoruesit në mënyrë që të ndërveprojmë me ta. // ne do të hartojmë në të gjithë hapësirën CSR të HPS pasi duam të hyjmë në regjistra të ndryshëm brenda atij hapësira nëse ((fd = hapur ("/dev/mem", (O_RDWR | O_SYNC))) == -1) {printf ("ERROR: nuk mund të hapet \"/dev/mem / "… / n"); kthimi (1); } printf ("2 / n"); baza virtuale = mmap (NULL, HW_REGS_SPAN, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, HW_REGS_BASE); printf ("3 / n"); if (virtual_base == MAP_FAILED) {printf ("ERROR: mmap () dështoi… / n"); mbyll (fd); kthimi (1); } printf ("4 / n"); printf ("5 / n"); h2p_lw_spi_addr = baza virtuale + ((pa shenjë e gjatë) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (e gjatë e panënshkruar) (HW_REGS_MASK)); h2p_lw_led_addr = baza virtuale + ((pa shenjë e gjatë) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (e panënshkruar gjatë) (HW_REGS_MASK)); h2p_lw_adc_addr = baza virtuale + ((pa shenjë e gjatë) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (e panënshkruar gjatë) (HW_REGS_MASK)); h2p_lw_blue_addr = baza virtuale + ((pa shenjë e gjatë) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (pa shenjë e gjatë) (HW_REGS_MASK)); h2p_lw_black_addr = baza virtuale + ((e panënshkruar gjatë) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (e panënshkruar gjatë) (HW_REGS_MASK)); h2p_lw_red_addr = baza virtuale + ((pa shenjë e gjatë) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (e panënshkruar gjatë) (HW_REGS_MASK)); // int i = 0; int të dhënat; 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)); ndërsa (1) {të dhëna = *(h2p_lw_adc_addr+2); nëse (*h2p_lw_blue_addr == 1) të dhëna = jehonë (të dhëna, 20); nëse (*h2p_lw_black_addr == 1) alt_write_word (h2p_lw_led_addr, 0x0F); nëse (*h2p_lw_red_addr == 0) alt_write_word (h2p_lw_led_addr, 0xF0); alt_write_word (h2p_lw_spi_addr+1, të dhëna | 0b11100000000000000); } falas (konfiguro); falas (në); falas (jashtë); kthimi 0; }

Hapi 7: Le Final / Final

Le Finale / Finalja
Le Finale / Finalja

Français:

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

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

Ensuite, ses compositors 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 dhe des boutons qui permettrons de lancer sures effets, ainsi que un ecran qui permettra d'afficher la FFT.

Le haut-parleur est positionné perpendiculairement par raportin aux boutons. Le mikro est positionné de l'autre coté de la boîte par Raport au haut-parleur.

C'est tout pour aujourd'hui.

Esperant que cet Instructable vous soit utile.

Anglisht:

Këtu jemi (më në fund) interpretimi përfundimtar i Kaktusit tonë 2000.

Ne vendosim PCB -të hyrëse dhe dalëse që janë të lidhura me bordin DE0 Nano Soc.

Pastaj, përbërësit e tij vendosen brenda një kutie të verdhë.

Në kuti është një potenciometër rrëshqitës, i cili mund të menaxhojë volumin e zërit, çelësat dhe butonat që do të lëshojnë disa efekte, dhe një ekran që do të shfaqë FFT.

Altoparlanti është i vendosur pingul me butonat. Mikrofoni është i vendosur në anën tjetër të kutisë në lidhje me altoparlantin.

Kjo është e gjitha për sot.

Duke shpresuar që ky udhëzues të jetë i dobishëm për ju.

Recommended: