Índice:

ATMega1284P Pedal de efeitos musicais e de guitarra: 6 etapas (com fotos)
ATMega1284P Pedal de efeitos musicais e de guitarra: 6 etapas (com fotos)

Vídeo: ATMega1284P Pedal de efeitos musicais e de guitarra: 6 etapas (com fotos)

Vídeo: ATMega1284P Pedal de efeitos musicais e de guitarra: 6 etapas (com fotos)
Vídeo: FISL 18 Processamento de Áudio com Arduino Due 2024, Julho
Anonim
ATMega1284P Pedal de efeitos musicais e de guitarra
ATMega1284P Pedal de efeitos musicais e de guitarra

Portei o Arduino Uno ATMega328 Pedalshield (desenvolvido pela Electrosmash e em parte baseado no trabalho no Open Music Lab) para o ATMega1284P, que tem oito vezes mais RAM do que o Uno (16kB versus 2kB). Um benefício adicional inesperado é que a construção do Mega1284 tem um componente de ruído muito mais baixo - na medida em que, quando comparo o Uno e o Mega1284 usando o mesmo circuito de suporte, não é absurdo descrever o Uno como "barulhento" e o Mega1284 como " quieto". A RAM maior significa que um efeito de atraso muito mais longo pode ser obtido - e isso é demonstrado pelo exemplo de esboço do Arduino que incluí. O ruído de fundo da respiração ao usar o efeito Tremelo também está (quase) ausente com o ATMega1284.

Uma comparação de três microprocessadores Atmel AVR, a saber, o 328P que é o Uno, o 2560P que é o Mega2560 e o Mega1284 mostra que o último tem mais RAM dos três:

Aspecto 328P 1284P 2560P RAM 2k 16k 8k Flash 32k 128k 256k EEPROM 1k 4k 4k UART 1 2 4 Pinos IO 23 32 86 Interrupções 2 3 8 Entrada Analógica 6 8 16

Comecei por bread-boarding o pedalSHIELD baseado em Uno como na especificação Electrosmash, mas eu não tinha o mesmo RRO OpAmp conforme especificado. Como resultado, acabei com um circuito que considerei dar resultados aceitáveis. Os detalhes desta versão do Uno são fornecidos no apêndice 2.

Este mesmo circuito foi então portado para o ATMega1284 - surpreendentemente além das mudanças não essenciais, como atribuir os interruptores e LED a uma porta diferente e alocar 12.000 kB em vez de 2.000 kB de RAM para o buffer de atraso, apenas uma mudança essencial teve que ser feita no código-fonte, nomeadamente a alteração das saídas Timer1 / PWM OC1A e OC1B da Porta B no Uno para a Porta D (PD5 e PD4) no ATMega1284.

Mais tarde descobri as excelentes modificações no circuito de electrosmash de Paul Gallagher e, após o teste, este é o circuito que apresentarei aqui - mas também com modificações: substituição do Uno pelo Mega1284, usando um Texas Instruments TLC2272 como OpAmp, e por causa do excelente desempenho de ruído do Mega1284, também pude aumentar o nível de frequência do filtro passa-baixa.

É importante notar que embora as placas de desenvolvimento para o ATMega1284 estejam disponíveis (Github: MCUdude MightyCore), é um exercício fácil comprar o chip bare (bootloader-free) (compre a versão PDIP que é bread-board e strip-board amigável), carregue o fork Mark Pendrith do bootloader Maniacbug Mighty-1284p Core Optiboot ou o MCUdude Mightycore, usando um Uno como programador de ISP e, em seguida, carregue os esboços novamente através do Uno para o AtMega1284. Detalhes e links para este processo são fornecidos no apêndice 1.

Eu gostaria de agradecer as três fontes mais importantes de onde mais informações podem ser obtidas e darei links para seus sites e para o final deste artigo: Electrosmash, Open Music Labs e Tardate / Paul Gallagher

Etapa 1: Lista de peças

ATMega1284P (versão do pacote PDIP de 40 pinos) Arduino Uno R3 (usado como um ISP para transferir o carregador de boot e esboços para o ATMega1284) OpAmp TLC2272 (ou similar RRIO (Rail to Rail Input e Output) OpAmp como MCP6002, LMC6482, TL972) LED vermelho de cristal de 16 MHz 2 x 27 pF capacitores 5 x 6n8 capacitores 270 pF capacitores 4 x 100n capacitores 2 x 10uF 16v capacitores eletrolíticos 6 x 4k7 resistores 100k resistores 2 x 1M 470 ohm resistor 1M2 resistor 100k Potenciômetro 3 x interruptores de botão (um deles deve ser substituído por um pedal de 2 vias de 3 pólos se a caixa de efeitos for ser usada para trabalho ao vivo)

Etapa 2: construção

Construção
Construção
Construção
Construção
Construção
Construção

O esquema 1 fornece o circuito usado e a breadboard 1 é sua representação física (Fritzing 1) com a Foto 1 o circuito breadboard em operação. Pode ser vantajoso ter um potenciômetro como um misturador para o sinal seco (igual à entrada) e úmido (após o processamento pelo MCU), e o Esquema 2, Breadboard 2 e Foto 2 (listado no Apêndice 2), fornece o detalhes do circuito de um circuito previamente construído que incorpora tal entrada para o mixer de saída. Veja também o StompBox do Open Music Labs para outra implementação de mixer usando quatro OpAmps.

Estágios de entrada e saída OpAmp: É importante que um RRO ou preferencialmente um OpAmp RRIO seja usado por causa da grande oscilação de tensão necessária na saída OpAmp para o ADC do ATMega1284. A lista de peças contém vários tipos de OpAmp alternativos. O potenciômetro de 100k é usado para ajustar o ganho de entrada para um nível logo abaixo de qualquer distorção e também pode ser usado para ajustar a sensibilidade de entrada para uma fonte de entrada diferente de uma guitarra, como um reprodutor de música. O estágio de saída OpAmp tem um filtro RC de ordem superior para remover o ruído MCU gerado digitalmente do fluxo de áudio.

Estágio ADC: O ADC é configurado para ler por meio de uma interrupção o tempo todo. Observe que um capacitor 100nF deve ser conectado entre o pino AREF do ATMega1284 e o aterramento para reduzir o ruído, visto que uma fonte Vcc interna é usada como uma tensão de referência - NÃO conecte o pino AREF diretamente a +5 volt!

Estágio DAC PWM: Como o ATMega1284 não tem seu próprio DAC, as formas de onda de áudio de saída são geradas usando uma modulação de largura de pulso de um filtro RC. As duas saídas PWM em PD4 e PD5 são definidas como os bytes alto e baixo da saída de áudio e misturadas com os dois resistores (4k7 e 1M2) em uma proporção de 1: 256 (byte baixo e byte alto) - que gera a saída de áudio. Pode valer a pena experimentar outros pares de resistores, como o par de ohms 3k9 1M usado pelo Open Music Labs em seu StompBox.

Etapa 3: Software

O software é baseado nos esboços de electrosmash, e o exemplo incluído (pedalshield1284delay.ino) foi adaptado de seu esboço de atraso Uno. Alguns dos interruptores e LEDs foram movidos para outras portas distantes daquelas usadas pelo programador ISP (SCLK, MISO, MOSI e Reset), o buffer de atraso foi aumentado de 2.000 bytes para 12.000 bytes, e PortD foi definido como o saída para os dois sinais PWM. Mesmo com o aumento no buffer de atraso, o esboço ainda usa apenas cerca de 70% da 1284 RAM disponível.

Outros exemplos como o octaver ou tremolo do site electrosmash para o pedalSHIELD Uno podem ser adaptados para uso pelo Mega1284 alterando três seções no código:

(1) Alterar DDRB | = ((PWM_QTY << 1) | 0x02); para DDRD | = 0x30; // A alteração acima é a ÚNICA alteração de código essencial // ao portar do AtMega328 para o ATMega1284

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

para

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

(3) Alterar pinMode (FOOTSWITCH, INPUT_PULLUP); pinMode (TOGGLE, INPUT_PULLUP); pinMode (PUSHBUTTON_1, INPUT_PULLUP); pinMode (PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, SAÍDA)

para

pinMode (FOOTSWITCH, INPUT_PULLUP); pinMode (PUSHBUTTON_1, INPUT_PULLUP); pinMode (PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, SAÍDA);

Os botões 1 e 2 são usados em alguns dos esboços para aumentar ou diminuir um efeito. No exemplo de atraso, aumenta ou diminui o tempo de atraso. Quando o esboço é carregado pela primeira vez, ele começa com o efeito de atraso máximo. pressione o botão para baixo - leva cerca de 20 segundos para fazer a contagem regressiva até a posição de retardo desligado - e, em seguida, pressione e segure o botão para cima. Ouça como o efeito de varredura de segurar o botão muda o efeito para um phaser, chorus e flanging, bem como o atraso quando o botão é solto.

Para alterar o atraso para um efeito de eco (adicionar repetição), altere a linha:

DelayBuffer [DelayCounter] = ADC_high;

para

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

O pedal deve ser um interruptor de três pólos bidirecional e deve ser conectado conforme descrito no site da electrosmash.

Etapa 4: Links

Links
Links

(1) Electrosmash:

(2) Abra o Music Labs:

(3) Paul Gallagher:

(4) 1284 Bootloader:

(5) Microcontrolador ATmega1284 AVR de 8 bits:

ElectrosmashOpenlabs MusicPaul Gallagher1284 Bootloader 11284 Bootloader 2ATmega1284 Microcontrolador AVR de 8 bits

Etapa 5: Apêndice 1 Programando o ATMega1284P

Apêndice 1 Programando o ATMega1284P
Apêndice 1 Programando o ATMega1284P
Apêndice 1 Programando o ATMega1284P
Apêndice 1 Programando o ATMega1284P
Apêndice 1 Programando o ATMega1284P
Apêndice 1 Programando o ATMega1284P

Existem alguns sites que fornecem uma boa explicação sobre como programar o chip ATMega1284 para uso com o IDE do Arduino. O processo é essencialmente o seguinte: (1) Instale o fork Mark Pendrith do bootloader Maniacbug Mighty-1284p Core Optiboot no IDE do Arduino. (2) Conecte o ATMega1284 em uma placa de ensaio com sua configuração mínima que é um cristal de 16 MHz, 2 x 22 capacitores pF que aterram as duas extremidades do cristal, conecte os dois pinos de aterramento (pinos 11 e 31) e, em seguida, ao aterramento do Arduino Uno, conecte o Vcc e o AVcc juntos (pinos 10 e 30), e então ao Uno + 5v, então conecte o pino de reset 9 ao pino Uno D10, o pino MISO 7 ao UNO D12, o MOSI pino 8 para o Uno D11, e o pino SCLK 7 para o pino Uno D13. (3) Conecte o Uno ao IDE do Arduino e carregue o Arduino de exemplo de esboço como ISP no Uno. (4) Agora selecione a poderosa placa optiboot 1284 "maniac" e escolha a opção Burn bootloader. (5) Em seguida, selecione o esboço de retardo 1284 dado aqui como exemplo e carregue-o usando a opção Uno como programador no menu de esboços.

Os links que explicam o processo em mais detalhes são:

Usando o ATmega1284 com o Arduino IDEArduino Mightycore para grandes AVRs amigáveis à placa de ensaio Construindo um bootloader ATMega1284p prototypeArduino ATmega1284p

Etapa 6: Apêndice 2 Arduino Uno PedalSHIELD Variation

Apêndice 2 Variação do Arduino Uno PedalSHIELD
Apêndice 2 Variação do Arduino Uno PedalSHIELD
Apêndice 2 Variação do Arduino Uno PedalSHIELD
Apêndice 2 Variação do Arduino Uno PedalSHIELD
Apêndice 2 Variação do Arduino Uno PedalSHIELD
Apêndice 2 Variação do Arduino Uno PedalSHIELD

Schematic3, Breadboard3 e Photo3 fornecem detalhes do circuito baseado em Uno que precedeu a construção do AtMega1284.

Pode ser vantajoso ter um potenciômetro como um misturador para o sinal seco (igual à entrada) e úmido (após o processamento pelo MCU), e o Esquema 2, Placa de Pão 2 e Foto 2 fornece os detalhes do circuito de um circuito previamente construído que incorpora essa entrada para o mixer de saída. Veja também o StompBox do Open Music Labs para outra implementação de mixer usando quatro OpAmps

Recomendado: