Spisu treści:

ATMega1284P Pedał efektów gitarowych i muzycznych: 6 kroków (ze zdjęciami)
ATMega1284P Pedał efektów gitarowych i muzycznych: 6 kroków (ze zdjęciami)

Wideo: ATMega1284P Pedał efektów gitarowych i muzycznych: 6 kroków (ze zdjęciami)

Wideo: ATMega1284P Pedał efektów gitarowych i muzycznych: 6 kroków (ze zdjęciami)
Wideo: Employee Clock In Using Atmega1284/Arduino 2024, Listopad
Anonim
ATMega1284P Pedał efektów gitarowych i muzycznych
ATMega1284P Pedał efektów gitarowych i muzycznych

Przeniosłem Arduino Uno ATMega328 Pedalshield (opracowany przez Electrosmash i częściowo oparty na pracy w Open Music Lab) do ATMega1284P, który ma osiem razy więcej pamięci RAM niż Uno (16kB kontra 2kB). Dodatkową nieoczekiwaną korzyścią jest to, że kompilacja Mega1284 ma znacznie niższy składnik szumów - do tego stopnia, że kiedy porównuję Uno i Mega1284 przy użyciu tego samego obwodu pomocniczego, nie jest nierozsądne opisywanie Uno jako "głośnego", a Mega1284 jako " cichy". Większa pamięć RAM oznacza, że można uzyskać znacznie dłuższy efekt opóźnienia - co pokazuje przykład szkicu Arduino, który zamieściłem. Dźwięk oddychania w tle podczas korzystania z efektu Tremelo jest również (prawie) nieobecny w ATMega1284.

Porównanie trzech mikroprocesorów Atmel AVR, mianowicie 328P, czyli Uno, 2560P, czyli Mega2560 i Mega1284, pokazuje, że ten ostatni ma najwięcej pamięci RAM z trzech:

Aspekt 328P 1284P 2560P RAM 2k 16k 8k Flash 32k 128k 256k EEPROM 1k 4k 4k UART 1 2 4 Piny IO 23 32 86 Przerwania 2 3 8 Wejście analogowe 6 8 16

Zacząłem od wprowadzenia pedalSHIELD opartego na Uno, jak w specyfikacji Electrosmash, ale nie miałem tego samego wzmacniacza RRO OpAmp, który został podany. W rezultacie uzyskałem obwód, który, jak sądziłem, daje akceptowalne wyniki. Szczegóły tej wersji Uno podano w załączniku 2.

Ten sam układ został następnie przeniesiony do ATMega1284 - co zaskakujące, poza nieistotnymi zmianami, takimi jak przypisanie przełączników i diody LED do innego portu oraz przydzielenie 12 000 kB zamiast 2000 kB pamięci RAM na bufor opóźnienia, tylko jedna istotna zmiana musiała zostać dokonana w kodzie źródłowym, a mianowicie zmiana wyjść Timer1/PWM OC1A i OC1B z portu B w Uno na port D (PD5 i PD4) w ATMega1284.

Później odkryłem doskonałe modyfikacje układu elektrosmash Paula Gallaghera i po testach, to jest układ, który tutaj przedstawię - ale potem także z modyfikacjami: zastąpienie Uno Mega1284, używając Texas Instruments TLC2272 jako OpAmp, oraz ze względu na doskonałą wydajność szumów Mega1284, mogłem również podnieść poziom częstotliwości filtra dolnoprzepustowego.

Ważne jest, aby pamiętać, że chociaż dostępne są płyty rozwojowe dla ATMega1284 (Github: MCUdude MightyCore), łatwo jest kupić goły (bez bootloadera) chip (kup wersję PDIP, która jest typu bread-board i strip-board przyjazny), następnie załaduj widelec Mark Pendrith z bootloadera Maniacbug Mighty-1284p Core Optiboot lub MCUdude Mightycore, używając Uno jako programisty ISP, a następnie ponownie ładując szkice za pośrednictwem Uno do AtMega1284. Szczegóły i linki do tego procesu znajdują się w załączniku 1.

Chciałbym podziękować trzem najważniejszym źródłom, z których można uzyskać dalsze informacje i podam linki do ich stron internetowych oraz do końca tego artykułu: Electrosmash, Open Music Labs i Tardate/Paul Gallagher

Krok 1: Lista części

ATMega1284P (wersja pakietu 40-pinowego PDIP) Arduino Uno R3 (używany jako ISP do przesyłania programu ładującego i szkiców do ATMega1284) OpAmp TLC2272 (lub podobny RRIO (Rail to Rail Input and Output) OpAmp, taki jak MCP6002, LMC6482, TL972) Czerwona dioda LED 16 MHz kryształ 2 kondensatory 27 pF 5 kondensatorów 6n8 kondensator 270 pF 4 kondensatory 100n 2 kondensatory elektrolityczne 10uF 16v 6 rezystorów 4k7 rezystor 100k 2 rezystory 1M rezystor 470 om rezystor 1M2 100k potencjometr 3 x przełączniki (jeden z nich należy zastąpić 3-biegunowym 2-drożnym przełącznikiem nożnym, jeśli skrzynka efektów ma być używana do pracy na żywo)

Krok 2: Budowa

Budowa
Budowa
Budowa
Budowa
Budowa
Budowa

Schemat 1 pokazuje używany obwód, a Breadboard 1 jest jego fizyczną reprezentacją (Fritzing 1), a zdjęcie 1 to rzeczywisty działający obwód. Korzystne może być posiadanie potencjometru jako miksera dla sygnału suchego (równego wejściowego) i mokrego (po przetworzeniu przez MCU), a Schemat 2, Płytka prototypowa 2 i Zdjęcie 2 (wymienione w Załączniku 2) dają szczegóły obwodu wcześniej zbudowanego obwodu, który zawiera taki mieszacz wejściowy-wyjściowy. Spójrz także na StompBox Open Music Labs, aby zobaczyć inną implementację miksera z wykorzystaniem czterech wzmacniaczy operacyjnych.

Etapy wejścia i wyjścia OpAmp: Ważne jest, aby użyć RRO lub najlepiej RRIO OpAmp ze względu na duże wahania napięcia wymagane na wyjściu OpAmp do ADC ATMega1284. Lista części zawiera szereg alternatywnych typów wzmacniaczy operacyjnych. Potencjometr 100k służy do regulacji wzmocnienia wejściowego do poziomu tuż poniżej wszelkich zniekształceń, a także może być używany do regulacji czułości wejściowej dla źródła wejściowego innego niż gitara, takiego jak odtwarzacz muzyczny. Stopień wyjściowy OpAmp ma filtr RC wyższego rzędu, który usuwa cyfrowo generowany szum MCU ze strumienia audio.

ADC Stage: ADC jest skonfigurowany do czytania przez przerwanie przez cały czas. Zauważ, że kondensator 100nF powinien być podłączony między pinem AREF ATMega1284 a masą, aby zredukować szumy, ponieważ wewnętrzne źródło Vcc jest używane jako napięcie odniesienia - NIE podłączaj pinu AREF bezpośrednio do +5 woltów!

DAC PWM Stage: Ponieważ ATMega1284 nie posiada własnego przetwornika cyfrowo-analogowego, wyjściowe kształty fal audio są generowane przy użyciu modulacji szerokości impulsu filtra RC. Dwa wyjścia PWM na PD4 i PD5 są ustawione jako wysoki i niski bajt wyjścia audio i zmieszane z dwoma rezystorami (4k7 i 1M2) w stosunku 1:256 (niski i wysoki bajt) - co generuje wyjście audio. Warto poeksperymentować z innymi parami rezystorów, takimi jak para 3k9 1M omów używana przez Open Music Labs w ich StompBoxie.

Krok 3: Oprogramowanie

Oprogramowanie opiera się na szkicach electrosmash, a dołączony przykład (pedalshield1284delay.ino) został zaadaptowany ze szkicu opóźnienia Uno. Niektóre przełączniki i diody LED zostały przeniesione na inne porty z dala od tych używanych przez programistę ISP (SCLK, MISO, MOSI i Reset), bufor opóźnienia został zwiększony z 2000 bajtów do 12000 bajtów, a PortD został ustawiony jako wyjście dla dwóch sygnałów PWM. Nawet przy zwiększeniu bufora opóźnienia szkic nadal wykorzystuje tylko około 70% dostępnej pamięci RAM 1284.

Inne przykłady, takie jak octaver lub tremolo ze strony electrosmash dla pedalSHIELD Uno, można dostosować do użytku przez Mega1284, zmieniając trzy sekcje w kodzie:

(1) Zmień DDRB |= ((PWM_ILOŚĆ << 1) | 0x02); to DDRD |= 0x30;// Powyższa zmiana jest JEDYNĄ istotną zmianą kodu // przy przenoszeniu z AtMega328 na ATMega1284

(2) Zmień #define LED 13 #define PRZEŁĄCZNIK NOŻNY 12 #define PRZEŁĄCZNIK 2 #define PRZYCISK_1 A5 #define PRZYCISK_2 A4

do

#define LED PB0 #define PRZEŁĄCZNIK NOŻNY PB1 #define PRZYCISK_1 A5 #define PRZYCISK_2 A4

(3) Zmień pinMode (FOOTSWITCH, INPUT_PULLUP); pinMode(TOGGLE, INPUT_PULLUP); pinMode(PUSHBUTTON_1, INPUT_PULLUP); pinMode(PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, WYJŚCIE)

do

pinMode (przełącznik nożny, INPUT_PULLUP); pinMode(PUSHBUTTON_1, INPUT_PULLUP); pinMode(PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, WYJŚCIE);

Przyciski 1 i 2 są używane w niektórych szkicach do zwiększania lub zmniejszania efektu. W przykładzie opóźnienia zwiększa lub zmniejsza czas opóźnienia. Kiedy szkic jest ładowany po raz pierwszy, zaczyna się z maksymalnym efektem opóźnienia. wciśnij przycisk w dół – odliczanie do pozycji opóźnienia zajmuje około 20 sekund – a następnie wciśnij i przytrzymaj przycisk w górę. Posłuchaj, jak efekt przemiatania przytrzymania przycisku zmienia efekt na efekt fazera, chorus i flang, a także opóźnienie po zwolnieniu przycisku.

Aby zmienić opóźnienie na efekt echa (dodać powtórzenie), zmień linię:

Bufor Opóźnienia[Licznik Opóźnienia] = ADC_wysoki;

do

Bufor Opóźnienia[LicznikOpóźnienia] = (ADC_high + (Bufor Opóźnienia[LicznikOpóźnienia]))>>1;

Przełącznik nożny powinien być przełącznikiem dwukierunkowym z trzema biegunami i musi być podłączony zgodnie z opisem na stronie internetowej electrosmash.

Krok 4: Linki

Spinki do mankietów
Spinki do mankietów

(1) Uderzenie elektryczne:

(2) Otwarte laboratoria muzyczne:

(3) Paweł Gallagher:

(4) 1284 Bootloader:

(5) ATmega1284 8-bitowy mikrokontroler AVR:

ElectrosmashOpenlabs MusicPaul Gallagher1284 Bootloader 11284 Bootloader 2ATmega1284 8bitowy mikrokontroler AVR

Krok 5: Załącznik 1 Programowanie ATMega1284P

Załącznik 1 Programowanie ATMega1284P
Załącznik 1 Programowanie ATMega1284P
Załącznik 1 Programowanie ATMega1284P
Załącznik 1 Programowanie ATMega1284P
Załącznik 1 Programowanie ATMega1284P
Załącznik 1 Programowanie ATMega1284P

Istnieje kilka stron internetowych, które dobrze wyjaśniają, jak zaprogramować czysty układ ATMega1284 do użytku z Arduino IDE. Proces jest zasadniczo następujący: (1) Zainstaluj widelec Mark Pendrith programu rozruchowego Maniacbug Mighty-1284p Core Optiboot w Arduino IDE. (2) Podłącz ATMega1284 do płytki stykowej z minimalną konfiguracją, to jest kryształ 16 MHz, 2 kondensatory 22 pF, które uziemiają dwa końce kryształu, połącz ze sobą dwa styki uziemienia (styki 11 i 31), a następnie do masy Arduino Uno, połącz razem Vcc i AVcc (piny 10 i 30), a następnie do Uno + 5v, a następnie podłącz pin 9 resetowania do pinu Uno D10, pin MISO 7 do UNO D12, MOSI pin 8 do Uno D11, a pin SCLK 7 do pinu Uno D13. (3) Podłącz Uno do Arduino IDE i załaduj przykładowy szkic Arduino jako ISP do Uno. (4) Teraz wybierz 1284 "maniac" potężną płytę optiboot i wybierz opcję Burn bootloader. (5) Następnie wybierz szkic opóźnienia 1284 podany tutaj jako przykład i załaduj go, używając opcji Uno as programmer w menu szkiców.

Linki, które bardziej szczegółowo wyjaśniają proces, to:

Używanie ATmega1284 z Arduino IDEArduino Mightycore dla dużych AVR-ów przyjaznych dla płytek prototypowych Budowa prototypu ATMega1284pArduino ATmega1284p bootloader

Krok 6: Dodatek 2 Arduino Uno PedalSHIELD Variation

Dodatek 2 Arduino Uno PedalSHIELD Variation
Dodatek 2 Arduino Uno PedalSHIELD Variation
Dodatek 2 Arduino Uno PedalSHIELD Variation
Dodatek 2 Arduino Uno PedalSHIELD Variation
Dodatek 2 Arduino Uno PedalSHIELD Variation
Dodatek 2 Arduino Uno PedalSHIELD Variation

Schematic3, Breadboard3 i Photo3 podają szczegóły układu opartego na Uno, który poprzedził budowę AtMega1284.

Korzystne może być posiadanie potencjometru jako miksera dla sygnału suchego (równego wejściowego) i mokrego (po przetworzeniu przez MCU), a Schemat 2, Płytka prototypowa 2 i Zdjęcie 2 podaje szczegóły obwodu wcześniej zbudowanego obwodu który zawiera taki mikser wejścia do wyjścia. Spójrz także na StompBox Open Music Labs, aby uzyskać inną implementację miksera przy użyciu czterech wzmacniaczy operacyjnych

Zalecana: