Discador telefónico DTMF con el PIC16F628A

El discador telefónico DTMF W91314A de Windbond Electronics es un circuito integrado monolítico que proporciona las señales necesarias para marcación por pulsos o tonos. El circuito integrado W91314A tiene una memoria de redial.

Características

  • Discador telefónico conmutable entre tonos DTMF ó pulsos
  • 32 dígitos para la memoria de redial
  • Tecla de Pulsos a Tonos (P -> T) para el funcionamiento de llamadas de larga distancia
  • Utiliza un teclado 4x4 o control electrónico de un microcontrolador
  • Fácil manejo con teclas de redial, flash, pausa y P -> T
  • Las funciones de Flash, pausa, P -> T (pulso-a- tonos) se pueden almacenar como un dígito en la memoria
  • Duración mínima de los tonos de salida: 100 ms
  • Pausa mínima entre tonos: 100 ms
  • Reset al encendido incorporado en el chip
  • Utiliza un cristal o resonador cerámico de 3.579545 MHz
  • Envasado en DIP plástico de 18 pines

Los diferentes discadores en la serie W91310 se muestran en la siguiente tabla:

discador telefónico w91314a

Pinout (patillaje)

Pinout del discador telefónico w91314a

R<4:1> - C<4:1> Entradas de Filas-Columnas
La entrada de teclado puede ser tanto del teclado estándar 4x4 o un teclado simple de un solo contacto y bajo costo. También se puede utilizar la entrada electrónica desde un microcontrolador. Una entrada de teclado válida se define como una sola fila conectada a una sola columna.

XT, /XT
Cristal o resonador cerámico de 3.579545 MHz.

MODE (Entrada)
Al conectar el pin MODE a Vss pone al chip en el modo de Tonos. Al conectar el pin MODE a VDD pone al W91314A en el modo de Pulsos (10 pps). Dejando el pin sin conectar pone al W91314A en el modo de Pulsos (20 pps).

/HKS (Entrada)
Entrada del interruptor de Colgado.
/HKS = 1: Estado de Colgado. Chip en modo suspendido, ninguna operación.
/ HKS = 0: Estado de Descolgado. Chip habilitado para operación normal.
El pin /HKS se conecta a VDD por una resistencia interna.

DTMF (Salida)

frecuencias dtmf

En el modo de Pulsos, se mantiene en estado bajo en todo momento. En el modo de Tonos, esta salida del discador telefónico emite un tono doble o individual.

VDD, Vss
Pines de alimentación.

B/M (Entrada)
Este pin no cumple función alguna en el modo de Tonos.

Operación con teclado y microcontrolador PIC16F628A

Operación con teclado

teclado del discador telefónico

Para generar una llamada, simplemente hay que poner al discador telefónico W91314A en el modo de Descolgado (/HKS = 0) y a continuación presionar las teclas correspondientes al número telefónico deseado. Al conectar una fila (R) con una columna (C) se generan simultáneamente los dos tonos indicados en la tabla anterior, los cuales son enviados por el pin DTMF.

Operación con microcontrolador PIC16F628A

Si se utiliza un microcontrolador PIC16F628A para remplazar al teclado, la idea fundamental es la misma: si se desea generar una llamada, se debe poner al W91314A en modo de Descolgado y luego conectar las filas y columnas de acuerdo a cada dígito que se quiere marcar. La técnica consiste en unir los 8 pines R<4:1> - C<4:1> del W91314A a 8 pines del microcontrolador (configurados momentáneamente como salidas) y luego enviar niveles bajos (GND) a los dos pines del PIC que están unidos a los dos pines del W91314A que se quieren juntar. Por ejemplo, para marcar el dígito “8”, se deben poner en nivel bajo los 2 pines del PIC conectados a C2 y R3; de esta forma los pines C2 y R3 quedan conectados a GND lo que equivale a una unión directa C2 - R3. En el siguiente circuito se pueden observar los detalles:

Discador telefónico dtmf con pic16f628a

Ejemplo con PIC16F628A en mikroC PRO

En el siguiente código, escrito en mikroC PRO, se debe observar que originalmente los pines del microcontrolador PIC16F628A se encuentran configurados como entradas (por defecto) lo que hace que presenten un estado de alta impedancia. Las parejas de pines se configuran momentáneamente como salidas para enviar el nivel bajo (GND) y luego se restablecen a su configuración inicial de alta impedancia. De otra forma se producirían interconexiones indeseadas de los pines del W91314A.

DiscadorDTMF.c : Genera una llamada al número 0987438877 usando el circuito W91314A como generador DTMF y el PIC16F628A como teclado electrónico. El discador se encuentra en modo Descolgado ya que el pin / HKS está conectado a GND (0).

//DiscadorDTMF.c
//Microcontrolador: PIC16F628A
//Oscilador interno: 4MHz (TCI=1us)

#define R4 RB7_bit
#define R3 RB6_bit
#define R2 RB5_bit
#define R1 RB4_bit

#define R4D TRISB7_bit
#define R3D TRISB6_bit
#define R2D TRISB5_bit
#define R1D TRISB4_bit

#define C4 RA3_bit
#define C3 RA2_bit
#define C2 RA1_bit
#define C1 RA0_bit

#define C4D TRISA3_bit
#define C3D TRISA2_bit
#define C2D TRISA1_bit
#define C1D TRISA0_bit

void main(){
CMCON=0x07;  //Pines RA como E/S digital.
TRISA=0xFF;  //Puerto A como entrada.
TRISB=0xFF;  //Puerto B como entrada.

Delay_ms (2000); //Espera 2 segundos antes de hacer la llamada.

//0
C2=0; R4=0;    //Escribir niveles bajos en los latch de salida.
C2D=0; R4D=0;  //Enviar los niveles bajos a los pines de salida.
Delay_ms(80);  //Generar los tonos durante 80 ms.
C2D=1; R4D=1;  //Restablecer los pines a su estado de alta Z.
Delay_ms(200); //Esperar 200ms antes de enviar el siguiente dígito.

//9
C3=0; R3=0;
C3D=0; R3D=0;
Delay_ms(80);
C3D=1; R3D=1;
Delay_ms(200);

//8
C2=0; R3=0;
C2D=0; R3D=0;
Delay_ms(80);
C2D=1; R3D=1;
Delay_ms(200);

//7
C1=0; R3=0;
C1D=0; R3D=0;
Delay_ms(80);
C1D=1; R3D=1;
Delay_ms(200);

//4
C1=0; R2=0;
C1D=0; R2D=0;
Delay_ms(80);
C1D=1; R2D=1;
Delay_ms(200);

//3
C3=0; R1=0;
C3D=0; R1D=0;
Delay_ms(80);
C3D=1; R1D=1;
Delay_ms(200);

//8
C2=0; R3=0;
C2D=0; R3D=0;
Delay_ms(80);
C2D=1; R3D=1;
Delay_ms(200);

//8
C2=0; R3=0;
C2D=0; R3D=0;
Delay_ms(80);
C2D=1; R3D=1;
Delay_ms(200);

//7
C1=0; R3=0;
C1D=0; R3D=0;
Delay_ms(80);
C1D=1; R3D=1;
Delay_ms(200);

//7
C1=0; R3=0;
C1D=0; R3D=0;
Delay_ms(80);
C1D=1; R3D=1;
Delay_ms(200);
}
   

El ejemplo mostrado intenta describir únicamente el proceso básico de generación de llamadas con el microcontrolador PIC16F628A y el IC W91314A. Se puede mejorar para que la conexión de la línea sea automatizada así como el estado de Descolgado. También se pueden agregar otras opciones a gusto del lector, como el llamado a varios números telefónicos, la generación de llamadas activadas por uno o varios sensores, la transmisión de mensajes de voz grabados, etc.