SEM383
SEM383
SEM383
Edición Digital
Digital de
de Saber
Saber Electrónica
Electrónica
Editorial Quark SRL: Altolaguirre 310, 1874 V. Domínico, BsAs, Argentina,
Tel: (11) 4206-1742
Director: Horacio D. Vallejo
Distribución en Capital: Carlos Cancellaro e Hijos SH. Gutenberg 3258 - Cap. 4301-4942
Distribución en Interior: DISA, Distribuidora Interplazas SA, Pte. Luis
Sáenz Peña 1836 - Cap. 4305-0114
Número de Registro de Propiedad Intelectual Vigente: 966 999
NO PERMITIÓ que dicha carrera tenga carácter oficial, sin embargo, los conocimientos ME
QUEDARON aunque no pude compartirlos…
Luego de varios años y múltiples intentos fallidos, tuve la oportunidad de continuar con el estu-
dio de la carrera de “medicina”, gracias a un intercambio en ocasión del curso de capacitación
que recién les comenté, con la consciencia de que no es mi interés “recibirme de médico” sino
estudiar simplemente para “saber”. Los años pasaron… me fui capacitando de a poquito en fun-
ción de lo que me permitían mis actividades y luego debí abandonar una vez más porque el
costo me era excesivo y el tiempo escaso.
Llegó la pandemia, el tiempo apareció nuevamente y otra vez retomé “como pude” los estudios
de medicina, pero sin las prácticas hospitalarias necesarias y obligatoria por lo que continué
aprendiendo, pero sin aprobación académica. En lo personal estoy “más que satisfecho”.
No sé qué me va a deparar el futuro y tampoco si voy a tener el tiempo suficiente para realizar
las prácticas hospitalarias y asumir los compromisos que el estudio de tan alta carrera merece,
pero quiero comentarle con gran satisfacción que puede realizar un curso de inmunología y que
ahora tengo un compromiso mayor… seguir estudiando…
La pandemia cambió mis hábitos… ya no hago taichí todos los días… tampoco salgo a correr
como antes… duermo bastante más y me tomo las cosas con calma… disfruto a mi familia,
acompaño el crecimiento de dos nietos hermosos y sigo ligado a mis dos grandes amores del
intelecto: “la electrónica y la medicina”.
Siempre hay lugar para aprender y para compartir y espero seguir haciéndolo por muchos años
más ya que tengo el mismo entusiasmo que cuando comencé esta hermosa aventura con mi
querida Saber Electrónica.
¡Hasta el mes próximo!
Ing. Horacio D. Vallejo
Saber Electrónica 5
Artículo de tapa
IntroduccIón
Explicaremos qué es un proxy y cómo puede utilizarlo. Se trata de unos servicios que le pue-
den ayudar a mejorar su privacidad cuando navega por la red, y que a menudo suelen confun-
dirse con unas redes VPN con las que se pueden conseguir resultados similares, pero que son
mucho más completas al no centrarse únicamente en tu navegación.
Vamos a empezar por lo tanto tratando de explicarle de la manera más sencilla posible qué es
exactamente un proxy. Luego daremos un par de recursos para poder utilizarlas fácilmente en su
navegador, y terminaremos diciéndole cómo puede configurar un PROXY directamente en
Windows 10 para utilizarla siempre que navegue.
Siendo Ud. el cliente, esto quiere decir que el proxy recibe sus peticiones de acceder a una u
otra página, y se encarga de transmitírselas al servidor de la web para que esta no sepa que lo
está haciendo Ud.
De esta manera, cuando vaya a visitar una página web, en vez de establecer una conexión
directa entre su navegador y ella puede dar un rodeo y enviar y recibir los datos a través de esta
proxy. La página que visite no sabrá su IP sino la del proxy, y podrá hacerle pasar por un inter-
nauta de otro país distinto al suyo.
Los proxys son utilizados muy a menudo para acceder a servicios que tienen bloqueado su
contenido en determinado país. Por ejemplo, si una web no ofrece determinado contenido en su
país pero sí en otro, haciéndose pasar por un internauta de ese otro país puede acceder a él.
Como muchos de estos servicios de proxy bloquean también cookies, scripts y otros objetos
que están alojados en las webs, también son útiles para poder navegar de una manera mucho
más privada y anónima.
Aún así, tampoco se tiene que lanzar de cabeza a los miles de proxys gratuitos que hay por
la red. Tenga en cuenta que todos nuestros datos pasarán por sus servidores, por lo que el ano-
nimato que se les supone no siempre se cumple. Lo mejor es desconfiar de las proxys web que
no pertenezcan a empresas de seguridad o que muestren demasiada publicidad.
Por último, tenga en cuenta que lo único que hace un servidor proxy es esconder su IP. Esto
6 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
quiere decir que no suelen eliminar ningún otro tipo de identificador adicional que pueda revelar
su identidad, por lo que aunque su IP esté oculta, alguien con acceso a tu red y los datos que
transmite podría espiar su tráfico.
Si quiere una seguridad mayor tendrá que ir a por una VPN. Las VPN o redes privadas virtua-
les se diferencian de los proxys sobre todo en que cifran todo el tráfico que pasa a través de ellas,
algo que un proxy no hace. Por lo tanto, al cifrar los datos, aunque sus comunicaciones fuesen
interceptadas por una agencia gubernamental u operadora no sería tan fácil obtener sus datos de
navegación. Aunque claro, la eficacia de la VPN depende también de cual tengamos.
Vamos a recomendarle dos servicios proxy gratuitos con los que visitar páginas de forma pri-
vada con su navegador.
El primero es el de Hide.me, una empresa de seguridad que lleva desde 2012 ofreciendo una
red privada virtual (VPN) de pago y un proxy gratis bastante competente, puesto que lo utilizan
como demostración de lo fiables que son sus servicios de pago.
Cuando entra a su web tienes tres casillas que tienes que completar.
Locación Proxy es en la que tiene que elegir desde qué país quiere que la página que visite
crea que navega,
Más opciones le permite optimizar su privacidad, y encima de estas dos opciones tienes una
barra de direcciones para poner la página a la que quiere entrar.
En la casilla Más opciones es importante que marque "remover" todos los objetos y scripts y
que deshabilite las cookies si buscas privacidad, ya que estos elementos pueden rastrearlo por la
web. Una cookie podría instalarse en su navegador, y aunque cuando visite una web con la proxy
lo hará de forma privada, la cookie podría seguir ahí rastreándolo cuando después navegue de
forma convencional.
Y la segunda opción es VPNBook, que es uno de los mejores proxys gratuitas que puede
encontrar y simplifica al máximo su mecánica para no confundir al usuario sin conocimientos.
Aquí sólo tendrá que elegir el país de la proxy, escribir la página a la que quieres entrar y darle
al botón GO para proceder.
Saber Electrónica 7
Artículo de tapa
Este servicio perteneciente a otra empresa dedicada al negocio de las VPN bloquea automá-
ticamente algunos scripts y no le da la opción de desbloquearlos. Esto quiere decir que sí, por
defecto navegara de forma más privada, pero que a cambio algunas de las páginas que visite no
funcionará correctamente debido a los elementos bloqueados.
Explicaremos qué es u Proxy basándonos en un trabajo de Esperanza Gimenez. Para expli-
car qué es una VPN,a los fines de que entienda la diferencia con un PROXY, haremos referen-
cia al trabajo de Enrique V. Bonet Esteban de la Universidad de Valencia. Por último, en la pró-
xima edición, veremos cómo instalar un servidor en Windos y en Linux
BIBlIoGrafía
HTTPS://WWW.XATAKA.COM
8 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
Saber Electrónica 9
Artículo de tapa
10 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
Saber Electrónica 11
Artículo de tapa
12 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
Saber Electrónica 13
Artículo de tapa
14 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
Saber Electrónica 15
Artículo de tapa
16 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
Saber Electrónica 17
Artículo de tapa
18 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
Saber Electrónica 19
Artículo de tapa
20 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
Saber Electrónica 21
Artículo de tapa
22 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
Saber Electrónica 23
Artículo de tapa
24 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
Saber Electrónica 25
Artículo de tapa
26 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
Saber Electrónica 27
Artículo de tapa
(
$
* $
% %
-
&
"
$ . &
( $
" * . $
$ &
-
. , ( ", ) " *
! . ) /00 & & 0 0 0(! ! 0 &) &
28 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
'! # $
2 4$ 55.02.5 5567$ , % &
% 5'8 ! %
" % $ $ $ *
% &% " 9 (
( *
* &
% ( $ ) 6 6
' 5 '5 & 6 $
$ " % $ '5 :
* * $
, " % &1 * , (
'5 $ * * $ ( "
% ;&
5 $ % *
$ # & ' %
% $ " % $
# % % $
" % &'
* , * "
% &
<" $ ( %
% #" % $ ,
( &
1 = " % $ (
* ( % & $
4
2 " $
" * &
7
" ( 556 !
! $ &$ * &
;
' " % * " * * $ &$ (
6 '5 &
Saber Electrónica 29
Artículo de tapa
( % < $ , (
. ! " " &
' 9 < $ *
* ) $ $ " * )
# * )
&
' * ) *
% $ $ * !
% 5 &' *
&
. $
# $ $ * *
&5 " /
* % * *
( % 5 & #
& ( *
* ( *
* &
> % %
% 5 & 5
= * & ' ,
* ! &' * &
) % # * ( , % 5
* * * & '
* ?-$ # 8
6 2) &' @ 9
" * *
A
&
( % 5 &
B
$ $ &
> % ,
% 5 & . * %
C ; C B " $
D$ &
A
' < E $ * " ( @$
( * &
B
F ( 4&; * 4&B$
4&B$ 4&B
$ % 5 * # 6 E &
30 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
. * !
* G & !
* % 5 $ " * &
* $ ,
$ , * $ $ &$
! $ * ! &
. , *
! /
' *
$ * &.
* # * , , $ "
* ( " $
" ( &
) ' * ( (
&
)" 2 & . " $
$
#" 0 * $
( = $
( ! &
< " ( " ! & .
" $ : * ! H $ : $
* " ! H $ *
I
! " H $
" ! &
( * - & . *
(
! " &5 * , $
" " #$ % &# '% (&
# ')*+% '($,&
'($,&&
* 1 ! * -& '
* $ $
$ $) $)
&' * -) ,! 4; ) &
* 1 ! * 4& 5
* * & '
* J) $ ,! 4; ) &
I
: Saber Electrónica 31
Artículo de tapa
* * E 5 "
& * *
$ ! # ( E5$ <
( E5$ * *
&
) 4 % , &
* # )
&
) 4
( * 4 & 5 * $
* $ &$ , &
" , &
% " !
! & "
" (
! $ ,
) &
K = "
! &' *
! , $
* L &
$ * , *
! $ ! * (
( * ) ) $ " "
$ * *
( ) $ " *
" &. ,
" /
* 8 % #" ( &
( ) (
* * &
* % * ( & '
* % , &
* !) 1 % ( &5 ) (
* , $ ( ,
* * &
* " 5 " ( $ !
" 0 , &5 *
# &
32 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
) 8 % #" ) &
( ) (
* * &
) % * ) & '
* % , &
) !) 1 % ) &5 ) (
* , $
( , * * &
) " 5 " ) $ !
" 0 , & 5 *
# &
' * ) 5 $ $
&$ ( * "
&' $ * ) $ " $
/
M * )
! &
J
. * /
1 " *
= $ * (
) ) &
' * 5 $ * /
J
&
Saber Electrónica 33
Artículo de tapa
*
$ *
! &
' 9 * (
$ " ' *$
& "
$ )@ * #"
% -;I&-AB&-&- ' -;I&-AB&4&- *$ )-$ %
-L4&-BJ&-&- -L4&-BJ&4&- ' * $
% -L4&-BJ&-&@04; -L4&-BJ&4&@04;$
* /
# $ %
-;I&-AB&-&4 ' -;I&-AB&4&4 *&
8 $ * ) * '
/
@ ,
F 1
@ 1G @
H1 H
# 1
F 1G + 5 $IG + 56= 5 5=I
G + 5?= 5 $ 5 IG + J5?= 5 $ 5 =+
34 Saber Electrónica
proXY Vs VpN: cómo Navegar de Forma Anónima y Segura
@
K * ) * /
@ ,
F 1
@ 1G @
H1 H
# 1
F 1G + 5 $IG + 56= 5 5=I
G + 5?= 5 $ 5 IG + J5?= 5 $ = =+
" * ) , = $
! " * <
* ) $ 4&@&
* $
2 $ * (
* * $
$ *
,* @
&
' $ - *
' *& ' " '
% ( " $ ! "
" -L4&-BJ&-&@04; '
#" $ * * *
% " ! % "
-L4&-BJ&4&@04; &
# $ " *
* )
! $ * ,
" &
2 * ! (
* " ! $ "
# $ * ( )
$ ( $
" * ) * !
" &' $ " * ) *
! ' /
5K =
@ 15+6 5< 5 5
@ 1 5
Saber Electrónica 35
Artículo de tapa
@ / # 15+6 5< 5 =
@ - 15?= 5 $ 5 =+
,# 15+6 5< = 5
,# 1 =
,# / # 15+6 5< = =
,# - 15?= 5 $ = =+
#- 1
H @ 1$#
H @ 1
1
N * ) * ! * /
5K =
@ 15+6 5< 5 5
@ 1 5
@ / # 15+6 5< 5 =
@ - 15?= 5 $ 5 =+
,# 15+6 5< = 5
,# 1 =
,# / # 15+6 5< = =
,# - 15?= 5 $ = =+
#- 1
H @ 1$#
H @ 1
1
" * ) ) * " !
' * $ ( * #" '$
* ( . ' $ (
% ( -;I&-AB&-&4 "
( -L4&-BJ&-&@04;& 1 * ) *
) ) &
( * ( ) $ *
$
& $ *
J) -) &
# $ - !
" ( $ " ( ! $ 4
! " ( !
- & "
9 , ! " # " &'
" 9 , ! "
# $ ! &
8 $ # $ " ( ! $
* , $ 9
/
KK L - M
1 " ! $ ' *
*&
36 Saber Electrónica
$ * ) *
' /
5 =
K * ) * /
= 5
1 * *
* &
( * " " ! $
9 " /
KK
@ #5 #5 5?= 5 $ 5 5
@ # # 5+6 5< 5 5
F NG O
K ) - 5 $I 56= 5 5=I 5?= 5 $ 5
K 5 - 5?= 5 $ 5 =+
1 $
* -L4&-BJ&-&- -;I&-AB&-&- $
-@&@&@&@0J$ -I4&-B&@&@0-4 -L4&-BJ&@&@0-B -L4&-BJ&-&@04; &
Saber Electrónica 37
Artículo de tapa
$ -L4&-BJ&-&@04;OOO&&&$ "
" $
* $ &$ ( $ ! $ (
" $ &
5 9 , * " $
" " 9 *$ * % $
&
38 Saber Electrónica
Informe especIal
IntelIgencIa artIfIcIal
ImplementacIón de redes neuronales con arduIno
parte III: ImplementacIón de las rnas
Saber Electrónica 39
Informe especial
40 Saber Electrónica
Implementación de redes neuronales con arduino
Saber Electrónica 41
Informe especial
42 Saber Electrónica
Implementación de redes neuronales con arduino
Saber Electrónica 43
Informe especial
44 Saber Electrónica
Implementación de redes neuronales con arduino
Saber Electrónica 45
Informe especial
46 Saber Electrónica
Saber Electrónica 47
Informe especial
48 Saber Electrónica
Saber Electrónica 49
Informe especial
50 Saber Electrónica
Saber Electrónica 51
Informe especial
52 Saber Electrónica
Robótica en el aul a
En Saber Electrónica Nº 214 comenzamos con esta temática y desde entonces brindamos “tra-
bajos de especialistas que impulsan la educación en niños de escuelas primarias y secunda-
rias”. En esta edición compartimos la sesión 6 del Manual de Proyectos “CONSTRUIMOS
ROBOTS” gestionado por la Secretaría de Educación Pública de la República de México.
Cabe acotar que la robótica es la rama de la ingeniería que se especializa en todo el proceso
creativo, constructivo y de aplicación de los robots. Así pues, conocer los fundamentos de
este área puede ser de gran utilidad para los más pequeños de la casa.
Si estás interesado en enseñar robótica a tus alumnos, en esta sección de Saber Electrónica
te contamos algunas claves para impulsar el aprendizaje de robótica en el aula. Hoy en día la
tecnología forma parte de la rutina diaria de los niños: desde el juego en su tiempo libre hasta
el aprendizaje en la escuela. Introducir en su currículum escolar la programación o el diseño
de robots puede abrirles la mente y el camino hacia profesiones que serán clave en el futuro.
Como ciencia, la robótica implica desde el diseño de la estructura de un robot hasta el des-
arrollo del código para programar sus funciones. Es decir, crear desde cero una máquina, del
tamaño que sea, dirigida a ejecutar la actividad para la que se le programa.
Saber Electrónica 53
Robótica en el aula
54 Saber Electrónica
Proyecto: construimos Robots
Saber Electrónica 55
Robótica en el aula
56 Saber Electrónica
Proyecto: construimos Robots
Saber Electrónica 57
Robótica en el aula
58 Saber Electrónica
Informe especIal
Saber Electrónica 59
Informe especial
60 Saber Electrónica
el Uso del cloro en la Desinfección de alimentos
Saber Electrónica 61
Informe especial
62 Saber Electrónica
el Uso del cloro en la Desinfección de alimentos
Saber Electrónica 63
Informe especial
64 Saber Electrónica
Saber Electrónica 65
Informe especial
66 Saber Electrónica
T é c n i c o R e pa R a d o R
Hasta ahora hemos publicado diferentes artículos y libros de texto sobre el funcionamiento, instalación, man-
tenimiento y reparación de equipos de aire acondicionado para el hogar; sin embargo, existen unidades de refri-
geración de mayor potencia y tamaño, destinados a usos industriales de las que nos ocuparemos en esta nota.
Las unidades de refrigeración compactas o “monoblocks” son equipos en los que la unidad condensadora y la
unidad evaporadora están en la misma construcción.
Las unidades de refrigeración compactas de son ideales para su uso en cámaras frigoríficas y frigoríficos a
medida. Tienen un historial probado de excelente fiabilidad, control constante de la temperatura y bajo mante-
nimiento. Además, estas unidades son poco ruidosas, energéticamente eficientes y fáciles de instalar.
Las unidades de refrigeración compactas están disponibles en varios tamaños para diferentes tipos de cáma-
ras frigoríficas y frigoríficos: Las de menor tamaño se fijan de forma sencilla y segura a la pared interior de una
cámara frigorífica con 4 tornillos. Las unidades también disponen de un zócalo para que la luz interior con sen-
sor de movimiento (disponible por separado) pueda instalarse también en el interior de la cámara frigorífica.
Para garantizar un flujo de aire eficaz, se suministra una cubierta de plástico que se coloca en el lado caliente
de la cámara frigorífica (o del frigorífico).
En esta nota veremos qué son estas unidades y comenzaremos a describir su instalación, tema que completa-
remos en la próxima edición.
Saber Electrónica 67
Técnico Reparador
Qué Son laS unidadeS de RefRigeRación compactaS?
Hasta ahora hemos publicado diferentes artículos y libros de texto sobre el funcionamiento, instalación,
mantenimiento y reparación de equipos de aire acondicionado para el hogar; sin embargo, existen
unidades de refrigeración de mayor potencia y tamaño, destinados a usos industriales de las que nos ocu-
paremos en esta nota. Las unidades de refrigeración compactas o “monoblocks” son equipos en los que la
unidad condensadora y la unidad evaporadora están en la misma construcción.
Las unidades de refrigeración compactas de son ideales para su uso en cámaras frigoríficas y frigorífi-
cos a medida. Tienen un historial probado de excelente fiabilidad, control constante de la temperatura y
bajo mantenimiento. Además, estas unidades son poco ruidosas, energéticamente eficientes y fáciles de
instalar.
El ciclo de refrigeración de cualquier equipo o sistema de refrigeración tiene varios procesos: compre-
sión, condensación, expansión y evaporación. Este ciclo de refrigeración puede implementarse en sis-
temas divididos, donde el condensador está formado por una unidad y el evaporador por otra, requiriendo
tuberías en la instalación, o por el contrario puede implementarse en un sistema compacto, como es el
caso de estas unidades, figura 1.
Figura 1
Según su aplicación, podemos hablar de compactos comerciales o industriales. Los compactos comer-
ciales, como su nombre indica, están diseñados para cámaras frigoríficas y de conservación de pequeño
y mediano tamaño, y pueden instalarse en la pared, el techo o la puerta de la cámara frigorífica. Los com-
pactos industriales, en cambio, están diseñados para grandes cámaras de almacenamiento y congelación
o muelles de carga y se instalan en la pared, figura 2.
68 Saber Electrónica
Unidades compactas de Refrigeración
Figura 2
• Alta temperatura: Equipos diseñados para la conservación a alta temperatura en cámaras frigorífi-
cas, salas de trabajo, precámaras y muelles de carga refrigerados. (>10 ºC)
• Media temperatura: Equipos diseñados para cámaras frigoríficas para la conservación de produc-
tos genéricos a temperatura positiva. (0 ºC – 10 ºC)
• Temperatura negativa: Equipos diseñados para cámaras frigoríficas a temperatura negativa para la
conservación de productos congelados. (<0 ºC)
Figura 3
Saber Electrónica 69
Técnico Reparador
• Están disponibles en R-290, un refrigerante natural de alta eficiencia energética.
• Requiere menos tiempo de instalación, ya que es una sola unidad y no requiere la instalación de
líneas de refrigerante o de agua para la instalación.
• No necesita una sala de máquinas, ya que se instala en la misma ubicación que la cámara frigorí-
fica.
• Requieren un mantenimiento mínimo y una carga de refrigerante reducida.
• Son equipos de instalación Plug & Play, probados y cargados en fábrica, listos para instalar.
Montaje en el panel de la cámara frigorífica con marco de montaje para compactos industriales
Las unidades compactas incluyen (según la serie) una almohadilla aislante de 100 mm de grosor para
el montaje de la ventana en el panel de la cámara frigorífica, que facilita la instalación de la unidad y mejora
la fijación a la pared de la cámara, figura 4.
Figura 4
70 Saber Electrónica
Saber Electrónica 71
Técnico Reparador
72 Saber Electrónica
Saber Electrónica 73
Técnico Reparador
74 Saber Electrónica
Saber Electrónica 75
Técnico Reparador
76 Saber Electrónica
Saber Electrónica 77
Técnico Reparador
78 Saber Electrónica
M o n ta j e
Saber Electrónica 79
Montaje
80 Saber Electrónica
oscilador Hasta 1GHz
Saber Electrónica 81
Montaje
82 Saber Electrónica
oscilador Hasta 1GHz
Saber Electrónica 83
Montaje
84 Saber Electrónica
oscilador Hasta 1GHz
Saber Electrónica 85
Montaje
86 Saber Electrónica
M o n ta j e D e s ta c a D o
El dispositivo electrónico cons-
truido es una interfaz que,
conectada a la línea telefónica,
es capaz de recibir y atender lla-
madas entrantes, con el fin de
controlar uno o más artefactos
conectados al mismo, desde un
aparato telefónico remoto. El
microcontrolador utilizado es un
AT89S8252 fabricado por
ATMEL. También fue necesario
incorporar al circuito un conver-
sor DTMF a binario y un contro-
lador para comunicación serie
RS-232, ambos genéricos.
Controlador de artefaCtos
por la línea
telefóniCa
IntroduccIón 1 - Esperar x rings antes de atender el telé-
fono (configurable).
El dispositivo que describimos en este artí- 2 - Una vez atendido el teléfono, solicitar
culo es capaz de recibir e interpretar tonos a una contraseña para dar el servicio a quien
través de la línea telefónica y, posteriormente, está llamando.
tomar determinadas acciones relacionadas Luego de validada la contraseña, se pasa al
con el control de otros dispositivos electróni- menú de opciones.
cos (como podrían ser los electrodomésticos 3 - Se usarán casi todos los dígitos del telé-
hogareños). fono (salvo 6, 7, # y *).
Esto permite al usuario tener control en En nuestro trabajo práctico pretendemos
forma remota de determinados equipos elec- manejar 9 relés, aunque en principio se ha
trónicos, utilizando un aparato telefónico con- implementado uno solo, relacionando cada
vencional, mediante el teclado del mismo, uno con cada dígito numeral del teclado. Es
según el siguiente protocolo: decir, este equipo controla un sólo relé pero
Proyectos Electrónicos 87
Montaje Destacado
siguiendo la lógica aquí descripta, nada impide 5 - cambio de la cantidad de rings de
que el técnico amplíe el e squema para poder espera: se utiliza para cambiar el parámetro
controlar mayor cantidad de dispositivos. que indica la cantidad de rings a esperar antes
Una vez atendida la llamada, el menú de de atender la llamada entrante. Una vez mar-
opciones es el siguiente: cada esta opción, el sistema queda a la espera
de un dígito que indica la nueva cantidad de
1 - encendido: una vez marcada esta rings.
opción, el sistema queda a la espera de otro 6-7: disponibles.
dígito (este segundo dígito ingresado indica el 8 - reinicialización: reinicializa el sistema
número de relé a encender). pero sin “desloguear” (desconectar) al usuario.
2 - apagado: una vez marcada esta opción, Esto es particularmente útil cuando el usuario,
el sistema queda a la espera de otro dígito luego de seleccionar algunas opciones, no
(este segundo dígito ingresado indica el sabe en qué situación está.
número de relé a apagar). 9 - salir: corta la llamada.
3 - consulta: una vez marcada esta opción,
el sistema queda a la espera de otro dígito
(este segundo dígito ingresado indica el GeneracIón de los Beeps de respuesta
número de relé a consultar). Si el relé está
encendido, entonces se emite un beep largo a Luego de la selección de cualquiera de las
través de la línea telefónica, y si está apagado opciones, el sistema emite un beep largo para
se emite un beep corto. indicar "si". En algunos casos, el sistema emite
4 - cambio de contraseña: se utiliza para un beep corto para indicar "no"; esto sucede
cambiar la contraseña de acceso. Una vez cuando la contraseña ingresada es inválida, o
marcada esta opción, el sistema queda a la para indicar que un relé se encuentra apa-
espera de los 4 dígitos para la nueva contra- gado. Ambos beeps se emiten por el pin 0 del
seña. puerto 1 (P1.0).
88 Proyectos Electrónicos
Montaje Destacado
admInIstracIón de la contraseña Por otra parte, un bloque controlador
RS232 permitirá la conexión con una computa-
Antes de poder utilizar cualquiera de las dora tipo PC para poder interactuar con nues-
opciones, el usuario deberá “loguearse” (es tro controlador y realizar controles directa-
decir, ingresar la contraseña, y que ésta sea mente desde la computadora.
validada por el sistema). Una vez validada la
contraseña, el sistema emite una melodía para
indicar al usuario que ya puede comenzar a software
utilizar el dispositivo. La contraseña es única
(no se permiten múltiples usuarios), y está Para el diseño del software se tuvo en
compuesta de 4 caracteres alfanuméricos (0-9, cuenta la utilización de un microcontrolador
# ó *). La primera vez que se utiliza el sistema, AT89S8252 fabricado por ATMEL. Para una
o cuando el sistema es reseteado externa- mejor comprensión de las funciones que debe
mente (a través de un pulsador al efecto), se realizar el controlador, en primer lugar se
espera el ingreso de la contraseña por defecto expone el diagrama de flujos que da origen a
(1111). Posteriormente, el usuario puede modi- nuestro programa.
ficarla mediante la opción 4. En la figura 2 se presenta el diagrama de
flujo correspondiente al software desarrollado.
Nuestro programa debe esperar los rings de
admInIstracIón de la cantIdad de llamada (que son configurables por el mismo
rInGs de espera programa), una vez que el teléfono atiende
pregunta si está “logueado”; si no lo está soli-
El sistema espera una cierta cantidad de cita una contraseña (GET_PASS) y si es válida
rings antes de atender la llamada (análoga- informa que está logueado (LONG_BEEP). Si
mente al funcionamiento de un contestador la contraseña está equivocada informa el error
automático). Esa cantidad es configurable a través del llamado a SHORT_BEEP en el
mediante la opción 5, aunque por defecto se programa principal y solicita el ingreso nueva-
toma el valor 3. Solo acepta un dígito, con lo mente de la contraseña, volviendo al bloque
cual se podrá configurar hasta 9 rings de “Logueado”.
espera. Una vez que el usuario remoto está conec-
tado se pregunta si se quiere conectar algún
aparato, si la respuesta es SI, entonces se
dIaGrama de conexIones en Bloque llama a RELAY_ON, para que se active el relé
de salida y si la respuesta es NO el programa
En la figura 1 de la página anterior se pre- pregunta si se quiere desconectar el disposi-
senta el diagrama de conexiones en bloque del tivo deseado. Aquí nuevamente tenemos dos
circuito construido. Una rápida vista al mismo posibilidades, que la respuesta sea SI y se
permitirá comprender la simplicidad del apague el aparato a través de la desconexión
esquema. En primer lugar necesitamos un blo- del relé o que la respuesta sea NO y el pro-
que que convierta los pulsos DTMF recibidos grama deba continuar realizando otras consul-
en códigos binarios que serán introducidos al tas, como preguntar, por ejemplo, en qué
microcontrolador, éste, en base a su programa estado está el relé, si se desea cambiar la con-
interno, interpretará las señales recibidas y traseña o si se desea cambiar la cantidad de
actuará en consecuencia. RINGS que debe esperar el aparato antes de
Cuando el programa así lo interprete acti- contestar.
vará o desactivará al bloque de control de El diagrama de flujo es bastante sencillo y
carga que es donde está el artefacto a contro- contundente como para saber qué acciones
lar. debe realizar el programa del controlador.
90 Proyectos Electrónicos
Montaje Destacado
92 Proyectos Electrónicos
control de artefactos por la Línea telefónica
descrIpcIón de las sistema "atiende" la llamada entrante, pone en
InterrupcIones utIlIzadas bajo este pin, y lo mantiene en ese nivel mien-
tras dure la comunicación telefónica.
Las interrupciones utilizadas son las p1.3 a p1.7: no utilizados.
siguientes:
puerto p2
Interrupción externa 0 (Ie0): disparada p2.0: entrada del bit 4 desde el conversor
cuando el circuito integrado conversor de DTMF a binario.
DTMF a binario pone en alto el pin 12 (INT0) p2.1: entrada del bit 3 desde el conversor
del microcontrolador, notificando la presencia DTMF a binario.
de un dígito válido en sus 4 salidas. p2.2: entrada del bit 2 desde el conversor
DTMF a binario.
Interrupción externa 1 (Ie1): disparada p2.3: entrada del bit 1 desde el conversor
por el circuito detector de rings, con cada DTMF a binario.
detección efectuada. p2.4 a p2.7: no utilizados.
Proyectos Electrónicos 93
Montaje Destacado
lIsta de materIales 100 nF 2 unidades Diodo 1N5250 2 unidades
120 nF 1 unidad Diodo 1N4148 2 unidades
resistencias 470 nF 1 unidad
56 ohms 1W 1 unidad 1 uF 4 unidades otros
100 ohms 1 unidad 1 uF 63V 2 unidades Relé TDS-0502 (o similar) 1 unidad
820 ohms 1 unidad 4,7 uF 1 unidad Cristal 12 Mhz 1 unidad
1K 2 unidades 10 uF 1 unidad Cristal 3.5795 Mhz 1 unidad
2K2 2 unidades L7805 1 unidad
10K 2 unidades circuitos integrados Varistor 1 unidad
47K 2 unidades AT89S8252 1 unidad Jack telefónico 1 unidad
56K 1 unidad HIN232 1 unidad Pulsador 1 unidad
68K 1 unidad ULN2003 1 unidad Conector DB9 1 unidad
220K 3 unidades CM8870 1 unidad Conector DB25 1 unidad
270K 1 unidad Optoacoplador 4N27 1 unidad Jumper 2 unidades
Optoaislador LCA110 1 unidad Zócalo de 16 pines 2 unidades
capacitores Puente de diodos W04 1 unidad Zócalo de 18 pines 1 unidad
33 pF 2 unidades Transistor MPSA42 NPN 1 unidad Zócalo de 40 pines 1 unidad
10 nF 100V 2 unidades Transistor MJE340 NPN 1 unidad Plaqueta univ. BK-06 1 unidad
94 Proyectos Electrónicos
diseño PCB, tema que estamos desarrollando conclusIones
y que próximamente lo colocaremos en nues-
tra web. Se cumplió con el objetivo establecido en el
El programa se muestra en la tabla 1, note anteproyecto, administrando correctamente el
que por su longitud es aconsejable descar- tiempo y los recursos. Así también, la realiza-
garlo directamente de la página de los autores ción del proyecto nos permitió conocer en pro-
(http://web.fi.uba.ar/~ajvega/micro/). El fundidad el funcionamiento de un microcontro-
código es abierto (estamos a favor de la polí- lador, como también de otros circuitos integra-
tica open source), con lo cual puede ser bajado dos. En muchas oportunidades, los distintos
y utilizado con libertad, pero nunca para fines obstáculos que se fueron presentando nos han
comerciales (nació en un ambiente acadé- permitido adquirir importante experiencia en la
mico, y debe conservarse dentro de tal). superación de los mismos. J
Tabla 1 - Programa del controlador de artefactos SWITCHED_ON
RING_TIME_WAIT
EQU 0x01
EQU 0x10
; valor almacenado en EEPROM para indicar que el relé está encendido
; cantidad de iteraciones de espera hasta que transcurra el ring completo
SETTINGS_SERIAL EQU 0xF3 ; valor con el cual se carga el timer 1 para la generación de baudios para 2400 bps
eléctricos por la red eléctrica. ; dependiendo del valor del Xtal (0xF3=12 Mhz y 0xF4=11.0592 Mhz)
; *** seGmento de datos ***
;**************************************************************************** DSEG AT 0x30
; *** un dIsposItIVo controlador de artefactos telefónIcos *** R_CHAR: DS 1 ; caracter recibido por el puerto serie
; *** a traVÉs de lÍnea telefónIca en forma remota *** T_CHAR: DS 1 ; caracter a transmitir por el puerto serie
; DIGIT: DS 1 ; dígito recibido por el conversor DTMF->Binario, en P2.0 P2.1 P2.2 P2.3
; augusto J. Vega (Jakarta) PASSWORD: DS 4 ; almacena la password (ver cómo darle persistencia)
; Gustavo a. schmidt PASS_LOADED: DS 4 ; almacena la password cargada por el usuario para luego comparar contra
; primavera de 2003 PASSWORD
; BYTES_PASS: DS 1 ; variable utilizada por la rutina GET_PASS en el proceso de logueo
; el códIGo es aBIerto, pero solo puede utIlIzarse con fInes educatIVos. AUX: DS 1 ; variable auxiliar que puede ser utilizada por cualquier subrutina
; no utIlIce este códIGo con fInes comercIales. Q_RINGS: DS 1 ; variable en donde se alamacena la cantidad de rings que espera el ciruito
;**************************************************************************** ; antes de atender la llamada entrante
Q_RINGS_AUX: DS 1 ; variable en donde se van "contando" los rings detectados
; *** defInIcIones *** TIMEOUT_H: DS 1 ; byte más signigicativo del contador de timeout
TIMEOUT_H_LIMIT EQU 0x02 TIMEOUT_L: DS 1 ; byte menos significativo del contador de timeout
;TIMEOUT_H_LIMIT EQU 0xFF FREQUENCY_H: DS 1 ; parámetro "frecuencia" recibido por la rutina SOUND (byte más significativo)
RINGS_ANSWER EQU 0X03 ; cant. rings de espera antes de contestar la llamada FREQUENCY_L: DS 1 ; parámetro "frecuencia" recibido por la rutina SOUND (byte menos significativo)
EEMEN EQU 00001000b ; EEPROM access enable bit LENGTH: DS 1 ; parámetro "duración" recibido por la rutina SOUND
EEMWE EQU 00010000b ; EEPROM write enable bit
WDTRST EQU 00000010b ; EEPROM RDY/BSY bit ; *** seGmento de memorIa dIreccIonaBle de a BIt ***
WMCON DATA 96h ; watchdog and memory control register BSEG AT 0x00
RELAY_1_STATUS EQU 0x0001 ; dirección en EEPROM en donde se almacena el estado del relé 1 LOGUED: DBIT 1 ; indica si el usuario está logueado
Q_RINGS_X EQU 0x0A ; dirección en EEPROM en donde se almacena la cantidad de rings (se SWITCH_ON: DBIT 1 ; indica que se ha seleccionado la opción de encender relay
;reservan los 10 primeros bytes para el estado de los relés) SWITCH_OFF: DBIT 1 ; indica que se ha seleccionado la opción de apagar relay
Q_RINGS_DEFAULT EQU 0x03 ; cantidad de rings "por defecto", si aún el usuario no setéo alguna cantidad CHECK_RELAY: DBIT 1 ; indica que se ha seleccionado la opción de consultar relay
UNDEFINED EQU 0xFF ; significado que le asignamos a lo "indefinido" (para cualquier uso que lo requiera) CHANGE_PASS: DBIT 1 ; indica que se ha seleccionado la opción de cambiar la contraseña
SWITCHED_OFF EQU 0x00 ; valor almacenado en EEPROM para indicar que el relé está apagado CHANGE_RINGS: DBIT 1 ; indica que se ha seleccionado la opción de cambiar la cantidad de rings
Proyectos Electrónicos 95
Montaje Destacado
EXIT: DBIT 1 ; indica que se ha seleccionado la opción de salir (desloguearse) USER_LOGUED: JNB SWITCH_ON,NEXT2
DIG_PRESSED: DBIT 1 ; indica si se ha presionado un dígito en el teléfono remoto CALL RELAY_ON
SEND_CHAR: DBIT 1 ; indica si se quiere transmitir por RS-232 el byte almacenado en T_CHAR JMP WAIT
COMP_RESULT: DBIT 1 ; indica el resultado de la rutina COMPARE_PASS (0=distintas ; 1=iguales) NEXT2: JNB SWITCH_OFF,NEXT3
NO_FIRST: DBIT 1 ; permite ignorar el primer caracter debido al encendido del circuito, y que CALL RELAY_OFF
molesta JMP WAIT
NEXT3: JNB CHECK_RELAY,NEXT4
; *** seGmento de códIGo *** CALL GET_RELAY
CSEG AT 0x00 JMP WAIT
NEXT4: JNB CHANGE_PASS,NEXT5
; *** Vector de interrupciones *** ; CALL CH_PASS
ORG 0x00 JMP WAIT
INIT: LJMP SET_PASSWORD NEXT5: JNB CHANGE_RINGS,NEXT9
ORG 0x03 CALL CH_RINGS
LJMP EI0_HANDLER ; EI0_HANDLER = External Interrupt 0 Handler JMP WAIT
ORG 0x0B NEXT9: JNB EXIT,CALL_BACK
LJMP T0_HANDLER ; T0_HANDLER = Timer 0 Handler CALL EXIT_PROGR
ORG 0x13 JMP WAIT
LJMP EI1_HANDLER ; EI1_HANDLER = External Interrupt 1 Handler CALL_BACK: CALL DIG_HANDLER
ORG 0x1B JMP WAIT
RETI
ORG 0x23 ;******************************************************************************************************
LJMP SI_HANDLER ; SI_HANDLER = Serial Interrupt Handler ; external Interrupt 0 Handler
ORG 0x2B ; maneja la interrupción externa 0, la cual se dispara cuando un nuevo dígito fué presionado
RETI ; en el aparato telefónico remoto.
; el dígito, en binario, entra por p2.0 p2.1 p2.2 p2.3 (q4 q3 q2 q1), se lo lee, y se lo
; *** fin vector de interrupciones *** ; ; coloca en dIGIt. lo importante de esta subrutina es que reBate el dígito recibido (dado que
; *** se setéa la contraseña por defecto (1111) *** ; lo recibe al revés). también setéa dIG_pressed para que el programa principal actúe.
;******************************************************************************************************
SET_PASSWORD: MOV R0,#PASSWORD EI0_HANDLER: PUSH ACC
MOV @R0,#0x01 PUSH B
INC R0 CLR TR0
MOV @R0,#0x01 MOV A,P2
INC R0 MOV B,#0x00
MOV @R0,#0x01 BIT_0: JNB ACC.0,BIT_1
INC R0 SETB B.3
MOV @R0,#0x01 BIT_1: JNB ACC.1,BIT_2
SETB B.2
; *** se setéa la cantidad de rings de espera por defecto (3 rings) *** BIT_2: JNB ACC.2,BIT_3
MOV R0,#Q_RINGS SETB B.1
MOV @R0,#RINGS_ANSWER BIT_3: JNB ACC.3,SWAP_END
CLR NO_FIRST SETB B.0
JMP MAIN SWAP_END: MOV DIGIT,B
ORG 0x50 MOV A,DIGIT
CJNE A,#0x08,NO_RST
; *** acceso a eeprom para recuperar configuraciones *** POP B
MAIN: ORL WMCON,#EEMEN ; se habilita el acceso a EEPROM POP ACC
MOV DPTR,#RELAY_1_STATUS DEC SP
MOVX A,@DPTR ; se lee el estado del relé desde EEPROM MOV R0,SP
CJNE A,#SWITCHED_ON,RELAY_OFF2 MOV @R0,#0x00
SETB P1.1 ; se enciende el relé INC SP
JMP RELAY_ON2 MOV R0,SP
RELAY_OFF2: CLR P1.1 ; se apaga el relé MOV @R0,#0x01
RELAY_ON2: SETB P1.2 ; para indicar "desatendido" CLR SWITCH_ON
ANL P1,#00000110B ; "AND lógico" para inicializar P1 ( P1.0=BEEP ; P1.1=CONTROL RELÉ ; CLR SWITCH_OFF
; P1.2=CONTROL CIRCUITO ATENDIDO ) CLR CHECK_RELAY
MOV P2,#0xFF ; P2 va a manejar I/O con el teléfono remoto CLR CHANGE_PASS
MOV DPTR,#Q_RINGS_X ; se lee la cantidad de rings desde la dirección #Q_RINGS_X en EEPROM CLR CHANGE_RINGS
MOVX A,@DPTR CLR EXIT
CJNE A,#UNDEFINED,DEFINED ; si nunca se setéo aún la cantidad de rings CLR DIG_PRESSED
MOV A,#Q_RINGS_DEFAULT ; se asigna la cantidad "por defecto" MOV TIMEOUT_L,#0x00 ; se resetéa el contador de time-out,
DEFINED: MOV Q_RINGS,A MOV TIMEOUT_H,#0x00 ; debido a que el usuario presionó una tecla
XRL WMCON,#EEMEN ; se deshabilita el acceso a EEPROM MOV TL0,#0x00 ; inicialización del timer 0 para que
MOV TH0,#0x00 ; cuente 65536 cuentas
; *** fin acceso a eeprom *** SETB TR0
RETI
MOV SP,#0x7F ; se usa para el stack los 128 bytes de acceso indirecto NO_RST: POP B
CLR LOGUED POP ACC
CLR SWITCH_ON JNB NO_FIRST,IGNORE
CLR SWITCH_OFF SETB DIG_PRESSED
CLR CHECK_RELAY IGNORE: SETB NO_FIRST
CLR CHANGE_PASS MOV T_CHAR,DIGIT ; para debugging
CLR CHANGE_RINGS SETB SEND_CHAR ; para debugging
CLR EXIT MOV TIMEOUT_L,#0x00 ; se resetéa el contador de time-out,
CLR DIG_PRESSED MOV TIMEOUT_H,#0x00 ; debido a que el usuario presionó una tecla
CLR SEND_CHAR MOV TL0,#0x00 ; inicialización del timer 0 para que
SETB IT0 ; interrupción externa INT0 por flanco descendente MOV TH0,#0x00 ; cuente 65536 cuentas
SETB IT1 ; interrupción externa INT1 por flanco descendente SETB TR0
RETI
MOV BYTES_PASS,#0x00
MOV Q_RINGS_AUX,#0x00 ;******************************************************************************************************
MOV AUX,#0x00 ; tImer 0 Handler
MOV TIMEOUT_L,#0x00 ; maneja la interrupción asociada al overflow del timer 0.
MOV TIMEOUT_H,#0x00 ; es utilizada para administrar un time-out en caso de que un usuario corte la comunicación telefónica
; sin desloguearse (cuando se produce el time-out, se limpian todos los flags, y por consiguiente,
MOV TL0,#0x00 ; inicialización del timer 0 para que ; el sistema queda en condiciones de poder ser utilizado nuevamente.
MOV TH0,#0x00 ; cuente 65536 cuentas ;******************************************************************************************************
CLR TF0 ; se limpia el flag de overflow T0_HANDLER: PUSH ACC
CLR TR0
; *** Inicialización de la comunicación serIe rs-232 *** MOV A,TIMEOUT_H
MOV A,PCON ; en las 3 primeras líneas se pone en 0 CJNE A,#TIMEOUT_H_LIMIT,NO_TIMEOUT
CLR ACC.7 ; el bit SMOD (bit 7 de PCON). Así, para calcular DEC SP
MOV PCON,A ; el "baud rate" se divide por 32 (sino habría que dividir por 16) MOV R0,SP
MOV SCON,#0x52 ; setéa el puerto serie en MODO 1, REN=1, TI=0 y RI=0 MOV @R0,#0x50
MOV TMOD,#0x21 ; setéa el timer 0 en MODO 1 (16 bits auto-reload) y el timer 1 en MODO 2 (8 bits auto-reload) INC SP
MOV TH1,#SETTINGS_SERIAL MOV R0,SP
CLR TR0 MOV @R0,#0x00
SETB TR1 ; arranca el timer 1 RETI
MOV IE,#0x96 ; habilita la interrupción para la comunicación serie, NO_TIMEOUT: MOV A,TIMEOUT_L
; la interrupción externa 1, y la interrupción del timer 0 CLR C
JMP WAIT ADD A,#0x01
MOV TIMEOUT_L,A
ORG 0x0100 JNC NO_OVERFLOW
WAIT: JNB DIG_PRESSED,WAIT ; espera hasta que se presione algún dígito MOV A,TIMEOUT_H
JB LOGUED,USER_LOGUED ADD A,#0x01
CALL GET_PASS MOV TIMEOUT_H,A
JMP WAIT NO_OVERFLOW: MOV TL0,#0x00 ; inicialización del timer 0 para que
96 Proyectos Electrónicos
control de artefactos por la Línea telefónica
MOV TH0,#0x00 ; cuente 65536 cuentas ; limpia un bit en el puerto 1 (p1) para apagar el relay solicitado. por ejemplo, clr p1.1 apaga el
CLR TF0 ; se limpia el flag de overflow ; relay 1. para ello, consulta el valor en dIGIt.
POP ACC ; limpia los bits dIG_pressed y swItcH_off.
SETB TR0 ;******************************************************************************************************
RETI RELAY_OFF: MOV R0,DIGIT
CJNE R0,#0x01,RELAY_OFF_END
;****************************************************************************************************** CLR P1.1
; external Interrupt 1 Handler
; maneja la interrupción externa 1, la cual se dispara con cada "ring" de una llamada entrante. ; se escribe en eeprom el estado del relé (para darle persistencia)
; si atiende la llamada entrante, entonces habilita la interrupción Ie0 para recibir los dígitos. ORL WMCON,#EEMEN ; se habilita el acceso a EEPROM
;****************************************************************************************************** ORL WMCON,#EEMWE ; se habilita el acceso a EEPROM para escritura
EI1_HANDLER: PUSH ACC MOV DPTR,#RELAY_1_STATUS
CLR EX1 ; se deshabilita la interrupción para que ignore todas las interrupciones siguientes en el mismo ring MOV A,#0x00 ; 0x00 significa "apagado"
; significando así una interrupción por ring. MOVX @DPTR,A ; escribe la EEPROM con el contenido del acumulador
CLR TF0
SETB TR0 ; arranca el timer 0 ; loop de espera hasta que concluya la escritura a eeprom
MOV A,#RING_TIME_WAIT LOOP_RELAY_OFF: MOV A,WMCON ; se lee el estado de escritura de la EEPROM
NEXT_STEP: DEC A ANL A,#WDTRST ; se crequéa RDY/BSY
JNB TF0,$ JZ LOOP_RELAY_OFF ; vuelve a loopear si está seteado BSY ("busy")
CLR TF0
JNZ NEXT_STEP XRL WMCON,#EEMWE ; se deshabilita el acceso a EEPROM para escritura
CLR TF0 XRL WMCON,#EEMEN ; se deshabilita el acceso a EEPROM
CLR TR0
CALL LONG_BEEP
INC Q_RINGS_AUX RELAY_OFF_END: CLR DIG_PRESSED
MOV A,Q_RINGS_AUX CLR SWITCH_OFF
MOV 0x4C,A RET
CJNE A,Q_RINGS,NO_ANSWER
ANSWER: CLR P1.2 ; P1.2 está en bajo mientras se mantenga la comunicación telefónica ;******************************************************************************************************
SETB EX0 ; Get relaY status
MOV TIMEOUT_L,#0x00 ; se resetéa el contador de time-out, ; consulta si un relay está encendido o apagado, para lo cual accede al bit correspondiente
MOV TIMEOUT_H,#0x00 ; debido a que el usuario presionó una tecla ; en el puerto 1 (p1).
SETB TR0 ; arranca el timer 0 ; limpia los bits dIG_pressed y cHecK_relaY.
NO_ANSWER: SETB EX1 ;******************************************************************************************************
POP ACC GET_RELAY: MOV R0,DIGIT
RETI CJNE R0,#0x01,GET_RELAY_END
JNB P1.1,RELAY_IS_OFF
;****************************************************************************************************** CALL LONG_BEEP
; serIal Interrupt Handler JMP GET_RELAY_END
; maneja la interrupción provocada por los flags rI y tI cuando se recibe un byte por comunicación RELAY_IS_OFF: CALL SHORT_BEEP
; serie rs-232, o cuando se terminó de transmitir el último byte, respectivamente. GET_RELAY_END: CLR DIG_PRESSED
; pone en r_cHar el caracter recibido, y transmite el caracter almacenado en t_cHar, siempre y cuando CLR CHECK_RELAY
; esté seteado el bit send_cHar. RET
;******************************************************************************************************
SI_HANDLER: JNB RI,SEND ;******************************************************************************************************
MOV R_CHAR,SBUF ; cHanGe password
CLR RI ;******************************************************************************************************
SEND: JNB TI,END_SI_HANDLER CH_PASS: PUSH ACC
JNB SEND_CHAR,END_SI_HANDLER MOV R0,#PASSWORD
CLR TI MOV R1,#0x00
CLR SEND_CHAR NEXT: MOV @R0,DIGIT
MOV SBUF,T_CHAR INC R0
END_SI_HANDLER: RETI INC R1
CLR DIG_PRESSED
;****************************************************************************************************** CJNE R1,#0x04,WAIT_BYTE
; Get password JMP END_CH_PASS
;****************************************************************************************************** WAIT_BYTE: JNB DIG_PRESSED,WAIT_BYTE
GET_PASS: PUSH ACC JMP NEXT
MOV A,#PASS_LOADED END_CH_PASS: CALL LONG_BEEP
ADD A,BYTES_PASS CLR CHANGE_PASS
MOV R0,A CLR LOGUED ; le obligo al usuario que se vuelva a loguear
MOV @R0,DIGIT POP ACC
INC BYTES_PASS RET
MOV R1,BYTES_PASS
CJNE R1,#0x04,NOT_LOADED ;******************************************************************************************************
LOADED: CALL COMPARE_PASS ; cHanGe rInGs
MOV BYTES_PASS,#0x00 ;******************************************************************************************************
JNB COMP_RESULT,NOT_LOADED CH_RINGS: PUSH ACC
SETB LOGUED MOV Q_RINGS,DIGIT
NOT_LOADED: CLR DIG_PRESSED CLR DIG_PRESSED
POP ACC
RET ORL WMCON,#EEMEN ; se habilita el acceso a EEPROM
ORL WMCON,#EEMWE ; se habilita el acceso a EEPROM para escritura
;****************************************************************************************************** MOV DPTR,#Q_RINGS_X
; swItcH relaY on MOV A,Q_RINGS
; setéa un bit en el puerto 1 (p1) para encender el relay solicitado. por ejemplo, setB p1.1 enciende MOVX @DPTR,A ; escribe la EEPROM con el contenido del acumulador
; el relay 1. para ello, consulta el valor en dIGIt.
; limpia los bits dIG_pressed y swItcH_on. ; Loop de espera hasta que concluya la escritura a EEPROM
;;****************************************************************************************************** LOOP_CH_RINGS: MOV A,WMCON ; se lee el estado de escritura de la EEPROM
RELAY_ON: PUSH ACC ANL A,#WDTRST ; se crequéa RDY/BSY
MOV R0,DIGIT JZ LOOP_CH_RINGS ; vuelve a loopear si está seteado BSY ("busy")
CJNE R0,#0x01,RELAY_ON_END
SETB P1.1 XRL WMCON,#EEMWE ; se deshabilita el acceso a EEPROM para escritura
XRL WMCON,#EEMEN ; se deshabilita el acceso a EEPROM
; se escribe en eeprom el estado del relé (para darle persistencia)
ORL WMCON,#EEMEN ; se habilita el acceso a EEPROM CALL LONG_BEEP
ORL WMCON,#EEMWE ; se habilita el acceso a EEPROM para escritura CLR CHANGE_RINGS
MOV DPTR,#RELAY_1_STATUS POP ACC
MOV A,#0x01 ; 0x01 significa "encendido" RET
MOVX @DPTR,A ; escribe la EEPROM con el contenido del acumulador
;******************************************************************************************************
; loop de espera hasta que concluya la escritura a eeprom ; exIt proGram
LOOP_RELAY_ON: MOV A,WMCON ; se lee el estado de escritura de la EEPROM ; desloguéa el usuario, y arranca todo nuevamente.
ANL A,#WDTRST ; se crequéa RDY/BSY ;******************************************************************************************************
JZ LOOP_RELAY_ON ; vuelve a loopear si está seteado BSY ("busy") EXIT_PROGR: CALL LONG_BEEP
XRL WMCON,#EEMWE ; se deshabilita el acceso a EEPROM para escritura DEC SP
XRL WMCON,#EEMEN ; se deshabilita el acceso a EEPROM MOV R0,SP
MOV @R0,#0x50
CALL LONG_BEEP INC SP
RELAY_ON_END: CLR DIG_PRESSED MOV R0,SP
CLR SWITCH_ON MOV @R0,#0x00
POP ACC RET
RET
;******************************************************************************************************
;****************************************************************************************************** ; compare passwords
; swItcH relaY off ; compara la password ingresada por el usuario contra la password almacenada en memoria.
Proyectos Electrónicos 97
Montaje Destacado
; setéa el carrY si son iguales. ; espera una cierta cantidad de tiempo, especificada en lenGtH
;****************************************************************************************************** ;******************************************************************************************************
COMPARE_PASS: PUSH ACC
MOV R0,#PASSWORD DELAY: PUSH ACC
MOV R1,#PASS_LOADED CLR TR0 ; se para el timer
MOV R2,#0x00 CLR TF0
NEXT_BYTE: MOV A,@R0 CLR ET0 ; se deshabilita la interrupción asociada al timer 0 (porque ahora será usado con otro fin)
MOV AUX,@R1 MOV A,#0xFF
CJNE A,AUX,BAD_PASS LOOP2_DELAY: MOV R0,#0xFF
INC R0 LOOP1_DELAY: MOV TH0,#0xFF
INC R1 MOV TL0,#0xCE
INC R2 SETB TR0
CJNE R2,#0x04,NEXT_BYTE JNB TF0,$
CORRECT_PASS: SETB COMP_RESULT CLR TR0
CALL INTRO CLR TF0
JMP END_CMP INC R0
BAD_PASS: CLR COMP_RESULT CJNE R0,#0xFF,LOOP1_DELAY
CALL SHORT_BEEP INC A
END_CMP: POP ACC CJNE A,LENGTH,LOOP2_DELAY
RET MOV TH0,#0x00
MOV TL0,#0x00
;****************************************************************************************************** SETB ET0
; sHort Beep SETB TR0
; emite un beep corto. POP ACC
;****************************************************************************************************** RET
SHORT_BEEP: PUSH ACC
CLR TR0 ; se para el timer ;******************************************************************************************************
CLR TF0 ; Intro
CLR ET0 ; se deshabilita la interrupción asociada al timer 0 (porque ahora será usado con otro fin) ; Genera una melodía para introducción
MOV R0,#0xFF ;******************************************************************************************************
LOOP2_SB: MOV A,#0xFF
LOOP1_SB: MOV TH0,#0xFC INTRO: MOV FREQUENCY_H,#0xFE
MOV TL0,#0x18 MOV FREQUENCY_L,#0x0C
SETB TR0 MOV LENGTH,#0x02
JNB TF0,$ CALL SOUND
CLR TR0 CALL DELAY
CLR TF0 CALL SOUND
CPL P1.0 CALL DELAY
INC A CALL SOUND
CJNE A,#0xFF,LOOP1_SB
INC R0 MOV LENGTH,#0x04
CJNE R0,#0x00,LOOP2_SB CALL DELAY
MOV TH0,#0x00
MOV TL0,#0x00 MOV LENGTH,#0x02
SETB ET0 CALL SOUND
SETB TR0 CALL DELAY
POP ACC CALL SOUND
RET CALL DELAY
CALL SOUND
;******************************************************************************************************
; lonG Beep MOV LENGTH,#0x04
; emite un beep largo. CALL DELAY
;******************************************************************************************************
LONG_BEEP: PUSH ACC MOV FREQUENCY_H,#0xFE
CLR TR0 ; se para el timer MOV FREQUENCY_L,#0x0C
CLR TF0 MOV LENGTH,#0x02
CLR ET0 ; se deshabilita la interrupción asociada al timer 0 (porque ahora será usado con otro fin) CALL SOUND
MOV R0,#0xFF CALL DELAY
LOOP2_LB: MOV A,#0xFF MOV FREQUENCY_H,#0xFE
LOOP1_LB: MOV TH0,#0xFE MOV FREQUENCY_L,#0x5F
MOV TL0,#0x0C CALL SOUND
SETB TR0 CALL DELAY
JNB TF0,$ MOV FREQUENCY_H,#0xFD
CLR TR0 MOV FREQUENCY_L,#0x8F
CLR TF0 CALL SOUND
CPL P1.0 CALL DELAY
INC A MOV FREQUENCY_H,#0xFD
CJNE A,#0xFF,LOOP1_LB MOV FREQUENCY_L,#0xD4
INC R0 CALL SOUND
CJNE R0,#0x02,LOOP2_LB CALL DELAY
MOV TH0,#0x00 MOV FREQUENCY_H,#0xFE
MOV TL0,#0x00 MOV FREQUENCY_L,#0x0C
SETB ET0 CALL SOUND
SETB TR0 RET
POP ACC
RET ;******************************************************************************************************
; dIGIt Handler
;****************************************************************************************************** ; subrutina de "callback". de acuerdo al dígito presionado (opción seleccionada), setéa el bit
; sound ; correspondiente.
; dados los parámetros frequencY_H, frequencY_l y lenGtH, emite un sonido. ;******************************************************************************************************
;****************************************************************************************************** DIG_HANDLER: MOV R0,DIGIT
SOUND: PUSH ACC OPTION_1: CJNE R0,#0x01,OPTION_2
CLR TR0 ; se para el timer SETB SWITCH_ON
CLR TF0 JMP DIG_HAN_END
CLR ET0 ; se deshabilita la interrupción asociada al timer 0 (porque ahora será usado con otro fin) OPTION_2: CJNE R0,#0x02,OPTION_3
MOV A,#0xFF SETB SWITCH_OFF
LOOP2_SOUND: MOV R0,#0xFF JMP DIG_HAN_END
LOOP1_SOUND: MOV TH0,FREQUENCY_H OPTION_3: CJNE R0,#0x03,OPTION_4
MOV TL0,FREQUENCY_L SETB CHECK_RELAY
SETB TR0 JMP DIG_HAN_END
JNB TF0,$ OPTION_4: CJNE R0,#0x04,OPTION_5
CLR TR0 SETB CHANGE_PASS
CLR TF0 JMP DIG_HAN_END
CPL P1.0 OPTION_5: CJNE R0,#0x05,OPTION_9
INC R0 SETB CHANGE_RINGS
CJNE R0,#0xFF,LOOP1_SOUND JMP DIG_HAN_END
INC A OPTION_9: CJNE R0,#0x09,DIG_HAN_END
CJNE A,LENGTH,LOOP2_SOUND SETB EXIT
MOV TH0,#0x00 SETB DIG_PRESSED ; se setéa DIG_PRESSED, porque el exit es una operación unaria,
MOV TL0,#0x00 ; y debe ingresar directamente a la subrutina EXIT_PROGR
SETB ET0 RETI
SETB TR0 DIG_HAN_END: CLR DIG_PRESSED
POP ACC CALL LONG_BEEP
RET RET
;****************************************************************************************************** end
; delaY
98 Proyectos Electrónicos
M o n ta j e
Una de las características sobresalientes del
trabajo con Microcontroladores Atmel es la
posibilidad de utilizar ambientes de desarro-
llo, programadores, tarjetas entrenadoras y
gran cantidad de circuitos de uso libre,
muchos de los cuales puede bajar de
Internet. En Saber Electrónica Nº 244 expli-
camos qué son los microcontroladores
ATMEL y cómo se los puede programar utili-
zando un circuito sencillo mediante el Puerto
COM de una PC. Como el Artículo de Tapa de esta edición requiere la programación de un
microcontrolador AVR, volvemos a explicar detalles de este programador, brindamos una
actualización para poder utilizarlo con chips de varias familias de la empresa ATMEL y por
último presentamos un programador por Puerto USB para aquellas personas que no tengan
Puerto COM en su PC y no deseen utilizar un adaptador RS232 a USB.
Proyectos Electrónicos 99
Montajes
Figura 1 - Circuito Easy-Downloader 2.0: Programador para atmel de 40 Pines por Puerto serial
El circuito funciona con el programa versión para micros de 40 patas. La versión 1 (que,
WINDOWS, UPLOADER EZ3, EZ3.1 con firm- como dijimos, puede bajar desde nuestra web)
ware actualizado para el 89S51 y el 89S52. podrá bajarla a partir de un link dado en nues-
Si necesita más espacio de codificación para tra web y es para programar micros Atmel de
su aplicación, especialmente para desarrollar 20 terminales, sin embargo, en este artículo,
proyectos con lenguaje C, también puede usar daremos un resumen sobre dicha versión
el Easy-Downloader V2.0, que es un progra-
mador muy fácil de usar. Es adecuado y
barato, de modo que cualquiera puede cons- El CirCuito DEl ProgramaDor Easy DownloaDEr V2.0
truirlo fácilmente. Esta versión puede escribir
un archivo HEX de Intel en el 89C51 (4kB), La figura 1 muestra el diagrama circuital del
89C52 (8kB) y el 89C55 (20kB). Insistimos cargador “Easy-Downloader V2.0”.
que este circuito es una versión que sólo sirve El 89C51 con el programa “ez52.hex” recibe
El soFtwarE
Figura 2a - PCB doble faz del programador serial de Figura 2b - lado de componentes del PCB del pro-
micros aVr de 40 pines gramador serial de micros aVr de 40 pines
1) La tensión de alimentación
de +5 V en el 7805.
2) Las tensiones de programa-
ción 0V, 5V y 12V que se
obtienen conectando los pines
de control (P3.5 y D), 2N2222A
y 2N2907 a +5V y / o 0V
(GND). La salida debe ser de
15V x 100mA.
Figura 9 - Circuito del programador para microcontroladores atmEl por puerto usB. note que no se incluye ningún
adaptador rs232 a usB ni circuitos latch.
soFtwarE
usbasp.2011-05-28.tar.gz (519
kB): Es la última version, soporta
TPI support y compatible con
ATMega88 and ATMega8.
usbasp.2009-02-28.tar.gz (260 kB)
usbasp.2007-10-23.tar.gz (172
Figura 10 - Diseño de la placa de circuito impreso para el programador usBasp. kB)
El CirCuito DE usBasP
Oscilador de Cuadratura
Esteosciladorposeedossalidasquesondesfasadasen180grados(funciónsenoycoseno)ydebeser
alimentadoconfuentesimétrica.Seusaunamplificadoroperacionaldobleysueficaciadependedelapre-
cisióndeloscapacitoresyresistores.
Sonda Lógica
Estasondalógicapara
CMOSusaun358,opera-
cional doble de National
y es alimentada por el
propio aparato analizado.
Sielniveldeseñaldeen-
trada estuviera por enci-
made2/3delatensiónde
alimentación,seencende-
rá el led verde y si estu-
vierapordebajode1/3de
la tensión de alimenta-
ción, se encenderá el led
rojo.
EltiempodeencendidodelalámparaL1esdeterminadoporelvalordeC1enconjuntoconR3.Eldis-
parodelcircuitolohaceS1.Laalimentaciónpuedeserde6a9V,recuérdesequehayunacaídadetensión
pequeñaeneltransistor.Paralámparade3Vx50mAconecteenserieconlalámparaunresistorde33Ωó
39Ω.
ConestallaveseevitaelproblemadelrégimenenlaconmutacióndecircuitodigitalesCMOS,dispa-
radosmanualmente.Seusandosinversoresdelos6disponiblesenunintegrado4049.Lallaveesespecial,
deltipoconmutadorquetieneunaposiciónNAyotroNC.
Conversor CC-CA
Elcircuitonospermiteob-
tenerunatensiónnegativaen-
tre7y8V,apartirdeunaten-
siónpositivade9V.Estaapli-
cación se vuelve interesante
paraloscasosenquesenece-
sita una alimentación simétri-
caysepretendeusarenelpro-
yectounaúnicabateríade9V.
Conunacargade0,5mAenla
salida, la tensión obtenida es
delordende7V.Lainversión
depolaridadyrectificaciónse
hace por el puente de diodos
enlasalidayporloscapacito-
res electrolíticos de filtro. La
frecuencia de operación está
determinadaporR1,R2yC1,
podrá ser alterada según la
aplicacióndeseada.
Relé Monoestable
Eldisparodeeste
circuitomonoestable
sehaceporunatran-
siciónnegativadela
tensión de entrada,
quedebecaerde+B
a 0V. El tiempo de
accionamiento del
relé es ajustado en
P1ysepuedecalcu-
lar mediante la ex-
presión:T=1,1xR
x C. En esta expre-
siónReslaresisten-
ciatotalrepresentada
por la suma de R2
conP1.