Autor Tema: Sonido por el puerto serie  (Leído 11945 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado bartox

  • PIC10
  • *
  • Mensajes: 38
Sonido por el puerto serie
« en: 14 de Febrero de 2006, 12:52:00 »
Hola gente tengo una duda

¿Hay alguna manera de conectar un microfono a un PIC y que este envie el sonido por el puerto serie a otro PIC que lo decodifique y lo saque por un altavoz?Flash

Tiene que ser en tiempo real. No vale guardar la señal de sonido y enviarla toda como un paquete.

El sonido no hace falta que sea de mucha calidad, me conformo con la calidad de un telefono.

Gracias a todos, a ver si alguien sabe como solucionar este problema que me vuelve loco Avergonzado

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Sonido por el puerto serie
« Respuesta #1 en: 14 de Febrero de 2006, 13:39:00 »
Escrito originalmente por bartox
Hola gente tengo una duda

¿Hay alguna manera de conectar un microfono a un PIC y que este envie el sonido por el puerto serie a otro PIC que lo decodifique y lo saque por un altavoz?Flash

Tiene que ser en tiempo real. No vale guardar la señal de sonido y enviarla toda como un paquete.

El sonido no hace falta que sea de mucha calidad, me conformo con la calidad de un telefono.

Gracias a todos, a ver si alguien sabe como solucionar este problema que me vuelve loco Avergonzado


Dejando de lado la parte del circuito de adquisición como ser:

- elevar la tensión a un valor medio para que  el A/D del pic la pueda convertir ya que su rango es de 0 a 5v
- acomodar la señal para que el rango de lectura del pic sea el adecuado, es decir si la señal es pequeña amplificarla y si es grande
  atenuarla.


Una vez logrado esto, lo digitalizas y luego lo envias con el módulo usart, el cual si usas a 20Mhz puede ir practicamente tan rápido como el clock.
Si, no hace falta que sea un baudeaje estandar de 115200 por ejemplo, puedes usar uno mayor si la distancia entre pics es muy pequeña, todo esto lo
trabajas desde el SPBRG, cargando un valor mas pequeño.

con dicha velocidad puedes transmitir facilmente a unos 115.2Kbits por segundo, lo cual es algo asi como 11.2Kbps (ya que la usart transmite 10 bits de los cuales solo 8 son datos).
Con esa tasa de trasnferencia tienes mas calidad que un teléfono por lejos.  

Luego deberás hacer de nuevo la señal analógica (con un DAC) y le deberás quitar el valor medio de continua para sacarla por la salida

Si has entendido algo podremos continuar
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
RE: Sonido por el puerto serie
« Respuesta #2 en: 14 de Febrero de 2006, 13:45:00 »
¿Y esa no es exactamente la definición de MODEM?

MOdulador-DEModulador

Como su nombre lo dice, el módem, se encarga de transformar la señal digital que sale del micro, en analógica, que es en la forma que viaja a través de las líneas de teléfono comunes (modula la señal); y a su vez, el módem receptor se encarga de "demodular" la señal, transformándola de analógica a digital para ser recibida de nuevo por la computadora.

De las tres formas que usualmente se han utilizado para modular-demodular una transmisión digital:

1.- Desplazamiento de Amplitud (ASK): En esta técnica de modulación los dos valores binarios se representan mediante dos amplitudes diferentes de la portadora.

2.- Desplazamiento de Frecuencia (FSK): los dos valores binarios se representan por dos frecuencias diferentes próximas a la frecuencia de la portadora, donde los ángulos de la señal para el cero y el uno binarios, son comunmente de misma magnitud pero en sentidos opuestos de la frecuencia portadora.

3.- Desplazamiento de Fase (PSK): la fase de la señal portadora se desplaza para representar con ello datos digitales. En este sistema, un 0 binario se representa mediante la transmisión de una señal con la misma fase que la señal anteriormente enviada. Mientras que un 1 se representa mediante la transmisión de una señal cuya fase está en oposición de fase respecto a la señal precedente


Probablemente con la segunda de ellas, la FSK, sea la que tu necesitarías para poder transmitir mediante sonido los datos ....

De hecho yo he visto modems que no se conectaban a ningún hilo electrico, el cable del telefono, sino que todo el auricular se colocaba encima del modem, haciendo coincidir tanto el microfono como el altavoz del auricular sobre unos encajes del modem que contenián los correspondientes opuestos y que transmitía exactamente eso, sonidos y solo sonidos, como digo, sin conexión electrica alguna.

Hummmm ... interesante experimento .... muy interesante ...

Un PIC hablando con otro a grito pelado ... ja ja ja


Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado bartox

  • PIC10
  • *
  • Mensajes: 38
RE: Sonido por el puerto serie
« Respuesta #3 en: 14 de Febrero de 2006, 09:54:00 »
Gracias por contestar a todos.

En cuanto a la respuesta de maunix, se ajusta bastante a la idea que tenia pero no sabia se seria lo suficiente rapido como para repruducir la señal del microfono.

La respuesta de RedPic me parece muy tecnica pero no acabo de entenderla.


Gracias a los dos, probare en principio lo que tenia pensado que creo que mas o menos es lo que decis. Incluso probare grabar en una memoria externa una melodia para que se reproduzca al iniciar el aprato que estoy haciendo.

Un saludo. Rebotado

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Sonido por el puerto serie
« Respuesta #4 en: 15 de Febrero de 2006, 02:47:00 »
Incluso si consigues los 11.2Kbytes por segundo, estás seguro de que el conversor AD del PIC te da esa velocidad?.  Tendrás que utilizar un conversor analógico-digital externo.

Cuando lleguen los datos al pic receptor como vas a pasarlos a analógico?

Te lo digo porque hay dsPICs que tienen módulos de interfaz con codecs externos que te proporcionan una calidad muy superior e incluso en estereo.

Haciendo unos cálculos por encima, puedes muestrear la señal a 22KHz en estéreo y 16bits y enviar los datos con el módulo SPI a 1Mbps

Desconectado bartox

  • PIC10
  • *
  • Mensajes: 38
RE: Sonido por el puerto serie
« Respuesta #5 en: 15 de Febrero de 2006, 05:32:00 »
Si supongo que lo mejor seria utilizar un DPS pero la verdad es que en este tema todavia no me he metido, y ahora mismo no se si podria meterme con los DSP.

En principio habia pensado utilizar un PIC, por ejemplo el 16f876 es capaz de muestrear a 20MHz y las frecuencias del oido van de 20Hz a 20KHz aproximadamente.

Creo que en principio no tendria que haber problema, pero todavia no lo he probado.

Si me viese con problemas podria recurrir a un A/D externo que me diese el dato en paralelo con 8 bits por ejemplo a si podria ir un poco mas rapido.

En cuanto al D/A pues me buscaria uno por interner, en www.alldatasheet.com puedes encontrar un monton. Buscaria el mas adecuado.

En cuanto al estero, pues no me lo habia planteado pero de momento lo que quiero hacer es una especie de telefono, o sea que de momento el estereo no lo necesito.

Un saludo. Giño

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Sonido por el puerto serie
« Respuesta #6 en: 14 de Febrero de 2006, 23:46:00 »
Lo de que un pic puede muestrear a 20MHz es totalmente erroneo y menos un 16F87X. Como máximo te dará unos pocos KHz.

Desconectado bartox

  • PIC10
  • *
  • Mensajes: 38
RE: Sonido por el puerto serie
« Respuesta #7 en: 15 de Febrero de 2006, 08:35:00 »
Tienes razon, ya me estrañaba a mi que consiguiese tanta velocidad de muestreo con un cristal de 20MHz como maximo jeje, perdonAvergonzado.

He calculado que como mucho llegara a unos 50KHz. ¿Puede ser? ¿Alguien sabe que frecuencia se puede samplear con un cristal de 4MHz y con uno de 20MHz en el PIC?

AvergonzadoAvergonzadoAvergonzadoAvergonzadoAvergonzadoAvergonzadoAvergonzadoAvergonzado

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Sonido por el puerto serie
« Respuesta #8 en: 15 de Febrero de 2006, 12:23:00 »
Hey,  que se puso activo el hilo este.

A ver, para ir por partes.

RedPic creo que fue muy linda tu explicacion sobre modems pero nuestro amigo quiere otra cuestión.

AUDIO --> PIC --> comunicacion serie --> PIC --> AUDIO


Es una comunicación en un solo sentido y donde no le interesa saber "qué" está recibiendo, sino solo mandarlo a otro lugar.

antoniof tu dijiste:
Escrito originalmente por antoniof

Incluso si consigues los 11.2Kbytes por segundo, estás seguro de que el conversor AD del PIC te da esa velocidad?. Tendrás que utilizar un conversor analógico-digital externo.

Cuando lleguen los datos al pic receptor como vas a pasarlos a analógico?

Te lo digo porque hay dsPICs que tienen módulos de interfaz con codecs externos que te proporcionan una calidad muy superior e incluso en estereo.



Te paso a responder.

Primero, tu estas confundiendo bits por segundo, con bytes por segundo.  UN conversor de pic 16F877 a 20Mhz tranquilamente puede digitalizar 10 mil muestras por segundo o 11200 muestras por segundo si se utiliza siempre el mismo canal.  La recibes en PARALELO (tomas solo los 8 bits mas significativos) y eso mismo se transmite en SERIE por el pic.

Para pasarlo a analogico del lado del receptor, ya describi que lo puede hacer con un dac y un circuito que le elimine el valor medio de continua y luego amplifique esa señal para sacarla por el parlante.  Es más, no está mal la idea de en este caso usar un transformador, que permite de un solo paso amplificar y adaptar impedancia de una forma mas elegante que solo con operacionales.

Creo que un dspic es exagerado para lo que nuestro amigo quiere hacer, además un micrófono estereo? para que quieres eso... las guitarras, los microfonos, los teclados, son todos mono.

Además, para convertir audio a 16 bits, no solo es cuestión de poner un conversor... solo pensar que 2^16 = 65536 valores, lo que implica que con una señal de 5V, tenemos 76 microVoltios entre valor y valor... para lograr eso, REALMENTE hay que tener un circuito de una calidad excelente, con eliminacion de ruido por todas partes, compensaciones de temperatura, etc!! No es para novatos ni mucho menos, además que es MUY COSTOSO.  Uno coloca el conversor, y los ultimos 6 u 8 bits, terminan siendo RUIDO, es decir que si uno aplica una señal toda esos ultimos bits no aportan nad de información sino que es solo ruido.

Nuevamente 8 bits creo que es adecuado para lo que nuestro amigo pretende.

Escrito originalmente por bartox
Tienes razon, ya me estrañaba a mi que consiguiese tanta velocidad de muestreo con un cristal de 20MHz como maximo jeje, perdonAvergonzado.

He calculado que como mucho llegara a unos 50KHz. ¿Puede ser? ¿Alguien sabe que frecuencia se puede samplear con un cristal de 4MHz y con uno de 20MHz en el PIC?



Mmm, no es tan facil hacer un cálculo asi como dices tu porque depende mucho de tu circuito externo, de todas formas como referencia puedes ver en la datasheet en el modulo A/D como se calcula el Tacq (tiempo de adquisición) y luego le debes sumar el tiempo de conversión.

Tacq lo calculas de tu circuito de entrada, que en el ejemplo de microchip dura unos 12useg aproximadamente

El Tconversion depende del cristal que hayas usado y del modo que hayas elegido en el A/D.

Imaginemos funcionado a 20Mhz con 32Tosc de clock source, nos dará unos 1.6useg por TAd.  Una conversion a 10 bits, demora unos 11Tad = 17.6 useg

Además entre conversiones se debe esperar 2TAD = 3.2 useg

Esto da un total de unos 32.8 useg tipico para cargas de 1Khm, si no cambias de canal entonces podrás tener ese tiempo de muestreo, de alrededor de unos 20Ksps.    Esto siempre para 20Mhz.

En las datasheet de los PIC18 está explicado cuanto es el sampling time que pueden soportar sus A/D, en algunos casos hay hasta de 200Ksps.

Nuevamente no creo que te haga falta un dsPIC para esta aplicación.


Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado bartox

  • PIC10
  • *
  • Mensajes: 38
RE: Sonido por el puerto serie
« Respuesta #9 en: 15 de Febrero de 2006, 16:11:00 »
Maunix creo que me has entendido perfectamente.

Tendre que mirar de hacerlo con los 18f a ver si consigo mejores resultados.

Mi intencion es hacer una especie de telefono, donde puedas hablar y escuchar a una persona que esta en el otro lado de la transmision con un aparato igual, donde el tambien pueda hablar y escuchar.

De momento probare con enviar sonido solo desde los dos lados de la comunicacion. Mas adelante probare de hacer un protocolo para poder enviar datos y sonido. Tendre que mirar si no influye mucho en el sonido y relentiza la comunicacion.

Gracias por todo. Sonrisa Gigante

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Sonido por el puerto serie
« Respuesta #10 en: 15 de Febrero de 2006, 17:15:00 »
Escrito originalmente por bartox
Maunix creo que me has entendido perfectamente.

Tendre que mirar de hacerlo con los 18f a ver si consigo mejores resultados.

Mi intencion es hacer una especie de telefono, donde puedas hablar y escuchar a una persona que esta en el otro lado de la transmision con un aparato igual, donde el tambien pueda hablar y escuchar.

De momento probare con enviar sonido solo desde los dos lados de la comunicacion. Mas adelante probare de hacer un protocolo para poder enviar datos y sonido. Tendre que mirar si no influye mucho en el sonido y relentiza la comunicacion.

Gracias por todo. Sonrisa Gigante


Esta bien, me alegro de haberte entendido.

Sin la finalidad de desmoralizarte pero ten en cuenta que la velocidad será inversamente proporcional a la distancia que uses... si aumentas la distancia,  deberás modificar la velocidad para que los datos lleguen bien.

En estos casos se usan los modem banda base, u otros modulos de comunicacion que son mas robustos frente al ruido o a las distancias.  Es por esto que para comunicar a grandes distancias y a alta velocidad se han desarrollado complejos sistemas de modulación, pero los cuales en todos sus casos consumen "ancho de banda" es deecir que tu medio conductor debe ser muy bueno.

Si observas verás que mucha velocidad = poca distancia, mucha distancia # poca velocidad.  Esto es así por limitaciones físicas.

El problema que tiene el cobre es que funciona como un "pasa bajo" es decir que aumentas la frecuencia yla distancia y veras como tus pulsitos se van redondeando.  

De todas formas, te servirá de una linda experiencia y aprenderás muchas cosas.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Sonido por el puerto serie
« Respuesta #11 en: 16 de Febrero de 2006, 02:21:00 »
Si lo que vas a hacer es un telefono, para nada te interesa un dsPIC. Yo lo decía por si querias transmitir otro tipo de señal de audio de mayor calidad.

En tu caso, con 8 bits y 4KHz de frecuencia de muestreo tienes de sobra. Para comunicar ambos pic, yo utilizaría el módulo SPI. Es más rápido y economico que el RS-232, aunque todo depende de la distancia que haya entre ambos PIC.

Desconectado bartox

  • PIC10
  • *
  • Mensajes: 38
RE: Sonido por el puerto serie
« Respuesta #12 en: 16 de Febrero de 2006, 04:38:00 »
Bien voy a dejar claro lo que pretendo para que no hayan lagunas y malos entendidos.

Esta especie de telefono se comunicara por BlueTooth, el echo de utilizar comunicacion serie se debe a que el modulo de bluetooth que tengo solo tiene este tipo de comunicacion.

El modulo es este : http://www.parallax.com/detail.asp?product_id=30068

He encontrado otros que tenian transmision de voz pero el alcance era de 10m y este que utilizo yo alcanza los 100m. He elegido este porque es sencillo de utilizar y el precio es bajo comparado con otros que cubran el mismo alcance.

En principio el modulo enviara y recibira sonido y datos pero me estoy planteando que solo envie y reciba sonido y que los datos se envien por RF con modulos de estos de  433.92 MHz.

Ventajas del bluetooth+RF:
-Puedo recibir datos y sonido sin hacer un protocolo especial.
-Podria saber si estan intentando comunicar desde otro terminal de estos mientras estas conversando. El Bluetooth solo no se si puede recibir un intento de comunicacion mientras tienes una conexion establecida con otro.

Inconvenientes del bluetooth+RF:
-Lo veo un poco engorroso tener una comunicacion para datos y otra diferente para sonido y de hay que quiera hacer un protocolo de comunicacion que me permita enviar las dos cosas por el bluetooth.

He visto por algun sitio que hay modulos Bluetooth punto-multipunto y el que yo utilizo es punto-punto. No se si con ellos podria hacer que si hay una llamada entrante mientras tu estas ablando con otra persona el PIC puediese saberlo. Esto lo quiero hacer por que quiero poner "telefonos" que tengan mas prioridad que otros y si por ejeplo estas hablando con una persona sin prioridad y otra persona con prioridad quiere decirte algo automaticamente te avise de esta llamada con prioridad.

JJJEEE no se si me explico bien, pero queria dejar claro esto antes de meternos en temas de longitud de cables porque mi intencion es hacerlo con Bluetooth con un alcance de unos 100m mas o menos (o si hay alguna manera mejor de hacerlo sin cables pues se podria mirar).Avergonzado

Un saludo.

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Sonido por el puerto serie
« Respuesta #13 en: 16 de Febrero de 2006, 05:40:00 »
OK ya tengo claras tus intenciones.

Pues ya nos contarás como ha ido la cosa.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Sonido por el puerto serie
« Respuesta #14 en: 16 de Febrero de 2006, 05:44:00 »
Haberlo dicho antes, sin leer el datasheet del módulo que mencionas fíjate si realmente puede recibir a una tasa de 115200 bits por segundo.  Tal vez no pueda, sencillamente porque despues no puede transmitir a esa tasa.  

Algunos modems gsm por ejemplo, tienen conexion 115200 pero solo entre tu microcontrolador y el modem, pero no puedes comunicarte a esa tasa en forma continua.  Es por "rafagas" , le mandas los datos y luego sigues haciendo otra cosa.

Ten cuidado con esto ya que no es un detalle menor.

Con respecto a mezclar voz y datos, no es tan complicado como crees.

Si usas 8 bits para la voz, puedes transmitir un poquito mas velozmente y  hacer que 1 bit de cada byte, sea de datos y así ir armando los sucesivos bytes del protocolo de comunicación.  Mientras tanto los restantes 7 bits, uno detras de otro pudieran ser los que necesites.  Otra cuestión seria que transmitas a 9 bits, donde 8 bits sean de voz y el noveno de datos, pero como te dije antes no leí el datasheet.

Espero te salga todo bien con tu proyecto, sino aquí estamos.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)