İçindekiler:

ATMega1284 Dörtlü Opamp Efekt Kutusu: 4 Adım (Resimlerle)
ATMega1284 Dörtlü Opamp Efekt Kutusu: 4 Adım (Resimlerle)

Video: ATMega1284 Dörtlü Opamp Efekt Kutusu: 4 Adım (Resimlerle)

Video: ATMega1284 Dörtlü Opamp Efekt Kutusu: 4 Adım (Resimlerle)
Video: Atmega8 Running Led Chaser 8 Channel 2024, Temmuz
Anonim
ATMega1284 Dörtlü Opamp Efekt Kutusu
ATMega1284 Dörtlü Opamp Efekt Kutusu

Open Music Labs'den Arduino için Stomp Shield, gitar efekt kutusu olarak bir Arduino Uno ve dört opamp kullanır. Electrosmash Uno Pedalshield'in nasıl taşınacağını gösteren önceki talimata benzer şekilde, Open Music Labs Guitar Effects kutusunu Uno'dan sekiz kat daha fazla RAM'e sahip olan ATMega1284P'ye de taşıdım (16kB'ye karşı 2kB).

ATMega1284 efekt ünitesini kullanan önceki talimatla karşılaştırıldığında, bu kutu aşağıdaki avantajlara sahiptir:

(1) İşlenmemiş sinyali MCU ile işlenmiş sinyalle karıştıran bir karıştırıcıya sahiptir - bu, çıkıştaki sinyalin kalitesinin çok daha iyi olduğu anlamına gelir.

(2) İki PWM çıkışı için 16 bit çıkış işlemi yapar, önceki efekt kutusu ise gecikme efekti gibi bazı örnekler için 8 bit kullanır.

(3) Efektleri geliştirmek için kullanılabilen bir geri besleme potansiyometresine sahiptir - özellikle flanş/fazer etkisi ile yaklaşık yüzde 30 geri besleme, etkinin kalitesine önemli ölçüde katkıda bulunur.

(4) Alçak geçiren filtre frekansı, önceki efekt kutusunun 5 kHz'ine kıyasla 10 kHz'dir - bu, çıkıştaki sinyalin önemli ölçüde "daha net" olduğu anlamına gelir.

(5) Bu efekt kutusu tarafından gösterilen oldukça düşük gürültü seviyesini açıklayabilen farklı bir kesme tetikleyicisi kullanır.

Uno-tabanlı Open Music Labs Stompbox Shield'i ekmek teknesi yaparak başladım ve bu dört OpAmp sinyal işleme devresinin performansından (Arduino Uno kullanırken bile) o kadar etkilendim ki, daha kalıcı kullanım için onu stripboard'a aktardım.

Aynı dört opamp devresi ve DSP kodu daha sonra ATMega1284'e taşındı - yine şaşırtıcı bir şekilde, anahtarların ve LED'in farklı bir bağlantı noktasına atanması ve 1.000 yerine 7.000 kilo-kelime tahsis edilmesi gibi zorunlu olmayan değişiklikler dışında. gecikme arabelleği için RAM'in kilo-kelime'si, kaynak kodunda sadece iki temel değişiklik yapılması gerekiyordu, yani ADC2'den ADC0'a geçmek ve Zamanlayıcı1/PWM OC1A ve OC1B çıkışlarını Uno'daki Port B'den Port D'ye değiştirmek (PD5 ve PD4) ATMega1284'te.

Daha önce belirtildiği gibi, ATMega1284 için geliştirme kartları mevcut olsa da (Github: MCUdude MightyCore), çıplak (önyükleyicisiz) çipi satın almak kolay bir alıştırmadır (bread-board ve strip-board dostu olan PDIP sürümünü satın alın), ardından ISP programcısı olarak bir Uno kullanarak Maniacbug Mighty-1284p Core Optiboot önyükleyicisinin Mark Pendrith çatalını veya MCUdude Mightycore'u yükleyin ve ardından eskizleri Uno aracılığıyla AtMega1284'e tekrar yükleyin. Bu işlem için ayrıntılar ve bağlantılar, önceki talimatın Ek 1'inde verilmiştir.

Adım 1: Parça Listesi

Parça listesi
Parça listesi
Parça listesi
Parça listesi

ATMega1284P (PDIP 40 pinli paket versiyonu) Arduino Uno R3 (Önyükleyiciyi ve çizimleri ATMega1284'e aktarmak için bir ISP olarak kullanılır) OpAmp MCP6004 dörtlü OpAmp (veya benzer RRIO (Railden Raile Giriş ve Çıkış) OpAmp, TLC2274 gibi) 1 x Kırmızı LED 1 x 16 MHz kristal 2 x 27 pF kapasitör 1 x 3n9 kapasitör 1 x 1n2 kapasitör 1 x 820pF kapasitör 2 x 120 pF kapasitör 4 x 100n kapasitör 3 x 10uF 16v elektrolitik kapasitör 4 x 75k direnç 4 x 3k9 direnç 1 x 36k direnç 1 x 24k direnç 2 x 1M direnç 1 x 470 ohm direnç 3 x 1k direnç 2 x 50k Potansiyometre (doğrusal) 1 x 10k Potansiyometre (doğrusal) 3 x buton anahtarı (biri 3 kutuplu 2 ile değiştirilmelidir) Efekt kutusu canlı çalışma için kullanılacaksa yol ayak pedalı)

Adım 2: İnşaat

Yapı
Yapı

Devre 1, kullanılan devreyi gösterir ve Şerit Tahtası 1, Fotoğraf 1'de gerçek breadboard devresi ile birlikte fiziksel temsilidir (Fritzing 1). Üç küçük devre değişikliği yapıldı: Üç OpAmp aşaması için paylaşılan yarım besleme seviyesi opamp önyargısı kullanıldı, 3 x 75k ve 2 x 75k ohm paralel dirençler tekli 24k ve 36k dirençlerle değiştirildi ve geri besleme kapasitörleri artırıldı. Bu iki OpAmp aşaması için 120pF. Döner kontrol, efekt parametrelerini artırmak veya azaltmak için kullanılan iki buton ile değiştirildi. ATMega1284'e üç kablolu bağlantı, devrede pim 40'a ADC, pim 19'dan PWMlow ve pim 18'den PWMhigh olarak gösterilir. Üç basmalı düğme pim 1, 36 ve 35'e bağlanır ve diğer uçta topraklanır. Bir LED, 470 direnç üzerinden pim 2'ye bağlanır.

OpAmp Giriş ve Çıkış Aşamaları: ATMega1284'ün ADC'sine OpAmp çıkışında gereken büyük voltaj dalgalanması nedeniyle bir RRO veya tercihen bir RRIO OpAmp kullanılması önemlidir. Parça listesi bir dizi alternatif OpAmp türü içerir. 50k potansiyometre, giriş kazancını herhangi bir bozulmanın hemen altında bir seviyeye ayarlamak için kullanılır ve ayrıca müzik çalar gibi bir gitar dışındaki bir giriş kaynağı için giriş hassasiyetini ayarlamak için de kullanılabilir. İkinci OpAmp giriş aşaması ve birinci opamp çıkış aşaması, dijital olarak oluşturulan MCU gürültüsünü ses akışından çıkarmak için daha yüksek dereceli bir RC filtresine sahiptir.

ADC Aşaması: ADC, bir zamanlayıcı kesmesi aracılığıyla okumak üzere yapılandırılmıştır. Dahili bir Vcc kaynağı referans voltajı olarak kullanıldığından gürültüyü azaltmak için ATMega1284'ün AREF pimi ile toprak arasına 100nF'lik bir kapasitör bağlanmalıdır - AREF pimini doğrudan +5 volta BAĞLAMAYIN!

DAC PWM Aşaması: ATMega1284'ün kendi DAC'si olmadığından, çıkış ses dalga biçimleri, bir RC filtresinin darbe genişlik modülasyonu kullanılarak oluşturulur. PD4 ve PD5 üzerindeki iki PWM çıkışı, ses çıkışının yüksek ve düşük baytları olarak ayarlanır ve iki dirençle (3k9 ve 1M) 1:256 oranında (düşük bayt ve yüksek bayt) karıştırılır - bu da ses çıkışını oluşturur.

3. Adım: Yazılım

Yazılım, Open Music Labs stompbox pedal çizimlerine dayanmaktadır ve iki örnek, bir flanş/fazer efekti ve bir gecikme efekti dahil edilmiştir. Yine önceki talimatta olduğu gibi, anahtarlar ve LED, ISP programcısı (SCLK, MISO, MOSI ve Reset) tarafından kullanılanlardan uzaktaki diğer bağlantı noktalarına taşınmıştı.

Gecikme arabelleği 1000 word'den 7000 word'e yükseltildi ve PortD, iki PWM sinyali için çıkış olarak ayarlandı. Gecikme tamponundaki artışa rağmen çizim hala mevcut ATMega1284 16 kB RAM'in sadece yaklaşık %75'ini kullanıyor.

PedalSHIELD Uno için Open Music Labs web sitesindeki tremolo gibi diğer örnekler, dahil başlık dosyası Stompshield.h değiştirilerek Mega1284 tarafından kullanılmak üzere uyarlanabilir:

(1) DDRB'yi değiştir |= 0x06; // pwm çıkışlarını (pin 9, 10) çıkışaDDRD'ye ayarlayın |= 0x30;

ve

ADMUX = 0x62; // ADMUX'a referans olarak sol ayar, adc2, dahili vcc = 0x60; // sol ayar, adc0, referans olarak dahili vcc // Bu değişiklikler SADECE temel kod değişiklikleridir // Uno'dan ATMega1284'e geçiş yaparken

Burada yer alan iki örnek için, başlık dosyası çizime dahil edilmiştir - yani hiçbir başlık dosyasının kullanılmasına gerek yoktur.

Bazı çizimlerde bir efekti artırmak veya azaltmak için 1 ve 2 numaralı düğmeler kullanılır. Gecikme örneğinde gecikme süresini artırır veya azaltır. Çizim ilk yüklendiğinde maksimum gecikme etkisi ile başlar. Flanş fazer taslağı için, gelişmiş bir efekt için geri besleme kontrolünü artırmaya çalışın.

Gecikmeyi bir yankı efektine değiştirmek (tekrar ekleyin) satırı değiştirin:

arabellek[konum] = girdi; // yeni örneği sakla

ile

arabellek[konum] = (giriş + arabellek[konum])>>1; // yankı efekti için bunu kullanın

Ayak pedalı üç kutuplu iki yönlü bir anahtar olmalıdır

4. Adım: Bağlantılar

elektroşok

Açık Müzik laboratuvarları Müzik

ATMega Efekt Pedalı

Önerilen: