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'
|
Espero haberte Ayudado
Yoel Ocmin
http://proyectosfie.tk
UNMSM - Lima Perú 2005
martes, 12 de abril de 2005