Autor Tema: Interfaz con Tip-Ring telefonico usando HT9200A  (Leído 9124 veces)

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

Desconectado bikertron

  • PIC10
  • *
  • Mensajes: 27
Interfaz con Tip-Ring telefonico usando HT9200A
« en: 10 de Enero de 2008, 20:01:28 »
En primer lugar una afectuoso saludo...
Soy nuevo en el foro y el motivo de mi posteo va relacionado a que estoy trabajando en una aplicación que reconoce los tonos DTMF para luego "rediscar" la llamada por un canal más economico, ya sea a traves de un conversor celular a través de una tarjeta SIM o un adaptador VOIP.

Inicialmente estaba trabajando con el MT8888CE que es receptor-generador DTMF, pero ahora por simplicidad me cambie al trabajo en conjunto del CM8870 como detector DTMF y como generador ocupo el HT9200A...como ocupo multiples lineas ocupo el pic18f452 del cual utilizo las 3 interrupciones externas......pero eso no es la dificultad...en realidad estoy listo...el reconocimiento es correcto y el generador tambien lo hago funcionar correctamente(verificado tanto a traves de un parlante como por el osciloscopio).....en realidad necesito una ayudita en la interfaz de salida al momento de contarme a la linea a traves del Tip y Ring.....lo he conectado a traves de un transistor y un puente rectificador directo a la linea ..pero no me pesca......

Cualquier recomendación se agradece..........
Apaga la tele!!!!!!!  y movilizate en bicicleta...

Desconectado bikertron

  • PIC10
  • *
  • Mensajes: 27
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #1 en: 11 de Enero de 2008, 18:11:40 »
otra pregunta!!!

Resulta que tengo desarrollado el codigo para mandar los tonos pero no logro crear la pausa entre los tonos... :? :? :?......

Código: [Seleccionar]
void cargar_dato()
     {
     if(bit_test(numero,0)==1)
     D0=1;
     if(bit_test(numero,0)==0)
     D0=0;
     if(bit_test(numero,1)==1)
     D1=1;
     if(bit_test(numero,1)==0)
     D1=0;
     if(bit_test(numero,2)==1)
     D2=1;
     if(bit_test(numero,2)==0)
     D2=0;
     if(bit_test(numero,3)==1)
     D3=1;
     if(bit_test(numero,3)==0)
     D3=0;
     if(bit_test(numero,4)==1)
     D4=1;
     if(bit_test(numero,4)==0)
     D4=0;
     }

void enviar_digito()
     {
     
     output_low(DTMF_CE);
     delay_ms(10);
     
     numero=numerodis[j];
     cargar_dato();

for(j=0;j<=i;++j)
     { 

//envío del D0
   
     output_high(DTMF_CLK);
     DTMF_DATA=D0;
     delay_us(5);
     output_low(DTMF_CLK);
     delay_us(5);
     
//envío del D1     
     
     output_high(DTMF_CLK);
     DTMF_DATA=D1;
     delay_us(5);
     output_low(DTMF_CLK);
     delay_us(5);
     
//envío del D2
     
     output_high(DTMF_CLK);
     DTMF_DATA=D2;
     delay_us(5);
     output_low(DTMF_CLK);
     delay_us(5);
     
//envío del D3
     
     output_high(DTMF_CLK);
     DTMF_DATA=D3;
     delay_us(5);
     output_low(DTMF_CLK);
     delay_us(5);
     
//envío del D4
   
     output_high(DTMF_CLK);
     DTMF_DATA=D4;
     delay_us(5);
     output_low(DTMF_CLK);
 
     numero=numerodis[j];
     cargar_dato();
     printf(" %u ",numero);

//tiempo de vida del tono

     delay_ms(500);
     
     }
   
//rutina  de stop data

     for(x=0;x<=4;++x)
     {
     output_high(DTMF_CLK);
     DTMF_DATA=1;
     delay_us(5);
     output_low(DTMF_CLK);
     delay_us(5);
     }


output_high(DTMF_CE);

     }

void rediscar()
    {
     putc('r');
     output_high(rele_output1);
     delay_ms(1000);
       
     enviar_digito();
 
     putc('F');
     delay_ms(10);
     output_low(rele_input);
     for(j=0;j==i;++j)
     numerodis[j]=0;
     interrupcion_ext=0;
   }
Apaga la tele!!!!!!!  y movilizate en bicicleta...

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #2 en: 12 de Enero de 2008, 01:21:32 »
Hola, bienvenido al foro!
La linea telefonica, tiene una tension de unos 48v cuando esta libre, y al levantar el tubo, se "carga" y cae a una tension menor de 10 v
Por eso, se emplea un capacitor, por el cual pasara la tension pulsante del timbre de llamada....y al levantar el tubo, se "puentea" el capacitor....
No se como conectaste tu circuito, pero para control, podrias colocar ademas un led, y una resistencia de unos 4,7k...  prueba si asi se "mantiene retenida la linea"
En una oportunidad construí una espera musical, y colocaba un pequeño trafo, por el cual le inyectaba el audio, y lo retenia con un tiristor de muy baja potencia (o un rele)


Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado bikertron

  • PIC10
  • *
  • Mensajes: 27
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #3 en: 16 de Enero de 2008, 16:36:52 »
Gracias por tus concejos  :) :) :) :)......

Ahora mas bien estoy pegado con el codigo para generar los tonos con el ht9200A.....lamentablemente no he podido lograr los silencios entre tonos....el codigo de arriba ilustra la generación.....

Para entender el circuito, te explico que tengo implementada una linea artificial para cuando el individuo marca el primer digito conmuta (mt8870 entrega una interrupcion), la linea publica me entrega el tono de invitación a marcar para luego darle los niveles de tensión en la linea alternativa conmutada mediante un rele (rele de 8 pines, 2 para la bobina). Cuando reconozco a quien quiere llamar por un proceso de conmutació de reles encamino la llamada y vuelvo a DISCAR MEDIANTE EL GENERADOR POR LA LINEA SELECCIONADA para luego vovler a conmutar la linea de "voz" con la salida seleccionada.

 :) :) :) :) :) :) :)
Apaga la tele!!!!!!!  y movilizate en bicicleta...

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #4 en: 16 de Enero de 2008, 20:06:26 »
Hola Bikertron, o sea que estas haciendo un "repetidora" del numero discado...
pero por lo poco que se de C, estas colocando delay_us(5)
5 microsegundos....  creo que tendrias que colocar al menos 200 milisegundos...

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado bikertron

  • PIC10
  • *
  • Mensajes: 27
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #5 en: 16 de Enero de 2008, 23:31:45 »
Hola Bikertron, o sea que estas haciendo un "repetidora" del numero discado...
pero por lo poco que se de C, estas colocando delay_us(5)
5 microsegundos....  creo que tendrias que colocar al menos 200 milisegundos...

Norberto

Estimado norberto con eso estoy implementando  un reloj de 100khz en la comunicación serial con el HT9200a para sicronizar los datos
Apaga la tele!!!!!!!  y movilizate en bicicleta...

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #6 en: 28 de Enero de 2008, 21:09:12 »
veo que despues de enviar una trama de digito dtmf estas enviando el codigo "dtmf off" y luego deshabilitas el CE del ht9200a, no te recomiendo eso, guiandome de este ejemplo del ensalce de abajo he observado que el "dtmf off" dura 40milisegundos y luego vuelve a enviar el siguiente digito dtmf sin tocar el CE.

http://www.todopic.com.ar/foros/index.php?topic=15304.msg96142#msg96142

pd: te mande un privado.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado bikertron

  • PIC10
  • *
  • Mensajes: 27
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #7 en: 29 de Enero de 2008, 12:49:16 »
Muchas Gracias Micro_cadaver  :-/ :-/ :-/ :-/ :-/ voy a echarle un vistazo a lo que publicaste.....que por lo demás está muy bien explicado
Apaga la tele!!!!!!!  y movilizate en bicicleta...

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #8 en: 29 de Enero de 2008, 17:28:10 »
hola aca te mando el programa para el ht9200 en C del compilador CSS

