Tabla de contenido:

Pedal de efectos de guitarra y música ATMega1284P: 6 pasos (con imágenes)
Pedal de efectos de guitarra y música ATMega1284P: 6 pasos (con imágenes)

Video: Pedal de efectos de guitarra y música ATMega1284P: 6 pasos (con imágenes)

Video: Pedal de efectos de guitarra y música ATMega1284P: 6 pasos (con imágenes)
Video: ¿Qué Pedal De Guitarra COMPRAR PRIMERO? | Órden De Importancia De Pedales De Guitarra Eléctrica 2024, Noviembre
Anonim
Pedal de efectos de guitarra y música ATMega1284P
Pedal de efectos de guitarra y música ATMega1284P

He portado el Arduino Uno ATMega328 Pedalshield (desarrollado por Electrosmash y en parte basado en el trabajo en el Open Music Lab) al ATMega1284P que tiene ocho veces más RAM que el Uno (16kB versus 2kB). Un beneficio adicional inesperado es que la construcción Mega1284 tiene un componente de ruido mucho menor, en la medida en que cuando comparo el Uno y el Mega1284 usando los mismos circuitos de soporte, no es descabellado describir el Uno como "ruidoso" y el Mega1284 como " tranquilo". La RAM más grande significa que se puede obtener un efecto de retardo mucho más largo, y eso se demuestra en el ejemplo de boceto de Arduino que he incluido. El ruido de la respiración de fondo cuando se usa el efecto Tremelo también está (casi) ausente con el ATMega1284.

Una comparación de tres microprocesadores Atmel AVR, a saber, el 328P que es el Uno, el 2560P que es el Mega2560 y el Mega1284 muestra que este último tiene la mayor cantidad de RAM de los tres:

Aspecto 328P 1284P 2560P RAM 2k 16k 8k Flash 32k 128k 256k EEPROM 1k 4k 4k UART 1 2 4 Pines IO 23 32 86 Interrupciones 2 3 8 Entrada analógica 6 8 16

Comencé incorporando el pedalSHIELD basado en Uno como en la especificación Electrosmash, pero no tenía el mismo RRO OpAmp especificado. Como resultado, terminé con un circuito que consideré que daba resultados aceptables. Los detalles de esta versión de Uno se dan en el apéndice 2.

Luego, este mismo circuito se transfirió al ATMega1284, sorprendentemente aparte de los cambios no esenciales, como asignar los interruptores y el LED a un puerto diferente, y asignar 12, 000 kB en lugar de 2, 000 kB de RAM para el búfer de retardo, solo se tuvo que hacer un cambio esencial en el código fuente, a saber, cambiar las salidas Timer1 / PWM OC1A y OC1B del puerto B en el Uno al puerto D (PD5 y PD4) en el ATMega1284.

Más tarde descubrí las excelentes modificaciones al circuito de electromash por Paul Gallagher y después de probar, este es el circuito que presentaré aquí, pero también con modificaciones: sustitución del Uno por Mega1284, usando un Texas Instruments TLC2272 como OpAmp, y Debido al excelente rendimiento de ruido del Mega1284, también pude aumentar el nivel de frecuencia del filtro de paso bajo.

Es importante tener en cuenta que, aunque se encuentran disponibles placas de desarrollo para ATMega1284 (Github: MCUdude MightyCore), es un ejercicio fácil comprar el chip desnudo (sin cargador de arranque) (compre la versión PDIP que es protoboard y strip-board amigable), luego cargue la bifurcación Mark Pendrith del gestor de arranque Maniacbug Mighty-1284p Core Optiboot o MCUdude Mightycore, usando un Uno como programador ISP, y luego cargue los bocetos nuevamente a través del Uno al AtMega1284. En el apéndice 1 se proporcionan detalles y enlaces para este proceso.

Me gustaría agradecer las tres fuentes más importantes de las que se puede obtener más información y daré enlaces a sus sitios web y al final de este artículo: Electrosmash, Open Music Labs y Tardate / Paul Gallagher

Paso 1: Lista de piezas

ATMega1284P (versión de paquete PDIP de 40 pines) Arduino Uno R3 (utilizado como ISP para transferir el cargador de arranque y bocetos al ATMega1284) OpAmp TLC2272 (o RRIO similar (entrada y salida de riel a riel) OpAmp como MCP6002, LMC6482, TL972) LED rojo Cristal de 16 MHz 2 condensadores de 27 pF 5 condensadores de 6n8 condensador de 270 pF 4 condensadores de 100n 2 condensadores electrolíticos de 10 uF 16v 6 resistencias de 4k7 resistor de 100k 2 resistencias de 1M resistor de 470 ohmios resistor de 1M2 potenciómetro de 100k 3 interruptores de botón (uno de ellos deben ser sustituidos por un interruptor de pie de 3 polos y 2 vías si la caja de efectos se va a utilizar para trabajos en vivo)

Paso 2: construcción

Construcción
Construcción
Construcción
Construcción
Construcción
Construcción

El esquema 1 muestra el circuito utilizado y la placa de pruebas 1 es su representación física (Fritzing 1) y la foto 1 es el circuito de placa de pruebas real en funcionamiento. Puede ser ventajoso tener un potenciómetro como mezclador para la señal seca (igual a la entrada) y húmeda (después del procesamiento por la MCU), y el Esquema 2, Placa de pruebas 2 y Foto 2 (enumerados en el Apéndice 2), da la Detalles del circuito de un circuito construido previamente que incorpora tal mezclador de entrada a salida. También mire el StompBox de Open Music Labs para ver otra implementación de mezclador usando cuatro OpAmps.

Etapas de entrada y salida de OpAmp: Es importante que se utilice un OpAmp RRO o preferiblemente un RRIO debido a la gran oscilación de voltaje requerida en la salida de OpAmp al ADC del ATMega1284. La lista de piezas contiene varios tipos de OpAmp alternativos. El potenciómetro de 100k se usa para ajustar la ganancia de entrada a un nivel justo por debajo de cualquier distorsión, y también se puede usar para ajustar la sensibilidad de entrada para una fuente de entrada que no sea una guitarra, como un reproductor de música. La etapa de salida OpAmp tiene un filtro RC de orden superior para eliminar el ruido MCU generado digitalmente del flujo de audio.

Etapa ADC: El ADC está configurado para leer a través de una interrupción todo el tiempo. Tenga en cuenta que se debe conectar un capacitor de 100nF entre el pin AREF del ATMega1284 y tierra para reducir el ruido, ya que se usa una fuente de Vcc interna como voltaje de referencia; ¡NO conecte el pin AREF a +5 voltios directamente!

Etapa DAC PWM: como el ATMega1284 no tiene su propio DAC, las formas de onda de audio de salida se generan utilizando una modulación de ancho de pulso de un filtro RC. Las dos salidas PWM en PD4 y PD5 se establecen como los bytes alto y bajo de la salida de audio y se mezclan con las dos resistencias (4k7 y 1M2) en una proporción de 1: 256 (byte bajo y byte alto), lo que genera la salida de audio.. Puede valer la pena experimentar con otros pares de resistencias, como el par de 3k9 1M ohmios utilizado por Open Music Labs en su StompBox.

Paso 3: software

El software se basa en los bocetos de electrosmash, y el ejemplo incluido (pedalshield1284delay.ino), ha sido adaptado de su boceto de delay Uno. Algunos de los interruptores y LED se han movido a otros puertos lejos de los utilizados por el programador ISP (SCLK, MISO, MOSI y Reset), el búfer de retardo se ha aumentado de 2000 bytes a 12000 bytes y PortD se ha establecido como el salida para las dos señales PWM. Incluso con el aumento en el búfer de retardo, el boceto todavía usa solo alrededor del 70% de la RAM 1284 disponible.

Otros ejemplos como el octaver o el trémolo del sitio web de electrosmash para el pedal SHIELD Uno se pueden adaptar para su uso por el Mega1284 cambiando tres secciones en el código:

(1) Cambiar DDRB | = ((PWM_QTY << 1) | 0x02); a DDRD | = 0x30; // El cambio anterior es el ÚNICO cambio de código esencial // al realizar la portabilidad del AtMega328 al ATMega1284

(2) Cambiar #define LED 13 #define PUSHWITCH 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) Cambiar pinMode (FOOTSWITCH, INPUT_PULLUP); pinMode (TOGGLE, INPUT_PULLUP); pinMode (PUSHBUTTON_1, INPUT_PULLUP); pinMode (PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, SALIDA)

para

pinMode (INTERRUPTOR DE PEDAL, INPUT_PULLUP); pinMode (PUSHBUTTON_1, INPUT_PULLUP); pinMode (PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, SALIDA);

Los botones pulsadores 1 y 2 se utilizan en algunos de los bocetos para aumentar o disminuir un efecto. En el ejemplo de retardo, aumenta o disminuye el tiempo de retardo. Cuando el boceto se carga por primera vez, comienza con el efecto de retardo máximo. presione el botón hacia abajo (tarda unos 20 segundos en realizar la cuenta regresiva hasta la posición de retardo de apagado) y, a continuación, mantenga presionado el botón hacia arriba. Escuche cómo el efecto de barrido de mantener presionado el botón cambia el efecto a un phaser, chorus y flanging, así como el retardo cuando se suelta el botón.

Para cambiar el retardo a un efecto de eco (agregar repetición) cambie la línea:

DelayBuffer [DelayCounter] = ADC_high;

para

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

El interruptor de pie debe ser un interruptor de tres polos y dos vías y debe conectarse como se describe en el sitio web de electrosmash.

Paso 4: enlaces

Enlaces
Enlaces

(1) Electromash:

(2) Open Music Labs:

(3) Paul Gallagher:

(4) Cargador de arranque 1284:

(5) Microcontrolador AVR ATmega1284 de 8 bits:

Electrosmash Openlabs MusicPaul Gallagher1284 Bootloader 11284 Bootloader 2ATmega1284 8bit AVR Microcontrolador

Paso 5: Apéndice 1 Programación del ATMega1284P

Apéndice 1 Programación del ATMega1284P
Apéndice 1 Programación del ATMega1284P
Apéndice 1 Programación del ATMega1284P
Apéndice 1 Programación del ATMega1284P
Apéndice 1 Programación del ATMega1284P
Apéndice 1 Programación del ATMega1284P

Hay algunos sitios web que ofrecen una buena explicación sobre cómo programar el chip ATMega1284 para usar con el IDE de Arduino. El proceso es esencialmente el siguiente: (1) Instale la bifurcación Mark Pendrith del gestor de arranque Maniacbug Mighty-1284p Core Optiboot en el IDE de Arduino. (2) Conecte el ATMega1284 en una placa con su configuración mínima que es un cristal de 16 MHz, 2 condensadores de 22 pF que conecta a tierra los dos extremos del cristal, conecte los dos pines de tierra juntos (pines 11 y 31), y luego a la tierra de Arduino Uno, conecte el Vcc y AVcc juntos (pines 10 y 30), y luego al Uno + 5v, luego conecte el pin de reinicio 9 al pin Uno D10, el pin 7 de MISO al UNO D12, el MOSI el pin 8 al Uno D11 y el pin 7 de SCLK al pin Uno D13. (3) Conecte el Uno al Arduino IDE y cargue el ejemplo de boceto Arduino como ISP en el Uno. (4) Ahora seleccione la poderosa placa optiboot 1284 "maniac" y elija la opción Grabar gestor de arranque. (5) Luego seleccione el boceto de retardo 1284 que se da aquí como ejemplo y cárguelo usando la opción Use Uno como programador en el menú de bocetos.

Los enlaces que explican el proceso con más detalle son:

Usando el ATmega1284 con el Arduino IDEArduino Mightycore para AVRs amigables con la placa de pruebas grandes Construyendo un prototipo ATMega1284p Arduino ATmega1284p bootloader

Paso 6: Apéndice 2 Variación de Arduino Uno PedalSHIELD

Apéndice 2 Variación de Arduino Uno PedalSHIELD
Apéndice 2 Variación de Arduino Uno PedalSHIELD
Apéndice 2 Variación de Arduino Uno PedalSHIELD
Apéndice 2 Variación de Arduino Uno PedalSHIELD
Apéndice 2 Variación de Arduino Uno PedalSHIELD
Apéndice 2 Variación de Arduino Uno PedalSHIELD

Schematic3, Breadboard3 y Photo3 brindan detalles del circuito basado en Uno que precedió a la construcción de AtMega1284.

Puede ser ventajoso tener un potenciómetro como mezclador para la señal seca (igual a la entrada) y húmeda (después del procesamiento por la MCU), y el Esquema 2, Placa de pruebas 2 y Foto 2 proporciona los detalles del circuito de un circuito previamente construido. que incorpora un mezclador de entrada a salida de este tipo. También mire el StompBox de Open Music Labs para otra implementación de mezclador usando cuatro OpAmps

Recomendado: