Cuprins:

ATMega1284P Pedală pentru efecte de chitară și muzică: 6 pași (cu imagini)
ATMega1284P Pedală pentru efecte de chitară și muzică: 6 pași (cu imagini)

Video: ATMega1284P Pedală pentru efecte de chitară și muzică: 6 pași (cu imagini)

Video: ATMega1284P Pedală pentru efecte de chitară și muzică: 6 pași (cu imagini)
Video: Connecting a Bosch Accelerator Pedal to an Arduino 2024, Iulie
Anonim
ATMega1284P Pedală de efecte de chitară și muzică
ATMega1284P Pedală de efecte de chitară și muzică

Am portat Arduino Uno ATMega328 Pedalshield (așa cum a fost dezvoltat de Electrosmash și parțial bazat pe munca la Open Music Lab) la ATMega1284P care are de opt ori mai multă RAM decât Uno (16kB față de 2kB). Un avantaj suplimentar neașteptat este că versiunea Mega1284 are o componentă de zgomot mult mai mică - în măsura în care atunci când compar Uno și Mega1284 folosind același circuit de suport nu este nerezonabil să descriu Uno ca fiind „zgomotos” și Mega1284 ca „ Liniște . Memoria RAM mai mare înseamnă că se poate obține un efect de întârziere mult mai lung - și asta este demonstrat de exemplul de schiță Arduino pe care l-am inclus. Zgomotul respirației de fundal atunci când se utilizează efectul Tremelo este, de asemenea, (aproape) absent la ATMega1284.

O comparație a trei microprocesoare Atmel AVR și anume 328P care este Uno, 2560P care este Mega2560 și Mega1284 arată că acesta din urmă are cea mai mare memorie RAM dintre cele trei:

Aspect 328P 1284P 2560P RAM 2k 16k 8k Flash 32k 128k 256k EEPROM 1k 4k 4k UART 1 2 4 IO Pins 23 32 86 Întreruperi 2 3 8 Intrare analogică 6 8 16

Am început prin îmbarcarea pe pedalaSHIELD bazată pe Uno ca în specificația Electrosmash, dar nu aveam același RRO OpAmp ca cel specificat. Drept urmare, am ajuns la un circuit pe care l-am considerat a da rezultate acceptabile. Detaliile acestei versiuni Uno sunt date în apendicele 2.

Același circuit a fost apoi portat la ATMega1284 - în mod surprinzător, în afară de modificările neesențiale, cum ar fi atribuirea comutatoarelor și LED-urilor la un port diferit și alocarea a 12 000 kB în loc de 2 000 kB RAM pentru bufferul de întârziere, doar o schimbare esențială trebuia făcută în codul sursă, și anume schimbarea ieșirilor Timer1 / PWM OC1A și OC1B din portul B de pe Uno în portul D (PD5 și PD4) de pe ATMega1284.

Ulterior am descoperit modificările excelente aduse circuitului electrosmash de Paul Gallagher și după testare, acesta este circuitul pe care îl voi prezenta aici - dar apoi și cu modificări: înlocuirea Uno cu Mega1284, folosind un Texas Instruments TLC2272 ca OpAmp și datorită performanțelor excelente de zgomot ale Mega1284, aș putea ridica și nivelul de frecvență al filtrului low-pass.

Este important să rețineți că, deși sunt disponibile plăci de dezvoltare pentru ATMega1284 (Github: MCUdude MightyCore), este un exercițiu ușor să cumpărați cipul gol (fără bootloader) (cumpărați versiunea PDIP, care este panou și placă) prietenos), apoi încărcați furca Mark Pendrith a încărcătorului de boot Maniacbug Mighty-1284p Core Optiboot sau MCUdude Mightycore, utilizând un Uno ca programator ISP, apoi încărcați din nou schițele prin Uno pe AtMega1284. Detalii și linkuri pentru acest proces sunt date în apendicele 1.

Aș dori să recunosc cele mai importante trei surse din care pot fi obținute informații suplimentare și voi oferi linkuri către site-urile lor web și la sfârșitul acestui articol: Electrosmash, Open Music Labs și Tardate / Paul Gallagher

Pasul 1: Lista pieselor

ATMega1284P (versiune pachet PDIP 40 pini) Arduino Uno R3 (folosit ca ISP pentru a transfera încărcătorul de încărcare și schițe la ATMega1284) OpAmp TLC2272 (sau similar RRIO (Rail to Rail Input and Output) OpAmp precum MCP6002, LMC6482, TL972) LED roșu 16 MHz cristal 2 x 27 pF condensatori 5 x 6n8 condensatori 270 pF condensator 4 x 100n condensatori 2 x 10uF 16v condensatori electrolitici 6 x 4k7 rezistențe 100k rezistență 2 x rezistențe 1M rezistență 470 ohm rezistență 1M2 100k Potențiometru 3 x comutatoare cu buton (unul dintre ele ar trebui să fie înlocuite cu un comutator de picior cu 3 poli cu 2 căi dacă caseta de efecte va fi folosită pentru munca live)

Pasul 2: Construcție

Constructie
Constructie
Constructie
Constructie
Constructie
Constructie

Schema 1 oferă circuitul utilizat, iar Breadboard 1 este reprezentarea sa fizică (Fritzing 1) cu fotografia 1, circuitul real cu pană în funcțiune. Poate fi avantajos să aveți un potențiometru ca mixer pentru semnalul uscat (egal cu intrarea) și umed (după procesarea de către MCU), iar Schema 2, Breadboard 2 și Photo 2 (enumerate în Anexa 2), oferă detaliile circuitului unui circuit construit anterior care încorporează o astfel de intrare la mixerul de ieșire. De asemenea, uitați-vă la Open Music Labs StompBox pentru o altă implementare a mixerului folosind patru OpAmps.

Etape de intrare și ieșire OpAmp: Este important ca un RRO sau de preferință un RRIO OpAmp să fie utilizat datorită oscilației de tensiune mare necesară la ieșirea OpAmp către ADC-ul ATMega1284. Lista pieselor conține o serie de tipuri OpAmp alternative. Potențiometrul de 100k este utilizat pentru a regla câștigul de intrare la un nivel chiar sub orice distorsiune și poate fi, de asemenea, utilizat pentru a regla sensibilitatea de intrare pentru o altă sursă de intrare decât o chitară, cum ar fi un music player. Etapa de ieșire OpAmp are un filtru RC de ordin superior pentru a elimina zgomotul MCU generat digital din fluxul audio.

Etapa ADC: ADC-ul este configurat să citească prin întrerupere tot timpul. Rețineți că un condensator 100nF trebuie conectat între pinul AREF al ATMega1284 și împământare pentru a reduce zgomotul, deoarece o sursă internă Vcc este utilizată ca tensiune de referință - NU conectați pinul AREF la +5 volți direct!

Etapa DAC PWM: Deoarece ATMega1284 nu are propriul DAC, formele de undă audio de ieșire sunt generate utilizând o modulație a lățimii impulsurilor unui filtru RC. Cele două ieșiri PWM de pe PD4 și PD5 sunt setate ca octeții mari și mici ai ieșirii audio și amestecate cu cele două rezistențe (4k7 și 1M2) într-un raport 1: 256 (octet scăzut și octet ridicat) - care generează ieșirea audio. Ar putea fi util să experimentați cu alte perechi de rezistențe, cum ar fi perechea 3k9 1M ohm folosită de Open Music Labs în StompBox.

Pasul 3: Software

Software-ul se bazează pe schițele electrosmash, iar exemplul inclus (pedalshield1284delay.ino), a fost adaptat din schița Uno delay. Unele dintre comutatoare și LED-uri au fost mutate în alte porturi departe de cele utilizate de programatorul ISP (SCLK, MISO, MOSI și Reset), tamponul de întârziere a fost mărit de la 2000 de octeți la 12000 de octeți, iar PortD a fost setat ca ieșire pentru cele două semnale PWM. Chiar și odată cu creșterea bufferului de întârziere, schița încă folosește doar aproximativ 70% din 1284 RAM disponibil.

Alte exemple, cum ar fi octaverul sau tremolo-ul de pe site-ul electrosmash pentru pedala SHIELD Uno pot fi adaptate pentru utilizare de către Mega1284 prin schimbarea a trei secțiuni din cod:

(1) Schimbați DDRB | = ((PWM_QTY << 1) | 0x02); la DDRD | = 0x30; // Modificarea de mai sus este SINGURA modificare esențială a codului // la portarea de la AtMega328 la ATMega1284

(2) Schimbați #define LED 13 #define FOOTSWITCH 12 #define TOGGLE 2 #define PUSHBUTTON_1 A5 #define PUSHBUTTON_2 A4

la

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

(3) Schimbați pinMode (FOOTSWITCH, INPUT_PULLUP); pinMode (TOGGLE, INPUT_PULLUP); pinMode (PUSHBUTTON_1, INPUT_PULLUP); pinMode (PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, OUTPUT)

la

pinMode (FOOTSWITCH, INPUT_PULLUP); pinMode (PUSHBUTTON_1, INPUT_PULLUP); pinMode (PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, OUTPUT);

Butoanele 1 și 2 sunt utilizate în unele schițe pentru a crește sau micșora un efect. În exemplul de întârziere crește sau scade timpul de întârziere. Când schița este încărcată pentru prima dată, începe cu efectul de întârziere maximă. apăsați butonul în jos - durează aproximativ 20 de secunde pentru a număra în jos până la poziția de întârziere - apoi apăsați și mențineți apăsat butonul sus. Ascultați cum efectul de măturare al apăsării butonului modifică efectul cu un fazer, cor și flans, precum și întârzierea la eliberarea butonului.

Pentru a schimba întârzierea la un efect de ecou (adăugați repetare) schimbați linia:

DelayBuffer [DelayCounter] = ADC_high;

la

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

Comutatorul de picior trebuie să fie un comutator cu trei poli cu două căi și trebuie să fie conectat așa cum este descris pe site-ul electrosmash.

Pasul 4: Link-uri

Link-uri
Link-uri

(1) Electrosmash:

(2) Deschideți Music Labs:

(3) Paul Gallagher:

(4) 1284 Bootloader:

(5) Microcontroler AVm ATmega1284 pe 8 biți:

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

Pasul 5: Anexa 1 Programarea ATMega1284P

Anexa 1 Programarea ATMega1284P
Anexa 1 Programarea ATMega1284P
Anexa 1 Programarea ATMega1284P
Anexa 1 Programarea ATMega1284P
Anexa 1 Programarea ATMega1284P
Anexa 1 Programarea ATMega1284P

Există câteva site-uri web care oferă o explicație bună despre modul de programare a cipului gol ATMega1284 pentru utilizare cu Arduino IDE. Procesul este în esență după cum urmează: (1) Instalați furca Mark Pendrith a încărcătorului de boot Maniacbug Mighty-1284p Core Optiboot în IDE-ul Arduino. (2) Conectați ATMega1284 pe o placă cu configurația sa minimă, care este un cristal de 16 MHz, 2 x 22 pF condensatori care pun la bază cele două capete ale cristalului, Conectați cei doi pini de masă împreună (pinii 11 și 31) și apoi la masa Arduino Uno, conectați Vcc și AVcc împreună (pinii 10 și 30), apoi la Uno + 5v, apoi conectați pinul de resetare 9 la pinul Uno D10, pinul MISO 7 la UNO D12, MOSI pinul 8 la Uno D11, iar pinul SCLK 7 la pinul Uno D13. (3) Conectați Uno la Arduino IDE și încărcați exemplul de schiță Arduino ca ISP pe Uno. (4) Acum selectați placa puternică optiboot 1284 „maniac” și alegeți opțiunea Burn bootloader. (5) Apoi selectați schița de întârziere 1284 dată aici ca exemplu și încărcați-o utilizând opțiunea Uno ca programator din meniul schițe.

Link-urile care explică procesul mai detaliat sunt:

Folosirea ATmega1284 cu Arduino IDEA Arduino Mightycore pentru AVR-uri prietenoase pentru panouri mari Construirea unui prototip ATMega1284p Arduino ATmega1284p bootloader

Pasul 6: Anexa 2 Variația Arduino Uno PedalSHIELD

Anexa 2 Variația Arduino Uno PedalSHIELD
Anexa 2 Variația Arduino Uno PedalSHIELD
Anexa 2 Variația Arduino Uno PedalSHIELD
Anexa 2 Variația Arduino Uno PedalSHIELD
Anexa 2 Variația Arduino Uno PedalSHIELD
Anexa 2 Variația Arduino Uno PedalSHIELD

Schematic3, Breadboard3 și Photo3 oferă detalii despre circuitul bazat pe Uno care a precedat versiunea AtMega1284.

Poate fi avantajos să aveți un potențiometru ca mixer pentru semnalul uscat (egal cu intrarea) și umed (după procesarea prin MCU), iar Schema 2, Breadboard 2 și Photo 2 oferă detaliile circuitului unui circuit construit anterior care încorporează o astfel de intrare la mixerul de ieșire. De asemenea, uitați-vă la Open Music Labs StompBox pentru o altă implementare a mixerului folosind patru OpAmps

Recomandat: