Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola, alguien a probado a grabar audio con algun PIC ???? Ando en busca de informacion pero no hay mucha....... en fin a ver si alguien se ha atrevido alguna vez con este tema, saludos.
yo he encontrado un projecto de un pic que reproduce musica en wav mediante un traductor de wav al pic. la calidad es de un byte
Hola Norte
No he probado, pero me hice la misma pregunta que tú. Pensé en usar un 16F876 con una memoria 25AA256. Los principales problemas que veo con este pic son el tiempo de conversión AD y el tiempo de escritura en la EEPROM externa, que no sé si en conjunto permitirían una calidad aceptable de sonido... debido, entre otras cosas a que no muestrearían bien las componentes de mayor frecuencia... (vamos... es lo que temo)... cuestión de probar...
Quizá lo acertado sería emplear un DSPic que precisamente está pensado para tratar señales junto con una RAM estática externa, que siempre será más rápida que una EEPROM. Una vez almacenado el sonido en la RAM, podría volcarse a una EEPROM para conservarlo, pero la lentitud de escritura de la EEPROM no tendría ningún impacto en la calidad del sonido.
Saludos
si que se puede mañana os cuelgo el esquema de una revista de resistor.
Buenas!
Dejando de lado cuestiones matematicas complejas, grabar "audio" como tal es perfectamente posible (y sencillo) con un PIC.
Lo simplificaremos y supondremos que no quieres grabar canciones estilo mozart (si son de operacion truño, da igual lo que grabes... peor no va a sonar)
Simplificaremos tambien grabando el audio en mono. Y simplificaremos aun mas usando el conversor AD del PIC (en lugar de montarnos uno externo).
Asi las cosas usamos unas 8000 muestras por segundo (o sea, que cada segundo hacemos 8000 conversiones con el ADC), que seran suficientes para grabar voz humana "que se entienda", y usamos un unico byte por cada muestra (como el ADC del PIC tiene mas resolucion, lo que hacemos es olvidarnos de los bits de mas... eso si, tienen que ser los MENOS significativos).
Entonces tenemos un total de 8000 muestras/segundo * 1 byte/muestra = 8000 bytes/segundo.
Las EEPROM comerciales tardan 10 ms cada vez que graban nuevos datos, lo que nos da unas 100 grabaciones por segundo. Afortunadamente la mayoria permiten escribir varios bytes a la vez, hasta un maximo llamado "pagina". Si usamos una memoria con 128 bytes por pagina (como las 24LC512), nos da que en cada operacion podemos escribir una pagina completa, es decir, 128 bytes, o 12800 bytes cada segundo. Como hace falta escribir 8000 bytes por segundo para grabar el audio, con una memoria asi nos es suficiente.
Hay que adaptar la señal de audio a grabar al pic, a traves de un amplificador y un filtro paso bajo de 4KHz, y centrar el offset a la mitad del rango del ADC, dado que el pic solo trabaja con voltajes positivos. Tambien hay que tener en cuenta que el ADC permite configurar el rango, y que este rango debera ser un poco mayor que el voltaje pico a pico maximo de la señal (normalmente suele ser de 1 voltio).
Una vez que tenemos conectada la entrada de señal y la memoria EEPROM al PIC, el algoritmo es bastante sencillo:
1-Inicializar el sistema
2-Muestrear continuamente desde el ADC a un buffer, usando un temporizador fijado a 200 us
3-Cuando el buffer tenga 128 bytes, transferir los datos a la EEPROM externa y grabarlos.
Los pasos 2 y 3 deberian ser dos procesos concurrentes y separados, gestionados a traves de una interrupcion (lo mejor es poner el muestreo en la interrupcion de un temporizador, y dejar el proceso 3 corriendo continuamente)
Esa es la idea basica... los detalles mas especificos dependeran de lo que quieras hacer en concreto y si quieres hacer mas cosas con el pic mientras graba, etc...
Bueno, espero que te haya servido de algo...
Un saludo