TODOPIC

FORO TÉCNICO => Telefonía, GPS y Microcontroladores => Mensaje iniciado por: mos-fet en 01 de Septiembre de 2004, 13:09:00

Título: Deteccion de tono de ocupado
Publicado por: mos-fet en 01 de Septiembre de 2004, 13:09:00
Hola a todos, estoy tratando de fabricar un preatendedor casero. Mi intencion es recibir una llamada , detectar que se discó ó si hubo silencio y luego trasferir las llamadas segun lo que hizo el usuario. Tambien tengo pensado agregarle la posibilidad de 20 seg de mensaje personalizado al inicio de cada atencion de llamada . Lo estoy realizando paso a paso , y el primer problema que se me presenta es que aca en Argentina , para detectar la finalizacion de llamadas establecidas no puedo contar con la famosa inversion de linea , porque las empresas telefonicas no lo hacen , lo que si hacen es enviar porsterior al corte un tono de ocupado cuya frecuencia aprox. es de 430 hz. y cadencia 410 ms ON , 270 OFF . Tenia pensado filtrar la linea telefonica para solo dar paso a la señal principal de 430 hz y luego procesarla con un PIC para que la deteccion de las cadencias sean seguras . Me gustaria escuchar sugerencias y recomendaciones por parte de Uds . Si tienen algun LINK con info se los agradeceré muchisimo . Saludos
Título: RE: Deteccion de tono de ocupado
Publicado por: Duende_Azul en 01 de Septiembre de 2004, 13:25:00
Que tal si colocas un LM567(detector de tonos) para que se active cuando aparezca dicha frecuencia?
Título: RE: Deteccion de tono de ocupado
Publicado por: mos-fet en 01 de Septiembre de 2004, 15:56:00
Si , Ok el LM567 tiene un VCO controlado por tensio, hay configuraciones que me permiten tener un valor alto cuando esta presente la señal de 430 hz y en valor bajo cuando no lo esta . Pero queria saber si habia algun otro metodo mas fiable , por ejemplo mediante algun PIC con conversor A/D , que muestree exactamente cuando esta presente la señal mencionada y a la cadencia correcta del Busy Tone . Yo realice pruebas con el LM567 pero en algunas ocaciones hay oscilaciones en la salida cuando en la linea telefonica hay señales con armonicas parecidas a los 430 hz . Espero comentarios . Gracias .
Título: RE: Deteccion de tono de ocupado
Publicado por: mos-fet en 07 de Septiembre de 2004, 16:01:00
Les comento que estuve observando varios planos de contestadoras telefonicas y la mayoria tiene un pequeño circuito muy similar al que pongo a disposicion . Aparentemente no es mas que un filtraje analogico capacitivo que dispara al transistor solo cuando hay frecuencias cercanas al del Dial Tone , posteriormente esta señal cuadrada ( replica de presencia o no de Dial tone ) la puedo procesar con un PIC para determinar sugun el muestreo a una base de tiempo , si es un DIAL TONE , un Ringing o un Busy tone . Esto lo probe y funciona , pero....... , este filtro no es muy preciso , ocurre que si vengo por la linea con una frecuencia de por decir 600 hz ( muy cerca del grupo bajo de tonos DTMF ) y respeto los timing de un Busy tone , el micro la toma como tal , osea al sistema le dalo mismo . Mi intencion es ajustar mas este punto flojo y para ello tenia pensado utilizar el CI CM8880 , que por estos pagos ( Argentina ) por suerte lo consigo, entiendo que este bicho puede generar y decodificar tonos DTMF , pero tiene la opcion de CP ( Call Progress ) , que segun lo que pude leer en el data sheet  (no me manejo muy bien con el Ingles pero...) me permite salir con una señal cuadrada REPLICA a los estados de presencia de los 430 hz .
En resumen mucho mas preciso y fiable que el anterior simple circuito capacitivo .  
Por eso DUENDE , MIKE _NAVIA  o el que pueda  " Llamado a la solidaridad " se necesita consejos de como predisponer el CM 8880 ( o similar ) para detectar el progreso de la llamada .

Logrando esto se podria tener un mejor control , de mi proyecto central que es el preatendedor .

Agradesco mucho el tiempo que al menos tomen para leer mis comentarios .
Cualquier opinion que modestamente les pueda yo ofrecer sobre Centrales Telefonicas  con gusto se las daré, en particular de la marca NORTEL .

Saludos desde Buenos Aires


PD : Quise subir el archivo JPG de solo 75 K pero no me deja .
Pruebo subirlo luego .
Título: RE: Deteccion de tono de ocupado
Publicado por: Carlete71 en 07 de Septiembre de 2004, 17:16:00

Mos-Fet, si quieres te puedo diseñar un filtro activo Chebychev para que te detecte el tono de ocupado. solo dime la frecuencia exacta y el ancho de banda.

Saludos,
Título: RE: Deteccion de tono de ocupado
Publicado por: mos-fet en 08 de Septiembre de 2004, 09:11:00
Amigo CARLETE , la frecuencia a detectar es 430 hz , y con un ancho de banda de 100hz estaria bien para poder detectar esta señal sin otras armonicas espurias . Lo importante es que no debe detectar señales de la gama de los 690 Hz para arriba ya que en esa zona se encuentra el grupo bajo de frecuencias DTMF . Posterior al filtro mi idea seria conectarlo a un bc548 con un capacitor de retardo en la base para encuadrar la señal y tener una replica de los estados de presencia ó no de 430 hz . Luego esta onda cuadrada es comparada por su cadencia atraves de un PIC para saber si , es un DIAL TONE ( continuo ) , Llamando ( 1,1 seg. ON y 4 seg. OFF) o si es un Busy Tone ( 410ms. ON y 270ms.OFF ) .
 De esta forma seria posible saber que esta ocurriendo en la linea mas o menos en tiempor real .
- Si el PIC detecta que no hay cadencia (presencia continua de señal)  estamos en presencia de un DIAL TONE .
- Si el PIC detecta una cadencia de Busy Tone , podria realizar el control de liberacion de  la linea , ó si estaba realizando una llamada podria emitir la orden de rellamada a otro destino alternativo .
- Si el PIC detecta una cadencia de Llamada (Ring Back Tone) , se podrian saber 2 cosas, 1ero :  Si esta cadencia es detectada por un tiempo >= a 2 minutos y luego no hay cadencia ( sin presencia de 430 hz ) entonces estamos en presencia de un TIME OUT por parte de la Central Publica , nuestro sistema de control ( PIC ) deberia enviar la orden de liberar la linea y volver a intentar otra opcion . 2da : Si la cadencia es detectada por un tiempo < a 2 minutos y luego no hay mas deteccion de señal a 430 hz , estonces se ha establecido la comunicacion .

Cabe destacar que estos tiempos son valido en Argentina , en otros paises lo desconozco , pero la idea principal seria la misma .

CARLETE , con gusto voy a probar el circuito FILTRO que me puedas pasar , obviamente los mas exigentes me diran que los valores de los filtros pueden cambiar por efectos de la temperatura y etc, etc , etc . Yo creo que con un buen filtro podria andar . De todas formas si alguien puede aportar con info sobre como conseguir algo similar con el CM8880 bien venido sea .Tal vez con este CI se puedan realizar las 3 operaciones necesarias para el PREATENDEDOR , escuchar DTMF , interpretar el progreso de la llamada y emitir DTMF .

Saludos y gracias a todos por el tiempo que dedican a esta querida pagina .

Saludos

Pd :Sigo sin poder pegar archivo adjunto , me dice
" Se han producido los siguientes errores:

Lo sentimos, no hay suficiente espacio disponible para subir el adjunto. "

Alguien sabe algo sobre esto ...


Tengan presente que : " PEQUEÑAS COSAS, HACEN GRANDES DIFERENCIAS "

Título: RE: Deteccion de tono de ocupado
Publicado por: odukec en 08 de Septiembre de 2004, 09:28:00
Hola..

Yo uso un cm8888, y este tiene una opcion de call progress sirve para lo que estas necesitando,

Esta funcion la implementas por medio del registro de control.. si miras el datasheet hay una grafica en la que muestra cual es el rango aproximado en el cual detecta estos tonos, para tu caso 430Hz, cada vez que existe esta frecuencia en la entrada el cm8888 da un estado alto en el pin DTMF/CP, es muy util.. porque como dices tu esta cadencia se analiza con el pic y sabemos el estado de la linea.

Ademas si estas detectando tambien tonos dtmf el mismo integrado te sirve, y todo se maneja por medio de software.

En el datasheet esta todo.. si necesitas ayuda pues posteas de nuevo..!!

Adios
Título: RE: Deteccion de tono de ocupado
Publicado por: mos-fet en 08 de Septiembre de 2004, 11:21:00
Ok , odukec , voy a echar un vistazo al datasheet del CM8888, creo que el CM8880 es parecido ( por ahora solo consigo este ultimo en Argentina ), pruebo hacer la deteccion y te comento .

CARLETE, de todas formas voy a esperar tambien tu circuito si todavia esta disponible .


Saludos y gracias .
Título: RE: Deteccion de tono de ocupado
Publicado por: Carlete71 en 08 de Septiembre de 2004, 17:13:00

Ok, lo voy a calcular con Fc=430Hz, BW=100Hz Voy a utilizar en principio una atenuación de 20db en la banda de rechazo que equivale a 10 veces menos.

Te escribo cuando lo tenga.

Saludos,
Título: RE: Deteccion de tono de ocupado
Publicado por: Carlete71 en 09 de Septiembre de 2004, 16:41:00
A ver pruébate este:

Bueno básicamente diseñé el filtro con Fc=430Hz y BW=40Hz por cuestiones de costo ya que quería que me saliera un solo bloque. Para 690Hz, como indicaste que no quieres detectarla atenué la señal 20db que equivale a 10 veces menos. Sobre los componentes, hay miles de posibles combinaciones así que traté de buscar algo comercial sin que se me alteraran los valores de diseño. En el archivo anexo verás el filtro y la respuesta en frecuencia del mismo.

Bueno espero que te sirva para tu proyecto.

Si tienes algún problema avísame porque de la teoría a la práctica hay un trecho.

Saludos,


http://miarroba.com/foros/ver.php?foroid=256746&temaid=2304005
Título: RE: Deteccion de tono de ocupado
Publicado por: mos-fet en 10 de Septiembre de 2004, 10:02:00
Ok , CARLETE , voy a probarlo y luego te comento como fue , puede ser ventajoso este filtro para tener un cierto espectro de resguardo  a la hora de detectar el tono de ocupado .


ODUKEC, una consulta con el uso del CM8880 , veo que este CI tien la posibilidad de realizar basicamente 3 tareas , Recibir DTMF , Emitir DTMF y el famoso Call Progress . Estas actividades son comandadas via el Registro de Control .
Ahora bien como puedo hacer para detectar este escenario ? :
Una llamada ingresa a mi Preatendedor ---> Detecto el Ring y Contesto --> Ahora deberia estar atento a lo siguiente :
1 - Si hay tonos DTMF en la linea deberia ser reconocido por el PIC y luego activar alguna accion ( Ejemplo , realizar un Flash y tranferir la llamada al numero que se disco ).
2 - Tambien debo estar a tento a que si el Usuario que llama cortó (por cualquier circunstancia), tengo que poder recibir cadencias de Busy  saliendo del PIN IRQ/CP , para que el PIC detecte esto y luego libere la linea . Esto ultimo por lo que se ve en el Datasheet es imposible , porque solo puedo al mimo tiempo :
A - Recibir y Trasmitir DTMF
B - Recibir Call Progress y Trasmitir DTMF .

Se les ocurre alguna solucion para poder realizar las 3 operaciones utilizando solo un CM8880 . De momento se me da por probar alguna alternancia entre el Estado A y el Estado B . Pero no se si los tiempos de transicion que el PIC podria realizar en el rigistro de Control del CM880 , permitirian que este relice bien su labor de deteccion de los tonos tanto DTMF como el CP .

Saludos a todos, gracias por sus opiniones y referencias .
Se los agradesco mucho de antemano .

Título: RE: Deteccion de tono de ocupado
Publicado por: odukec en 10 de Septiembre de 2004, 21:38:00
Si.. ese seria el dilema.. bueno.. pues dinos que necesitas hacer especificamente.. ya que para lo que yo uso esta funcion es valido.. pero parece ser que para la tuya no.. bueno.. igual para todo hay solucion.. asi que explica lo que necesitas hacer, que llevas hecho.. y entre todos encontraremos algo para solucionarlo.. no crees..?

Saludos
Título: RE: Deteccion de tono de ocupado
Publicado por: mos-fet en 10 de Septiembre de 2004, 23:50:00
Odukec, gracias por responder, de momento lo que necesito es poder detectar simultaneamente DTMF y el Call Progress , porque al levantar la llamada el Preatendedor, debera ser capaz de saber que disco el usuario que llamo, y tambien tendrá que  estar atento al monitoreo de cadencia del Busy Tone para abortar el proceso de atencion y liberar la linea telefonica para estar disponible y recibir otra llamada.
Si es posible realizarlo con un solo CM8880/8888 , seria beneficioso . Si no tendria que utilizar 2 uno para recibir y transmitir DTMF y el otro solo para el Call Progress .
No tengo mucha experiencia con este Chip por eso estoy un poco confundido .

Al margen de esto , en paralelo estoy tratando de interfacear el PIC contra un ISD1420 , el cual me permitira ofrecer un  breve mensaje de presentacion de llamada al comienzo .Soñando un poco mas mi idea es que cualquiera con una PC pudiera cargarle un audio WAV a este ISD1420 a traves del port Serial o Paralelo.

De todo esto , concreto en el Protoboard solo tengo la parte estrictamente telefonica . Una vez superado y confirmado el Ok de esta seccion le dare de lleno a lo otro . Mil disculpas por no postear circuito alguno , todavia me parecen cosas sueltas, ni bien tenga algo REAL lo pongo . ( Pero aunque lo tuviera , no se poque el FORO no me permite subir archivos , alguien sabe porque ?, sera por un tema de perfil ) Tratare de hacerlo de alguna forma .

Saludos a todos.
Título: RE: Deteccion de tono de ocupado
Publicado por: Carlete71 en 11 de Septiembre de 2004, 07:42:00
Sube los archivos aquí

http://miarroba.com/foros/ver.php?id=256746

Y luego pones el enlace.

Saludos,
Título: RE: Deteccion de tono de ocupado
Publicado por: odukec en 11 de Septiembre de 2004, 10:15:00
Hola..

Tendrias que a cada momento configurarlo en call progres, mirar si existe cadencia de tonos, si no volver a configurarlo en dtmf, y mirar si existe un tono y asi.. cosa que seria muy poco practica, ya que se te puede perder alguna marcacion, seria mejor usar en conjunto un detector dtmf.

Bueno.. hay que echarle un poco de cabeza a ver que es lo mas conveniente..  porque si es asi.. mas bien te sirve el detector de tonos que te hizo el amigo Carlete.. ya que este no tendrias que configurarlo.

De todas formas.. pensare un poco a ver si se pueden hacer estas dos cosas simultaneamente con un mismo chip.

Saludos

Título: RE: Deteccion de tono de ocupado
Publicado por: mos-fet en 13 de Septiembre de 2004, 08:35:00
Ok , gracias CARLETE pero me dice que no tengo nivel de usuario para dejar archivos ,  en cuanto a la elecccion , puede que tengas razon ODUKEC , tal vez voy a utilizar el CM8880 como transceiver DTMF solamente y adicionalmente pruebe el filtro de CARLETE para detectar el tono y luego verificar su cadencia , al fin y al cabo lo mas critico me parece que no es la frecuencia sino la cadencia que tiene la misma para identificar los estados de la llamada .

Echenle un visazo a esta pagina interesante del amigo Boris Estudiez, me parece que se me adelantó , jejeje . Tiene cosas interesantes .
http://stk.freeshell.org/electronixs.html


Saludos a todos .
Título: RE: Deteccion de tono de ocupado
Publicado por: Carlete71 en 13 de Septiembre de 2004, 19:07:00

Si quieres pásamelo por privado y yo lo publico por ti mos-fet.

Saludos,
Título: RE: Deteccion de tono de ocupado
Publicado por: Carlete71 en 14 de Septiembre de 2004, 20:49:00

Listo mos-fet, ya coloqué los archivos aquí:

Detector de 430 hz , sacado de una contestadora Kx-t1000 .

http://miarroba.com/foros/ver.php?foroid=256746&temaid=2322933&msgid=20184349#20184349

Saludos,
Título: RE: Deteccion de tono de ocupado
Publicado por: JupEsp en 06 de Enero de 2005, 09:26:00
Hola a todos.

Hace unos días he terminado un proyecto de un interface telefónico en el que se necesitaba
detectar el progreso de llamada para poder realizar determinada acciones.

 Quisiera comentaros varias cuestiones que se han de tener en cuenta:

Las señales de indicación de proceso de llamada se definen por un tono de una determinada frecuencia entre
310Hz a 640 Hz  con distintas cadencias según lo que este ocurriendo en la línea.

Para detectar estas frecuencias se puede utilizar un filtro pasa banda en el rango de 310Hz a 640 Hz  con corte abrupto
tanto en el rango inferior como en el superior.

Hay integrados específicos que realizan esta función, yo he utilizado el M-980-02 que esta diseñado para este propósito.

Este integrado tiene una patilla para la entrada de señal de audio desde la interfaz de línea, una patilla de habilitación  y la salida de señal, uno lógico para tono detectado y cero para tono no detectado, o fuera de banda.

Una vez implementado el circuito solo tendremos que analizar la cadencia de las señales para determinar el estado del progreso de la llamada.


Cuando generamos una llamada tendremos:

1º Descolgado, tono continuo salida a 1 que es tono de línea

2º  Una vez marcado el numero a llamar si este es correcto tendremos la cadencia 2.0/4.0s o lo que es lo mismo dos segundos con la salida a 1 y cuatro segundos con la salida a 0

3º  Al descolgar al otro lado de la línea desaparece la cadencia y aparecerán impulsos en la patilla de salida, esto se produce por que las frecuencias vocales tienen un amplio rango de frecuencias que entraran dentro del rango de detección del filtro del call progress detector.

4º Si se produce el colgado al otro lado de la línea tendremos una cadencia de pulsos de 0.25/0.25s

------------------------------------------------------------------------------------------------------

Para poder detectar con claridad estas cadencias tendremos que programar un algoritmo que tenga en cuenta estas variables, atendiendo de manera especifica al apartado 3 y los impulsos producidos por las señales vocales.

En el sistema que yo he programado he utilizado dos cronómetros que me indican el tiempo de los impulsos tanto en estado alto como en estado Bajo de las señales suministradas por la salida de detección del integrado.

Y he aplicado después unas ventanas de comparación para el análisis de los distintos estados del progreso de la llamada.


Se han de tener en cuenta métodos para evitar que el sistema de los cronómetros, se quede enganchado en un bucle infinito.

Y realizar muestreos sucesivos de las señales.

El peor de los casos es la detección de colgado al otro lado de la línea cuando están presentes señales de voz o datos durante el funcionamiento normal del sistema.

Para lo cual recomiendo que se realicen tomas de datos periódicas para no ralentizar otras tareas, a no ser que dediquemos un procesador especifico para el análisis del progreso de llamada que se comunique con el procesador general.


Conclusiones.

Como podéis ver, la detección se complica y sobre todo cuando hay señales vocales y de datos durante el análisis de las mismas, de todas formas en el momento en que se cuelga al otro extremo de la línea, la secuencia de tonos es clara y limpia y solo nos tenemos que preocupar de falsas indicaciones de colgado durante la transmisión de voz o de los datos.

Para los que no conozcan muy bien el sistema de señalización de las líneas telefónicas, indicaros, que en las centrales modernas urbanas (las de las compañías telefónicas) se produce otra señalización mucho más clara y más segura, que es la de la inversión de polaridad en la línea. (se puede detectar con un opto acoplador en serie con la línea telefónica)

La línea cambiara de polaridad cada vez que al otro lado de la misma se realice una operación de colgado o descolgado.

Con lo que dispondremos de señales precisas y fáciles de analizar.

Por desgracia las extensiones de centralitas PBX carecen de este sistema de señalización para no incrementar los costes de las mismas, por lo cual me vi obligado a implementarlo en mi proyecto, ya que se conectaría a una centralita telefónica de un hogar.  


Para finalizar, comentaros que hay integrados con detección de dos rangos de frecuencias uno para los producidos en el margen de la detección de progreso de llamada, y otro fuera del rango, de este modo si tenemos un 1 lógico en los dos terminales podemos descartar que sé este produciendo una señalización de progreso de llamada y se tratara de una información o vocal o de datos.
 
Hay sistemas o integrados que realizan un análisis completo de las señales pero son caros y difíciles de implementar por sus complicadas señales de inicialización, e incluso hay sistemas basados en DSP que implementan los filtros y el análisis de las señales, se puede encontrar documentación en Internet.

Esto es todo.

Gracias por vuestra atención

Saludos

Juan
Título: RE: Deteccion de tono de ocupado
Publicado por: JupEsp en 11 de Enero de 2005, 08:07:00

Hola a todos

Estoy completamente de acuerdos con el comentarios de mos-fet

Lo ideal es tomar muestras consecutivas de la cadencia y decidir mediante su análisis el estado del progreso de llamada, se ha de llegar a un compromiso entre el numero de muestras tomadas para no ralentizar el proceso.

Y es cierto que la cadencia de los tonos varia entre distintos tipos de centralitas y de operadoras telefónicas, para lo cual es recomendable analizar los tiempos de distintas señales de diferentes sistemas y hacer un promedio.

Yo antes de implementar el sistema general, me programe un pic que me mostraba  por RS32 las cadencias y las anchuras de los pulsos que se obtenían en el circuito de call progress.

Me fue de gran utilidad.

Saludos

Juan
Título: RE: Deteccion de tono de ocupado
Publicado por: mario_pastor en 31 de Marzo de 2005, 14:35:00
Hola a todos,

Juan por favor pordrías ayudarme con lo del análisis del call progress mediante PC, la verdad que llevo variós día es este tema y aun no doy con el resultado. Estoy usando el MT8889 para la detección del call progress, pero necesito saber los tiempos de cada señal que entrega mi operador local (TELEFONICA,. cuanquier ayuda con programa o diagramas me lo puedes enviar a: mario_pastor@hotmail.com

Muchas gracias de ante mano,

Mario
Título: RE: Deteccion de tono de ocupado
Publicado por: pikman en 20 de Abril de 2005, 20:17:00
Hola, bueno yo estoy con un sistema que requiere deteccion de call progress he porbado el mt8880 y bueno el problema es que detecta CP o DTMf , asi que migre al HM9220, y anda muy bien, pero encontre uno que ademas de detectar el tono de la linea detecta si hay VOZ, el integrado es el CMX683 de CML microsystems, realmente me ha solucionado un problema pues en mi caso ademas de la caden cia necesitaba sabes si alguien me atendia, habia implentado un VOX, pero no andaba muy bien esto es una maravilla pues por ejemplo, si llamo a un celular y me contesta el contestador automatico puedo directamente descartar la llamada, o en otro caso que tengo, cobrarla, lo que si detectar es que no todas la compañias tienen los tiempos de cadencia iguales, por lo que implemente una rutina que mide el tiempo entre los 2 primeros tones y despues aanaliza si es "llamando" "busy" y si es un tiempo que no esta en la tabla aborta, tambien bueno espero que les sirva mi aporte.

saludos

ARIEL

Título: RE: Deteccion de tono de ocupado
Publicado por: mario_pastor en 24 de Abril de 2005, 23:56:00
Ariel, gracias por compartir la información en el foro Sonrisa...  yo estoy que le doy vuelta a lo del CALL PROGRESS y ando con un dolor de cabeza que ni te imaginas desquiciado  buscare ese IC y realizare las pruebas... por el momento estoy usando el MT8889 que es muy similar al que usas, por favor podrías decirme a que precio lo consigues en tu país?

Saludos,

Mario.