Llamada a Pulsos


Llamar a un teléfono por pulsos, es relativamente sencillo, ya que lo q se necesita, es colgar y descolgar la línea.
En el Presente Proyecto, se plantea, que usando un clásico teclado de 3x4 (que funciona de manera similar al de 4x4) 
se llame a un numero, y que luego, se le haga escuchar los pulsos que uno quiera, o sino, simplemente se cuelgue.
Para esto, debemos saber que la línea de  telefónica normalmente  tiene una tensión alta 45 - 60v , y cuando nosotros levantamos el auricular, hacemos que este voltaje cambie a 15-25V. Ahora, nosotros debemos emular esto, con la línea telefónica, y la manera de hacerlo es colocando una resistencia de 1M entre los terminales

Donde Como se ve en el esquema, si presionamos el witch podemos colgar y descolgar. Ahora, que ya tenemos la idea formada. Nosotros necesitamos que esto sea de manera automática. y es para esto que vamos a usar un Micro relé, (Este es parecido a un relé, pero consume menos), tal que si lo polarizamos mediante un transformador BC547, podamos mediante un pin de un uCo, controlar el cuelgue y descuelgue de la Línea telefónica. El Esquema que vamos ha usar es el siguiente.

Donde:
 #: Servirá para colgar la línea, y el valor que tiene en HEX según la tabla, que pusimos en el tutorial de manejo de teclado es 0x0E
  *: Servirá para descolgar la línea, y el valor que tiene en HEX según la tabla, que pusimos en el tutorial de manejo de teclado es 0x0F
OBS: En el esquema de arriba, me falto colocarle la resistencia de 1M entre la línea verde y la línea roja. ya que sino ocasionaría un corto en la línea telefónica
Entonces nuestro Programa lo que hará, será revisar el estado del teclado, y si se presiono una tecla, 0 - 9, envía secuencia de pulsos, (10 para 0, 1 para 1, 2 para 2, ....., 9 para 9), respectivamente a intervalos de 50ms entre pulso y pulso; y 500ms entre numero y número

                        LIST P=16F628
                        RADIX HEX
 #include <P16F628.INC> ;Se incluye la definicion de los registros

            cblock 0x20
            endc

#include <macros.inc> ;Incluyo mis macros

            ORG 0x00 ;Inicio en el Vector de Reset
            goto INICIO
            ORG 0x05

;Incluyo librerias de Teclado
;Aqui hay 2 variables, TECLA y flag_tecla
;TECLA=> tecla Pressionada
;flag_tecla => Indica si se presiono Tecla
#include <teclado.inc>

;Incluye Distintos Retardos por Software
;ret10ms ret20ms ret30ms ret40ms
;ret50ms ret100ms ret200ms ret250ms
;ret500ms ret1seg
#include <retardos.inc>

INICIO
        movlw 7
        movwf CMCON ;PORTA =Entradas Digitales

        bsf STATUS,RP0 ; Paso al Banco 1
        bcf STATUS,RP1
        clrf PORTA         ;Puerto A Salidas
        clrf VRCON ;A/D Voltaje de Referencia Desabilitado
        bcf STATUS,RP0 ;Regreso al Banco 0

        call CONFIGURA_TECLADO
repite
        call LEO_TECLADO
        compara flag_tecla,0
        jz repite
        ;Si se Presiono Tecla
        compara TECLA,0x0E
        jz es_asterisco
        compara TECLA,0x0F
        jz es_michi
        compara TECLA,0
        jnz pulsos
        mov TECLA,.10
        ;hago los pulsos respetivos
pulsos
        bcf PORTA,0 ;Cuelgo la Linea
        ret50ms
        bsf PORTA,0 ;Descuelgo la linea
        ret50ms
        decf TECLA,F ;Decremento variable,TECLA
        jnz pulsos
        goto sigue2

es_asterisco ;Cuelgo la Linea Telefonica
        bcf PORTA,0;
        goto sigue2

es_michi ;Descuelgo la Linea Telefónica
        bsf PORTA,0
sigue2
        ret50ms
        goto repite 
END


Ahora para la simulación, en Proteus-Isis, no tengo el modelo del Micro relé, pero si tengo el del relé, así que le coloco un relé y como propiedad le pongo de que sea de 5V (por Default es 12V). y lo simulo. Por ejemplo abajo se muestra el resultado, cuando se Presiono '0'


Si Deseas los archivos de simulación, lo puedes obtener de Aquí

Espero haberte Ayudado

Yoel Ocmin
http://proyectosfie.tk
UNMSM - Lima Perú 2005

martes, 12 de abril de 2005