İçindekiler:

Kaktüs 2000: 7 Adım
Kaktüs 2000: 7 Adım

Video: Kaktüs 2000: 7 Adım

Video: Kaktüs 2000: 7 Adım
Video: bu kaç annecim? 2024, Temmuz
Anonim
kaktüs 2000
kaktüs 2000

PROJE MIDI-KONTROLÖR EISE4

Fransızca:

En iyi dört dörtlük, birincil, yeni ve orta düzeyde denetim. ce faire, nous avions à notre düzenlemesi dökün:

  • Ücretsiz DE0 Nano Soc
  • Des osiloskoplar, des multimetreler
  • Des composants de différents türleri (amplificateur, rezistans, capacité…)
  • Un micro et un haut-parleur
  • Un petit ecran

İllegal bir yoldan geçenler için farklı şeyler. Nous allons vous les présenter dans cet Instructable.

Başlatıcıyı, temel devreyi temel alın, en iyi sonucu alın. Altium'dan bağımsız bir devre tasarımcısı, PCB'nin tüm özelliklerini içerir. Sarkıt, ikinci el, işlerin başında, her zaman PCB'de, iş başında ve iş başında, iş başında DE0 Nano Donanımda, her şeyin en başında, sinyalsiz mikro ve kırmızı renkte haut-parleur. Finallement, sonores pour modifier le son.

İngilizce:

Okulumuzun dördüncü yılında bir midi-kontrolör gerçekleştirdik. Bunu yapmak için elimizde şunlar vardı:

  • Bir harita DE0 Nano Soc
  • Osiloskoplar, multimetreler
  • Farklı tipteki bileşenler (amplifikatör, direnç, kapasite…)
  • Bir mikrofon ve bir hoparlör
  • küçük bir ekran

Projeyi başarılı kılmak için çeşitli tehlikeli adımlardan geçmemiz gerekti. Sizi bu Eğitilebilir Tablo ile tanıştıracağız.

İlk olarak, mikrofonun oğlunu kurtarmak ve hoparlörü yapmak için gereken temel devrenin tasarımı. Devre çizildiğinde, PCB Altium yazılımında yapılacaktı. İki öğrenci giriş ve çıkış PCB'lerini yönetmekle meşgulken, diğer ikisi DE0 Nano Soc kartını çalıştırmaya çalışıyordu, böylece kart mikrofon örneklerini alıp hoparlöre bir sinyal verebilirdi. Son olarak, sesi değiştirmek için ses efektleri oluşturmamız gerekti.

Adım 1: Conception Du Circuit En Entrée / Giriş Devre Tasarımı

Conception Du Circuit En Entrée / Giriş Devre Tasarımı
Conception Du Circuit En Entrée / Giriş Devre Tasarımı

Fransızca:

İlk etapta, en iyi yerde, en iyi sinyal elçisi için en uygun mikro akışla transmetre alakart DE0 Nano Soc.

Ci-dessus le şema de notre entrée.

(1) L'inverseur va permettre de récupérer le 5 Volt ve t le transformatör tr - 5 V. Le - 5 V servira dökme l'amplificateur que nous verrons ci-dessous.

(2) Ici, nous avons un amplificateur non-inverseur. D'après la formül suivante:

Vs = Ve(1 + Z1/Z2)

101 en mettant R1 = 100 kOhm ve R2 = 1 kOhm olan bir seçimde.

Amplificateur va servir bir amplifikatör le son du micro.

(3) Les deux résistances vont créer un offset afin que la gerilim de sortie soit entrre 0 ve 4 V'den oluşur.

(4) En iyi amplifikatör par l'amplificateur.

(5) CAG (Controle Automatique de Gain)

(6) Finir, nous avons créé un filtre passe-bas du ikinci ordre avec deux RC dökün. L'ordre 2 était nécessaire, avoir une atténuation de - 40db / on yıl dökün. 20 kHz'lik frekans seçimi.

İngilizce:

İlk adım, mikrofona gönderilen sinyali DE0 Nano Soc kartına iletmek için alabilen bir devre kurmaktır. Girişimizin diyagramının üstünde.

(1) İnverter, 5 Volt'u geri kazanacak ve - 5 V'a dönüştürecektir. - 5 V, aşağıda göreceğimiz amplifikatör için hizmet edecektir.

(2) Burada ters çevirmeyen bir amplifikatörümüz var. Aşağıdaki formüle göre:

Vs = Ve (1 + Z1 / Z2)

R1 = 100 kOhm ve R2 = 1 kOhm ayarlanarak 101'lik bir kazanç seçilmiştir.

Bu amplifikatör, mikrofonun sesini yükseltmek için kullanılacaktır.

(3) İki direnç, çıkış voltajının 0 ile 4 V arasında olması için bir ofset oluşturacaktır.

(4) Amplifikatör tarafından güçlendirilecek olan mikrofon.

(5) AGC (Otomatik Kazanç Kontrolü)

(6) Son olarak, iki RC'li ikinci dereceden bir alçak geçiren filtre oluşturduk. -40db / onluk bir zayıflamaya sahip olmak için 2. sıraya ihtiyaç vardı. Seçilen kesme frekansı 20 kHz'dir.

Adım 2: Devrenin Tasarlanması/Çıkış Devresinin Tasarımı

Conception Du Circuit En Sortie / Çıkış Devresinin Tasarımı
Conception Du Circuit En Sortie / Çıkış Devresinin Tasarımı

Fransızca:

Saniyeler ve saniyeler içinde, nous avons penser à la création du Circuit en sortie.

Ci-dessus le şema de notre sortie.

(1) Le DAC (Dijital-Analog Dönüştürücü) sinyal analoğunun eş zamanlı olarak eşleştirilmesi DE0 Nano Soc et le dönüştürücü en sinyal analoğu (nécessaire pour le haut parleur)

(2) La capacité va servir bir virer la composante devam de notre sinyali.

(3) Amplifier la puissance de notre sinyalinin montajı. Nous avons ilk kez şema:

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

sayfa 10

200 en sessiz nécessaire araba notre sinyal tahmini olası mümkün değil.

İngilizce:

Çıktımızın diyagramının üstünde.

(1) DE0 Nano Soc kartı tarafından gönderilen dijital sinyali kurtarmaya ve onu bir analog sinyale dönüştürmeye izin verecek (hoparlör için gerekli) DAC (Dijitalden Analoga Dönüştürücü).

(2) Kapasite, sinyalimizin sürekli bileşenini aktarmak için kullanılacaktır.

(3) Sinyalimizin gücünü artıracak montaj. Planı aldık:

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

sayfa 10

Bu şema, sinyalimiz gerçekten zayıf olduğu için gerekli olan 200'lük bir kazancı mümkün kılar.

Adım 3: PCB Konsepti / PCB Tasarımı

PCB Konsept Tasarımı / PCB Tasarımı
PCB Konsept Tasarımı / PCB Tasarımı

Fransızca:

PCB'deki en iyi örnek devreler.

ce faire, nous avons utiliser le logiciel Altium'u dökün. Il faut que tout soit düzeltme bağlayıcı puis cliquer sur:

Menü Tasarımı -> PCB Belgesini Güncelle.

Ensuite, cliquez sur «Validate Changes». Chaque changement validé, un kroşe vert apparaît dans la Colonne: «Kontrol».

Yılbaşından sonra, yeni bir romandan çok daha fazlası, en iyi geceler ve daha fazlası.

Menü "Dosya" -> "İmalat Çıktısı" -> "Gerber Dosyaları"

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

  • "Katmanlar" menüsü, PCB'nin en önemli katmanlarından biridir.
  • Le menu "Matkap Çizimi", her şeyden önce.
  • Menü "Diyaframlar" ve "Gömülü açıklıklar".

Toute ses étapes sont complétées ?

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

Dosya-> Üretim Çıktısı -> NC Matkap Dosyaları

En son bitim, yeniden başlama artı qu'à donner à l'imprimante 3D les fichiers.

Vous trouverez ci-joint les fotoğrafları de nos deux PCB.

İngilizce:

Devrelerimiz başlatıldıktan sonra onları PCB'lere koymak zorunda kaldık.

Bunu yapmak için Altium yazılımını kullanıyoruz. Her şey doğru şekilde bağlanmalı ve ardından üzerine tıklayın:

Menü Tasarımı -> PCB Belgesini Güncelle.

Ardından "Değişiklikleri Doğrula" yı tıklayın. Doğrulanan her değişiklik için "Kontrol Et" sütununda yeşil bir onay işareti görünür.

Bundan sonra karşınıza yeni bir sekme açılacak ve bu pencereye bileşenleri yerleştirmeniz gerekecek.

Ardından "Dosya" -> "Çıktı Çıktısı" -> "Gerber Dosyaları" menüsüne gitmeniz gerekir.

Bir pencere açılır, bu pencerede bulacaksınız;

Hangi katmanların PCB'nizi destekleyeceğini seçmenize izin verecek "Katmanlar" menüsü. Her şeyin işaretlenmemesi gereken "Matkap Çizimi" menüsü. "Gömülü açıklıklar"ı işaretlemeniz gereken "Apertürler" menüsü.

Tüm adımları tamamlandı mı?

Şimdi bu pencerede tıkladığınız bileşenlerin bulunduğu pencereye dönelim.

Dosya-> Üretim Çıktısı -> NC Matkap Dosyaları

Sonunda bitti, tek yapmanız gereken dosyaları 3D yazıcıya vermek.

Ekli iki PCB'mizin fotoğraflarını bulacaksınız.

Adım 4: Périphériques Pour La Carte DE0 Nano Soc / DE0 Nano Soc Kartı için Çevre Birimleri

Périphériques Pour La Carte DE0 Nano Soc / DE0 Nano Soc Kartı için Çevre Birimleri
Périphériques Pour La Carte DE0 Nano Soc / DE0 Nano Soc Kartı için Çevre Birimleri

Fransızca:

Les cœurs IP sont optimizasyonları, les périphériques Intel FPGA ve peuvent être uygulamaları, anlayışı ve temps de testini dökün.

Mantıklı değil 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:

  • İletişim SPI dökme DAC
  • ADC, paranın karşılığını alamıyor, analog de notre sinyali ve les convertir en donnée digitales
  • HPS (işlemci) gerer tout les kodlarını dökün
  • GPIO, uygulayıcıların kesin olarak etkisini artırıyor
  • Mémoire (çip bellekte)

İngilizce:

IP çekirdekleri Intel FPGA cihazları için optimize edilmiştir ve tasarım ve test süresini azaltmak için kolayca uygulanabilir.

Qsys yazılımı sayesinde haritamızda gömülü çevre birimleri oluşturabildik. Eklediğimiz cihazın listesi:

  • DAC için SPI iletişimi
  • ADC, sinyalimizden analog değerleri almak ve bunları dijital verilere dönüştürmek için
  • Tüm kodları yönetmek için HPS (işlemci)
  • Belirli efektlerle başa çıkmak için kullanılacak düğmeler için GPIO
  • Bellek (çipin belleğinde)

Adım 5: L'écran LT24

L'écran LT24
L'écran LT24

Fransızca:

Il nous a fallu comprendre et gérer l'écran LT24 celui-ci sera rehberi par un prosesör simulé NIOS.

l'initalizer, nous avons lu beaucoup de Documents sur celui-ci'yi dökün.

Au nihai, notre écran sert à FFT à afficher la FFT, à seleksiyoner l'effet voulu.

İngilizce:

Simüle edilmiş bir NIOS işlemci tarafından yönlendirilecek olan LT24 ekranını anlamamız ve yönetmemiz gerekiyordu. Başlamak için, onunla ilgili birçok belge okuduk.

Sonunda, ekranımız FFT'yi istenen etkiye göre görüntülemek için kullanılır.

Adım 6: Codes Utiles En C++ / Faydalı Kodlar C++'da

Codes Utiles En C++ / C++'da Faydalı Kodlar
Codes Utiles En C++ / C++'da Faydalı Kodlar

C++'ın temel kullanımları için en iyi montrer les kodları.

Voici d'abord, nos bildirimlerini (oui un peu egzoz…):

Ses efektleri oluşturmamızda işimize yarayan C++ kodlarını size göstereceğim.

İlk olarak, tüm ifadelerimiz (evet biraz ayrıntılı…):

#Dahil etmek

#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 (0x04000000_) #define 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 std ad alanını kullanarak; const uzun SAMPLE_RATE = 12500000; // Yapılandırma de la konfigürasyon ve des arabellekleri 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 küresel = 0; int ben = 0; kısa veri, veri2;

Kalıcı modülasyon:

Modülasyona izin veren fonksiyonlarımızdan birinin altında:

boşluk modülasyonu (int frekans)

{ if(i<NFFT) { veri=veri*cos(2*PI*freq*i/FE); in.r=veri; ben++; } başka i="0"; }

Voici notre işlevi ana:

Bunlar ana işlevimiz:

int ana(int argc, karakter **argv)

{ uçucu imzasız uzun *h2p_lw_spi_addr=NULL; uçucu işaretsiz uzun *h2p_lw_led_addr=NULL; uçucu işaretsiz uzun *h2p_lw_adc_addr=NULL; uçucu işaretsiz uzun *h2p_lw_blue_addr=NULL; uçucu işaretsiz uzun *h2p_lw_red_addr=NULL; uçucu işaretsiz uzun *h2p_lw_black_addr=NULL; geçersiz *virtual_base; int fd; printf("1\n"); // onlarla etkileşime geçebilmemiz için spi kayıtları için adres alanını kullanıcı alanına eşle. // bu aralıktaki çeşitli kayıtlara erişmek istediğimizden, aslında HPS'nin tüm CSR aralığını eşleyeceğiz if((fd = open("/dev/mem", (O_RDWR | O_SYNC))) == -1) { printf("HATA: açılamadı \"/dev/mem\"…\n"); dö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("HATA: mmap() başarısız oldu…\n"); kapat(fd); dönüş(1); } printf("4\n"); printf("5\n"); h2p_lw_spi_addr = virtual_base + ((işaretsiz uzun) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (işaretsiz uzun) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((imzasız uzun) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (imzasız uzun) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((işaretsiz uzun) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (işaretsiz uzun) (HW_REGS_MASK)); h2p_lw_blue_addr= virtual_base + ((imzasız uzun) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (imzasız uzun) (HW_REGS_MASK)); h2p_lw_black_addr= virtual_base + ((imzasız uzun) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (imzasız uzun) (HW_REGS_MASK)); h2p_lw_red_addr= virtual_base + ((imzasız uzun) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (imzasız uzun) (HW_REGS_MASK)); //int i=0; int verileri; int i= 0, j; // Yapılandırma de la konfigürasyon ve des arabellekleri 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)); while(1){ veri = *(h2p_lw_adc_addr+2); if(*h2p_lw_blue_addr == 1) veri = echo(veri, 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, veri | 0b111000000000000); } ücretsiz(yapılandırma); ücretsiz(in); serbest çıkış); 0 döndür; }

Adım 7: Le Final / Final

Final / Final
Final / Final

Fransızca:

Eh voilà (enfin) le redu son de notre Cactus 2000.

Alakart DE0 Nano Soc.

Ensuite, ses bileşenleri, jaune'deki son yerler.

En iyi ihtimalle, en güçlü ve en iyi sonuçların en önemlileri.

Le haut-parleur est positionné perpendiculairement par rapport aux boutons. En iyi konuma sahip olma durumu.

C'est aujourd'hui dökün.

En esperant que cet Eğitilebilir vous soit utile.

İngilizce:

İşte (nihayet) Cactus 2000'imizin son hali.

DE0 Nano Soc kartına bağlı olan giriş ve çıkış PCB'lerini yerleştiriyoruz.

Daha sonra bileşenleri sarı bir kutunun içine yerleştirilir.

Kutunun üzerinde, sesin seviyesini yönetebilen bir kaydırmalı potansiyometre, bazı efektleri başlatacak düğmeler ve düğmeler ve FFT'yi gösterecek bir ekran var.

Hoparlör, düğmelere dik olarak konumlandırılmıştır. Mikrofon, hoparlöre göre kutunun diğer tarafına yerleştirilmiştir.

Hepsi bugün için.

Bu Eğitilebilirliğin sizin için yararlı olduğunu umuyoruz.

Önerilen: