Autor Tema: marcador por tono DTMF (novato)  (Leído 14985 veces)

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

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 390
marcador por tono DTMF (novato)
« en: 21 de Octubre de 2009, 02:59:54 »
hola compañeros foreros, quiero hacer un llamador por telefono por tono, esto puede ser utilisando algun CI de la spesialidad como el HT9200B, pero el problema es que en mi país segun yo no esta, y queria ver si alguien save de algun otro integrado que m permita generar los tonos DTMF. o acerlo mediante un pic, e visto que hay una libreria  EX_DTMF.C  que genera estos tonos, pero tengo 2 inconvenientes con esto:
1- se nesesita un trnasformador para suavisar la señal
2- esta pensada para trabajarla con un teclado 3x4.
bueno no puedo trabajar con teclado ya que quiero conectarlo al PC.
bueno mi pregunta es:
alguien tiene o save de algun CI que aga estó osea generar tonos DTMF ???
alguien save o me puede ayudar a modificar la libreria para poder trabajarla con el pc y no con un teclado?????

bueno la libreria es esta;
Código: [Seleccionar]
/////////////////////////////////////////////////////////////////////////
////                           EX_DTMF.C                             ////
////                                                                 ////
////  This program simulates a touch-tone telephone.  The user can   ////
////  push keys on the keypad and the dtmf tones will be heard over  ////
////  the speaker.  If the user places the receiver of a telephone   ////
////  over the speaker, and then dials a number on the keypad, the   ////
////  telephone will recognize the dtmf tones and place the call.    ////
////                                                                 ////
////  Configure the CCS prototype card as follows:                   ////
////     Plug in the KEYPAD.                                         ////
////     Connect a R-2R ladder to Port D as shown below.             ////
////     Connect the negative wire of the speaker to ground.         ////
////     Connect the positive wire of the speaker to the output of   ////
////        the R-2R ladder.                                         ////
////                                                                 ////
////  PIN 32  PIN 33  PIN 34  PIN 35  PIN 36  PIN 37  PIN 38  PIN 39 ////
////    |       |       |       |       |       |       |       |    ////
////   2R      2R      2R      2R      2R      2R      2R      2R    ////
////    |       |       |       |       |       |       |       |    ////
////    *---R---*---R---*---R---*---R---*---R---*---R---*---R---*    ////
////    |                                                       |    ////
////   2R                                                       |    ////
////    |                R = 100 ohms                         OUTPUT ////
////   GND PIN 27       2R = 200 ohms                                ////
////                                                                 ////
////  This example will work with the PCB, PCM and PCH compilers.    ////
////  The following conditional compilation lines are used to        ////
////  include a valid device for each compiler.  Change the device,  ////
////  clock and RS232 pins for your hardware if needed.              ////
/////////////////////////////////////////////////////////////////////////
////        (C) Copyright 1996,2003 Custom Computer Services         ////
//// This source code may only be used by licensed users of the CCS  ////
//// C compiler.  This source code may only be distributed to other  ////
//// licensed users of the CCS C compiler.  No other use,            ////
//// reproduction or distribution is permitted without written       ////
//// permission.  Derivative programs created using this software    ////
//// in object code form are not restricted in any way.              ////
/////////////////////////////////////////////////////////////////////////


#if defined(__PCB__)
#include <16c56.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)    // must be 20 MHz

#elif defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)    // must be 20 MHz

#elif defined(__PCH__)
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)    // must be 20 MHz
#endif

#include <kbd.c>

CONST unsigned int SINE_WAVE[200] = {
128,132,136,139,143,147,150,154,158,161,165,169,172,176,179,
182,186,189,192,195,199,202,204,207,210,213,215,218,220,223,
225,227,229,231,233,235,237,238,240,241,242,243,244,245,246,
247,247,247,248,248,248,248,248,247,247,247,246,245,244,243,
242,241,240,238,237,235,233,231,229,227,225,223,220,218,215,
213,210,207,204,202,199,195,192,189,186,182,179,176,172,169,
165,161,158,154,150,147,143,139,136,132,128,124,120,117,113,
109,106,102, 98, 95, 91, 87, 84, 80, 77, 74, 70, 67, 64, 61,
 57, 54, 52, 49, 46, 43, 41, 38, 36, 33, 31, 29, 27, 25, 23,
 21, 19, 18, 16, 15, 14, 13, 12, 11, 10,  9,  9,  9,  8,  8,
  8,  8,  8,  9,  9,  9, 10, 11, 12, 13, 14, 15, 16, 18, 19,
 21, 23, 25, 27, 29, 31, 33, 36, 38, 41, 43, 46, 49, 52, 54,
 57, 61, 64, 67, 70, 74, 77, 80, 84, 87, 91, 95, 98,102,106,
109,113,117,120,124};

int index1,index2,inc1,inc2;


#INT_RTCC
void wave_generator() {
   int wave = 0;

   set_rtcc(25);           // when clock is 20MHz, interrupts every 100us

   wave = ((long)SINE_WAVE[index1]+(long)SINE_WAVE[index2])/2;
   output_d(wave);

   index1 += inc1;
   index2 += inc2;

   if(index1 >= 200)
      index1 -= 200;

   if(index2 >= 200)
      index2 -= 200;
}

#define DTMF_ROW1   14  // for 700 Hz, increment this many times every 100us
#define DTMF_ROW2   15  // for 750 Hz, increment this many times every 100us
#define DTMF_ROW3   17  // for 850 Hz, increment this many times every 100us
#define DTMF_ROW4   19  // for 950 Hz, increment this many times every 100us
#define DTMF_COLA   24  // for 1200 Hz, increment this many times every 100us
#define DTMF_COLB   27  // for 1350 Hz, increment this many times every 100us
#define DTMF_COLC   30  // for 1500 Hz, increment this many times every 100us

void generate_dtmf_tone(char keypad, long duration)  {

   index1=0;
   index2=0;
   inc1=0;
   inc2=0;
   if((keypad=="1")||(keypad=="2")||(keypad=="3"))
      inc1=DTMF_ROW1;
   else if((keypad=="4")||(keypad=="5")||(keypad=="6"))
      inc1=DTMF_ROW2;
   else if((keypad=="7")||(keypad=="8")||(keypad=="9"))
      inc1=DTMF_ROW3;
   else if((keypad=="*")||(keypad=="0")||(keypad=="#"))
      inc1=DTMF_ROW4;

   if((keypad=="1")||(keypad=="4")||(keypad=="7")||(keypad=="*"))
      inc2=DTMF_COLA;
   else if((keypad=="2")||(keypad=="5")||(keypad=="8")||(keypad=="0"))
      inc2=DTMF_COLB;
   else if((keypad=="3")||(keypad=="6")||(keypad=="9")||(keypad=="#"))
      inc2=DTMF_COLC;

   setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
   enable_interrupts(INT_RTCC);
   enable_interrupts(GLOBAL);

   while(duration-- > 0)
   {
      delay_ms(1);
   }
   disable_interrupts(INT_RTCC);
   output_d(0);
}


void main()  {
   char k;

   kbd_init();

   while(TRUE)
   {
      k=kbd_getc();
      if(k!=0)
         generate_dtmf_tone(k, 100);
   }
}
espero que me puedan ayudar o orientar en lo que ando buscando.
saludos

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1651
Re: marcador por tono DTMF (novato)
« Respuesta #1 en: 21 de Octubre de 2009, 13:42:28 »
el MT8888 es codificador-decodificador DTMF
saludos
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 390
Re: marcador por tono DTMF (novato)
« Respuesta #2 en: 21 de Octubre de 2009, 21:54:36 »
hola gracias vamos a ver si lo encuentro

Desconectado krostby

  • PIC10
  • *
  • Mensajes: 33
Re: marcador por tono DTMF (novato)
« Respuesta #3 en: 25 de Octubre de 2009, 00:09:53 »
puedes usar el mt8880 con entrada hex, salida tono dtmf bastante estable. lo consigues en casa Keim, Santiago.Suerte

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 390
Re: marcador por tono DTMF (novato)
« Respuesta #4 en: 02 de Noviembre de 2009, 21:04:41 »
hola bueno les coment oque e conseguido el CM8870 y el HT9200A los cuales son decodificador de DTMF y codificador de DTMF, pero en los dos estoy teniendo problemas, les comento que en el CM8870 cuando lo conecto a la linea telefonica me empiesa a generar ruido y esta vastantes molestos, le adjunto el diagrama que estoy usando. en cuanto al generador de DTMF no se como ingresarle los numeros ya qu e este solo se hace mediante su entrada DATA de forma serie, lo unico que entiendo es que la forma de ingresar es de D0 a D4, pero nada mas. en esto alguien me puede ayudar por favor.

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1651
Re: marcador por tono DTMF (novato)
« Respuesta #5 en: 02 de Noviembre de 2009, 21:15:00 »
hace un tiempo utilicé este diagrama para el 8870 y funciona

para el otro habria q mirar bien el datasheet para inicializarlo y poder generar el DTMF
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 390
Re: marcador por tono DTMF (novato)
« Respuesta #6 en: 02 de Noviembre de 2009, 21:33:00 »
hola jhozate  pero no que son distintos el MT8870 y el CM8870 ???? en cuanto a los voltajes ?????

Desconectado krostby

  • PIC10
  • *
  • Mensajes: 33
Re: marcador por tono DTMF (novato)
« Respuesta #7 en: 02 de Noviembre de 2009, 21:43:24 »
Hola Japifer 22.  No entiendo porque estas utilizando un amp de bajo ruido,  no es necesario que pases los tonos dtmf de la línea por un 386 hacia el 8870.  lo puedes utilizar directamente si usas un buen acoplador de linea con un trafo 600:600.

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1651
Re: marcador por tono DTMF (novato)
« Respuesta #8 en: 02 de Noviembre de 2009, 21:48:20 »
no entiendo a q te refieres con los voltajes ..pero es un decodificador DTMF y hace lo mismo que el CM
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 390
Re: marcador por tono DTMF (novato)
« Respuesta #9 en: 02 de Noviembre de 2009, 22:03:04 »
olvidenlo esque en este tema soy demasiado novato no entiendo nada de esto  :? , pero en fin mmm estava pensandon en lo que me dijiste en el primer post de utilisar el MT8880, ya que krostby me dijo donde encontrarlos, por que de todas formas nesesito codificar y decodificar estas señales, pero alguien de ustedes tiene el circuito para montar el MT8880 ?? tanto para generas las señales como para decifrar estas mismas ????? que me puedan facilitar por favor.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: marcador por tono DTMF (novato)
« Respuesta #10 en: 03 de Noviembre de 2009, 12:01:31 »
Hola jhozate, tienes algún esquema para enviar DTMF's a la red telefónica? de preferencia sin trafo? se puede mediante rectifiador?

saludos.
.

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1651
Re: marcador por tono DTMF (novato)
« Respuesta #11 en: 03 de Noviembre de 2009, 13:51:02 »
no cryn no tengo ese esquema (en el momento, pero creo poder conseguirlo con alguien) pero supongo que el esquema tipico que viene en el datasheet del MT8880 serviria para empezar...y si japifer con el 8880 pueder codificar y decodificar...ahi la espinita seria mirar bien la hoja de datos por que hay que hacer una rutina de inicializacion que tambien esta en la hoja de datos.
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1651
Re: marcador por tono DTMF (novato)
« Respuesta #12 en: 03 de Noviembre de 2009, 14:31:21 »
viendo la hoja de datos del 8880...tal parece que es mas sencillo utilizar el HT9200 que segun parece solo es seleccionar el modo en que se ingresaran los bits correspondientes(5 bits) al tono a generar y esto se hace poniedo a 0 al pin S/P (modo serial) o poniendo a 1 (modo paralelo) y luego enviar los 5 bits
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: marcador por tono DTMF (novato)
« Respuesta #13 en: 03 de Noviembre de 2009, 14:41:01 »
no cryn no tengo ese esquema (en el momento, pero creo poder conseguirlo con alguien) pero supongo que el esquema tipico que viene en el datasheet del MT8880 serviria para empezar...
En la hoja de datos solo están el circuito recomendado para su funcionamiento, pero no dice como conectarlo a una linea telefónica por ejemplo ya sea para recibir o enviar DTMF's.

Saludos, gracias por responder
.

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 390
Re: marcador por tono DTMF (novato)
« Respuesta #14 en: 03 de Noviembre de 2009, 16:18:06 »
hola buen oacavo de comprar los zrner que me falaba para armar el cto que me propusiste, ahora a provar a ver como anda, en aunto al HT9200 yo tengo el A osea los datos se le ingresa meniante su entrada serie la pregunta del millon es como le envio los datos a este ?? es que no entiendo como enviar los datos por un solo pin del pic. bueno ahora a empesar a esperimentar con todo y ir dejando los resultados en este post. (por el momento con el CM8870 ya que no se como mandat los datos al HT9200A  :mrgreen:)


 

anything