Sommario:

ATMega1284P Pedale per effetti per chitarra e musica: 6 passaggi (con immagini)
ATMega1284P Pedale per effetti per chitarra e musica: 6 passaggi (con immagini)

Video: ATMega1284P Pedale per effetti per chitarra e musica: 6 passaggi (con immagini)

Video: ATMega1284P Pedale per effetti per chitarra e musica: 6 passaggi (con immagini)
Video: ThePedalGuy Unboxes the StompLight DMX Professional lighting effect pedal 2024, Dicembre
Anonim
ATMega1284P Pedale effetti per chitarra e musica
ATMega1284P Pedale effetti per chitarra e musica

Ho portato Arduino Uno ATMega328 Pedalshield (come sviluppato da Electrosmash e in parte basato sul lavoro presso l'Open Music Lab) su ATMega1284P che ha otto volte più RAM dell'Uno (16kB contro 2kB). Un ulteriore vantaggio inaspettato è che la build Mega1284 ha un componente di rumore molto più basso - nella misura in cui quando confronto Uno e Mega1284 usando lo stesso circuito di supporto non è irragionevole descrivere Uno come "rumoroso" e il Mega1284 come " calmatevi". La RAM più grande significa che è possibile ottenere un effetto di ritardo molto più lungo - e questo è dimostrato dall'esempio di schizzo di Arduino che ho incluso. Anche il rumore di fondo della respirazione quando si utilizza l'effetto Tremelo è (quasi) assente con ATMega1284.

Un confronto tra tre microprocessori Atmel AVR, ovvero il 328P che è l'Uno, il 2560P che è il Mega2560 e il Mega1284 mostra che quest'ultimo ha la maggior quantità di RAM dei tre:

Aspetto 328P 1284P 2560P RAM 2k 16k 8k Flash 32k 128k 256k EEPROM 1k 4k 4k UART 1 2 4 Pin IO 23 32 86 Interrupt 2 3 8 Ingresso analogico 6 8 16

Ho iniziato con il breadboarding del pedalSHIELD basato su Uno come nelle specifiche Electrosmash, ma non avevo lo stesso OpAmp RRO come specificato. Di conseguenza mi sono ritrovato con un circuito che ho ritenuto dare risultati accettabili. I dettagli di questa versione Uno sono riportati nell'appendice 2.

Questo stesso circuito è stato poi portato su ATMega1284 - sorprendentemente a parte le modifiche non essenziali come l'assegnazione degli interruttori e del LED a una porta diversa e l'allocazione di 12.000 kB invece di 2.000 kB di RAM per il buffer di ritardo, solo è stato necessario apportare una modifica essenziale al codice sorgente, ovvero modificare le uscite Timer1/PWM OC1A e OC1B dalla porta B dell'Uno alla porta D (PD5 e PD4) dell'ATMega1284.

In seguito ho scoperto le eccellenti modifiche al circuito dell'elettrosmash di Paul Gallagher e dopo aver provato, questo è il circuito che presenterò qui - ma poi anche con modifiche: sostituzione dell'Uno con il Mega1284, utilizzando un Texas Instruments TLC2272 come OpAmp, e a causa delle eccellenti prestazioni di rumore del Mega1284, potrei anche aumentare il livello di frequenza del filtro passa-basso.

È importante notare che sebbene siano disponibili schede di sviluppo per ATMega1284 (Github: MCUdude MightyCore), è un esercizio facile acquistare il chip nudo (senza bootloader) (acquistare la versione PDIP che è bread-board e strip-board friendly), quindi caricare il fork di Mark Pendrith del bootloader Maniacbug Mighty-1284p Core Optiboot o MCUdude Mightycore, utilizzando uno come programmatore ISP, quindi caricare nuovamente gli sketch tramite Uno su AtMega1284. I dettagli e i collegamenti per questo processo sono forniti nell'appendice 1.

Vorrei ringraziare le tre fonti più importanti da cui è possibile ottenere ulteriori informazioni e fornirò i collegamenti ai loro siti Web e alla fine di questo articolo: Electrosmash, Open Music Labs e Tardate/Paul Gallagher

Passaggio 1: elenco delle parti

ATMega1284P (versione del pacchetto PDIP 40 pin) Arduino Uno R3 (utilizzato come ISP per trasferire il boot loader e gli sketch all'ATMega1284) OpAmp TLC2272 (o simile RRIO (Rail to Rail Input and Output) come MCP6002, LMC6482, TL972) LED rosso Cristallo 16 MHz Condensatori 2 x 27 pF 5 x condensatori 6n8 Condensatore 270 pF 4 condensatori 100n 2 x condensatori elettrolitici 10uF 16v 6 x resistori 4k7 resistore 100k 2 x resistori 1M resistore 470 ohm Resistore 1M2 100k Potenziometro 3 x interruttori a pulsante (uno di questi dovrebbero essere sostituiti con un interruttore a pedale a 3 poli a 2 vie se la scatola degli effetti verrà utilizzata per il lavoro dal vivo)

Fase 2: Costruzione

Costruzione
Costruzione
Costruzione
Costruzione
Costruzione
Costruzione

Lo schema 1 fornisce il circuito utilizzato e Breadboard 1 è la sua rappresentazione fisica (Fritzing 1) con Foto 1 il circuito breadboard effettivo in funzione. Può essere vantaggioso avere un potenziometro come mixer per il segnale dry (uguale all'ingresso) e wet (dopo l'elaborazione da parte dell'MCU), e Schematic 2, Breadboard 2 e Photo 2 (elencati nell'Appendice 2), fornisce il dettagli circuitali di un circuito precedentemente costruito che incorpora un tale mixer da ingresso a uscita. Guarda anche l'Open Music Labs StompBox per un'altra implementazione del mixer usando quattro OpAmp.

Fasi di ingresso e uscita dell'amplificatore operazionale: è importante utilizzare un amplificatore operazionale RRO o preferibilmente un amplificatore operazionale RRIO a causa della grande oscillazione di tensione richiesta all'uscita dell'amplificatore operazionale verso l'ADC di ATMega1284. L'elenco delle parti contiene una serie di tipi di amplificatori operazionali alternativi. Il potenziometro da 100k viene utilizzato per regolare il guadagno in ingresso a un livello appena al di sotto di qualsiasi distorsione e può anche essere utilizzato per regolare la sensibilità in ingresso per una sorgente di ingresso diversa da una chitarra come un lettore musicale. Lo stadio di uscita OpAmp ha un filtro RC di ordine superiore per rimuovere il rumore MCU generato digitalmente dal flusso audio.

Fase ADC: L'ADC è configurato per leggere tramite un interrupt per tutto il tempo. Si noti che è necessario collegare un condensatore da 100 nF tra il pin AREF dell'ATMega1284 e la terra per ridurre il rumore poiché una sorgente Vcc interna viene utilizzata come tensione di riferimento - NON collegare direttamente il pin AREF a +5 volt!

DAC PWM Stage: Poiché ATMega1284 non dispone di un proprio DAC, le forme d'onda audio in uscita vengono generate utilizzando una modulazione a larghezza di impulso di un filtro RC. Le due uscite PWM su PD4 e PD5 sono impostate come byte alto e basso dell'uscita audio e mescolate con i due resistori (4k7 e 1M2) in un rapporto 1:256 (byte basso e byte alto) - che genera l'uscita audio. Potrebbe valere la pena sperimentare con altre coppie di resistori come la coppia 3k9 1M ohm utilizzata da Open Music Labs nel loro StompBox.

Passaggio 3: software

Il software è basato sugli sketch dell'elettrosmash e l'esempio incluso (pedalshield1284delay.ino), è stato adattato dal loro sketch Uno delay. Alcuni degli interruttori e dei LED sono stati spostati su altre porte lontane da quelle utilizzate dal programmatore ISP (SCLK, MISO, MOSI e Reset), il buffer di ritardo è stato aumentato da 2000 byte a 12000 byte e PortD è stato impostato come uscita per i due segnali PWM. Anche con l'aumento del buffer di ritardo, lo sketch utilizza ancora solo il 70% circa della 1284 RAM disponibile.

Altri esempi come l'octaver o il tremolo dal sito web electrosmash per il pedalSHIELD Uno possono essere adattati per l'uso dal Mega1284 modificando tre sezioni nel codice:

(1) Modifica DDRB |= ((PWM_QTY << 1) | 0x02); a DDRD |= 0x30;// La modifica sopra è l'UNICA modifica essenziale del codice // durante il porting da AtMega328 a ATMega1284

(2) Modifica #define LED 13 #define FOOTSWITCH 12 #define TOGGLE 2 #define PUSHBUTTON_1 A5 #define PUSHBUTTON_2 A4

a

#define LED PB0 #define PULSANTE PB1 #define PULSANTE_1 A5 #define PULSANTE_2 A4

(3) Cambia pinMode (FOOTSWITCH, INPUT_PULLUP); pinMode(TOGGLE, INPUT_PULLUP); pinMode(PUSHBUTTON_1, INPUT_PULLUP); pinMode(PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, USCITA)

a

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

I pulsanti 1 e 2 vengono utilizzati in alcuni schizzi per aumentare o diminuire un effetto. Nell'esempio del ritardo aumenta o diminuisce il tempo di ritardo. Quando lo schizzo viene caricato per la prima volta, inizia con l'effetto di ritardo massimo. premere il pulsante giù - ci vogliono circa 20 secondi per il conto alla rovescia fino alla posizione di ritardo - quindi premere e tenere premuto il pulsante su. Ascolta come l'effetto sweep di tenere premuto il pulsante cambia l'effetto in quello di phaser, chorus e flanging, nonché il ritardo quando il pulsante viene rilasciato.

Per modificare il ritardo in un effetto eco (aggiungere ripetizione) modificare la linea:

DelayBuffer[DelayCounter] = ADC_high;

a

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

L'interruttore a pedale dovrebbe essere un interruttore a due vie a tre poli e deve essere collegato come descritto sul sito web di Electrosmash.

Passaggio 4: collegamenti

Link
Link

(1) Elettroshock:

(2) Laboratori musicali aperti:

(3) Paolo Gallagher:

(4) 1284 Bootloader:

(5) Microcontrollore AVR ATmega1284 a 8 bit:

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

Fase 5: Appendice 1 Programmazione di ATMega1284P

Appendice 1 Programmazione di ATMega1284P
Appendice 1 Programmazione di ATMega1284P
Appendice 1 Programmazione di ATMega1284P
Appendice 1 Programmazione di ATMega1284P
Appendice 1 Programmazione di ATMega1284P
Appendice 1 Programmazione di ATMega1284P

Esistono alcuni siti Web che forniscono una buona spiegazione su come programmare il chip ATMega1284 nudo per l'utilizzo con l'IDE Arduino. Il processo è essenzialmente il seguente: (1) Installare il fork di Mark Pendrith del bootloader Maniacbug Mighty-1284p Core Optiboot nell'IDE Arduino. (2) Collegare l'ATMega1284 su una breadboard con la sua configurazione minima che è un cristallo da 16 MHz, condensatori 2 x 22 pF che mettono a terra le due estremità del cristallo, collegare i due pin di terra insieme (pin 11 e 31), quindi alla massa di Arduino Uno, collegare Vcc e AVcc insieme (pin 10 e 30), quindi a Uno +5v, quindi collegare il pin 9 di reset al pin Uno D10, il pin 7 MISO a UNO D12, Il MOSI pin 8 a Uno D11 e il pin 7 SCLK al pin Uno D13. (3) Collegare Uno all'IDE Arduino e caricare l'esempio di schizzo Arduino come ISP su Uno. (4) Ora seleziona la potente scheda optiboot 1284 "maniac" e scegli l'opzione Burn bootloader. (5) Quindi selezionare lo sketch di ritardo 1284 fornito qui come esempio e caricarlo utilizzando l'opzione Uno come programmatore nel menu degli sketch.

I link che spiegano il processo in modo più dettagliato sono:

Utilizzo di ATmega1284 con Arduino IDEArduino Mightycore per AVR compatibili con breadboard di grandi dimensioni Creazione di un prototipo ATMega1284p Bootloader Arduino ATmega1284p

Passaggio 6: Appendice 2 Variazione Arduino Uno PedalSHIELD

Appendice 2 Pedale Arduino Uno Variazione SHIELD
Appendice 2 Pedale Arduino Uno Variazione SHIELD
Appendice 2 Pedale Arduino Uno Variazione SHIELD
Appendice 2 Pedale Arduino Uno Variazione SHIELD
Appendice 2 Variazione di Arduino Uno PedalSHIELD
Appendice 2 Variazione di Arduino Uno PedalSHIELD

Schematic3, Breadboard3 e Photo3 forniscono dettagli sul circuito basato su Uno che ha preceduto la build AtMega1284.

Può essere vantaggioso avere un potenziometro come mixer per il segnale dry (uguale all'ingresso) e wet (dopo l'elaborazione da parte dell'MCU), e Schematic 2, Breadboard 2 e Photo 2 forniscono i dettagli del circuito di un circuito precedentemente costruito che incorpora un tale mixer da ingresso a uscita. Guarda anche l'Open Music Labs StompBox per un'altra implementazione del mixer usando quattro OpAmp

Consigliato: