İçindekiler:

ATMega1284P Gitar ve Müzik Efekt Pedalı: 6 Adım (Resimli)
ATMega1284P Gitar ve Müzik Efekt Pedalı: 6 Adım (Resimli)

Video: ATMega1284P Gitar ve Müzik Efekt Pedalı: 6 Adım (Resimli)

Video: ATMega1284P Gitar ve Müzik Efekt Pedalı: 6 Adım (Resimli)
Video: Automatic Guitar Tuner - ATMega 1284P 2024, Kasım
Anonim
ATMega1284P Gitar ve Müzik Efekt Pedalı
ATMega1284P Gitar ve Müzik Efekt Pedalı

Arduino Uno ATMega328 Pedalshield'ı (Electrosmash tarafından geliştirilen ve kısmen Open Music Lab'deki çalışmaya dayalı olarak) Uno'dan sekiz kat daha fazla RAM'e sahip olan ATMega1284P'ye taşıdım (16kB'ye karşı 2kB). Beklenmeyen ek bir fayda, Mega1284 yapısının çok daha düşük gürültü bileşenine sahip olmasıdır - Uno ve Mega1284'ü aynı destek devresini kullanarak karşılaştırdığımda Uno'yu "gürültülü" ve Mega1284'ü "olarak tanımlamak mantıksız değil. sessizlik". Daha büyük RAM, çok daha uzun bir gecikme etkisinin elde edilebileceği anlamına gelir - ve bu, eklediğim Arduino çizim örneği tarafından gösterilmiştir. ATMega1284'te Tremelo efektini kullanırken arka plandaki solunum sesi de (neredeyse) yoktur.

Üç Atmel AVR mikroişlemcisinin karşılaştırılması, yani Uno olan 328P, Mega2560 olan 2560P ve Mega1284, ikincisinin üçünün en fazla RAM'ine sahip olduğunu gösterir:

Aspect 328P 1284P 2560P RAM 2k 16k 8k Flash 32k 128k 256k EEPROM 1k 4k 4k UART 1 2 4 IO Pinleri 23 32 86 Kesintiler 2 3 8 Analog Giriş 6 8 16

Elektrosmash spesifikasyonunda olduğu gibi Uno tabanlı pedalSHIELD'ı ekmek tahtasına binerek başladım, ancak belirtildiği gibi aynı RRO OpAmp'a sahip değildim. Sonuç olarak kabul edilebilir sonuçlar verdiğini düşündüğüm bir devre elde ettim. Bu Uno versiyonunun detayları Ek 2'de verilmiştir.

Aynı devre daha sonra ATMega1284'e taşındı - şaşırtıcı bir şekilde, anahtarların ve LED'in farklı bir bağlantı noktasına atanması ve gecikme arabelleği için 2.000 kB RAM yerine 12.000 kB tahsis edilmesi gibi zorunlu olmayan değişiklikler dışında, yalnızca Kaynak kodunda önemli bir değişiklik yapılması gerekiyordu, yani, Timer1/PWM OC1A ve OC1B çıkışlarını Uno'daki Port B'den ATMega1284'teki Port D'ye (PD5 ve PD4) değiştirmek.

Daha sonra, Paul Gallagher tarafından elektroşok devresinde yapılan mükemmel modifikasyonları keşfettim ve testten sonra, burada sunacağım devre bu - ama daha sonra modifikasyonlarla birlikte: OpAmp olarak Texas Instruments TLC2272 kullanarak Uno'nun Mega1284 ile değiştirilmesi ve Mega1284'ün mükemmel gürültü performansı sayesinde, düşük geçişli filtre frekans seviyesini de yükseltebildim.

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 olan PDIP sürümünü satın alın). Dostu), 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 süreçle ilgili ayrıntılar ve bağlantılar Ek 1'de verilmiştir.

Daha fazla bilgi edinilebilecek en önemli üç kaynağa teşekkür etmek istiyorum ve web sitelerine ve bu makalenin sonuna bağlantılar vereceğim: Electrosmash, Open Music Labs ve Tardate/Paul Gallagher

Adım 1: 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 TLC2272 (veya MCP6002, LMC6482, TL972 gibi benzer RRIO (Raydan Raydan Giriş ve Çıkış) OpAmp) Kırmızı LED 16 MHz kristal 2 x 27 pF kapasitör 5 x 6n8 kapasitör 270 pF kapasitör 4 x 100n kapasitör 2 x 10uF 16v elektrolitik kapasitör 6 x 4k7 direnç 100k direnç 2 x 1M direnç 470 ohm direnç 1M2 direnç 100k Potansiyometre 3 x buton anahtarı (bir efekt kutusu canlı çalışma için kullanılacaksa, 3 kutuplu 2 yollu ayak pedalı ile değiştirilmelidir)

Adım 2: İnşaat

Yapı
Yapı
Yapı
Yapı
Yapı
Yapı

Şematik 1, kullanılan devreyi verir ve Breadboard 1, Fotoğraf 1'de gerçek breadboard devresi ile fiziksel temsilidir (Fritzing 1). Kuru (girişe eşit) ve ıslak (MCU tarafından işlendikten sonra) sinyal için bir karıştırıcı olarak bir potansiyometreye sahip olmak avantajlı olabilir ve Şema 2, Breadboard 2 ve Fotoğraf 2 (Ek 2'de listelenmiştir), Böyle bir girişten çıkışa mikser içeren önceden oluşturulmuş bir devrenin devre detayları. Ayrıca dört OpAmp kullanan başka bir mikser uygulaması için Open Music Labs StompBox'a bakın.

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. 100k potansiyometre, giriş kazancını herhangi bir bozulmanın hemen altındaki 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. 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, tüm zaman boyunca bir kesme yoluyla 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ğlanması gerektiğini unutmayın - 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 (4k7 ve 1M2) 1:256 oranında (düşük bayt ve yüksek bayt) karıştırılır - bu da ses çıkışını oluşturur. Open Music Labs tarafından StompBox'larında kullanılan 3k9 1M ohm çifti gibi diğer direnç çiftleriyle deneme yapmak faydalı olabilir.

3. Adım: Yazılım

Yazılım, elektrosmash çizimlerine dayanmaktadır ve dahil edilen örnek (pedalshield1284delay.ino), Uno gecikme çizimlerinden uyarlanmıştır. Anahtarların ve LED'lerin bazıları, ISP programcısı tarafından kullanılanlardan (SCLK, MISO, MOSI ve Reset) uzaktaki diğer bağlantı noktalarına taşınmıştı, gecikme arabelleği 2000 bayttan 12000 bayta yükseltildi ve PortD olarak ayarlandı. iki PWM sinyali için çıkış. Gecikme arabelleğindeki artışa rağmen, çizim hala mevcut 1284 RAM'in sadece yaklaşık %70'ini kullanıyor.

PedalSHIELD Uno için electrosmash web sitesindeki oktav veya tremolo gibi diğer örnekler, koddaki üç bölüm değiştirilerek Mega1284 tarafından kullanılmak üzere uyarlanabilir:

(1) DDRB'yi Değiştir |= ((PWM_QTY << 1) | 0x02); DDRD'ye |= 0x30;// Yukarıdaki değişiklik, AtMega328'den ATMega1284'e geçiş yaparken TEK gerekli kod değişikliğidir //

(2) Değiştir #define LED 13 #define FOOTSWITCH 12 #define TOGGLE 2 #define PUSHBUTTON_1 A5 #define PUSHBUTTON_2 A4

ile

#define LED PB0 #define FOOTSWITCH PB1 #define PUSHBUTTON_1 A5 #define PUSHBUTTON_2 A4

(3) pinMode'u değiştirin(FOOTSWITCH, INPUT_PULLUP); pinMode(TOGGLE, INPUT_PULLUP); pinMode(PUSHBUTTON_1, INPUT_PULLUP); pinMode(PUSHBUTTON_2, INPUT_PULLUP); pinMode(LED, ÇIKIŞ)

ile

pinMode(FOOTSWITCH, INPUT_PULLUP); pinMode(PUSHBUTTON_1, INPUT_PULLUP); pinMode(PUSHBUTTON_2, INPUT_PULLUP); pinMode(LED, ÇIKIŞ);

1 ve 2 düğmeleri, bazı çizimlerde bir efekti artırmak veya azaltmak için 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. aşağı düğmesine basın - gecikme konumuna kadar geri saymak yaklaşık 20 saniye sürer - ve ardından yukarı düğmesini basılı tutun. Düğmeyi basılı tutmanın süpürme etkisinin bir fazer, koro ve flanş etkisine nasıl değiştirdiğini ve düğme bırakıldığında gecikmeyi dinleyin.

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

DelayBuffer[DelayCounter] = ADC_high;

ile

DelayBuffer[DelayCounter] = (ADC_high + (DelayBuffer[DelayCounter]))>>1;

Ayak pedalı üç kutuplu iki yollu bir anahtar olmalı ve elektrosmash web sitesinde açıklandığı gibi bağlanmalıdır.

4. Adım: Bağlantılar

Bağlantılar
Bağlantılar

(1) Elektroşok:

(2) Açık Müzik Laboratuvarları:

(3) Paul Gallagher:

(4) 1284 Önyükleyici:

(5) ATmega1284 8bit AVR Mikrodenetleyici:

ElectrosmashOpenlabs MusicPaul Gallagher1284 Bootloader 11284 Bootloader 2ATmega1284 8bit AVR Mikrodenetleyici

Adım 5: Ek 1 ATMega1284P'nin Programlanması

Ek 1 ATMega1284P'nin Programlanması
Ek 1 ATMega1284P'nin Programlanması
Ek 1 ATMega1284P'nin Programlanması
Ek 1 ATMega1284P'nin Programlanması
Ek 1 ATMega1284P'nin Programlanması
Ek 1 ATMega1284P'nin Programlanması

Çıplak ATMega1284 çipinin Arduino IDE ile kullanım için nasıl programlanacağına dair iyi bir açıklama veren birkaç web sitesi var. İşlem esas olarak şu şekildedir: (1) Maniacbug Mighty-1284p Core Optiboot önyükleyicisinin Mark Pendrith çatalını Arduino IDE'ye kurun. (2) ATMega1284'ü minimum konfigürasyonu olan 16 MHz kristal, kristalin iki ucunu topraklayan 2 x 22 pF kapasitör olan bir devre tahtasına bağlayın, İki topraklama pimini birbirine bağlayın (pim 11 ve 31) ve ardından Arduino Uno topraklamasına, Vcc ve AVcc'yi birbirine (pim 10 ve 30) ve ardından Uno +5v'ye bağlayın, ardından sıfırlama pimi 9'u Uno D10 pimine, MISO pim 7'yi UNO D12'ye, MOSI'ye bağlayın pin 8'i Uno D11'e ve SCLK pin 7'yi Uno D13 pinine bağlayın. (3) Uno'yu Arduino IDE'ye bağlayın ve Arduino çizim örneğini ISP olarak Uno'ya yükleyin. (4) Şimdi 1284 "maniac" güçlü optiboot kartını seçin ve Burn bootloader seçeneğini seçin. (5) Daha sonra burada örnek olarak verilen 1284 gecikmeli çizimi seçin ve çizimler menüsündeki Uno as programmer seçeneğini kullanarak yükleyin.

Süreci daha detaylı anlatan linkler:

ATmega1284'ü büyük devre tahtası dostu AVR'ler için Arduino IDEArduino Mightycore ile kullanmaBir ATMega1284p prototipi oluşturmaArduino ATmega1284p önyükleyici

Adım 6: Ek 2 Arduino Uno PedalSHIELD Varyasyonu

Ek 2 Arduino Uno PedalSHIELD Varyasyonu
Ek 2 Arduino Uno PedalSHIELD Varyasyonu
Ek 2 Arduino Uno PedalSHIELD Varyasyonu
Ek 2 Arduino Uno PedalSHIELD Varyasyonu
Ek 2 Arduino Uno PedalSHIELD Varyasyonu
Ek 2 Arduino Uno PedalSHIELD Varyasyonu

Schematic3, Breadboard3 ve Photo3, AtMega1284 yapısından önceki Uno tabanlı devrenin ayrıntılarını verir.

Kuru (girişe eşit) ve ıslak (MCU tarafından işlendikten sonra) sinyal için karıştırıcı olarak bir potansiyometreye sahip olmak avantajlı olabilir ve Şema 2, Breadboard 2 ve Fotoğraf 2, önceden oluşturulmuş bir devrenin devre detaylarını verir. bu, çıkış karıştırıcısına böyle bir girişi içerir. Ayrıca dört OpAmp kullanan başka bir mikser uygulaması için Open Music Labs StompBox'a bakın

Önerilen: