sábado, 9 de julio de 2016

WAV PLAYER AVR


WAV PLAYER AVR
Reproductor de archivos WAVE  (LPCM) 

Reproductor  de archivos WAVE LPCM utilizando microcontrolador AVR (ATmega328P), tarjeta SD de 16GB, 2GB y micro SD de 16GB, este reproductor soporta archivos WAVE con muestras de 8 bits, mono/estéreo, frecuencia de muestreo máxima de 96 kHz.

El microcontrolador AVR trabaja con una frecuencia de reloj de 16Mhz y se encarga de leer la tarjeta SD en donde se encuentran almacenados los archivos WAVE (.wav). Se usaron dos temporizadores del ATmega328P con los cuales se implementa un DAC mediante señales PWM y un filtro pasa bajos de primer orden,  el microcontrolador extrae los datos de la SD y los envía al respectivo temporizador.

Se puede producir señales de audio usando 2 timer del AVR funcionando como comparador. Haciendo uso de modo modulación por ancho de pulso (PWM) en combinación con un filtro pasa bajos, la salida del comparador puede ser usado efectivamente como un DAC para producir señal analógica de audio. Si limitamos la señal analógica modulada dentro de frecuencias comprendidas en el rango que por los humanos es reconocido como audio. Aproximadamente 20Hz – 20KHz, obtendremos sonido.

 Circuito
 SDC

Existen en internet varias versiones de reproductores WAVE, los hay con PIC24, dsPIC30F, AVR, ARM, etc. El principio es el mismo, mediante los temporizadores y filtro pasa bajos se implementa un DAC.
Este reproductor esta basado en la librería de ELM-CHAN Petit FatFs R0.02a , las cuales soportan FAT12/16/32, las memorias de 16GB que se usaron aquí están formateadas en FAT32.


El entorno de desarrollo para el atmega328 usado en este proyecto es: AVR studio 4.19 y para la simulación PROTEUS 7.9, usar MMCIMG para crear la imagen que contiene el archivo .wav, esto con fines de simulación en proteus, tambien pueden usar este archivo .mmc que contiene 2 archivos wav, 1 .txt y 1 .csv. Archivo (.mmc) para la SD/MMC de proteus
Archivos WAVE

WAV (o WAVE), es un formato de audio digital normalmente sin compresión de datos propiedad de Microsoft y de IBM que se utiliza para almacenar sonidos en el PC, admite archivos mono y estéreo a diversas resoluciones y velocidades de muestreo, su extensión es [.wav].




Wav File Header

Es una variante del formato RIFF (Resource Interchange File Format, formato de fichero para intercambio de recursos), método para almacenamiento en "paquetes.
A pesar de que el formato WAV es compatible con casi cualquier códec de audio, se utiliza principalmente con el formato PCM (no comprimido) y, al no tener pérdida de calidad, es adecuado para uso profesional. Para tener calidad CD de audio se necesita que el sonido se grabe a 44100 Hz y a 16 bits. Por cada minuto de grabación de sonido se consumen unos 10 megabytes de espacio en disco. En la cabecera del fichero se indica la longitud del mismo con un número entero de 32 bits, lo que limita el tamaño del fichero.
En Internet no es popular, fundamentalmente porque los archivos sin compresión son muy grandes. Son más frecuentes los formatos comprimidos con pérdidas, como el MP3 o el Ogg Vorbis
 
Simulación Proteus 7.9

 
Señal PWM


  
MP3 to WAV (8 bits)
  
WinImage (wimg

Cuadro comparativo entre Hardware/software PWM, R2R y DAC externo.

Código fuente pff.h (Indicar las funciones y formatos necesarios )
Código fuente mm.c (Indicar en que pin de cual puerto va conectado CS, revisar tambien spi.c)
Código fuente lcd.h (configurar pines para el display ) 

Código fuente (Descargar)
Esquema del circuito (Eagle)
Esquema del circuito en .pdf
Archivo (.mmc) para simular SD con proteus. (Adentro vienen 2 pistas en formato WAV y 2 archivos de txt... Abrir con MMCIMG)
Programa para formatear SD (FREE), micro SD, etc.
Programa para convertir MP3 en WAV (FREE)
AVR calculator
Documento para comprender el PWM con timers del micrAVR
Documento sobre PWM
Programa para crear y ver la imagen que usa proteus para simular (MMCIMG)
Programa para ver los archivos WAV en hexadecimal
Archivo .wav 48Khz, 8 bits, stereo
 

 
Actualización: a 4 botones: stop, play/pause, back, next.
Al encender aparece en estado stop... en este estado el MCU permanece rotando un mensaje en la segunda fila del display. Al presionar play/pause cambia a estado play, si de nuevo presionan play/pause cambia a estado pause.
En la esquina superior derecha del display se muestra   (  (Archivo .wav actual) / (total archivos en folder).
 

Esquema en Eagle

Simulación Proteus

  
Fuses en AVRISPmkll


 

2 comentarios:

  1. hola, necesito subir un archivo .wav en la SD de proteus pero solo me permite .mmc lo que pasa es que quiero reproducir sonido, sabes como hacer o a que lo tengo que convertir para que me deje

    ResponderEliminar