Πίνακας περιεχομένων:

Cactus 2000: 7 Βήματα
Cactus 2000: 7 Βήματα

Βίντεο: Cactus 2000: 7 Βήματα

Βίντεο: Cactus 2000: 7 Βήματα
Βίντεο: ЗНАЧЕНИЯ ЗНАЧКОВ НА ПРИБОРНОЙ ПАНЕЛИ АВТОМОБИЛЯ 2024, Ιούλιος
Anonim
Κάκτος 2000
Κάκτος 2000

ΕΡΓΟ MIDI-CONTROLEUR EISE4

Français:

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 διάθεση:

  • Une carte DE0 Nano Soc
  • Des παλμογράφοι, des multimètres
  • Des composants de différents types (amplificateur, résistance, capacité…)
  • 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 circuit dessiner, le PCB était à faire sur le logiciel Altium. Κρεμαστό που καλύπτεται από 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 signal pour le haut-parleur. Τελικά, il nous a fallu créer des effets sonores pour modifier le son.

Αγγλικά:

Κατά τη διάρκεια του τέταρτου έτους του σχολείου, συνειδητοποιήσαμε ένα midi-controller. Για να γίνει αυτό, είχαμε στη διάθεσή μας:

  • Ένας χάρτης DE0 Nano Soc
  • Παλαιογράφοι, πολύμετρα
  • Εξαρτήματα διαφόρων τύπων (ενισχυτής, αντίσταση, χωρητικότητα …)
  • Ένα μικρόφωνο και ένα ηχείο
  • Λίγη οθόνη

Έπρεπε να περάσουμε από διάφορα επικίνδυνα βήματα για να πετύχουμε το έργο. Θα σας παρουσιάσουμε αυτό το Instructable.

Πρώτον, ο σχεδιασμός του βασικού κυκλώματος που απαιτείται για την ανάκτηση του γιου του μικροφώνου και την κατασκευή του ηχείου. Μόλις τραβήξει το κύκλωμα, το PCB επρόκειτο να γίνει στο λογισμικό Altium. Ενώ δύο μαθητές ήταν απασχολημένοι με τη διαχείριση των PCB εισόδου και εξόδου, οι άλλοι δύο εργάζονταν για να εκτελέσουν την κάρτα DE0 Nano Soc έτσι ώστε η κάρτα να μπορεί να πάρει τα δείγματα μικροφώνου και να δώσει σήμα για το ηχείο. Τέλος, έπρεπε να δημιουργήσουμε ηχητικά εφέ για να αλλάξουμε τον ήχο.

Βήμα 1: Conception Du Circuit En Entrée / Entrance Circuit Design

Conception Du Circuit En Entrée / Entrance Circuit Design
Conception Du Circuit En Entrée / Entrance Circuit Design

Français:

La première étape conste à 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)

Σε μια επιλογή un κέρδος 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 tension de sortie soit compris entre 0 και 4 V.

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

(5) CAG (Controle Automatique de Gain)

(6) Ρίξτε τελικό, 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 / δεκαετία. Η συχνότητα επιλογής είναι 20 kHz.

Αγγλικά:

Το πρώτο βήμα είναι να ρυθμίσετε ένα κύκλωμα που μπορεί να λάβει το σήμα που αποστέλλεται στο μικρόφωνο για να το μεταδώσει στην κάρτα DE0 Nano Soc. Πάνω από το διάγραμμα της καταχώρισής μας.

(1) Ο μετατροπέας θα ανακτήσει το 5 Volt και θα το μετατρέψει σε - 5 V. Το - 5 V θα χρησιμεύσει για τον ενισχυτή που θα δούμε παρακάτω.

(2) Εδώ έχουμε έναν μη αναστρέψιμο ενισχυτή. Σύμφωνα με τον ακόλουθο τύπο:

Vs = Ve (1 + Z1 / Z2)

Επιλέχθηκε κέρδος 101 με ρύθμιση R1 = 100 kOhm και R2 = 1 kOhm.

Αυτός ο ενισχυτής θα χρησιμοποιηθεί για την ενίσχυση του ήχου του μικροφώνου.

(3) Οι δύο αντιστάσεις θα δημιουργήσουν μια μετατόπιση έτσι ώστε η τάση εξόδου να είναι μεταξύ 0 και 4 V.

(4) Το μικρόφωνο που θα ενισχυθεί από τον ενισχυτή.

(5) AGC (Αυτόματος έλεγχος κέρδους)

(6) Τέλος, δημιουργήσαμε ένα φίλτρο χαμηλής διέλευσης δεύτερης τάξης με δύο RC. Η παραγγελία 2 χρειάστηκε για να έχει εξασθένηση -40db / δεκαετία. Η επιλεγμένη συχνότητα διακοπής είναι 20 kHz.

Βήμα 2: Conception Du Circuit En Sortie / Design of the Output Circuit

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

Français:

Δανες και δευτερες θερμοκρασιες, 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

σελίδα 10

Αυτό σημαίνει ότι δεν είναι δυνατή η αποστολή σήματος αυτοκινήτου από 200 άτομα που είναι απαραίτητα.

Αγγλικά:

Πάνω από το διάγραμμα της εξόδου μας.

(1) Το DAC (Digital to Analog Converter) που θα επιτρέψει την ανάκτηση του ψηφιακού σήματος που αποστέλλεται από την κάρτα DE0 Nano Soc και τη μετατροπή του σε αναλογικό σήμα (απαραίτητο για το μεγάφωνο).

(2) Η χωρητικότητα θα χρησιμοποιηθεί για τη μεταφορά του συνεχούς στοιχείου του σήματος μας.

(3) Τοποθέτηση που θα ενισχύσει τη δύναμη του σήματος μας. Πήραμε το σχέδιο:

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

σελίδα 10

Αυτό το σχήμα καθιστά δυνατή την απόκτηση 200 που είναι απαραίτητη επειδή το σήμα μας είναι πραγματικά αδύναμο.

Βήμα 3: Conception Des PCB / Design of the PCB

Conception Des PCB / Design of the PCB
Conception Des PCB / Design of the PCB

Français:

Τα κυκλώματα μπορούν να χρησιμοποιηθούν σε περιπτώσεις άμεσης εκκίνησης PCB.

Ρίξτε ce faire, nous avons utiliser le logiciel Altium. Il faut que tout soit correctement connector puis cliquer sur:

Σχεδιασμός μενού -> Ενημέρωση εγγράφου PCB.

Ensuite, κάντε κλικ στο «Επικυρώστε αλλαγές». Ρίξτε chaque chancement 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 aller dans le menu "File" -> "Fabrication Output" -> "Gerber Files"

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

  • Το μενού "Layers" qui vous permettra de choisir sur quel επίπεδα και s'appuyer votre PCB.
  • Le menu "Drill Drawing" dans lequel il faut que tout soit décocher.
  • Το μενού "Apertures" dans lequel il faut cocher "Embedded appertures".

Toute ses étapes sont complétées;

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

Αρχείο-> Έξοδος κατασκευής -> Αρχεία τρυπανιών 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.

Αγγλικά:

Μόλις υποδείχτηκαν τα κυκλώματά μας, έπρεπε να τα τοποθετήσουμε σε PCB.

Για να γίνει αυτό, χρησιμοποιούμε το λογισμικό Altium. Όλα πρέπει να είναι σωστά συνδεδεμένα και μετά κάντε κλικ στο:

Σχεδιασμός μενού -> Ενημέρωση εγγράφου PCB.

Στη συνέχεια, κάντε κλικ στο "Επικύρωση αλλαγών". Για κάθε επικυρωμένη αλλαγή, εμφανίζεται ένα πράσινο σημάδι ελέγχου στη στήλη "Έλεγχος".

Μετά από αυτό, θα έχετε μια νέα καρτέλα που θα ανοίξει και θα πρέπει να τοποθετήσετε τα στοιχεία σε αυτό το παράθυρο.

Στη συνέχεια, πρέπει να μεταβείτε στο μενού "Αρχείο" -> "Έξοδος εξόδου" -> "Αρχεία Gerber"

Ανοίγει ένα παράθυρο, σε αυτό θα βρείτε.

Το μενού "Επίπεδα" που θα σας επιτρέψει να επιλέξετε ποια επίπεδα θα υποστηρίξουν το PCB σας. Το μενού "Drill Drawing" όπου όλα πρέπει να είναι ανεξέλεγκτα. Το μενού "Διάφραγμα" στο οποίο πρέπει να επιλέξετε "Ενσωματωμένα ανοίγματα".

Ολοκληρώθηκαν όλα του τα βήματα;

Ας επιστρέψουμε τώρα στο παράθυρο με τα στοιχεία σε αυτό στο οποίο κάνετε κλικ

Αρχείο-> Έξοδος κατασκευής -> Αρχεία τρυπανιών NC

Τελικά τελείωσε, το μόνο που έχετε να κάνετε είναι να δώσετε στον 3D εκτυπωτή τα αρχεία.

Επισυνάπτονται οι φωτογραφίες των δύο PCB μας.

Βήμα 4: Périphériques Pour La Carte DE0 Nano Soc / Περιφερειακά για την κάρτα DE0 Nano Soc

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

Francais:

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

  • Επικοινωνία 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 codes
  • GPIO pour les boutons qui vont servir à exécuter sures effets
  • Mémoire (στη μνήμη τσιπ)

Αγγλικά:

Οι πυρήνες IP είναι βελτιστοποιημένοι για συσκευές Intel FPGA και μπορούν εύκολα να εφαρμοστούν για να μειώσουν το χρόνο σχεδίασης και δοκιμής.

Χάρη στο λογισμικό Qsys μπορέσαμε να δημιουργήσουμε ενσωματωμένα περιφερειακά στον χάρτη μας. Ακολουθεί μια λίστα με τη συσκευή που προσθέσαμε:

  • Επικοινωνία SPI για την DAC
  • ADC για ανάκτηση των αναλογικών τιμών από το σήμα μας και μετατροπή τους σε ψηφιακά δεδομένα
  • HPS (επεξεργαστής) για τη διαχείριση όλων των κωδικών
  • GPIO για τα κουμπιά που θα χρησιμοποιηθούν για την αντιμετώπιση ορισμένων εφέ
  • Μνήμη (στη μνήμη του τσιπ)

Βήμα 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 guidé par un processseur 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.

Αγγλικά:

Έπρεπε να κατανοήσουμε και να διαχειριστούμε την οθόνη LT24 θα καθοδηγείται από προσομοιωμένο επεξεργαστή NIOS. Για να το ξεκινήσουμε, διαβάζουμε πολλά έγγραφα για αυτό.

Στο τέλος, η οθόνη μας χρησιμοποιείται για την εμφάνιση του FFT, στο επιθυμητό αποτέλεσμα.

Βήμα 6: Κωδικοί Utiles En C ++ / Χρήσιμοι κωδικοί σε C ++

Κωδικοί Utiles En C ++ / Χρήσιμοι κωδικοί σε C ++
Κωδικοί Utiles En C ++ / Χρήσιμοι κωδικοί σε 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 declarations (oui un peu exhaustif…):

Θα σας δείξω τους κωδικούς σε C ++ που ήταν χρήσιμοι για τη δημιουργία ηχητικών εφέ.

Πρώτον, όλες οι δηλώσεις μας (ναι λίγο εξαντλητικές…):

#περιλαμβάνω

#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 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; // 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; σύντομα δεδομένα, δεδομένα2;

Ci-dessous une de nos fonctions permettant la modulation:

Κάτω από μία από τις λειτουργίες μας που επιτρέπουν τη διαμόρφωση:

void modulation (int freq)

{if (i <NFFT) {data = data*cos (2*PI*freq*i/FE); στο .r = δεδομένα. i ++? } else i = "0"; }

Voici notre fonction main:

Αυτές είναι η κύρια λειτουργία μας:

int main (int argc, char ** argv)

