Spisu treści:

Kaktus 2000: 7 kroków
Kaktus 2000: 7 kroków

Wideo: Kaktus 2000: 7 kroków

Wideo: Kaktus 2000: 7 kroków
Wideo: Sylwia Grzeszczak - Tamta dziewczyna [Official Music Video] 2024, Listopad
Anonim
Kaktus 2000
Kaktus 2000

PROJEKT MIDI-KONTROLER EISE4

Francuski:

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:

  • Jedna karta DE0 Nano Soc
  • Des oscyloskopów, des multimetrów
  • Des composants de différents types (amplificateur, résistance, capacité…)
  • Un micro et un haut-parleur
  • Mała ekrana

Il nous a fallu passer par différentes etapes périlleuses afin de réussir le projet. Nous allons vous les présenter dans cet Instructable.

Pour beginner, dessin du circuit de base était necessaire afin de récupérer syn du micro i rendre au haut-parleur. Projektant obwodów, płytki drukowane są zgodne z logiką Altium. Wisiorek 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 redonlener haut-parleur. Finał, il nous a fallu créer des effets sonores pour modifier le son.

Język angielski:

W czwartym roku szkoły zrealizowaliśmy kontroler midi. W tym celu mieliśmy do dyspozycji:

  • Mapa DE0 Nano Soc
  • Oscyloskopy, multimetry
  • Komponenty różnych typów (wzmacniacz, rezystancja, pojemność…)
  • Mikrofon i głośnik
  • Mały ekran

Aby projekt zakończył się sukcesem, musieliśmy przejść przez różne niebezpieczne kroki. Przedstawimy Ci ten Instruktaż.

Po pierwsze, projekt podstawowego obwodu wymaganego do odzyskania syna mikrofonu i wykonania głośnika. Po narysowaniu obwodu, płytka drukowana miała być wykonana w oprogramowaniu Altium. Podczas gdy dwóch studentów było zajętych zarządzaniem wejściowymi i wyjściowymi płytkami PCB, pozostali dwaj pracowali nad uruchomieniem karty DE0 Nano Soc, aby karta mogła pobrać próbki mikrofonu i przekazać sygnał głośnikowi. Na koniec musieliśmy stworzyć efekty dźwiękowe, aby zmienić dźwięk.

Krok 1: Koncepcja Du Circuit En Entrée / Projekt obwodu wejściowego

Conception Du Circuit En Entrée / Projekt obwodu wejściowego
Conception Du Circuit En Entrée / Projekt obwodu wejściowego

Francuski:

La premiera étape à la 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)

Na choisit un gain de 101 en mettant R1 = 100 kOhm et R2 = 1 kOhm.

Cet amplifikateur va servir wzmacniacz le son du micro.

(3) Les deux résistances vont créer un offset afin que la voltage de sortie soit compris entre 0 et 4 V.

(4) Le micro qui va être wzmacniacz 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 wlać avoir une aténuation de - 40db/dekadę. La fréquence de coupure choisit est 20 kHz.

Język angielski:

Pierwszym krokiem jest skonfigurowanie obwodu, który może przyjąć sygnał wysyłany przez mikrofon, aby przesłać go do karty DE0 Nano Soc. Nad schematem naszego wpisu.

(1) Falownik odzyska napięcie 5 V i przekształci je na – 5 V. Napięcie – 5 V posłuży do wzmacniacza, który zobaczymy poniżej.

(2) Tutaj mamy wzmacniacz nieodwracający. Zgodnie z następującym wzorem:

Vs = Ve (1 + Z1 / Z2)

Wzmocnienie 101 zostało wybrane przez ustawienie R1 = 100 kOhm i R2 = 1 kOhm.

Ten wzmacniacz będzie używany do wzmocnienia dźwięku mikrofonu.

(3) Dwa rezystory utworzą przesunięcie, tak że napięcie wyjściowe będzie wynosić od 0 do 4 V.

(4) Mikrofon, który będzie wzmacniany przez wzmacniacz.

(5) AGC (automatyczna kontrola wzmocnienia)

(6) Na koniec stworzyliśmy filtr dolnoprzepustowy drugiego rzędu z dwoma RC. Zamówienie 2 było potrzebne, aby uzyskać tłumienie -40db/dekadę. Wybrana częstotliwość graniczna to 20 kHz.

Krok 2: Koncepcja Du Circuit En Sortie / Projekt obwodu wyjściowego

Koncepcja Du Circuit En Sortie / Projekt obwodu wyjściowego
Koncepcja Du Circuit En Sortie / Projekt obwodu wyjściowego

Francuski:

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

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

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

strona 10

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

Język angielski:

Powyżej diagramu naszego wyjścia.

(1) DAC (przetwornik cyfrowo-analogowy), który pozwoli odzyskać sygnał cyfrowy wysyłany przez kartę DE0 Nano Soc i przekonwertować go na sygnał analogowy (niezbędny dla głośnika).

(2) Pojemność zostanie wykorzystana do przesyłania ciągłej składowej naszego sygnału.

(3) Montaż, który wzmocni moc naszego sygnału. Przyjęliśmy schemat:

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

strona 10

Ten schemat umożliwia uzyskanie wzmocnienia 200, które jest konieczne, ponieważ nasz sygnał jest naprawdę słaby.

Krok 3: Koncepcja Des PCB / Projekt PCB

Koncepcja Des PCB / Projekt PCB
Koncepcja Des PCB / Projekt PCB

Francuski:

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:

Projekt menu -> Aktualizuj dokument PCB.

Łazienka, cliquez sur «Zatwierdź zmiany». Pour chaque changement validé, un crochet vert apparaît dans la colonne: «Sprawdź».

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 „Plik” -> „Wyjście produkcyjne” -> „Pliki Gerber”

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

  • Le menu "Warstwy" qui vous permettra de choisir sur quel layer va s'appuyer votre PCB.
  • Le menu "Drill Drawing" dans lequel il faut que tout soit décocher.
  • Le menu „Apertures” dans 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

Plik-> Wyjście produkcyjne -> Pliki wiertnicze NC

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.

Język angielski:

Po stworzeniu instancji naszych obwodów musieliśmy umieścić je na płytkach drukowanych.

W tym celu korzystamy z oprogramowania Altium. Wszystko musi być poprawnie podłączone, a następnie kliknij:

Projekt menu -> Aktualizuj dokument PCB.

Następnie kliknij „Zatwierdź zmiany”. W przypadku każdej zatwierdzonej zmiany w kolumnie „Sprawdź” pojawia się zielony znacznik wyboru.

Następnie otworzy się nowa zakładka i będziesz musiał umieścić komponenty w tym oknie.

Następnie musisz przejść do menu „Plik” -> „Wyjście wyjściowe” -> „Pliki Gerber”

Otworzy się okno, w tym znajdziesz;

Menu „Warstwy”, które pozwoli Ci wybrać, które warstwy będą obsługiwać Twoją płytkę drukowaną. Menu „Drill Drawing”, w którym wszystko musi być odznaczone. Menu „Apertures”, w którym należy zaznaczyć „Osadzone apertury”.

Wszystkie jego kroki zostały zakończone?

Wróćmy teraz do okna z komponentami tego, na które klikniesz

Plik-> Dane wyjściowe produkcji -> Pliki wierteł NC

W końcu wszystko, co musisz zrobić, to przekazać drukarce 3D pliki.

W załączeniu znajdziecie zdjęcia naszych dwóch płytek PCB.

Krok 4: Périphériques Pour La Carte DE0 Nano Soc / Urządzenia peryferyjne do karty DE0 Nano Soc

Périphériques Pour La Carte DE0 Nano Soc / Urządzenia peryferyjne do karty DE0 Nano Soc
Périphériques Pour La Carte DE0 Nano Soc / Urządzenia peryferyjne do karty DE0 Nano Soc

Francuski:

Optymalizacja sieci IP dla urządzeń peryferyjnych Intel FPGA i wdrożenie ich do opracowania koncepcji i testów.

Grace 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:

  • Komunikacja SPI pour le DAC
  • ADC pour recupérer les valeurs analogique de notre signal et les convertir en donnée digitales
  • HPS (processeur) pour gérer tout les code
  • GPIO pour les boutons qui vont servir à exécuter pewne efekty
  • Memoire (w pamięci chipowej)

Język angielski:

Rdzenie IP są zoptymalizowane pod kątem urządzeń Intel FPGA i można je łatwo wdrożyć, aby skrócić czas projektowania i testowania.

Dzięki oprogramowaniu Qsys byliśmy w stanie stworzyć wbudowane urządzenia peryferyjne na naszej mapie. Oto lista urządzeń, które dodaliśmy:

  • Komunikacja SPI dla DAC
  • ADC do pobierania wartości analogowych z naszego sygnału i konwertowania ich na dane cyfrowe
  • HPS (procesor) do zarządzania wszystkimi kodami
  • GPIO dla przycisków, które będą używane do radzenia sobie z określonymi efektami
  • Pamięć (w pamięci chipa)

Krok 5: L'écran LT24

L'écran LT24
L'écran LT24

Francuski:

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 dokumentacje sur celui-ci.

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

Język angielski:

Musieliśmy zrozumieć i zarządzać ekranem LT24, który będzie kierowany przez symulowany procesor NIOS. Aby go zainicjować, czytamy wiele dokumentacji na ten temat.

W końcu nasz ekran służy do wyświetlania FFT, z pożądanym efektem.

Krok 6: Kody Utiles En C++ / Przydatne kody w C ++

Kody Utiles En C++ / Przydatne kody w C ++
Kody Utiles En C++ / Przydatne kody w C ++

Je vais vous montrer les kody w C ++, które są dostępne w celu uzyskania rzeczywistych efektów dźwiękowych.

Voici d'abord toutes nos declarations (oui un peu exhaustif…):

Pokażę Wam kody w C++, które były dla nas przydatne do tworzenia efektów dźwiękowych.

Najpierw wszystkie nasze wypowiedzi (tak, trochę wyczerpujące…):

#włączać

#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) #define HW_REGS_SPAN (0x04000000) #define 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 używając przestrzeni nazw std; const long SAMPLE_RATE = 1250000; // Tworzenie konfiguracji i buforów in i 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));bufor kolejki; int globalny = 0; int i = 0; krótkie dane, dane2;

Ci-dessous une de nos fonctions permettant la modulacja:

Poniżej jedna z naszych funkcji umożliwiających modulację:

modulacja pustki (częstotliwość wewnętrzna)

{ if(i<NFFT) { dane=dane*cos(2*PI*częstotliwość*i/FE); in.r=dane; i++; } else i="0"; }

Voici notre fonction main:

To nasza główna funkcja:

int main(int argc, char **argv)

{ volatile unsigned long *h2p_lw_spi_addr=NULL; volatile unsigned long *h2p_lw_led_addr=NULL; volatile unsigned long *h2p_lw_adc_addr=NULL; volatile unsigned long *h2p_lw_blue_addr=NULL; volatile unsigned long *h2p_lw_red_addr=NULL; volatile unsigned long *h2p_lw_black_addr=NULL; nieważne *virtual_base; int fd; printf("1\n"); // mapuje przestrzeń adresową dla rejestrów spi na przestrzeń użytkownika, abyśmy mogli z nimi wchodzić w interakcje. // faktycznie zmapujemy w całym zakresie CSR HPS, ponieważ chcemy uzyskać dostęp do różnych rejestrów w tym zakresie if((fd = open("/dev/mem", (O_RDWR | O_SYNC)))) == -1) { printf("BŁĄD: nie można otworzyć \"/dev/mem\"…\n"); zwrot(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("BŁĄD: mmap() nie powiodło się…\n"); zamknij(fd); zwrot(1); } printf("4\n"); printf("5\n"); h2p_lw_spi_addr = virtual_base + ((długi bez znaku) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (długi bez znaku) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((długi bez znaku) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (długi bez znaku) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((długi bez znaku) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (długi bez znaku) (HW_REGS_MASK)); h2p_lw_blue_addr= virtual_base + ((długi bez znaku) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (długi bez znaku) (HW_REGS_MASK)); h2p_lw_black_addr= virtual_base + ((długi bez znaku) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (długi bez znaku) (HW_REGS_MASK)); h2p_lw_red_addr= virtual_base + ((długi bez znaku) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (długi bez znaku) (HW_REGS_MASK)); //int i=0; dane wewn.; int i= 0, j; // Tworzenie konfiguracji i buforów in i 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) dane = echo(dane, 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, dane | 0b111000000000000); } wolny(konfiguracja); wolny(w); wolny (wyjście); zwróć 0; }

Krok 7: Finał / Finał

Le Final / Finał
Le Final / Finał

Francuski:

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

Nie ma żadnych problemów z PCB entrée i sortie, które są reliées à la carte DE0 Nano Soc.

Łazienka, ses composants sont places à 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 somes 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 la 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.

Język angielski:

Oto (w końcu) ostateczny rendering naszego Cactus 2000.

Umieszczamy płytki wejściowe i wyjściowe, które są podłączone do płytki DE0 Nano Soc.

Następnie jego elementy umieszczane są w żółtym pudełku.

Na pudełku znajduje się potencjometr suwakowy, którym można zarządzać głośnością dźwięku, pokrętła i przyciski uruchamiające niektóre efekty oraz ekran wyświetlający FFT.

Głośnik jest ustawiony prostopadle do przycisków. Mikrofon znajduje się po drugiej stronie pudełka w stosunku do głośnika.

To wszystko na dzisiaj.

Mając nadzieję, że ta instrukcja jest dla ciebie przydatna.

Zalecana: