Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
DE
TAPA
Saber Electrnica
3
Artculo de Tapa
Timbre de Llamada
por la Red Elctrica
El circuito que describiremos sirve para ser empleado
en el hogar pero tambin es itl en sanatorios, hoteles o
donde sea preciso establecer un sistema de llamada sencillo utilizando la red elctrica como medio de enlace.
Este circuito puede ser considerado como un timbre
porttil, porque al ser colocado en una habitacin, puede
ser trasladado a otro mbito segn los requerimientos
que se deseen cumplir, sin tener que instalar cables para
su conexin. La ventaja del circuito es que es posible
hacer varios receptores que funcionen con un nico
transmisor, o varios transistores que funcionen con un
nico receptor. Adems, se pueden construir dos transmisores y dos receptores para que el sistema funcione
como intercomunicador. El dispositivo bsico entonces,
puede ser considerado como un timbre que no precisa
cables para su instalacin y est constituido por un
pequeo transmisor y un simple receptor que funcionan
en una frecuencia de 100kHz.
La seal que genera el transmisor
se conduce hacia el receptor a travs
de los cables de la instalacin elctrica de su casa y funciona con la base
de la transmisin de seales por
medio de una portadora que puede
ser recepcionada por diferentes equipos instalados en varios puntos de la
red. Es por ello que el circuito tiene
sus limitaciones, en especial se debe
conectar el sistema de manera tal que
las masas tanto del transmisor como
del receptor queden sobre un mismo
conductor de la red, de manera que
conectando la ficha sobre el toma,
simple y llanamente no va a funcionar,
por lo cual se deber invertir la ficha.
Dicho de otra manera: si al enchufar
el aparato nada capta, la solucin es
invertirlo.
El sistema est formado por un
transmisor y un receptor. El esquema
elctrico del transmisor se muestra en
la figura 1. Est constituido por tres
transistores y un circuito de alimentacin, que no precisa transformador
reductor.
En serie con la ficha de conexin a
la red se conecta el pulsador P1, de
modo que en el momento de accio-
Saber Electrnica
4
Figura 1
Figura 2
Artculo de Tapa
Figura 3
Figura 4
Saber Electrnica
6
Artculo de Tapa
del R3 = 47
R4 = 3k3
R5 = 330k
R1 = 100k
R6 = 10k
R2 = 3k3
R7 = 120k
R3 = 47
R8 = 100k
R4 = 1k
R9 = 27k
R5 = 10M
R10 = 22k
C1, C2 =4,7nF - capacitores de C1, C6, C7, C8 = 0,1F - capacitopolister.
res cermicos.
C3 = 100F x 25V - capacitor elec- C2 = 47nF - capacitor de polister.
troltico.
C3 = 47F x 25V - capacitor electroC4 = 47nF x 400V - capacitor de ltico.
polister.
C4 = 4,7nF - capacitor cermico.
C5=330nF x 400V - capacitor de C5 = 2,2nF - capacitor cermico.
polister.
D1, D2 = 1N4007 - diodos rectificaD1 a D4 = diodo 1N4007 diodos rec- dores.
tificadores.
DZ1 = diodo zener de 15V por 1W.
DZ1 = diodo zener de 30V x 1 watt. L1, L2 = ver texto.
JAF1 = impedancia de 1mH.
Q1, Q2 = BC548 - transistores NPN
Q1 =NPN tipo BC237 o BC548.
de uso general.
Q2 =NPN tipo BC237 o BC548.
IC1 = CD4520 - Circuito integrado
Q3 =PNP tipo BC328 o BC558.
CMOS divisor por 10.
S1 = pulsador normal abierto.
Tr = Transductor piezolctrico.
Lista de Materiales
Transmisor (figura 1)
Saber Electrnica
8
aconseja montar IC1 en un zcalo. Para verificar el funcionamiento del timbre, se debe colocar el transmisor en
un tomacorriente y el receptor en otro, dentro de una
misma habitacin, luego se aprieta el botn de llamada,
y se verifica la reproduccin en el piezoelctrico del
receptor. Si no se escucha la chicharra, invierta la ficha
sobre el toma y vuelva a repetir la experiencia.
Si la masa del transmisor y la masa del receptor no
estn en el mismo cable de la red elctrica, el circuito no
funcionar, luego si se invierte la ficha (slo la del receptor) pero el sistema igualmente no funciona, quiere decir
que hay algn error.
Si se tiene un Generador de BF, para verificar el funcionamiento del receptor, se puede aplicar una seal de
externa de 100kHz de onda cuadrada en paralelo con la
bobina L2. Hay que tomar en cuenta que en todo el circuito impreso circula la corriente de red de 110V/220V,
por lo tanto no se deben tocar las pistas con los dedos,
luego, girando la sintona del generador llegar un
momento en que se produzca el zumbido del traductor
piezoelctrico.
Si el receptor funciona de esta forma, quiere decir que
el error est en el transmisor, por lo cual se deber verificar su funcionamiento.
Mando Monocanal
por la Red Elctrica
El siguiente sistema consta de un transmisor que
enva pulsos de control a travs de la red elctrica y un
receptor capaz de reconocer dichos pulsos para activar
un rel que puede comandar a cualquier dispositivo con
la nica limitante que no exista un medidor de consumo
de corriente elctrica entre transmisor y receptor.
En este sistema, un mismo conductor (en este caso
se trata de conductores que llevan energa elctrica)
puede ser recorrido por seales de audio y RF, sin que se
produzcan interferencias; slo es necesario que entre las
frecuencias de dichas seales exista una proporcin
superior a 1:1.000, para que no se produzcan modulaciones.
El circuito elctrico del transmisor se muestra en la
figura 5 y lleva dos transistores del tipo SK3009 conectados en formacin Darlington, lo que aumenta la potencia
del sistema.
Dado que no es frecuente conseguir este transistor,
se han probado otros transistores (todos de germanio),
obteniendo resultados aceptables. De este modo, transistores del tipo AD149, antiguos pero siempre vigentes,
Figura 5
se comportaron perfectamente sin que hubiera que cambiar otros componentes. La seal es generada mediante
la oscilacin que produce L1, conectada mediante R1 y
C3 a la base de Q1. Como L1 y L2 estn muy acopladas,
se obtiene una fuerte realimentacin, bastante estable,
cada vez que se acciona S1.
El funcionamiento es sencillo, se basa en la inyeccin
de una seal de RF, de unos 220kHz, en la red elctrica
Figura 6
Saber Electrnica
9
Artculo de Tapa
Por lo dems, el dispositivo no requiere de
otro ajuste que la frecuencia de emisin la
cual se efectuar junto
al receptor.
Debido a la gran
potencia que posee el
transmisor que funciona
con nuestro circuito, el
receptor es muy sencillo, sin que sea necesario que posea una gran
sensibilidad, tal como se
muestra en el esquema
elctrico de la figura 7.
El conjunto basa su funcionamiento en una bobina
acoplada a la red elctrica (L1) mediante dos capacitores
de elevada tensin y baja capacidad, tal que no permitan
el paso de la seal de la red de 50Hz pero s el de la seal
de RF de 220kHz (C3 y C4).
La seal de RF se desarrollar en el secundario de T2
(L2) debido a la accin del circuito tanque formado por
esa bobina y el capacitor C5, que precisamente est sintonizado a la frecuencia prevista (220kHz). Ambas bobinas se construyen sobre un bastn de ferrite de 10 cm de
largo y 1 cm de dimetro, arrollando 10 espiras de alambre esmaltado de 0,5 mm de dimetro, para L1, y 20 vueltas del mismo alambre, para L2. Ambas bobinas se
encuentran devanadas una al lado de la otra.
La seal desarrollada en el circuito oscilante alimenta
el diodo detector D4. C6
elimina la componente
Figura 8
de RF permitiendo que
una componente de baja
frecuencia cargue al
capacitor C7 con una
constante que depender del valor que adopte
P1. De esta manera, se
proporciona un impulso
de disparo a la base de
Q1 que est conectado
en
disposicin
Darlington con Q2, con
el objeto de formar un
amplificador de corriente
de elevada impedancia
de entrada que favorecer el funcionamiento
del circuito detector.
La carga de Q2 es
un rel que acusar el
Saber Electrnica
10
Figura 7
impulso recibido cerrando sus contactos durante un instante. El tiempo que permanece "conectado" dicho rel,
depender de la constante de carga de C7; es decir,
regulando P1 se puede conseguir el perodo deseado por
el operador.
Si desea construir un telemando que active y desactive un interruptor, puede combinar las caractersticas de
este circuito con las de la "llave digital" publicada en
Saber Electrnica N98 y que puede bajar de nuestra web
con la clave llavedigi98. Por supuesto, deber eliminar
las plaquitas de contacto, conectar un extremo del interruptor del rel a masa y el otro a la base del transistor de
dicha llave (las masas de ambos circuitos deben ir unidas). En la figura 8 se reproduce el diseo de la placa de
circuito impreso. Para ajustar el transmisor con el receptor de telemando, conecte ambos equipos a la red elc-
Timbre o Control
Multicanal a Travs
de la Red Elctrica
Figura 9
Figura 10
Saber Electrnica
11
Artculo de Tapa
Figura 11
Saber Electrnica
12
sor, tiene su salida en el nivel bajo. Eso hace que los osciladores montados en torno de CI2b, y CI2c se mantengan
desactivados.
Cuando el circuito PLL reconoce la seal de la estacin transmisora la salida va a estado bajo, la primera
compuerta conmuta su tensin y se habilitan los osciladores.
El resultado es la produccin de una seal de audio
intermitente, producto de las seales generadas por
ambos osciladores y mezcladas en la ltima compuerta
digital. De esta manera, se genera en un buzzer un "bip",
cada vez que se activa el transmisor. La frecuencia de los
bips es dada por C6 y la intermitencia es dada por C7.
La fuente de alimentacin consiste en un transformador, dos diodos y un capacitor. La tensin mxima de alimentacin es de 10V, dado que ste es el valor mximo
que soporta el 567.
Como dijimos al comienzo, tendremos problemas de
enlace si existe algn medio que derive a masa las seales del transmisor, como por ejemplo un transformador de
aislacin, un medidor de corriente o, en especial, si el
transmisor estuviera conectado a una fase y el receptor a
otra de una misma instalacin.
En un caso como ste, el problema puede ser resuelto con la conexin de un capacitor de 120nF x 600V entre
las dos fases, conforme a lo sugerido en la figura 10.
El capacitor ofrece un camino de baja impedancia
para las seales de alta; frecuencia que pueden entonces pasar de una red a otra, sin embargo, su resistencia
ser elevada para los 50HZ de red e incluso, hasta favorecer la correccin del factor de potencia de la instalacin.
En la figura 11 tenemos el circuito completo del transmisor.
Saber Electrnica
13
Artculo de Tapa
Figura 13
Saber Electrnica
14
Varios:
Placas de circuito impreso, gabineCI1 - NE567 - circuito integrado PLL tes para montaje (ver texto), estao,
CI2- 4093- circuito integrado CMOS cables, etc.
ne S1 que activa el oscilador cuya frecuencia es controlada por P1, y ajuste en el receptor el trimpot hasta captar la seal. Cuando eso ocurre, el LED debe encender y
el oscilador entrar en accin.
Tenga cuidado para hacer la sintona correcta, pues
estando cerca, para estar seguro, coloque el receptor en
otro toma alejado y verifique la recepcin; si no ocurriera,
ajuste nuevamente el pre-set del receptor.
Para hacer el ajuste fino mantenga S1 accionado y
coloque el receptor en una sala distante. Ajuste el pre-set
para la sintona correcta.
En la figura 15
damos un circuito adi- Figura 16
cional que puede ser
usado para aumentar
la sensibilidad del
receptor, necesario en
los locales ms distantes del ambiente de
operacin
Comprobado
el
funcionamiento de un
receptor, repitiendo los
pasos recin explicados, se efecta el ajuste de otro canal. Con
Figura 15
Saber Electrnica
15
Artculo de Tapa
inyectar la seal de audio. En el receptor, tuvimos que
desintonizar levemente el PLL para poder obtener la
seal modulada.
La informacin de audio la obtuvimos por medio de un
diodo (1N4148) colocado en pata 8 del 567, con un capacitor de 10nF conectado a masa. Como amplificador de
audio empleamos un circuito para autorradio con
TDA2002. Cabe aclarar que esta experiencia tiene fines
didcticos y si bien los resultados fueron satisfactorios, no
creemos recomendable que sean efectuados por hobbystas sin experiencia.
En la figura 17 se muestra la configuracin que debera adoptar cada receptor si se quisiera controlar con l
algn artefacto elctrico.
Por ltimo, debemos aclarar que por estar presente la
tensin de red en algunas pistas de los circuitos impresos, se deber tener sumo cuidado en la manipulacin
del sistema, dado que si por descuido se tocan dichas
pistas, el armador recibir una descarga elctrica.
El armado no reviste inconvenientes y la construccin
de las bobinas no es crtica.
Control de Artefactos
Electrnicos a Travs
de la Lnea Telefnica
El siguiente proyecto fue realizado por Augusto J.
Vega y Gustavo A. Schmidt, quienes establecen todos los
requerimientos en su pgina:
http://web.fi.uba.ar/~ajvega/micro/index.html#conclusiones
El dispositivo electrnico construido es una interfase
que, conectada a la lnea telefnica, es capaz de recibir y
atender llamadas entrantes con el fin de controlar uno o
ms artefactos conectados al mismo desde un aparato
telefnico remoto. El microcontrolador utilizado es un
AT89S8252 fabricado por ATMEL. Tambin fue necesario
incorporar al circuito un conversor DTMF a binario y un
controlador para comunicacin serie RS-232, ambos
genricos. El dispositivo es capaz de recibir e interpretar
tonos a travs de la lnea telefnica, y posteriormente
tomar determinadas acciones relacionadas con el control
de otros dispositivos electrnicos (como podran ser los
electrodomsticos hogareos). Esto permitie al usuario
tener control en forma remota de determinados equipos
electrnicos, utilizando un aparato telefnico convencional mediante el teclado del mismo, segn el siguiente
protocolo:
Saber Electrnica
16
1) Esperar los tonos de llamada o rings antes de aten der el telfono (configurable).
2) Una vez atendido el telfono, solicitar una contra sea para dar el servicio a quien est llamando. Luego de
validada la contrasea, se pasa al men de opciones.
3) Se usarn casi todos los dgitos del telfono (salvo
6, 7, # y *). En nuestro trabajo prctico pretendemos
manejar 9 rels, aunque en principio se ha implementado
uno solo, relacionando cada uno con cada dgito numeral
del teclado.
Una vez atendida la llamada, el men de opciones es
el siguiente:
1 - encendido: una vez marcada esta opcin, el siste ma queda a la espera de otro dgito (este segundo dgito
ingresado indica el nmero de rel a encender).
2 - apagado: una vez marcada esta opcin, el sistema
queda a la espera de otro dgito (este segundo dgito
ingresado indica el nmero de rel a apagar).
3 - consulta: una vez marcada esta opcin, el sistema
queda a la espera de otro dgito (este segundo dgito
ingresado indica el nmero de rel a consultar). Si el rel
est encendido, entonces se emite un beep largo a travs
de la lnea telefnica, y si est apagado se emite un beep
corto.
4 - cambio de contrasea: se utiliza para cambiar la
contrasea de acceso. Una vez marcada esta opcin, el
sistema queda a la espera de los 4 dgitos para la nueva
contrasea.
5 - cambio de la cantidad de rings de espera: se utili za para cambiar el parmetro que indica la cantidad de
rings a esperar antes de atender la llamada entrante. Una
vez marcada esta opcin, el sistema queda a la espera
de un dgito que indica la nueva cantidad de rings.
6-7: disponibles.
8 - reinicializacin: reinicializa el sistema pero sin des loguear al usuario. Esto es particularmente til cuando el
usuario, luego de seleccionar algunas opciones, no sabe
en qu situacin est.
9 - salir: corta la llamada.
Generacin de los beeps de respuesta
Luego de la seleccin de cualquiera de las opciones,
el sistema emite un beep largo para indicar "s". En algunos casos, el sistema emite un beep corto para indicar
"no"; esto sucede cuando la contrasea ingresada es
invlida, o para indicar que un rel se encuentra apagado. Ambos beeps se emiten por el pin 0 del puerto 1, tal
como explicamos ms adelante.
Administracin de la contrasea
Antes de poder utilizar cualquiera de las opciones, el
Figura 17
Figura 18
Administracin
de la cantidad de
rings de espera
El
sistema
espera una cierta
cantidad de rings
antes de atender la
llamada (anlogamente al funcionamiento de un contestador automtico).
Esa cantidad es
configurable
mediante la opcin
5, aunque por
defecto se toma el
valor 3. Solo acepta
Saber Electrnica
17
Artculo de Tapa
un dgito, con lo cual se podr configurar hasta 9 rings de
espera.
Diagrama de conexiones en bloque
En la figura 17 se presenta el diagrama de conexiones
en bloque del circuito construdo:
Software
En la figura 18 se presenta el diagrama de flujo
correspondiente al software desarrollado:
Las interrupciones utilizadas son las siguientes:
Interrupcin externa 0 (IE0): disparada cuando el
circuito integrado conversor de DTMF a binario pone en
alto el pin 12 (INT0) del microcontrolador, notificando la
presencia de un dgito vlido en sus 4 salidas.
Interrupcin externa 1 (IE1): disparada por el circuito detector de rings, con cada deteccin efectuada.
Interrupcin del puerto serie (RI/TI): disparada por
software (TI) cuando se tiene un caracter para enviar por
comunicacin serie RS232, o por hardware (RI) cuando
se ha recibido un caracter por la misma va. Interrupcin
del timer 0 (TF0): disparada por el timer 0 cuando transcurre una cantidad determinada de segundos sin que el
usuario haya seleccionado alguna opcin. Permite administrar un time-out, impidiendo que el programa quede en
un bucle de espera infinito en caso de que se corte la
comunicacin telefnica sin un desbloqueo explcito con
la opcin 9.
De los 4 puertos disponibles en el AT89S8252 se utilizaron los puertos 1, 2 y 3, con las siguientes finalidades:
Puerto P1
P1.0: salida de la seal que genera los beeps. Por
este pin el sistema emite la seal con diferentes duraciones para representar "si" o "no".
P1.1: encendido y apagado del rel. El sistema pone
en alto este pin para encender el rel, o lo pone en bajo
para apagarlo.
P1.2: comunicacin establecida. Cuando el sistema
"atiende" la llamada entrante, pone en bajo este pin, y lo
mantiene en ese nivel mientras dure la comunicacin
telefnica.
Figura 19
Saber Electrnica
18
EQU 0x02
EQU 0xFF
EQU 0X03
EQU 00001000b
EQU 00010000b
EQU 00000010b
DATA 96h
EQU 0x0001
EQU 0x0A
EQU 0x03
EQU 0xFF
EQU 0x00
EQU 0x01
EQU 0x10
EQU 0xF3
WAIT:
USER_LOGUED:
NEXT2:
NEXT3:
MOV SP,#0x7F
NEXT4:
NEXT5:
ORG 0x50
; *** Acceso a EEPROM para recuperar configuraciones ***
MAIN:
ORL WMCON,#EEMEN ; se habilita el acceso a EEPROM
MOV DPTR,#RELAY_1_STATUS
MOVX A,@DPTR
; se lee el estado del rel desde EEPROM
CJNE A,#SWITCHED_ON,RELAY_OFF2
SETB P1.1
; se enciende el rel
JMP RELAY_ON2
RELAY_OFF2:
CLR P1.1
; se apaga el rel
RELAY_ON2:
SETB P1.2
; para indicar "desatendido"
ANL P1,#00000110B ; "AND lgico" para inicializar P1 ( P1.0=BEEP
; P1.1=CONTROL REL ; P1.2=CONTROL CIRCUITOATENDIDO )
MOV P2,#0xFF
; P2 va a manejar I/O con el telfono remoto
MOV DPTR,#Q_RINGS_X ; se lee la cantidad de rings desde la direccin #Q_RINGS_X en EEPROM
MOVX A,@DPTR
CJNE A,#UNDEFINED,DEFINED ; si nunca se seto an la cantidad de rings
MOV A,#Q_RINGS_DEFAULT ; se asigna la cantidad "por defecto"
DEFINED:
MOV Q_RINGS,A
XRL WMCON,#EEMEN ; se deshabilita el acceso a EEPROM
; *** Fin acceso a EEPROM ***
; se usa para el stack los 128 bytes de acceso indirecto
CLR LOGUED
CLR SWITCH_ON
CLR SWITCH_OFF
CLR CHECK_RELAY
CLR CHANGE_PASS
CLR CHANGE_RINGS
CLR EXIT
CLR DIG_PRESSED
CLR SEND_CHAR
SETB IT0
; interrupcin externa INT0 por flanco descendente
SETB IT1
; interrupcin externa INT1 por flanco descendente
MOV BYTES_PASS,#0x00
MOV Q_RINGS_AUX,#0x00
MOV AUX,#0x00
MOV TIMEOUT_L,#0x00
MOV TIMEOUT_H,#0x00
MOV TL0,#0x00
MOV TH0,#0x00
CLR TF0
ORG 0x2B
RETI
; *** Fin vector de interrupciones *** ;
NEXT9:
CALL_BACK:
ORG 0x0100
JNB DIG_PRESSED,WAIT; espera hasta que se presione algn dgito
JB LOGUED,USER_LOGUED
CALL GET_PASS
JMP WAIT
JNB SWITCH_ON,NEXT2
CALL RELAY_ON
JMP WAIT
JNB SWITCH_OFF,NEXT3
CALL RELAY_OFF
JMP WAIT
JNB CHECK_RELAY,NEXT4
CALL GET_RELAY
JMP WAIT
JNB CHANGE_PASS,NEXT5
CALL CH_PASS
JMP WAIT
JNB CHANGE_RINGS,NEXT9
CALL CH_RINGS
JMP WAIT
JNB EXIT,CALL_BACK
CALL EXIT_PROGR
JMP WAIT
CALL DIG_HANDLER
JMP WAIT
;******************************************************************************************************
; EXTERNAL INTERRUPT 0 HANDLER
; Maneja la interrupcin externa 0, la cual se dispara cuando un nuevo dgito fu presionado
; en el aparato telefnico remoto.
; El dgito, en binario, entra por P2.0 P2.1 P2.2 P2.3 (Q4 Q3 Q2 Q1), se lo lee, y se lo
; coloca en DIGIT. Lo importante de esta subrutina es que REBATE el dgito recibido (dado que
; lo recibe al revs). Tambin seta DIG_PRESSED para que el programa principal acte.
;******************************************************************************************************
EI0_HANDLER: PUSH ACC
PUSH B
CLR TR0
MOV A,P2
MOV B,#0x00
BIT_0:
JNB ACC.0,BIT_1
SETB B.3
BIT_1:
JNB ACC.1,BIT_2
SETB B.2
BIT_2:
JNB ACC.2,BIT_3
SETB B.1
BIT_3:
JNB ACC.3,SWAP_END
SETB B.0
SWAP_END:
MOV DIGIT,B
MOV A,DIGIT
CJNE A,#0x08,NO_RST
POP B
POP ACC
DEC SP
MOV R0,SP
MOV @R0,#0x00
INC SP
MOV R0,SP
MOV @R0,#0x01
CLR SWITCH_ON
CLR SWITCH_OFF
CLR CHECK_RELAY
CLR CHANGE_PASS
CLR CHANGE_RINGS
CLR EXIT
CLR DIG_PRESSED
MOV TIMEOUT_L,#0x00 ; se reseta el contador de time-out,
MOV TIMEOUT_H,#0x00 ; debido a que el usuario presion una tecla
MOV TL0,#0x00
; inicializacin del timer 0 para que
MOV TH0,#0x00
; cuente 65536 cuentas
SETB TR0
RETI
NO_RST:
POP B
POP ACC
JNB NO_FIRST,IGNORE
SETB DIG_PRESSED
IGNORE:
SETB NO_FIRST
;Contina
Saber Electrnica
19
Artculo de Tapa
Tabla 1 - Programa del Circuito de Control por la Red Elctrica (continuacin)
MOV T_CHAR,DIGIT
SETB SEND_CHAR
MOV TIMEOUT_L,#0x00
MOV TIMEOUT_H,#0x00
MOV TL0,#0x00
MOV TH0,#0x00
SETB TR0
RETI
; para debugging
; para debugging
; se reseta el contador de time-out,
; debido a que el usuario presion una tecla
; inicializacin del timer 0 para que
; cuente 65536 cuentas
;******************************************************************************************************
; TIMER 0 HANDLER
; Maneja la interrupcin asociada al overflow del timer 0.
; Es utilizada para administrar un time-out en caso de que un usuario corte la comunicacin telefnica
; sin desloguearse (cuando se produce el time-out, se limpian todos los flags, y por consiguiente,
; el sistema queda en condiciones de poder ser utilizado nuevamente.
;******************************************************************************************************
T0_HANDLER:
PUSH ACC
CLR TR0
MOV A,TIMEOUT_H
CJNE A,#TIMEOUT_H_LIMIT,NO_TIMEOUT
DEC SP
MOV R0,SP
MOV @R0,#0x50
INC SP
MOV R0,SP
MOV @R0,#0x00
RETI
NO_TIMEOUT:
MOV A,TIMEOUT_L
CLR C
ADD A,#0x01
MOV TIMEOUT_L,A
JNC NO_OVERFLOW
MOV A,TIMEOUT_H
ADD A,#0x01
MOV TIMEOUT_H,A
NO_OVERFLOW: MOV TL0,#0x00
; inicializacin del timer 0 para que
MOV TH0,#0x00
; cuente 65536 cuentas
CLR TF0
; se limpia el flag de overflow
POP ACC
SETB TR0
RETI
;******************************************************************************************************
; EXTERNAL INTERRUPT 1 HANDLER
; Maneja la interrupcin externa 1, la cual se dispara con cada "ring" de una llamada entrante.
; Si atiende la llamada entrante, entonces habilita la interrupcin IE0 para recibir los dgitos.
;******************************************************************************************************
EI1_HANDLER: PUSH ACC
CLR EX1
; se deshabilita la interrupcin para que ignore todas las
; interrupciones siguientes en el mismo ring
; significando as una interrupcin por ring.
CLR TF0
SETB TR0
; arranca el timer 0
MOV A,#RING_TIME_WAIT
NEXT_STEP:
DEC A
JNB TF0,$
CLR TF0
JNZ NEXT_STEP
CLR TF0
CLR TR0
INC Q_RINGS_AUX
MOV A,Q_RINGS_AUX
MOV 0x4C,A
CJNE A,Q_RINGS,NO_ANSWER
ANSWER:
CLR P1.2
; P1.2 est en bajo mientras se mantenga la comunicacin telefnica
SETB EX0
MOV TIMEOUT_L,#0x00 ; se reseta el contador de time-out,
MOV TIMEOUT_H,#0x00 ; debido a que el usuario presion una tecla
SETB TR0
; arranca el timer 0
NO_ANSWER:
SETB EX1
POP ACC
RETI
;******************************************************************************************************
; SERIAL INTERRUPT HANDLER
; Maneja la interrupcin provocada por los flags RI y TI cuando se recibe un byte por comunicacin
; serie RS-232, o cuando se termin de transmitir el ltimo byte, respectivamente.
; Pone en R_CHAR el caracter recibido, y transmite el caracter almacenado en T_CHAR, siempre y cuando
; est seteado el bit SEND_CHAR.
Saber Electrnica
20
;******************************************************************************************************
SI_HANDLER:
JNB RI,SEND
MOV R_CHAR,SBUF
CLR RI
SEND:
JNB TI,END_SI_HANDLER
JNB SEND_CHAR,END_SI_HANDLER
CLR TI
CLR SEND_CHAR
MOV SBUF,T_CHAR
END_SI_HANDLER: RETI
;******************************************************************************************************
; GET PASSWORD
;******************************************************************************************************
GET_PASS:
PUSH ACC
MOV A,#PASS_LOADED
ADD A,BYTES_PASS
MOV R0,A
MOV @R0,DIGIT
INC BYTES_PASS
MOV R1,BYTES_PASS
CJNE R1,#0x04,NOT_LOADED
LOADED:
CALL COMPARE_PASS
MOV BYTES_PASS,#0x00
JNB COMP_RESULT,NOT_LOADED
SETB LOGUED
NOT_LOADED: CLR DIG_PRESSED
POP ACC
RET
;******************************************************************************************************
; SWITCH RELAY ON
; Seta un bit en el puerto 1 (P1) para encender el relay solicitado. Por ejemplo, SETB P1.1 enciende
; el relay 1. Para ello, consulta el valor en DIGIT.
; Limpia los bits DIG_PRESSED y SWITCH_ON.
;;******************************************************************************************************
RELAY_ON:
PUSH ACC
MOV R0,DIGIT
CJNE R0,#0x01,RELAY_ON_END
SETB P1.1
; se escribe en EEPROM el estado del rel (para darle persistencia)
ORL WMCON,#EEMEN ; se habilita el acceso a EEPROM
ORL WMCON,#EEMWE ; se habilita el acceso a EEPROM para escritura
MOV DPTR,#RELAY_1_STATUS
MOV A,#0x01
; 0x01 significa "encendido"
MOVX @DPTR,A
; escribe la EEPROM con el contenido del acumulador
; Loop de espera hasta que concluya la escritura a EEPROM
LOOP_RELAY_ON: MOV A,WMCON
; se lee el estado de escritura de la EEPROM
ANL A,#WDTRST
; se crequa RDY/BSY
JZ LOOP_RELAY_ON ; vuelve a loopear si est seteado BSY ("busy")
XRL WMCON,#EEMWE ; se deshabilita el acceso a EEPROM para escritura
XRL WMCON,#EEMEN ; se deshabilita el acceso a EEPROM
CALL LONG_BEEP
RELAY_ON_END: CLR DIG_PRESSED
CLR SWITCH_ON
POP ACC
RET
;******************************************************************************************************
; SWITCH RELAY OFF
; Limpia un bit en el puerto 1 (P1) para apagar el relay solicitado. Por ejemplo, CLR P1.1 apaga el
; relay 1. Para ello, consulta el valor en DIGIT.
; Limpia los bits DIG_PRESSED y SWITCH_OFF.
;******************************************************************************************************
RELAY_OFF:
MOV R0,DIGIT
CJNE R0,#0x01,RELAY_OFF_END
CLR P1.1
; se escribe en EEPROM el estado del rel (para darle persistencia)
ORL WMCON,#EEMEN ; se habilita el acceso a EEPROM
ORL WMCON,#EEMWE ; se habilita el acceso a EEPROM para escritura
MOV DPTR,#RELAY_1_STATUS
MOV A,#0x00
; 0x00 significa "apagado"
MOVX @DPTR,A
; escribe la EEPROM con el contenido del acumulador
;Contina
CALL LONG_BEEP
DEC SP
MOV R0,SP
MOV @R0,#0x50
INC SP
MOV R0,SP
MOV @R0,#0x00
RET
;******************************************************************************************************
; COMPARE PASSWORDS
; Compara la password ingresada por el usuario contra la password almacenada en memoria.
; Seta el CARRY si son iguales.
;******************************************************************************************************
COMPARE_PASS: PUSH ACC
MOV R0,#PASSWORD
MOV R1,#PASS_LOADED
MOV R2,#0x00
NEXT_BYTE:
MOV A,@R0
MOV AUX,@R1
CJNE A,AUX,BAD_PASS
INC R0
INC R1
INC R2
CJNE R2,#0x04,NEXT_BYTE
CORRECT_PASS: SETB COMP_RESULT
CALL INTRO
JMP END_CMP
BAD_PASS:
CLR COMP_RESULT
CALL SHORT_BEEP
END_CMP:
POP ACC
RET
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
CPL P1.0
INC A
CJNE A,#0xFF,LOOP1_LB
INC R0
CJNE R0,#0x02,LOOP2_LB
MOV TH0,#0x00
MOV TL0,#0x00
SETB ET0
SETB TR0
POP ACC
RET
;******************************************************************************************************
; SOUND
; Dados los parmetros FREQUENCY_H, FREQUENCY_L y LENGTH, emite un sonido.
;******************************************************************************************************
SOUND:
PUSH ACC
CLR TR0
; se para el timer
CLR TF0
CLR ET0
; se deshabilita la interrupcin asociada al timer 0 (porque ahora ser usado
con otro fin)
MOV A,#0xFF
LOOP2_SOUND: MOV R0,#0xFF
LOOP1_SOUND: MOV TH0,FREQUENCY_H
MOV TL0,FREQUENCY_L
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
CPL P1.0
;******************************************************************************************************
INC R0
; SHORT BEEP
CJNE R0,#0xFF,LOOP1_SOUND
; Emite un beep corto.
INC A
;******************************************************************************************************
CJNE A,LENGTH,LOOP2_SOUND
SHORT_BEEP: PUSH ACC
MOV TH0,#0x00
CLR TR0
; se para el timer
MOV TL0,#0x00
CLR TF0
SETB ET0
CLR ET0
; se deshabilita la interrupcin asociada al timer 0 (porque ahora ser usado
SETB TR0
con otro fin)
POP ACC
MOV R0,#0xFF
RET
LOOP2_SB:
MOV A,#0xFF
LOOP1_SB:
MOV TH0,#0xFC
;******************************************************************************************************
MOV TL0,#0x18
; DELAY
SETB TR0
; Espera una cierta cantidad de tiempo, especificada en LENGTH
JNB TF0,$
;******************************************************************************************************
CLR TR0
DELAY:
PUSH ACC
CLR TF0
CLR TR0
; se para el timer
CPL P1.0
CLR TF0
INC A
CLR ET0
; se deshabilita la interrupcin asociada al timer 0 (porque ahora ser usado
CJNE A,#0xFF,LOOP1_SB
con otro fin)
INC R0
MOV A,#0xFF
CJNE R0,#0x00,LOOP2_SB
LOOP2_DELAY: MOV R0,#0xFF
MOV TH0,#0x00
LOOP1_DELAY: MOV TH0,#0xFF
MOV TL0,#0x00
MOV TL0,#0xCE
SETB ET0
SETB TR0
SETB TR0
JNB TF0,$
POP ACC
CLR TR0
RET
CLR TF0
INC R0
;******************************************************************************************************
CJNE R0,#0xFF,LOOP1_DELAY
; LONG BEEP
INC A
; Emite un beep largo.
CJNE A,LENGTH,LOOP2_DELAY
;******************************************************************************************************
MOV TH0,#0x00
LONG_BEEP:
PUSH ACC
MOV TL0,#0x00
CLR TR0
; se para el timer
SETB ET0
CLR TF0
SETB TR0
CLR ET0
; se deshabilita la interrupcin asociada al timer 0 (porque ahora ser usado
POP ACC
con otro fin)
RET
MOV R0,#0xFF
;******************************************************************************************************
LOOP2_LB:
MOV A,#0xFF
; INTRO
LOOP1_LB:
MOV TH0,#0xFE
; Genera una meloda para introduccin
MOV TL0,#0x0C
;******************************************************************************************************
INTRO:
MOV FREQUENCY_H,#0xFE
MOV FREQUENCY_L,#0x0C
MOV LENGTH,#0x02
CALL SOUND
CALL DELAY
CALL SOUND
CALL DELAY
CALL SOUND
MOV LENGTH,#0x04
CALL DELAY
MOV LENGTH,#0x02
CALL SOUND
CALL DELAY
CALL SOUND
CALL DELAY
CALL SOUND
MOV LENGTH,#0x04
CALL DELAY
MOV FREQUENCY_H,#0xFE
MOV FREQUENCY_L,#0x0C
MOV LENGTH,#0x02
CALL SOUND
CALL DELAY
MOV FREQUENCY_H,#0xFE
MOV FREQUENCY_L,#0x5F
CALL SOUND
CALL DELAY
MOV FREQUENCY_H,#0xFD
MOV FREQUENCY_L,#0x8F
CALL SOUND
CALL DELAY
MOV FREQUENCY_H,#0xFD
MOV FREQUENCY_L,#0xD4
CALL SOUND
CALL DELAY
MOV FREQUENCY_H,#0xFE
MOV FREQUENCY_L,#0x0C
CALL SOUND
RET
;******************************************************************************************************
; DIGIT HANDLER
; Subrutina de "callback". De acuerdo al dgito presionado (opcin seleccionada), seta el bit
; correspondiente.
;******************************************************************************************************
DIG_HANDLER:
OPTION_1:
OPTION_2:
OPTION_3:
OPTION_4:
OPTION_5:
OPTION_9:
DIG_HAN_END:
MOV R0,DIGIT
CJNE R0,#0x01,OPTION_2
SETB SWITCH_ON
JMP DIG_HAN_END
CJNE R0,#0x02,OPTION_3
SETB SWITCH_OFF
JMP DIG_HAN_END
CJNE R0,#0x03,OPTION_4
SETB CHECK_RELAY
JMP DIG_HAN_END
CJNE R0,#0x04,OPTION_5
SETB CHANGE_PASS
JMP DIG_HAN_END
CJNE R0,#0x05,OPTION_9
SETB CHANGE_RINGS
JMP DIG_HAN_END
CJNE R0,#0x09,DIG_HAN_END
SETB EXIT
SETB DIG_PRESSED ; se seta DIG_PRESSED, porque el exit es una operacin unaria,
; y debe ingresar directamente a la subrutina EXIT_PROGR
RETI
CLR DIG_PRESSED
CALL LONG_BEEP
RET
END
Saber Electrnica
21
Artculo de Tapa
P1.3 a P1.7: no utilizados.
Puerto P2
P2.0: entrada del bit 4 desde
binario.
P2.1: entrada del bit 3 desde
binario.
P2.2: entrada del bit 2 desde
binario.
P2.3: entrada del bit 1 desde
binario.
P2.4 a P2.7: no utilizados.
el conversor DTMF a
el conversor DTMF a
el conversor DTMF a
el conversor DTMF a
Puerto P3
P3.0: entrada de caracteres desde el controlador de
comunicacin serie (HIN232).
P3.1: salida de caracteres hacia el controlador de
comunicacin serie (HIN232).
P3.2: interrupcin externa 0, disparada por el conversor DTMF a binario, cuando se ha recibido un caracter
vlido.
P3.3: interrupcin externa 1, disparada por el circuito
detector de rings, cuando se recibe un ring por la lnea
telefnica.
P3.4 a P3.7: no utilizados.
En la figura 19 se aprecia el circuito elctrico del proyecto. Si desea ms informacin puede dirijirse a la pgina del autor. En la tabla 1 se brinda el programa que
deber ser grabado en el microcontrolador, si no quiere
tipearlo, puede bajar el archivo desde la pgina del autor.
Como conclusin, el autor indica que se cumpli con
el objetivo establecido en el anteproyecto, administrando
correctamente el tiempo y los recursos. As tambin, la
realizacin del proyecto nos permiti conocer en profundidad el funcionamiento de un microcontrolador, como
tambin de otros circuitos integrados. En muchas oportunidades, los distintos obstculos que se fueron presentando nos han permitido adquirir importante experiencia
en la superacin de los mismos.
Listado de componentes
A continuacin se detallan los componentes utilizados
en la implementacin del proyecto:
Una resistencia de 56 ohm 1W
Una resistencia de 100 ohm
Una resistencia de 820 ohm
Dos resistencias de 1k
Dos resistencias de 2K2
Dos resistencias de 10k
Dos resistencias de 47k
Una resistencia de 56k
Saber Electrnica
22