#include <16f628a.h>
#fuses HS,NOWDT,PUT,NOPROTECT,BROWNOUT,MCLR,NOLVP,NOCPD
#use delay(clock=20000000)
#use fast_io(b)

#byte porta = 0x05
#byte portb = 0x06

#bit  dtmf_ce     = portb.0
#bit  dtmf_datos  = portb.1
#bit  dtmf_reloj  = portb.2

int contador,numero;

void envia_dtmf(numero);
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
//
//
//    Funcion Principal
//
//
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------

void main()
{
   set_tris_b(0);
   output_b(0);
   dtmf_ce = 0;

   delay_ms(100);

   envia_dtmf(2);//digito 2
   envia_dtmf(31);//off dtmf

   envia_dtmf(7);//digito 7
   envia_dtmf(31);//off dtmf

   envia_dtmf(6);//digito 6
   envia_dtmf(31);//off dtmf

   envia_dtmf(9);//digito 9
   envia_dtmf(31);//off dtmf

   envia_dtmf(10);//digito 0
   envia_dtmf(31);//off dtmf

   envia_dtmf(3);//digito 3
   envia_dtmf(31);//off dtmf

   envia_dtmf(3);//digito 3
   envia_dtmf(31);//off dtmf

   while(1);

}
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
//
//    Funcion que envia codigo dtmf por el ht9200
//
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
void envia_dtmf(numero)
{
   int a;
   dtmf_reloj=1;

   for(a=0;a<5;a++)
   {
      dtmf_datos=0;
      if( bit_test(numero,0) )
         dtmf_datos=1;

      dtmf_reloj=0;
      delay_us(5);
      dtmf_reloj=1;
      numero >>= 1;
   }

   delay_ms(60);
}

saludos!  :-/


pd: habia cometido un error que si quieres el codigo de la tecla 0 en dtmf tienes que ver la tabla que esta en el datahseet del ht9200 donde verás que dice que tienes que mandar el numero 10.
« Última modificación: 30 de Enero de 2008, 16:01:43 por micro_cadaver »
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado bikertron

  • PIC10
  • *
  • Mensajes: 27
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #9 en: 29 de Enero de 2008, 18:33:39 »
Interesante trabajo estimado micro_cadaver..... Muy agradecido...... 8) 8) 8)
....................................toda la mañana la gaste creando un driver para el ht9200 en assembler..jajaj con la intervencion que hiciste inicialmente...

Apaga la tele!!!!!!!  y movilizate en bicicleta...

Desconectado bikertron

  • PIC10
  • *
  • Mensajes: 27
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #10 en: 30 de Enero de 2008, 13:58:16 »
hola aca te mando el programa para el ht9200 en C del compilador CSS


Encontre un conflicto al analizarlo......los tono correspondientes a 8-9-0-*-#-A-B-C generan un tono puro  :shock: , eso mismo me pasaba antes pero con otros números y con un codigo propio.................

ESTOY TRABAJANDO EN ESO  :lol: :lol:

la trama de los datos enviados serialmente estan correctas...curiosamente los digitos conflictivos comparten el mismo bit D3 en "uno"
Apaga la tele!!!!!!!  y movilizate en bicicleta...

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #11 en: 30 de Enero de 2008, 16:02:42 »
revisa esta tabla amigo

a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado bikertron

  • PIC10
  • *
  • Mensajes: 27
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #12 en: 30 de Enero de 2008, 18:38:00 »
revisa esta tabla amigo



los datos envíados concuerdan con los de la tabla......hiciste la prueba tu??....con el osciloscopio me doy cuenta de que me entrega los tono puros para los digitos antes mencionados

Saludos
Apaga la tele!!!!!!!  y movilizate en bicicleta...

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #13 en: 31 de Enero de 2008, 02:54:53 »
sip y va bien  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado bikertron

  • PIC10
  • *
  • Mensajes: 27
Re: Interfaz con Tip-Ring telefonico usando HT9200A
« Respuesta #14 en: 31 de Enero de 2008, 14:01:02 »
sip y va bien  :-/

lo revisaste en el osciloscopio o por un parlante??? :?
Apaga la tele!!!!!!!  y movilizate en bicicleta...