Daftar Isi:
- Langkah 1: Conception Du Circuit En Entrée / Entrance Circuit Design
- Langkah 2: Konsepsi Du Circuit En Sortie / Desain Sirkuit Output
- Langkah 3: Konsepsi Des PCB / Desain PCB
- Langkah 4: Périphériques Pour La Carte DE0 Nano Soc / Peripherals untuk Kartu Soc Nano DE0
- Langkah 5: L'écran LT24
- Langkah 6: Kode Utiles En C++ / Kode Berguna di C ++
- Langkah 7: Le Final / Final
Video: Kaktus 2000: 7 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
PROYEK MIDI-CONTROLEUR EISE4
Franais:
Lors de notre quatrième année d'école ingénieur, nous avons réalisé un midi-contrôleur. Tuang ce faire, nous avions notre disposition:
- Une carte DE0 Nano Soc
- Des osiloskop, 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.
Tuang starter, 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. Pendant 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 signal pour leonner haut-ruang tamu. Terakhir, il nous a fallu créer des effet sonores pour modifier le son.
Bahasa Inggris:
Selama tahun keempat sekolah kami, kami menyadari pengontrol midi. Untuk melakukan ini, kami memiliki:
- Peta DE0 Nano Soc
- Osiloskop, multimeter
- Komponen dari berbagai jenis (penguat, resistansi, kapasitas …)
- Mikrofon dan speaker
- Layar kecil
Kami harus melalui berbagai langkah berbahaya untuk menyukseskan proyek ini. Kami akan memperkenalkan Anda pada Instruksi ini.
Pertama, desain rangkaian dasar yang diperlukan untuk memulihkan anak mikrofon dan membuat speaker. Setelah menggambar rangkaian, PCB pun harus dikerjakan pada software Altium. Sementara dua siswa sibuk mengatur input dan output PCB, dua lainnya bekerja untuk menjalankan kartu DE0 Nano Soc sehingga kartu tersebut dapat mengambil sampel mikrofon dan memberikan sinyal untuk speaker. Akhirnya, kami harus membuat efek suara untuk mengubah suara.
Langkah 1: Conception Du Circuit En Entrée / Entrance Circuit Design
Franais:
La premire étape terdiri mettre en tempat un sirkuit qui puisse prendre le sinyal utusan sur le mikro tuangkan 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)
Pada choisit un gain 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 et 4 V.
(4) Amplifier Le micro qui va tre par l'amplificateur.
(5) CAG (Controle Automatique de Gain)
(6) Tuang finir, nous avons créé un filtre passe-bas du second ordre avec deux RC. L'ordre 2 était nécessaire tuangkan avoir une atténuation de - 40db / dekade. La fréquence de coupure choisit est 20 kHz.
Bahasa Inggris:
Langkah pertama adalah menyiapkan sirkuit yang dapat menerima sinyal yang dikirim pada mikrofon untuk mengirimkannya ke kartu DE0 Nano Soc. Di atas diagram entri kami.
(1) Inverter akan memulihkan 5 Volt dan mengubahnya menjadi - 5 V. - 5 V akan berfungsi untuk penguat yang akan kita lihat di bawah.
(2) Di sini kita memiliki penguat non-pembalik. Menurut rumus berikut:
Vs = Ve (1 + Z1 / Z2)
Penguatan 101 dipilih dengan mengatur R1 = 100 kOhm dan R2 = 1 kOhm.
Amplifier ini akan digunakan untuk memperkuat suara microphone.
(3) Kedua resistor akan membuat offset sehingga tegangan output antara 0 dan 4 V.
(4) Mikrofon yang akan diperkuat oleh amplifier.
(5) AGC (Kontrol Penguatan Otomatis)
(6) Terakhir, kami membuat filter low-pass orde kedua dengan dua RC. Order 2 diperlukan untuk memiliki redaman -40db / dekade. Frekuensi cutoff yang dipilih adalah 20 kHz.
Langkah 2: Konsepsi Du Circuit En Sortie / Desain Sirkuit Output
Franais:
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 (Konverter Digital ke Analog) qui va permettre de récupérer le signal numérique envoyer par la carte DE0 Nano Soc et le converter dan analogi sinyal (nécessaire pour le haut parleur)
(2) La capacité va servir a virer la composante melanjutkan sinyal notre.
(3) Montase qui va permettre d'amplifier la puissance de notre sinyal. Nous avons prit le skema:
www.ti.com/lit/ds/symlink/lm386.pdf
halaman 10
Skema permet d'avoir un gain de 200 qui est nécessaire car notre signal est vraiment faible.
Bahasa Inggris:
Di atas diagram output kami.
(1) DAC (Digital to Analog Converter) yang akan memungkinkan untuk memulihkan sinyal digital yang dikirim oleh kartu DE0 Nano Soc dan mengubahnya menjadi sinyal analog (diperlukan untuk loudspeaker).
(2) Kapasitas akan digunakan untuk mentransfer komponen kontinu dari sinyal kami.
(3) Pemasangan yang akan memperkuat kekuatan sinyal kita. Kami mengambil skema:
www.ti.com/lit/ds/symlink/lm386.pdf
halaman 10
Skema ini memungkinkan untuk mendapatkan keuntungan 200 yang diperlukan karena sinyal kami sangat lemah.
Langkah 3: Konsepsi Des PCB / Desain PCB
Franais:
Une fois que nos circuits ont été instanciés il nous a fallu les mettre sur des PCB.
Tuang ce faire, nous avons utiliser le logiciel Altium. Il faut que tout soit korektor penghubung puis cliquer sur:
Desain Menu -> Perbarui Dokumen PCB.
Ensuite, klik sur «Validasi Perubahan». Tuang chaque changement validé, un crochet vert apparaît dans la colonne: «Periksa».
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;
- Menu "Layers" dengan memilih PCB.
- Menu "Drill Drawing" dans lequel il faut que tout soit décocher.
- 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
File-> Output Fabrikasi -> File Bor 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.
Bahasa Inggris:
Setelah sirkuit kami dipakai, kami harus meletakkannya di PCB.
Untuk melakukan ini, kami menggunakan perangkat lunak Altium. Semuanya harus terhubung dengan benar lalu klik:
Desain Menu -> Perbarui Dokumen PCB.
Kemudian klik "Validasi Perubahan". Untuk setiap perubahan yang divalidasi, tanda centang hijau muncul di kolom "Periksa".
Setelah itu, Anda akan memiliki tab baru yang akan terbuka dan Anda harus menempatkan komponen di jendela ini.
Kemudian Anda harus pergi ke menu "File" -> "Output Output" -> "Gerber Files"
Sebuah jendela terbuka, di sini Anda akan menemukan;
Menu "Lapisan" yang memungkinkan Anda memilih lapisan mana yang akan mendukung PCB Anda. Menu "Drill Drawing" di mana semuanya harus tidak dicentang. Menu "Apertures" di mana Anda harus memeriksa "Apertures tertanam".
Semua langkahnya selesai?
Mari kita kembali sekarang ke jendela dengan komponen yang satu ini Anda klik
File-> Output Manufaktur -> File Bor NC
Akhirnya selesai, yang harus Anda lakukan adalah memberikan file pada printer 3D.
Anda akan menemukan terlampir foto dari dua PCB kami.
Langkah 4: Périphériques Pour La Carte DE0 Nano Soc / Peripherals untuk Kartu Soc Nano DE0
Francais:
Les cœurs IP sont optimisés pour les périphériques Intel FPGA et peuvent tre implémentés pour réduire la concept dan 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:
- Komunikasi SPI tuangkan le DAC
- ADC pour recupérer les valeurs analogique de notre signal et les convertir en donnée digitales
- HPS (pengolah) tuangkan gérer tout les kode
- GPIO pour les boutons qui vont layanan efek tertentu pelaksana
- Memoire (pada memori chip)
Bahasa Inggris:
Inti IP dioptimalkan untuk perangkat Intel FPGA dan dapat dengan mudah diimplementasikan untuk mengurangi desain dan waktu pengujian.
Berkat perangkat lunak Qsys, kami dapat membuat periferal tertanam di peta kami. Berikut adalah daftar perangkat yang kami tambahkan:
- Komunikasi SPI untuk DAC
- ADC untuk mengambil nilai analog dari sinyal kami dan mengubahnya menjadi data digital
- HPS (prosesor) untuk mengelola semua kode
- GPIO untuk tombol yang akan digunakan untuk mengatasi efek tertentu
- Memori (pada memori chip)
Langkah 5: L'écran LT24
Franais:
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 dokumentasi sur celui-ci.
Au final, notre écran sert afficher la FFT, sélectionner l'effet voulu.
Bahasa Inggris:
Kami harus memahami dan mengelola layar LT24 yang akan dipandu oleh prosesor NIOS yang disimulasikan. Untuk memulainya, kami membaca banyak dokumentasi tentangnya.
Pada akhirnya, layar kita digunakan untuk menampilkan FFT, dengan efek yang diinginkan.
Langkah 6: Kode Utiles En C++ / Kode Berguna di C ++
Je vais vous montrer les code en C++ berguna untuk menyelesaikannya dengan benar.
Voici d'abord toutes nos déclarations (oui un peu exhaustif…):
Saya akan menunjukkan kepada Anda kode-kode dalam C ++ yang berguna bagi kita untuk membuat efek suara.
Pertama, semua pernyataan kami (ya sedikit lengkap …):
#termasuk
#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 (define HW_04000000) # 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 panjang SAMPLE_RATE = 12500000; // Membuat konfigurasi de la dan buffer di 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* di = (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 saya = 0; data singkat, data2;
Ci-dessous une de nos fonctions permettant la modulasi:
Di bawah salah satu fungsi kami yang memungkinkan modulasi:
modulasi batal (frekuensi int)
{ if(i<NFFT) { data=data*cos(2*PI*freq*i/FE); di.r=data; saya++; } lain i="0"; }
Suara notre fonction utama:
Ini fungsi utama kami:
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; batal *virtual_base; int fd; printf("1\n"); // memetakan ruang alamat untuk register spi ke dalam ruang pengguna sehingga kita dapat berinteraksi dengannya. // kita akan benar-benar memetakan di seluruh rentang CSR HPS karena kita ingin mengakses berbagai register dalam rentang itu if((fd = open("/dev/mem", (O_RDWR | O_SYNC))) == -1) { printf("ERROR: tidak bisa membuka \"/dev/mem\"…\n"); kembali(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() gagal…\n"); tutup (fd); kembali(1); } printf("4\n"); printf("5\n"); h2p_lw_spi_addr = virtual_base + ((unsigned long) (ALT_LWFPGASLVS_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 data; int i= 0, j; // Membuat konfigurasi de la dan buffer di et out tuangkan s(t) et S(f) const kiss_fft_cfg config = kiss_fft_alloc(NFFT, 0, NULL, NULL); kiss_fft_cpx* di = (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) 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, data | 0b111000000000000); } gratis(konfigurasi); gratis (dalam); gratis (keluar); kembali 0; }
Langkah 7: Le Final / Final
Franais:
Eh voila (enfin) le rendu final de notre Kaktus 2000.
Tidak ada jawaban yang salah dari PCB entrée and sortie qui sont reliés la carte DE0 Nano Soc.
Ensuite, 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 tertentu efek, 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 coté de la boîte par rapport au haut-parleur.
C'est tout pour aujourd'hui.
En esperant que cet Dapat diinstruksikan vous soit utile.
Bahasa Inggris:
Di sini kita (akhirnya) rendering akhir dari Cactus 2000 kita.
Kami memasang PCB input dan output yang terhubung ke papan DE0 Nano Soc.
Kemudian, komponennya ditempatkan di dalam kotak kuning.
Pada kotaknya terdapat potensiometer geser, yang dapat mengatur volume suara, kenop dan tombol yang akan meluncurkan beberapa efek, dan layar yang akan menampilkan FFT.
Speaker diposisikan tegak lurus terhadap tombol. Mikrofon diposisikan di sisi lain kotak relatif terhadap speaker.
Itu saja untuk hari ini.
Semoga Instructable ini bermanfaat bagi Anda.
Direkomendasikan:
Kaktus Penunjuk Laser: 3 Langkah
Kaktus Penunjuk Laser: Untuk proyek di sekolah, saya harus membuat sesuatu dengan Arduino, saya ingin membuat sesuatu untuk kucing, yang dapat Anda picu dan akan bermain dengan kucing itu sendiri. Saya pertama kali memikirkan seekor tikus tetapi agak sulit untuk membuat sesuatu yang begitu kecil dengan
Pemanas Induksi 2000 Watt: 9 Langkah (dengan Gambar)
Pemanas Induksi 2000 Watt: Pemanas induksi adalah alat yang hebat untuk memanaskan benda logam yang dapat berguna di ruang kerja DIYers ketika Anda perlu membuat sesuatu menjadi panas tanpa mengacaukan seluruh ruang. Jadi hari ini kita akan membuat induksi yang sangat kuat
Tampilan Cahaya Kaktus: 8 Langkah
Cacti Light Display: Ini adalah tampilan lampu meja dasar yang unik dan artistik. Dengan warna transisi yang dapat disesuaikan dan dasar kayu yang ramping, sistem pencahayaan ini adalah pusat yang fantastis untuk furnitur apa pun. Dengan beberapa langkah sederhana, beberapa alat berat, dan kesabaran dengan
Cara Membuat Regulator Tegangan 2000 Watt: 7 Langkah
Cara Membuat Pengatur Tegangan 2000 Watt : Dimmer - pengatur daya beban elektronik banyak digunakan dalam industri dan kehidupan sehari-hari untuk mengontrol dengan lancar kecepatan putaran motor listrik, kecepatan kipas, elemen pemanas elemen pemanas, intensitas pencahayaan ruangan dengan listrik lam
Pengontrol Kecepatan PWM 2000 Watt DIY: 8 Langkah (dengan Gambar)
Pengontrol Kecepatan PWM 2000 Watt DIY: Saya telah bekerja untuk mengubah sepeda saya menjadi sepeda listrik menggunakan motor DC untuk mekanisme pintu otomatis dan untuk itu saya juga telah membuat paket baterai yang diberi nilai 84v DC. Sekarang kita membutuhkan pengontrol kecepatan yang dapat membatasi jumlah del