Mundarija:

Kaktus 2000: 7 qadam
Kaktus 2000: 7 qadam

Video: Kaktus 2000: 7 qadam

Video: Kaktus 2000: 7 qadam
Video: 3 odamni birlashtirgan doktor ularning umriga zomin bo`ldi. 2024, Noyabr
Anonim
Kaktus 2000
Kaktus 2000

MIDI-CONTROLEUR EISE4 LOYIHASI

Frantsuz:

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:

  • Bir martalik DE0 Nano Soc
  • Des osiloskoplar, multimètrlar
  • Turli xil turdagi kompozitsiyalar (kuchaytiruvchi, qarshilik, sig'im …)
  • Un micro et un haut-parleur
  • Birozdan keyin

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.

Boshlang'ichni to'kib tashlang, bu sizning xohishingizga javob beradi. O'chirish moslamasi, 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 micro et redonner signalni yuklamang. haut-parleur. Yakunlash, il nous a fallu créer des effets sonores pour le son.

Inglizcha:

Maktabning to'rtinchi yilida biz midi-nazoratchini tushundik. Buning uchun biz ixtiyorimizda edik:

  • DE0 Nano Soc xaritasi
  • Osiloskoplar, multimetrlar
  • Har xil turdagi komponentlar (kuchaytirgich, qarshilik, quvvat …)
  • Mikrofon va karnay
  • Kichkina ekran

Loyihani muvaffaqiyatli amalga oshirish uchun biz har xil xavfli qadamlarni bosib o'tishimiz kerak edi. Sizni ushbu ko'rsatma bilan tanishtiramiz.

Birinchidan, mikrofonning o'g'lini tiklash va karnay qilish uchun zarur bo'lgan asosiy sxemaning dizayni. Tarmoq chizilganidan so'ng, PCB Altium dasturiy ta'minotida bajarilishi kerak edi. Ikkita talaba kirish va chiqish PCBlarini boshqarish bilan band bo'lganida, qolgan ikkitasi DE0 Nano Soc kartasini ishga tushirish uchun ishlaydilar, shunda karta mikrofon namunalarini yig'adi va karnayga signal beradi. Nihoyat, biz ovozni o'zgartirish uchun ovoz effektlarini yaratishga majbur bo'ldik.

1 -qadam: O'chirish sxemasi kontseptsiyasi

Kontseptsiya Du O'chirish Entrée / Kirish davri dizayni
Kontseptsiya Du O'chirish Entrée / Kirish davri dizayni

Frantsuz:

La première étape complete à 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) 5 volt va undan ortiq transformatorlar - 5 V. Le - 5 V servira l'amplificateur que nous verrons ci -dessous.

(2) bir xil, nous avon un amplificateur teskari emas. Aniq formulalar:

Vs = Ve (1 + Z1/Z2)

Qachonki, 101 ta qiymat R1 = 100 kOm va R2 = 1 kOm bo'ladi.

Cet amplificateur va servir kuchaytirgichi le son du micro.

(3) Les deux résistances vont créer un offset of the line of voltaj de sortie soit compitere entre 0 va 4 V.

(4) eng yuqori darajadagi amplifikator.

(5) CAG (Controle Automatique de Gain)

(6) RC ni to'ldiring. L'ordre 2 était nécessaire - 40db / o'n yilgacha. La fréquence de coupure choisit 20 kHz.

Inglizcha:

Birinchi qadam, mikrofonda signalni DE0 Nano Soc kartasiga uzatish uchun qabul qiladigan sxemani o'rnatish. Bizning kirish sxemamiz tepasida.

(1) Inverter 5 voltni qaytaradi va uni 5 V ga aylantiradi. - 5 V kuchaytirgich uchun biz quyida ko'rib chiqamiz.

(2) Bu erda biz teskari bo'lmagan kuchaytirgichga egamiz. Quyidagi formulaga muvofiq:

Vs = Ve (1 + Z1 / Z2)

101 daromad R1 = 100 kOm va R2 = 1 kOm ni o'rnatish orqali tanlandi.

Bu kuchaytirgich mikrofon ovozini kuchaytirish uchun ishlatiladi.

(3) Ikkita rezistent ofset hosil qiladi, shunda chiqish voltaji 0 dan 4 V gacha bo'ladi.

(4) Kuchaytirgich yordamida kuchaytiriladigan mikrofon.

(5) AGC (Avtomatik daromadni boshqarish)

(6) Nihoyat, biz ikkita RCli ikkinchi darajali past o'tkazgichli filtr yaratdik. -40db / o'n yillik susayishi uchun 2 -buyurtma kerak edi. Tanlangan uzilish chastotasi 20 kHz.

2 -qadam: kontseptsiya Du O'chirish tartibi / chiqish sxemasining dizayni

Kontseptsiya - O'chirish davri sxemasi
Kontseptsiya - O'chirish davri sxemasi

Frantsuz:

Vaqt o'tishi bilan, vaqt o'tishi bilan, siz o'zingizni qiziqtirasiz.

Ci-dessus le schéma de notre sortie.

(1) Le DAC (Raqamli va analogli konvertor) signallarni uzatish uchun raqamli signalni taqsimlash orqali signal analogiyasi (nosessor quyiladi)

(2) signalni davom ettirishni davom ettirish.

(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

10 -bet

Mana, 200 soatlik mashina hech qanday signal bermadi.

Inglizcha:

Chiqish diagrammasining tepasida.

(1) DAC (Digital to Analog Converter), bu DE0 Nano Soc kartasi orqali yuborilgan raqamli signalni tiklash va uni analog signalga aylantirish imkonini beradi (karnay uchun zarur).

(2) Imkoniyat signalimizning uzluksiz komponentini uzatish uchun ishlatiladi.

(3) O'rnatish signalimizning kuchini oshiradi. Biz sxemani oldik:

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

10 -bet

Ushbu sxema 200 ga yaqin daromad olish imkonini beradi, chunki bizning signalimiz haqiqatan ham zaif.

3 -qadam: PCB kontseptsiyasi / tenglikni dizayni

PCB kontseptsiyasi / tenglikni dizayni
PCB kontseptsiyasi / tenglikni dizayni

Frantsuz:

O'chirilgan davrlar PCB -ga to'g'ri keladi.

Altium, faire, nous avons utilizer le logiciel quying. Iltimos, quyidagi savollarga javob bering:

Menyu dizayni -> PCB hujjatini yangilash.

"O'zgarishlarni tasdiqlash" bo'limi. Changue changement validé ni to'kib tashlang, "tekshiring".

Après cela, vous aurez un nouvel onglet qui va s'ouvrir va il faudra placer les compants dans cette fenêtre.

Menyu "Fayl" -> "Ishlab chiqarish natijasi" -> "Gerber fayllari" menyusida.

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

  • "Qatlamlar" menyusida siz PCB qatlamlarini tanlashingiz mumkin.
  • "Matkap chizish" menyusida siz décocherdan foydalanishingiz mumkin.
  • "Diafragma" menyusi "O'rnatilgan appertures" dan farq qiladi.

Toute ses étapes sont shikoyat qilyapsizmi?

Revenons maintenant à la fenêtre avec les compompants sur celle-ci vous cliquez sur

Fayl-> Ishlab chiqarish chiqishi -> NC matkap fayllari

Bu, albatta, hech bo'lmaganda reste plus qu'à donner va l'imprimante 3D les fichiers.

VC trouverez ci-joint les PCB de nos deux fotosuratlari.

Inglizcha:

Bizning davrlarimiz ishga tushirilgach, biz ularni PCB -larga qo'yishimiz kerak edi.

Buning uchun biz Altium dasturidan foydalanamiz. Hammasi to'g'ri ulangan bo'lishi kerak, keyin bosing:

Menyu dizayni -> PCB hujjatini yangilash.

Keyin "O'zgarishlarni tasdiqlash" ni bosing. Har bir tasdiqlangan o'zgarish uchun "Tekshirish" ustunida yashil belgi paydo bo'ladi.

Shundan so'ng, sizda yangi yorliq ochiladi va siz komponentlarni ushbu oynaga joylashtirishingiz kerak bo'ladi.

Keyin "Fayl" -> "Chiqish chiqishi" -> "Gerber fayllari" menyusiga o'tishingiz kerak

Oyna ochiladi, unda siz topasiz;

"Qatlamlar" menyusi sizga qaysi qatlamlarni tenglikni qo'llab -quvvatlashini tanlash imkonini beradi. "Matkap chizish" menyusi, bu erda hamma narsani belgilash kerak. "O'rnatilgan teshiklar" menyusida siz "O'rnatilgan qo'shimchalar" ni belgilashingiz kerak.

Uning barcha qadamlari tugadimi?

Keling, siz bosgan komponentlar bilan oynaga qaytaylik

Fayl-> Ishlab chiqarish natijasi -> NC matkap fayllari

Nihoyat tugadi, siz 3D printerga fayllarni berishingiz kifoya.

Siz ikkita PCB -ning fotosuratlarini biriktirilgan holda topasiz.

4 -qadam: Périphériques DE0 Nano Soc Card uchun La Carte DE0 Nano Soc / Periferiyalarini to'kib tashlang

Périphériques DE0 Nano Soc Card uchun La Carte DE0 Nano Soc / Periferiyalarini to'kib tashlang
Périphériques DE0 Nano Soc Card uchun La Carte DE0 Nano Soc / Periferiyalarini to'kib tashlang

Francais:

O'qish IP -ni optimallashtirishga yordam beradi, bu Intel FPGA va peuvent étre implémentés test va kontseptsiya uchun javob beradi.

Grâce au logiciel Qsys nous avons pu créer des périphériques embarqués dans notre carte.

Veb -saytlar ro'yxati des périphériques:

  • DAC bilan aloqa SPI
  • ADC to'lg'azish vositasi raqamli signallarni uzatishga imkon beradi.
  • HPS (processeur) to'kib tashlang les kodlar
  • GPIO quyi vont servir à exécuter sertifikatlarini beradi
  • Mémoire (chip xotirasida)

Inglizcha:

IP yadrolari Intel FPGA qurilmalari uchun optimallashtirilgan bo'lib, dizayn va sinov vaqtini qisqartirish oson.

Qsys dasturi tufayli biz xaritamizga o'rnatilgan tashqi qurilmalarni yaratishga muvaffaq bo'ldik. Mana biz qo'shgan qurilmalar ro'yxati:

  • DAC uchun SPI aloqasi
  • ADC bizning signalimizdan analog qiymatlarni olish va ularni raqamli ma'lumotlarga aylantirish uchun
  • Barcha kodlarni boshqarish uchun HPS (protsessor)
  • Muayyan effektlarni engish uchun ishlatiladigan tugmalar uchun GPIO
  • Xotira (chip xotirasida)

5 -qadam: L'écran LT24

L'écran LT24
L'écran LT24

Frantsuz:

LT24, NIOS protsessorlari bilan bir qatorda, LT24-ni o'z ichiga oladi.

Hujjatlarni rasmiylashtiring, shundan keyingina ularni to'ldiring.

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

Inglizcha:

Biz LT24 ekranini tushunishimiz va boshqarishimiz kerak edi, u simulyatsiya qilingan NIOS protsessori yordamida boshqariladi. Buni boshlash uchun biz bu haqda ko'plab hujjatlarni o'qiymiz.

Oxir -oqibat, bizning ekranimiz FFTni kerakli effektga chiqarish uchun ishlatiladi.

6 -qadam: En C ++ kodlarini ishlatadi / C ++ da foydali kodlar

Kodlar U C ++ dan foydalanadi / C ++ da foydali kodlar
Kodlar U C ++ dan foydalanadi / C ++ da foydali kodlar

Bu kodlarni C ++ da ishlatishga yordam beradi.

Voici d'abord toutes nos déclarations (oui un peu wasteif …):

Men sizga C ++ da ovoz effektlarini yaratishda foydali bo'lgan kodlarni ko'rsataman.

Birinchidan, bizning barcha bayonotlarimiz (ha biroz to'liq …):

#qo'shing

#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" #debine nbpoint 1000 #define HW_REGS_BASE (ALT_STM_OFST) #dewine HW_REGS00_00 (0x0) HW_REGS_SPAN - 1) #define PI 3.1415926535 #define NFFT 80 #define FE 41000 #define F2 10000 #define F1 5925 #define PH 5000 #debine PB 15000 #define MOD 2000 nomlar maydoni yordamida; const long SAMPLE_RATE = 12500000; // Konfiguratsiya va buferlarni ajratish s (t) va 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; qisqa ma'lumotlar, ma'lumotlar2;

Modulyatsiyani amalga oshirish uchun zarur bo'lmagan funktsiyalar:

Quyida modulyatsiyaga ruxsat beruvchi bizning funktsiyalarimizdan biri:

bo'sh modulyatsiya (int freq)

{if (i <NFFT) {data = data*cos (2*PI*freq*i/FE); da.r = ma'lumotlar; i ++; } boshqa i = "0"; }

Voici notre fonction asosiy:

Bu bizning asosiy vazifamiz:

int main (int argc, char ** argv)

{o'zgaruvchan imzosiz uzun *h2p_lw_spi_addr = NULL; o'zgaruvchan belgisiz uzun *h2p_lw_led_addr = NULL; o'zgaruvchan belgisiz uzun *h2p_lw_adc_addr = NULL; o'zgaruvchan belgisiz uzun *h2p_lw_blue_addr = NULL; uchuvchi belgisiz uzun *h2p_lw_red_addr = NULL; o'zgaruvchan belgisiz uzun *h2p_lw_black_addr = NULL; void *virtual_base; int fd; printf ("1 / n"); // spi registrlari uchun manzil maydonini foydalanuvchi maydoniga xaritaga kiriting, shunda biz ular bilan muloqot qila olamiz. // biz haqiqatan ham GESning butun KHS oralig'ida xaritani tuzamiz, chunki biz bu vaqt ichida turli registrlarga kirishni xohlaymiz, agar ((fd = open ("/dev/mem", (O_RDWR | O_SYNC)) == -1) {printf ("XATO: \"/dev/mem / "… / n" ochilmadi); qaytish (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 () bajarilmadi… / n"); yopish (fd); qaytish (1); } printf ("4 / n"); printf ("5 / n"); h2p_lw_spi_addr = virtual_base + ((imzosiz uzun) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (imzosiz uzun) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((imzosiz uzun) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (imzosiz uzun) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((imzosiz uzun) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (imzosiz uzun) (HW_REGS_MASK)); h2p_lw_blue_addr = virtual_base + ((imzosiz uzun) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) va (imzosiz uzun) (HW_REGS_MASK)); h2p_lw_black_addr = virtual_base + ((imzosiz uzun) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (imzosiz uzun) (HW_REGS_MASK)); h2p_lw_red_addr = virtual_base + ((imzosiz uzun) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (imzosiz uzun) (HW_REGS_MASK)); // int i = 0; int ma'lumotlari; int i = 0, j; // Konfiguratsiya va buferlarni ajratish s (t) va 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); agar (*h2p_lw_blue_addr == 1) ma'lumotlar = echo (ma'lumotlar, 20); agar (*h2p_lw_black_addr == 1) alt_write_word (h2p_lw_led_addr, 0x0F); agar (*h2p_lw_red_addr == 0) alt_write_word (h2p_lw_led_addr, 0xF0); alt_write_word (h2p_lw_spi_addr+1, ma'lumotlar | 0b111000000000000); } bepul (konfiguratsiya); bepul (ichida); bepul (tashqarida); qaytarish 0; }

7 -qadam: Le Final / Final

Le Final / Final
Le Final / Final

Frantsuz:

Kaktus 2000 ning so'nggi versiyasi.

Qisqa vaqt ichida, PCB -dan foydalanish oson emas, alakart DE0 Nano Soc.

Ensuite, ses kompozitorlar sont placés à l'interieur d'une boite jaune.

Muvaffaqiyatli bo'lishi mumkin, bu juda katta hajmga ega, siz potentsiomètres va des boutons qui permettrons de lancer sertifikatlarga ega bo'lasiz.

Aloqa tugmachalari bir-biridan farq qiladi. Ma'lumotlar almashinuvi yoki joylashuvi haqida ma'lumot beradi.

C'est tout pour aujourd'hui.

O'qish mumkin bo'lmagan narsalar.

Inglizcha:

Mana, biz (nihoyat) Cactus 2000 -ning so'nggi ko'rsatuvisiz.

Biz DE0 Nano Soc kartasiga ulangan kirish va chiqish PCBlarini joylashtiramiz.

Keyin uning tarkibiy qismlari sariq qutiga joylashtiriladi.

Qutida potentsiometr slayd bor, u ovoz balandligini boshqarishi mumkin, ba'zi effektlarni ishga tushiradigan tugmalar va tugmalar va FFT ko'rsatiladigan ekran.

Karnay tugmalarga perpendikulyar joylashtirilgan. Mikrofon qutining boshqa tomonida karnayga nisbatan joylashtirilgan.

Bugun hammasi shu.

Ushbu ko'rsatma siz uchun foydali bo'ladi deb umid qilaman.

Tavsiya: