Notas musicales MIDI, AVR Assembler

Notas Musicales tipo “MIDI” con Microncontrolador AVR de ATMEL     (Lenguaje ensamblador, “Assembler”).



NOTA: Para poder utilizar la información que se proporciona en este Post, se requieren conocimientos básicos de programación de Microcontroladores AVR en lenguaje ensamblador (Assembler).

En este post les comparto el código para poder reproducir notas musicales tipo “MIDI”, de manera fácil y rápida, utilizando cualquier microcontrolador AVR de Atmel (ATMega8, ATMega328, ATMega8515, ATTiny2313, ATTiny85, ATTiny45, ATTiny12, ATTiny13, etc....), a través de alguna de sus salidas digitales (link de descarga al final de este post).

El principio de funcionamiento es la utilización de retardos para generar una señal cuadrada de la frecuencia correspondiente a cada nota musical.


Este tipo de tonos se utilizan comúnmente con pequeños altavoces piezoeléctricos (como los que tienen las tarjetas musicales navideñas), y pueden ser útiles para agregar tonos que indiquen el estado de algún proceso, en cualquier proyecto que utilice Microcontroladores AVR programados en lenguaje ensamblador. La siguiente imagen muestra dos tipos de altavoz piezoeléctrico:


Las Notas disponibles en el código que se proporciona en este Post son las siguientes:

DO_3           = 261,626 Hz
RE_3            = 293,665 Hz
MI_3            = 329,628 Hz
FA_3            = 349,228 Hz
SOL_3            = 391,995 Hz
LA_3            = 440,000 Hz
SI_3            = 493,883 Hz
DO_4            = 523,251 Hz
RE_4            = 587,330 Hz
MI_4            = 659,255 Hz
FA_4            = 698,456 Hz
SOL_4            = 783,991 Hz
LA_4            = 880,000 Hz
SI_4            = 987,767 Hz
DO_5            = 1046,50 Hz

Los retardos para cada una de las notas anteriores ya se encuentran ajustados, y solo basta con utilizar el comando “RCALL” para reproducir la Nota que se desee.

Las frecuencias están calculadas para funcionar con una velocidad de operación de 4MHz del microcontrolador.

El tiempo de reproducción de todas las notas, es de 1/3 segundos (una tercera parte de un segundo). Por lo que si se desea reproducir un mismo tono, por ejemplo, por un lapso de un segundo, se debe ejecutar la misma nota 3 veces seguidas.
Ejemplo:

RCALL SOL_3
RCALL DO_3
RCALL FA_3      ; Nota FA x 3 = un segundo
RCALL FA_3
RCALL FA_3
RCALL SILENCIO_1    ;SILENCIO x 3 = un segundo
RCALL SILENCIO_1
RCALL SILENCIO_1
RCALL SOL_3
RCALL DO_3

El diagrama de conexión del circuito para reproducir las notas musicales, puede ser utilizando un simple altavoz piezoelectrico. La conexión debe ser como se muestra en la siguiente imagen: 


También pueden ser utilizadas unas bocinas de PC, para lo cual se debe agregar un capacitor en serie para evitar que pase el voltaje directo DC. A continuación se muestra el diagrama de conexión para utilizarse con bocinas de PC:



A continuación se muestra un video del circuito armado y funcionando, con el programa que se proporciona en este post, utilizando unas bocinas de PC:


Finalmente se muestra una imagen con el circuito utilizando un altavoz piezoeléctrico.


Espero esta información les sea de utilidad. A continuación encontrarás el link de descarga con el código de las Notas Musicales y el código del "programa ejemplo" que aparece en el video, ambos en lenguaje ensamblador (assembler):


Descargar código Notas MIDI.
Tamaño:  3KB
Tipo:  Rar







 ---------------------------------------------------------------------------------------------------------------
Palabras clave: Assembler code, código ensamblador, lenguaje ensamblador, subrutina, librería, avr lib, atmel, microcontrolador AVR, MCU,  ATMega 8, ATMega 328, ATMega 8515,  ATTiny 2313,  ATTiny 85, ATTiny 45, ATTiny 25, ATTiny 15, ATTiny 12, ATTiny 13, como reproducir MIDI, play MIDI, sounds, audio, notas musicales, música, music, melodías, songs, programar, how to?, programing, rcall, code source, código fuente, reproducir sonidos MIDI.

Filtros Activos Pasa-Bajos para Subwoofer

Filtros Activos Pasa-Bajos para Subwoofer.


Un filtro paso bajo corresponde a un filtro electrónico caracterizado por permitir el paso de las frecuencias más bajas y atenuar las frecuencias más altas; así todas las frecuencias se pueden presentar a la entrada, pero a la salida solo estarán presentes las que permita pasar el filtro.

Existen 2 tipos de filtros, Filtros Activos (Utilizan amplificadores operacionales y necesitan de una fuente de alimentación, un ejemplo son la mayoría de las consolas de ecualización de audio) y Filtros Pasivos (Utilizan solamente resistencias, capacitores y bobinas, un ejemplo son los crossover para bocinas).

En este post nos enfocaremos en los filtros Activos del tipo “Pasa-Bajos” también llamados “Pasa-Bajas”, para ser utilizados en amplificadores de audio destinados a alimentar Subwoofers.

Lo primero que hay que saber es que las diferentes configuraciones que existen para todos los tipos de filtros activos, ya se encuentran establecidas y comprobadas, por lo cual no se necesita inventar nada nuevo.

Cada configuración (circuito) que veremos en este post, se encuentra fundamentada en los “Filtros de Sallen Key” también llamados “Células de Sallen Key”, las cuales son configuraciones (circuitos) ya definidos y que pueden ser ajustados mediante la aplicación de una formula especifica. (Si deseas leer más sobre los filtros de Sallen-Key da un click aquí)

También hay que saber que para cada tipo de filtro (pasa-bajas, pasa-medios, pasa-altas) existen algunas variantes que se denominan “orden”.  De esta forma para los filtros pasa-bajas tenemos filtros de Primero, Segundo y Tercer Orden.

La diferencia entre los distintos “ordenes” de los filtros, es la eficiencia con que realizan la discriminación de frecuencias. Observe la siguiente gráfica, en ella se nota claramente el corte de frecuencias para cada orden del filtro.


Como puede observarse  en la gráfica anterior, entre mayor sea el orden del filtro, mas definido es el corte de frecuencias. Usted puede elegir el orden del filtro que mejor se ajuste a sus requerimientos de respuesta en frecuencia, tamaño del circuito y presupuesto disponible.

A continuación se mostrarán los diagramas de los distintos filtros pasa-bajos, también se mostrará la formula aplicable a cada circuito para que usted pueda calcular su propio filtro. Y si lo desea también se incluye una tabla con los valores ya calculados para cada frecuencia desde 80Hz hasta 200Hz.

NOTA 1: Se recomienda utilizar el Amplificador Operacional KIA4558 ya que este es un amplificador de bajo ruido (LNA) ampliamente utilizado en equipos de audio comerciales de buena calidad, sin embargo puede utilizar algún otro como el LM741 ó el TL082, etc…

NOTA 2: Todos los circuitos que se muestran en este post utilizan voltaje simétrico (+/-V). Se recomienda utilizar  +/-9VCD ó   +/-12VCD,  aunque también pueden utilizarse otros voltajes dependiendo de las especificación del Amplificador operacional que desee utilizar.

**** FILTRO PASA-BAJAS DE “PRIMER ORDEN”. ****


El circuito de la imagen anterior corresponde a un filtro activo pasa-bajos de “primer orden”, su fórmula también se observa en la misma imagen. Los términos de la formula son los siguientes:

fc = Frecuencia de corte (Todas las frecuencias debajo de la Frecuencia de corte podrán pasar. Las frecuencias mayores no pasarán)
R = Valor de las resistencias R1 y R2
C = Valor del capacitor C1

Para aplicar la fórmula:

1.- Primero debe establecer un valor de frecuencia de corte.
2.- Posteriormente despeje “R”
3.- A continuación defina un valor comercial para “C” (por ejemplo 100nF), se recomienda utilizar valores menores a 470uF.
4.- Después sustituya los valores anteriores.
5.- Finalmente se resuelve la ecuación para encontrar el valor de “R”.
6.- Comúnmente se obtiene un valor NO COMERCIAL de “R”, por lo que se debe redondear al valor comercial más próximo. Tome en cuenta que en ocasiones es necesario colocar 2 resistencias en serie para obtener un valor más cercano al valor calculado de “R”. Consulte la tabla que se encuentra al final de este post, para seleccionar el valor comercial de resistencias más cercano al valor obtenido en la formula.

A continuación se muestra un ejemplo de las operaciones matemáticas que se describieron en los puntos anteriores:


Listo, ahora ya tiene los valores necesarios (“R” y “C”) para armar su circuito.

Si quiere evitar la resolución de la formula antes mencionada, a continuación se muestra una tabla con valores ya calculados para diferentes frecuencias de corte (para mayor precisión, en algunos casos se requiere colocar en serie dos resistencias como se muestra en la siguiente tabla):


**** FILTRO PASA-BAJAS DE “SEGUNDO ORDEN”. ****

En construcción...

**** FILTRO PASA-BAJAS DE “TERCER ORDEN”. ****

En construcción...











-------------------------------------------------------------------------------------------------------------
Palabras clave: opam, op-am, opamp, op-amp, 4558, LM741, 741, TL081, TL082, amplificador operacional, preamplificador, pre-amplificador, pre-amplifier, filter, filtro, subwoofer, woofer, bufer, 12 pulgadas, 12", bajos, graves, audio, car audio, diseño de audio, diagrama, como hacer?, como calcular?, formular, paso a paso, para dummies, audio design, how to?, DIY, casero, probado, ecuations, step by step, homemade.