Inhaltsverzeichnis:
- Schritt 1: Konzeption Du Circuit En Entrée / Design der Eingangsschaltung
- Schritt 2: Konzeption Du Circuit En Sortie / Design der Ausgangsschaltung
- Schritt 3: Konzeption des PCB / Design der PCB
- Schritt 4: Périphériques Pour La Carte DE0 Nano Soc / Peripheriegeräte für die DE0 Nano Soc Card
- Schritt 5: L'écran LT24
- Schritt 6: Codes Utilities En C++ / Nützliche Codes in C ++
- Schritt 7: Le Final / das Finale
Video: Kaktus 2000 - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
PROJEKT MIDI-CONTROLEUR EISE4
Französisch:
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 Oszilloskops, des Multimeters
- Des composants de différents types (Verstärker, Widerstand, Kapazität…)
- Un micro et un haut-parleur
- Un petit ecra
Il nous a fallu passer par différentes périlleuses afin de réussir le projet. Nous allons vous les présenter dans cet Instructable.
Gießen Sie Beginner, le dessin du Circuit de base était nécessaire afin de récupérer le son du micro und le rendre au haut-parleur. Une fois le Circuit Dessiner, le PCB était à faire sur le Logiciel Altium. Anhänger 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 haut-parleur. Finale, il nous a fallu créer des effets sonores pour modifier le son.
Englisch:
Im vierten Schuljahr haben wir einen Midi-Controller realisiert. Dazu standen uns zur Verfügung:
- Eine Karte DE0 Nano Soc
- Oszilloskope, Multimeter
- Komponenten unterschiedlicher Art (Verstärker, Widerstand, Kapazität …)
- Ein Mikrofon und ein Lautsprecher
- Ein kleiner Bildschirm
Wir mussten verschiedene gefährliche Schritte durchlaufen, um das Projekt zum Erfolg zu führen. Wir werden Ihnen dieses Instructable vorstellen.
Erstens, die Gestaltung der Grundschaltung, die erforderlich ist, um den Sohn des Mikrofons wiederzugewinnen und den Lautsprecher zu machen. Nach dem Schaltungsentwurf sollte die Platine auf der Software Altium erfolgen. Während zwei Studenten damit beschäftigt waren, die Eingangs- und Ausgangsplatinen zu verwalten, arbeiteten die anderen beiden daran, die DE0 Nano Soc-Karte zu betreiben, damit die Karte die Mikrofonsamples aufnehmen und ein Signal für den Lautsprecher abgeben konnte. Schließlich mussten wir Soundeffekte erstellen, um den Sound zu ändern.
Schritt 1: Konzeption Du Circuit En Entrée / Design der Eingangsschaltung
Französisch:
Die Erstaufführung besteht aus einer Mettre-en-Place-Schaltung, die den Signalgeber auf der Micro-Purle-Transmetre-à-la-carte-Karte ausgibt DE0 Nano Soc.
Ci-dessus le schema de notre entrée.
(1) L'inverseur va 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 non-inverseur. D'Après la formule suivante:
Vs = Ve(1 + Z1/Z2)
Bei einer Wahl un Gain de 101 en mettant R1 = 100 kOhm und R2 = 1 kOhm.
Cet amplificateur va servir a amplificateur le son du micro.
(3) Les deux résistances vont créer un offset afin que latension de sortie soit compris entre 0 et 4 V.
(4) Le micro qui va être Verstärker par l'amplificateur.
(5) CAG (Automatische Kontrolle des Gewinns)
(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 / dekade. La fréquence de coupure choisit est 20 kHz.
Englisch:
Der erste Schritt besteht darin, eine Schaltung einzurichten, die das vom Mikrofon gesendete Signal verarbeiten kann, um es an die DE0 Nano Soc-Karte zu übertragen. Über dem Diagramm unseres Eintrags.
(1) Der Wechselrichter gewinnt die 5 Volt zurück und wandelt sie in - 5 V um. Die - 5 V dienen für den Verstärker, den wir unten sehen werden.
(2) Hier haben wir einen nicht invertierenden Verstärker. Nach folgender Formel:
Vs = Ve (1 + Z1 / Z2)
Durch Einstellen von R1 = 100 kOhm und R2 = 1 kOhm wurde eine Verstärkung von 101 gewählt.
Dieser Verstärker wird verwendet, um den Ton des Mikrofons zu verstärken.
(3) Die beiden Widerstände erzeugen einen Offset, sodass die Ausgangsspannung zwischen 0 und 4 V liegt.
(4) Das Mikrofon, das vom Verstärker verstärkt wird.
(5) AGC (Automatische Verstärkungsregelung)
(6) Schließlich haben wir einen Tiefpassfilter zweiter Ordnung mit zwei RCs erstellt. Ordnung 2 war erforderlich, um eine Dämpfung von -40 dB / Dekade zu haben. Die gewählte Grenzfrequenz beträgt 20 kHz.
Schritt 2: Konzeption Du Circuit En Sortie / Design der Ausgangsschaltung
Französisch:
Dans un second temps, nous avons penser à la création du Circuit en sortie.
Ci-dessus le schema 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 schema:
www.ti.com/lit/ds/symlink/lm386.pdf
Seite 10
Dieses Schéma permet d'avoir einen Gewinn von 200 qui est nécessaire car notre signal est vraiment faible.
Englisch:
Oben das Diagramm unserer Ausgabe.
(1) Der DAC (Digital to Analog Converter), der es ermöglicht, das von der DE0 Nano Soc-Karte gesendete digitale Signal wiederherzustellen und in ein analoges Signal umzuwandeln (erforderlich für den Lautsprecher).
(2) Die Kapazität wird verwendet, um die kontinuierliche Komponente unseres Signals zu übertragen.
(3) Montage, die die Leistung unseres Signals verstärkt. Wir haben das Schema genommen:
www.ti.com/lit/ds/symlink/lm386.pdf
Seite 10
Dieses Schema ermöglicht eine Verstärkung von 200, die notwendig ist, da unser Signal sehr schwach ist.
Schritt 3: Konzeption des PCB / Design der PCB
Französisch:
Une fois que nos circuit 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:
Menü Design -> PCB-Dokument aktualisieren.
Ensuite, cliquez sur «Änderungen validieren». 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 all dans le menu "File" -> "Fabrication Output" -> "Gerber Files"
Une fenêtre s'ouvre, dans celle-ci vous trouverez;
- Das Menü "Layers" qui vous permettra de choisir sur quel Layers va s'appuyer votre PCB.
- Das Menü "Drill Drawing" und das letzte Mal, wenn Sie es tun, können Sie soit décocher.
- Das Menü "Apertures" und das letzte Menü "Embeddedapertures".
Toute ses étapes sont complétées ?
Revenons maintenant à la fenêtre avec les composants sur celle-ci vous cliquez sur
Datei -> Fertigungsausgabe -> NC-Bohrdateien
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.
Englisch:
Sobald unsere Schaltungen instanziiert waren, mussten wir sie auf PCBs platzieren.
Dazu verwenden wir die Altium-Software. Alles muss richtig angeschlossen sein dann klicken Sie auf:
Menü Design -> PCB-Dokument aktualisieren.
Klicken Sie anschließend auf "Änderungen validieren". Für jede validierte Änderung erscheint in der Spalte "Check" ein grünes Häkchen.
Danach öffnet sich eine neue Registerkarte und Sie müssen die Komponenten in diesem Fenster platzieren.
Dann müssen Sie in das Menü "Datei" -> "Ausgabeausgabe" -> "Gerber-Dateien" gehen
Ein Fenster öffnet sich, in diesem finden Sie;
Das Menü "Ebenen", in dem Sie auswählen können, welche Ebenen Ihre Leiterplatte unterstützen. Das Menü "Drill Drawing", in dem alles deaktiviert werden muss. Das Menü "Blenden", in dem Sie "Eingebettete Blenden" aktivieren müssen.
Alle seine Schritte sind abgeschlossen?
Gehen wir nun zurück zu dem Fenster mit den Komponenten, auf das Sie klicken
Datei -> Fertigungsausgabe -> NC-Bohrdateien
Es ist endlich vorbei, Sie müssen dem 3D-Drucker nur die Dateien übergeben.
Anbei finden Sie die Fotos unserer beiden Platinen.
Schritt 4: Périphériques Pour La Carte DE0 Nano Soc / Peripheriegeräte für die DE0 Nano Soc Card
Franziska:
Die besten IP-Optimierungen für die périphériques Intel FPGA und die neuen Implementierungen für die Konzeption und die Testzeiten.
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:
- Kommunikations-SPI für den 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 sures effets
- Mémoire (auf Chip-Speicher)
Englisch:
Die IP-Cores sind für Intel FPGA-Geräte optimiert und können einfach implementiert werden, um die Design- und Testzeit zu verkürzen.
Dank der Qsys-Software konnten wir eingebettete Peripheriegeräte in unserer Karte erstellen. Hier ist eine Liste der Geräte, die wir hinzugefügt haben:
- SPI-Kommunikation für den DAC
- ADC, um die analogen Werte aus unserem Signal abzurufen und in digitale Daten umzuwandeln
- HPS (Prozessor) zur Verwaltung aller Codes
- GPIO für die Tasten, die verwendet werden, um mit bestimmten Effekten fertig zu werden
- Speicher (auf dem Speicher des Chips)
Schritt 5: L'écran LT24
Französisch:
Il nous a fallu comprendre and gérer l'écran LT24 celui-ci sera guidé par unprocesseur simulé NIOS.
Pour l'initaliser, nous avons lu beaucoup de documentations sur celui-ci.
Au final, notre écran sert à afficher la FFT, à sélectionner l'effet voulu.
Englisch:
Wir mussten den Bildschirm LT24 verstehen und verwalten, er wird von einem simulierten NIOS-Prozessor geführt. Um es zu initiieren, haben wir eine Menge Dokumentation darüber gelesen.
Am Ende wird unser Bildschirm verwendet, um die FFT mit dem gewünschten Effekt anzuzeigen.
Schritt 6: Codes Utilities En C++ / Nützliche Codes in C ++
Je vais vous montrer les code in C++ qui nous ont utiles afin de réaliser des effets sonore.
Voici d'abord toutes nos déclarations (oui un peu erschöpft…):
Ich zeige Ihnen die Codes in C++, die für uns nützlich waren, um Soundeffekte zu erstellen.
Zuerst alle unsere Aussagen (ja ein wenig erschöpfend …):
#enthalten
#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_RESPAN) #defxineKHW000 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 using namespace std; const long SAMPLE_RATE = 12500000; // Erstellung der Konfiguration und des Puffers in et out pour s(t) und 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; kurze Daten, Daten2;
Ci-dessous une de nos fonctions permettant la modulation:
Nachfolgend eine unserer Funktionen, die eine Modulation ermöglichen:
Void-Modulation (int freq)
{ if (i < NFFT) { Daten = Daten * cos (2 * PI * Freq * i / FE); in.r=Daten; i++; } sonst i="0"; }
Voici notre fonction main:
Diese unsere Hauptfunktion:
int main(int argc, char **argv)
{ volatile unsigned long *h2p_lw_spi_addr=NULL; volatile unsigned long *h2p_lw_led_addr=NULL; flüchtig unsigned long *h2p_lw_adc_addr=NULL; volatile unsigned long *h2p_lw_blue_addr=NULL; flüchtig unsigned long *h2p_lw_red_addr=NULL; volatile unsigned long *h2p_lw_black_addr=NULL; void *virtual_base; int fd; printf("1\n"); // den Adressraum für die Spi-Register dem Benutzerraum zuordnen, damit wir mit ihnen interagieren können. // wir werden tatsächlich die gesamte CSR-Spanne des HPS abbilden, da wir auf verschiedene Register innerhalb dieser Spanne zugreifen möchten if((fd = open("/dev/mem", (O_RDWR | O_SYNC))) == -1) { printf("FEHLER: konnte nicht geöffnet werden \"/dev/mem\"…\n"); zurück(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("FEHLER: mmap() fehlgeschlagen…\n"); schließen(fd); zurück(1); } printf("4\n"); printf("5\n"); h2p_lw_spi_addr = virtual_base + ((unsigned long) (ALT_LWPGASLVS_OFST + SPI_0_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_blue_addr= virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_black_addr= virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_red_addr= virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (unsigned long) (HW_REGS_MASK)); //int i=0; int-Daten; int i = 0, j; // Erstellung der Konfiguration und des Puffers in et out pour s(t) und 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){ Daten = *(h2p_lw_adc_addr+2); if(*h2p_lw_blue_addr == 1) data = echo(data, 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, Daten | 0b111000000000000); } frei (Konfiguration); frei in); frei(aus); 0 zurückgeben; }
Schritt 7: Le Final / das Finale
Französisch:
Eh voilà (enfin) le rendu final de notre Cactus 2000.
Nous avons mis les PCB entrée and 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 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 l'autre cote de la boîte par rapport au haut-parleur.
C'est tout pour aujourd'hui.
En esperant que cet Instructable vous soit utile.
Englisch:
Hier sind wir (endlich) das finale Rendering unseres Cactus 2000.
Wir legen die Eingangs- und Ausgangsplatinen, die mit dem DE0 Nano Soc Board verbunden sind.
Dann werden seine Komponenten in ein gelbes Kästchen gelegt.
Auf der Box befindet sich ein Schiebepotentiometer, mit dem die Lautstärke des Sounds gesteuert werden kann, Knöpfe und Tasten, die einige Effekte starten, und ein Bildschirm, der die FFT anzeigt.
Der Lautsprecher ist senkrecht zu den Tasten positioniert. Das Mikrofon ist relativ zum Lautsprecher auf der anderen Seite der Box positioniert.
Das ist alles für heute.
In der Hoffnung, dass dieses Instructable für Sie nützlich ist.
Empfohlen:
Windows 2000 wie Windows XP aussehen lassen – wikiHow
Windows 2000 wie Windows XP aussehen lassen: In diesem Tutorial können Sie Ihre langweilige Windows 2000-Oberfläche mit Hilfe einiger Software genau wie XP aussehen lassen. Es gibt einige Elemente, die nicht enthalten sind, wie z. B. das Erscheinungsbild des Bedienfelds und dergleichen. Sie werden