TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: pajaro en 10 de Junio de 2008, 06:55:33

Título: Grabar voz & PIC16F877A
Publicado por: pajaro en 10 de Junio de 2008, 06:55:33
hola,

Me gustaría hacer un pequeño proyecto con un chip, "ISD5116" el cual se puede conectar mediante I2C con un PIC16F877A, este chip puede grabar de 8 a 16 minutos de voz, aunque en realidad hace la función de record/play back.
Este chip tiene la posibilidad de conexión I2C, en modo estándar y en modo rápido.
Posee entrada de micrófono con control de ganancia regulable, además posee dos entradas, una entrada analógica y otra de línea auxiliar.
Respecto a las salidas, posee una salida analógica de línea, salida para altavoz, y una salida auxiliar.
Posee almacenamiento digital, y el audio es de alta calidad, su consumo energético es bajo, este chip es usado para aplicaciones con celulares.

En principio quería programarlo con el PIC Simulator IDE, es decir en Basic, algún voluntario me da un empujoncito de orientación.

Me gustaría que alguien me pudiese ayudar, leyendo el data he encontrado como se programa (pagina 37)

en la siguiente dirección pueden bajar el data (ocupa 600kbit)

http://www.datasheetcatalog.org/datasheets/700/148344_DS.pdf


Agradecería si alguien, del foro pudiera orientarme un poco, El esquema eléctrico lo estoy montando con isis, si alguien se anima y lo monta con otro, que de noticias.



Un cordial saludo, amigos.
Título: Re: Grabar voz & PIC16F877A
Publicado por: Javicho en 10 de Junio de 2008, 10:42:03
Hola amigo:

Yo tengo un ISD5116 pero nunca lo probé con tantas cosas que tengo que hacer no me da tiempo, pero seguiré muy de cerca este hilo, derepente termino montando tambien el ckto.

Javicho.
Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 08 de Septiembre de 2008, 20:27:14
hola amigo
aun conservas el ISD de donde lo sacaste, lo pediste por internet?

sabes el precio de la unidad?

un saludo

Título: Re: Grabar voz & PIC16F877A
Publicado por: facundo_10 en 08 de Septiembre de 2008, 20:39:20
Pajaro, me encantaria ayudarte, decime mas o menos que es lo que queres hacer con el ISD.. Sabes algo del protocolo I2C de PSI ?

Un saludo !!   :-)
Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 08 de Septiembre de 2008, 21:13:31
hola facundo
 
el ISD5116 es un chip code de sonido que trabaja en i2c yo lo queria para poder grabar pequeños mensajes y poder reproducirlos en un dia y hora determinados, en principio lo puse esclavo con el pic16F877A, queria simularlo con proteus pero ese soft no viene el modelo y generar me el modelo yo, mediante estructuras mas basicas como puertas u otros componente logicos pos se me hace grande ademas no creo que en el data los fabricante tengan el esquema completo.

un saludo
Título: Re: Grabar voz & PIC16F877A
Publicado por: navaismo en 08 de Septiembre de 2008, 21:31:36
Puedes checar para darte una idea, aunque este ISD no trabaja con I2C el reloj Parlante de LordLafebre el cual esta en su pagina web. www.freewebs.com/glafebre. Ahi le encontraras y te digo solo par dar una idea.

Te recomiendo que te leas el data de tu ISD para saber sus comandos de grabacion y reproduccion.

Saludos
Título: Re: Grabar voz & PIC16F877A
Publicado por: facundo_10 en 08 de Septiembre de 2008, 22:48:00
Segun recuerdo a los ISD, se le puede grabar x cantidad de mensajes y ir activandolos por medio de pulsadores, quizas si necesitas 4 o menos mensajes, los puedes grabar y conectar la parte del pulsadores al PIC y activar x puerto para que suene el mensaje, asi te ahorras el I2C.

 :-)
Un saludo!!
Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 09 de Septiembre de 2008, 11:24:23
hola amigo
luego pongo un esquema del ISD51xx  haber como dices, ya colgare el modelo en proteus.

hasta luego..
Título: Re: Grabar voz & PIC16F877A
Publicado por: Javicho en 09 de Septiembre de 2008, 13:01:42
hola amigo
aun conservas el ISD de donde lo sacaste, lo pediste por internet?

sabes el precio de la unidad?

un saludo



Lo compré en una tienda de USA via un tio que reside allá, no recuerdo el precio por ahi debe estar la factura pero en la red seguro encontraras el precio mas actualizado y aun tengo el chip. Que aplicación le piensas dar? solo por hobbie?

Javicho.
Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 10 de Septiembre de 2008, 09:15:42
hola javicho

no es hobbie, es un modulo de un proyecto

la utilidad que le voy a dar es:poder grabar pequeños mensajes y  que se puedan reproducir en un dia y hora determinados.
lo que no se si seria posible guardalos en una mmc en vez de  en su memoria interna.

un saludo.
Título: Re: Grabar voz & PIC16F877A
Publicado por: facundo_10 en 10 de Septiembre de 2008, 19:48:36
Hola entonces para eso no necesitas de la ISD  :D :D. Consigues un microfono lo conectas al PIC, grabas , lo escribes en la MMC de la dire X a la dire Y. Cuando quieres que lo lea, conectas un DAC al pic, y lees de la dire X a la Y y lo mandas al DAC.

Asi sin usar el ISD, puedes grabar sonidos en la MMC y reproducirlos.

Un saudo!
Título: Re: Grabar voz & PIC16F877A
Publicado por: LordLafebre en 10 de Septiembre de 2008, 19:58:44
la utilidad que le voy a dar es:poder grabar pequeños mensajes y  que se puedan reproducir en un dia y hora determinados.
lo que no se si seria posible guardalos en una mmc en vez de  en su memoria interna.

Hola:

Si piensas almacenarlo en una MMC entonces para que usas un ISD?

Esa es la finción de ese chip, almacenar audio, si lo piensas almacenar en otro tipo de memoria entonces pierdes el tiempo con el ISD.

Yo he usado el ISD25120, Navaismo te lo comentó anteriormente, aunque este es paralelo, se puede segmentar la memoria y almacenar hasta 64 mensajes siempre y cuando no exceda el máximo de tiempo que es 120 segundos.

Piensa bien, ya que si tienes pensado almacenar el audio en otro dispositivo no te sirve de nada el ISD y lo estás desperdiciando.

PD: Disculpas, ya te dijo eso Facundo, no leí del todo su mensaje  :?
Título: Re: Grabar voz & PIC16F877A
Publicado por: facundo_10 en 10 de Septiembre de 2008, 20:08:52
Jajaja   :D :D :D, creo que estamos sincronizados, posteamos casi al mismo tiempo, pero creo que GIO se explico algo mejor. Espero que hayas entendido pajaro, no se si me exprese bien del todo..

Un saludo amigo!!  :mrgreen: :mrgreen:
Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 10 de Septiembre de 2008, 20:35:17
hola a todos,
muy buena la pregunta, las razones son varias, ese chip el ISD5116 esta preparado para poder grabar un mensaje, y leerlo, ademas viene ya preparado con un contol de ganancia, y los pertinentes filtros, la idea era colocarle la mmc en paraleo es decir que pudiera grabar en el isd o en el mmc.

si lo hiciera con el ADC del pic necesitaria posiblemente filtros para el microfono y un decoder para la grabacion despues necesitaria de una herramienta para que me produjera un olgaritmo de compresion  un corector de errores y otras muchas cosas que ahora no me pasan por la cabeza,..
De todas formas amigos foreros, estoy  abierto a propuestas,
La parte de la mmc, la grabacion de la mmc aun esta verde para mi lei muchos post y link de internet ,y  llevo tiempo pegandome con el PSI y el Proteus..

Quien dijo eso de... contra mas aprendo menos se..o algo parecido.

un saludo.
Título: Re: Grabar voz & PIC16F877A
Publicado por: LordLafebre en 10 de Septiembre de 2008, 20:58:04
Hola:

Volvemos a lo mismo, si los datos del audio almacenas en la MMC, pues no es el ISD el que los va a reproducir, sino el PIC, salvo que ese ISD tenga alguna opción para expandir memoria o algo parecido.
Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 10 de Septiembre de 2008, 21:40:49
hola Lord
la idea es que sea la mmc la que de apollo al isd, no al reves.
ya que la mmc pude estar insertada o no, igual que pasa en los moviles.

no se si se trasmitir mi idea, o cometo algun error.

un saludo.
Título: Re: Grabar voz & PIC16F877A
Publicado por: LordLafebre en 10 de Septiembre de 2008, 21:54:23
Hola:

Bueno, no te entiendo la verdad, quisiera que me respondas algo, veo en el datasheet, que el microfono va conectado directamente a los pines 16 y 17 que son mic+ y mic- respectivamente, para ello sirve un microfono electret y no hace falta amplificación, ahora, si grabas algo como un "HOLA", entonces, ese audio se graba directamente en la memoria del ISD, pues es él el que está haciendo el proceso, ahora, mis preguntas de hecho son dos, como harías para grabar el audio en la MMC? si llegas a hacer esta parte, acaso piensas reproducir los datos de la MMC desde el mismo ISD? porque según veo, el ISD reproduce el audio grabado en sus posiciones de memoria.

Para mí, que estás pensando hacer algo que no puedes, o te agradecería si respondes mis preguntas ya que no entiendo que es y como lo quieres hacer.
Título: Re: Grabar voz & PIC16F877A
Publicado por: LordLafebre en 10 de Septiembre de 2008, 22:15:08
Hola:

Bueno, estoy en lo correcto, los datos se graban directamente en la memoria del ISD y se leen directamente de la memoria del ISD:

Storing data in the memory is accomplished by accepting data one byte at a time and issuing an
acknowledge. If data is coming in faster than it can be written, the chip issues an acknowledge to the host
microcontroller, but holds SCL LOW until it is ready to accept more data.

The read mode is the opposite of the write mode. Data is read into one of two 64-bit registers from the
array and serially sent to the I2C interface.

Como ves tiene 64 registros en los que se puede almacenar el audio, igual que el ISD25120 que ya lo he usado, por eso, no puedes usar la MMC para almacenar audio y reproducirlo desde el ISD, si almacenas audio en la MMC pues tendrás que leerlo y reproducirlo con el PIC, para mayor información, consulta la hoja de datos del ISD5116 en la página 27.
Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 10 de Septiembre de 2008, 22:52:58
hola lord

la idea es que fuera el pic el que le diera las ordenes al isd, graba esto, reproduce tal dia y hora esto, la mmc seria de apollo, se me plantea una duda, el pic puede aceder a las direciones de memoria del isd?, el pic podria realizar copia de registros o lectura de los registros del ISD?
el pic puedes darle ordenes al isd verdad, pero a que nivel orden puede llegar? el puede aceder a las direciones de memoria del isd?



un saludo
Título: Re: Grabar voz & PIC16F877A
Publicado por: navaismo en 10 de Septiembre de 2008, 23:13:01
Amigo Pajaro creo que no has entendido, para ser claros: Puedes grabar El ISD y reproducir desde el ISD con su memoria.

No puedes reproducir Datos con el ISD desde la MMC, si vas a grabar datos en la MMC seguro deberas usar un DSPIC para codificar la señal analogica, guardarla en la MMC, leerla y Reproducirla. EL ISD no te servira para ello. Veo que piensas que la MMC sera un expansor de Memoria del ISD pero eso no es posible.
Título: Re: Grabar voz & PIC16F877A
Publicado por: facundo_10 en 10 de Septiembre de 2008, 23:59:21
No creo que sea necesario una etapa de decodificacion, ni un DSPIC, si mal no recuerdo con mi amigo edison habiamos hecho un programa para ingresar un mensaje al pic por un microfono conectado a este.

El pic lo mandaba a una memoria ram 62256A, y despues presionando un boton lo mandabamos al pic y lo sacabamos por un dac --- parlante y funcionaba de lujo a unos 44 KHZ.

Nose si sea suficiente para tu aplicacion.

Un saludo!!

PD: lo del dspic, puede que sea necesario si quieres guardar tus mensajes en WMA o MP3, en ese caso te recomiendo los VS (ic's decodificadores)..


Título: Re: Grabar voz & PIC16F877A
Publicado por: LordLafebre en 11 de Septiembre de 2008, 11:13:28
Hola:

No creo que le sirva la memoria RAM, el ISD tiene una memoria no volátil que puede retener los datos alrededor de 100 años, la RAM perdería los datos si se quita el suministro de energía.
Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 11 de Septiembre de 2008, 14:32:36
No creo que sea necesario una etapa de decodificacion, ni un DSPIC, si mal no recuerdo con mi amigo edison habiamos hecho un programa para ingresar un mensaje al pic por un microfono conectado a este.

El pic lo mandaba a una memoria ram 62256A, y despues presionando un boton lo mandabamos al pic y lo sacabamos por un dac --- parlante y funcionaba de lujo a unos 44 KHZ.


hola

dac parlante, te refieres aun conversor digital analogico, verdad y eso de parlante que lleva un driver incorporado u algo, podrias decirme con que chip lo hicisteis o ponerme el link de la url.
un saludo
Título: Re: Grabar voz & PIC16F877A
Publicado por: Javicho en 12 de Septiembre de 2008, 10:11:42
Hola Pajaro:

Recien acabo de leer todo el hilo y creo haber entendido desde el principio a que te refieres, veamos, lo ideal para ti es conectar el microfono al ISD y mediante un comando (que no existe) le envies al ISD que no almacene los datos en su memoria interna sino que los envie al exterior de forma serial o paralela por ejemplo, claro que dicho comando no existe porque el ISD cuando graba tu voz lo hace unica y exclusivamente en su memoria interna.

Supongamos que dicho comando existe entonces lo que quieres es almacenar la data digitalizada en la mmc y mediante otro comando (que tampoco existe) leer esta data desde el exterior (mmc al isd) procesarla pasarla de digital a analogo y llevarla al parlante, claro y de esta forma tendrias bastante capacidad de almacenamiento y no necesitaste de filtros para el micro ni para el parlante ni CAG ni adc ni dacporque todo esta en el chip ISD, pero lamentablemente esto no se puede hacer.

Como ya te comendo facundo_10 no queda otra que grabar el audio con el pic, esto es, usar un opamp para amplificar la señal del microfono, llevarla a un adc externo o usar el interno del pic, conforme vas digitalizando vas enviando los bytes digitalizados a la mmc y una ves que terminas de grabar reproduces leyendo los datos de la mmc luego lo haces pasar por un dac y de aqui a un amplificador y a un parlante o puedes usar el LM386 y en su salida el parlante.

Lo malo de esto es que es mucho circuito, creo que por eso querias usar el ISD con la MMC. Dependiendo de la calidad que necesites puedes muestrear a baja velocidad como lo hace el ISD y asi el tiempo le alcance al pic para poder leer el adc llevarla a la mmc regresar por el siguiente dato a digitalizar porque si muestreas a 44.1Khz el tiempo es probable que no te alcance ni usando un XT de 20MHz, en este caso tendrias que usar por lo menos un PIC18 corriendo a 48MHz ahi si te alcanza el tiempo sobrado.

Bueno espero te haya servido de algo. Suerte.

Javicho.
Título: Re: Grabar voz & PIC16F877A
Publicado por: PalitroqueZ en 12 de Septiembre de 2008, 16:09:52
No creo que sea necesario una etapa de decodificacion, ni un DSPIC, si mal no recuerdo con mi amigo edison habiamos hecho un programa para ingresar un mensaje al pic por un microfono conectado a este.

El pic lo mandaba a una memoria ram 62256A, y despues presionando un boton lo mandabamos al pic y lo sacabamos por un dac --- parlante y funcionaba de lujo a unos 44 KHZ.

Nose si sea suficiente para tu aplicacion.

Un saludo!!

PD: lo del dspic, puede que sea necesario si quieres guardar tus mensajes en WMA o MP3, en ese caso te recomiendo los VS (ic's decodificadores)..





Habría que ver con que pic lo hicieron y el proceso que usaron, porque con 44Khz y asumiendo muestreo de 8 bits monocanal, tenemos 22,7 uS por ranura.  :shock:

Por supuesto que usando una memoria 62256A, la transferencia es mas rápida porque su protocolo es mas "simple" que con una Memory Card.



 

Título: Re: Grabar voz & PIC16F877A
Publicado por: Veguepic en 13 de Septiembre de 2008, 00:59:11
Seria muy interesante el poder ver tu programa Facundo_10 si no crea inconvenientes.

Saludos.
Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 15 de Septiembre de 2008, 21:46:59
hola amigo javicho

has captado mi idea, creo que para este circuito me tendre que conformar con poder grabar y reproducir mensajes desde el isd sin usar la mmc, ademas si quiero que sean reproducimos en un dia determinado y en una hora determinda a modo recordatorio u agenda de las tendre que ingeniar para sincronizar elISD con el pic y el RTC.

Espero poder configurar el pic y el ISD...!

Gracias a todos por aportar sus ideas.

un cordial saludo
Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 12 de Octubre de 2008, 13:48:04
hola amigos

Despues de unos dias de viaje, he vuelto con el proyecto del grabador de voz con  ISD5116 y el PIC16F877A.
el ISD es un integrado de 28 patas en encapsulado DIP.
Se comunica con el pic mediante I2C.

En princicpio lo quiero programar con un compilador de Basic, concretamente el con PSI(Pic simulator ide), y preferiria simularlo con proteus pero necesito el modelo del ISD5116, se que el amigo LordLafebre  lo hizo con un ISD25120 le preguntare a el como consiguio el modelo.

un saludo


Título: Re: Grabar voz & PIC16F877A
Publicado por: navaismo en 12 de Octubre de 2008, 13:56:23
El ISdDque hizo Gio solo es el modelo, no la simualcion. Dudo que encuentres un modelo con simulacion para cualquier ISD.
Título: Re: Grabar voz & PIC16F877A
Publicado por: LordLafebre en 13 de Octubre de 2008, 10:46:35
Hola:

En efecto, no existen ISD para simular, el que utilicé yo solo sirve para efectos de diseño.
Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 13 de Octubre de 2008, 12:15:16
hola LordLafebre

empece con ISD5116 y el PIC16F887A, en PSI hay una funcion para leer y escribir en I2C:

I2CRead sda, scl, 0x80, addr, data
I2CWrite sda, scl, 0x81, addr, data

scl = PORTC.3 
sda = PORTC.4
con 0x81 lees al esclavo y  con 0x80 le escribes.

pero me queda la duda de la direccion a grabar y a escribir y el data a escribir.
Algun consejillo


un saludo
Pd: sigo leyendo e intentando compender el data.
Título: Re: Grabar voz & PIC16F877A
Publicado por: navaismo en 13 de Octubre de 2008, 16:35:07
Dependiendo de la frecuencia que definas es como accesas a las direcciones de memoria del chip supon que ya has grabado un mensaje y que duro como 5 segundos y seguido de el grabaste otro de 2 segundos -ya llevas 7 segundos usados- pero quieres leer el segundo mensaje, ademas de que tienes una frecuencia de 8.0KHz; la direccion para leer el segundo mensaje a 8.0KHZ seria en decimal la 21 y en hexadecimal la 0x15.

He aqui el documento que necesitas http://www.nuvoton-usa.com/products/isd_products/chipcorder/applicationbriefs/AN-CC1004_a.pdf
Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 13 de Octubre de 2008, 19:12:19
hola navaismo

gracias por el PDf.

haber si lo entendi,
mi chip es el ISD5116, el "sample rate" no se como se dice en castellano, numero de muestras o algo asi, no se, pues eso dependiendo de ese valor en la memoria del chip nos cabe mas o menos, imagino que tambien aumentara o disminuira la compresion o la calidad de lo grabado, en principio preferiaria usar un sample rate para que me cupieran el maximo 17min 28seg.

Lo del Typical Filter Knee debe de ser un tipo de filtro (Knee significa rodilla, rotula, o amortiguar) pero desconozco su funcionalidad hasta ahora.
y a lo que se refiere en castellano, algun tipo de filtro antierrores de conversion o algo asi, serano soy muy seguro.

Respecto a esas tablas, segun la duracion del mensaje ocupa mas direciones de memoria o menos, seria cuestion de sacar un algoritmo  de forma que automaticamentete el programa supiera el inicio y el final del mensaje, asi como la duracion y nos calculase en que posicion se encuentra, mediante un puntero nos pudieramos desplazar a lo largo de los mensajes guardados.

Un saludo

Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 31 de Marzo de 2009, 10:49:05
hola amigo LordLafebre

tu trabajaste con el isd5116?,
puedes decirme si la progracion la hiciste en "c" o en "asm", la pagina que pone el amigo
Navaismo es la tuya?

un saludo
Título: Re: Grabar voz & PIC16F877A
Publicado por: LordLafebre en 02 de Abril de 2009, 11:15:22
Usé el ISD25120, programé en Protón, y si, la página es mía.
Título: Re: Grabar voz & PIC16F877A
Publicado por: pajaro en 02 de Abril de 2009, 20:17:34
hola LordLafebre

Proton es c o basic no recuerdo muy bien, es el lenguaje de programacion de proteus verdad?

a lo mejor podias echarme una mano.
estoy mirando esta web http://mdubuc.freeshell.org/Isd/

y el codigo del amigo.

Un saludo Lord
Título: Re: Grabar voz & PIC16F877A
Publicado por: LordLafebre en 07 de Abril de 2009, 14:31:22
Hola:

Proton es Basic, proteus no tiene un lenguaje de programación, es un paquete que incluye un simulador y un programa para PCB.