Daftar Isi:

Kaktus 2000: 7 Langkah
Kaktus 2000: 7 Langkah

Video: Kaktus 2000: 7 Langkah

Video: Kaktus 2000: 7 Langkah
Video: ЗАКРИЧАЛ – ПОТЕРЯЛ ₽200.000 / ТРЭШКЭШ: Тишина 2024, November
Anonim
Kaktus 2000
Kaktus 2000

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

Conception Du Circuit En Entrée / Entrance Circuit Design
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

Conception Du Circuit En Sortie / Desain Sirkuit Output
Conception 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

Konsepsi Des PCB / Desain PCB
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

Périphériques Pour La Carte DE0 Nano Soc / Periferal untuk Kartu Soc Nano DE0
Périphériques Pour La Carte DE0 Nano Soc / Periferal 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

L'écran LT24
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 ++

Kode Util En C++ / Kode Berguna di C ++
Kode Util 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

Le Final / Final
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: