Llamar a un telfono por pulsos, es relativamente sencillo, ya que lo q se necesita, es colgar
y descolgar la lnea. En el Presente Proyecto, se plantea, que usando un clsico 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 lnea de telefnica normalmente tiene una tensin alta 45 - 60v , y cuando nosotros levantamos el auricular, hacemos que este voltaje cambie a 15- 25V. Ahora, nosotros debemos emular esto, con la lnea telefnica, 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 automtica. 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 Lnea telefnica. El Esquema que vamos ha usar es el siguiente.
Donde: #: Servir para colgar la lnea, y el valor que tiene en HEX segn la tabla, que pusimos en el tutorial de manejo de teclado es 0x0E *: Servir para descolgar la lnea, y el valor que tiene en HEX segn 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 lnea verde y la lnea roja. ya que sino ocasionara un corto en la lnea telefnica Entonces nuestro Programa lo que har, ser revisar el estado del teclado, y si se presiono una tecla, 0 - 9, enva 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 nmero
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>
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 Telefnica bsf PORTA,0 sigue2 ret50ms goto repite END
Ahora para la simulacin, 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'