{volatile unsigned long *h2p_lw_spi_addr = NULL; πτητικό ανυπόγραφο μακρύ *h2p_lw_led_addr = NULL; πτητικό ανυπόγραφο μακρύ *h2p_lw_adc_addr = NULL; πτητικό ανυπόγραφο μακρύ *h2p_lw_blue_addr = NULL; πτητικό ανυπόγραφο μακρύ *h2p_lw_red_addr = NULL; πτητικό ανυπόγραφο μακρύ *h2p_lw_black_addr = NULL; void *virtual_base; int fd; printf ("1 / n"); // χαρτογραφήστε το χώρο διευθύνσεων των καταχωρητών spi στο χώρο χρήστη, ώστε να μπορούμε να αλληλεπιδράσουμε μαζί τους. // θα χαρτογραφήσουμε σε ολόκληρο το εύρος CSR του HPS αφού θέλουμε να έχουμε πρόσβαση σε διάφορους καταχωρητές εντός αυτού του εύρους εάν ((fd = open ("/dev/mem", (O_RDWR | O_SYNC))) == -1) {printf ("ERROR: could not open \"/dev/mem / "… / n"); επιστροφή (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 ("ERROR: mmap () απέτυχε… / n"); κλείσιμο (fd)? επιστροφή (1)? } printf ("4 / n"); printf ("5 / n"); h2p_lw_spi_addr = virtual_base + ((χωρίς υπογραφή πολύ) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (χωρίς υπογραφή μακρύ) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((χωρίς υπογραφή για μεγάλο χρονικό διάστημα) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (χωρίς υπογραφή για μεγάλο χρονικό διάστημα) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((χωρίς υπογραφή πολύ) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (χωρίς υπογραφή μακρύ) (HW_REGS_MASK)); h2p_lw_blue_addr = virtual_base + ((χωρίς υπογραφή για μεγάλο χρονικό διάστημα) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (χωρίς υπογραφή για μεγάλο χρονικό διάστημα) (HW_REGS_MASK)); h2p_lw_black_addr = virtual_base + ((χωρίς υπογραφή για μεγάλο χρονικό διάστημα) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (χωρίς υπογραφή για μεγάλο χρονικό διάστημα) (HW_REGS_MASK)); h2p_lw_red_addr = virtual_base + ((χωρίς υπογραφή για μεγάλο χρονικό διάστημα) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (χωρίς υπογραφή για μεγάλο χρονικό διάστημα) (HW_REGS_MASK)); // int i = 0; int δεδομένα? 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)); ενώ (1) {data = *(h2p_lw_adc_addr+2); εάν (*h2p_lw_blue_addr == 1) δεδομένα = ηχώ (δεδομένα, 20); εάν (*h2p_lw_black_addr == 1) alt_write_word (h2p_lw_led_addr, 0x0F); εάν (*h2p_lw_red_addr == 0) alt_write_word (h2p_lw_led_addr, 0xF0); alt_write_word (h2p_lw_spi_addr+1, δεδομένα | 0b11100000000000000); } δωρεάν (διαμόρφωση); δωρεάν (σε)? δωρεάν (έξω)? επιστροφή 0? }

Βήμα 7: Le Final / the Final

Le Final / the Final
Le Final / the Final

Français:

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

Nous avons mis les PCB entrée et 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 sures effets, ainsi que un ecran qui permettra d'afficher la FFT.

Le haut-parleur is positionné perpendiculairement par rapport aux boutons. Le micro est positionné de l'autre coté de la boîte par rapport au haut-parleur.

C'est tout pour aujourd'hui.

Ενδείκνυται για καθοδήγηση και χρήση.

Αγγλικά:

Εδώ είμαστε (επιτέλους) η τελική απόδοση του Cactus 2000.

Βάζουμε τα PCB εισόδου και εξόδου που είναι συνδεδεμένα στην πλακέτα DE0 Nano Soc.

Στη συνέχεια, τα συστατικά του τοποθετούνται μέσα σε ένα κίτρινο κουτί.

Στο κουτί υπάρχει ένα ποτενσιόμετρο διαφάνειας, το οποίο μπορεί να διαχειριστεί την ένταση του ήχου, τα κουμπιά και τα κουμπιά που θα ενεργοποιήσουν κάποια εφέ και μια οθόνη που θα εμφανίζει το FFT.

Το ηχείο είναι τοποθετημένο κάθετα στα κουμπιά. Το μικρόφωνο είναι τοποθετημένο στην άλλη πλευρά του κουτιού σε σχέση με το ηχείο.

Αυτά για σήμερα.

Ελπίζοντας ότι αυτό το Instructable είναι χρήσιμο για εσάς.

Συνιστάται: