martes, 14 de octubre de 2008
Ayúdanos a crecer, haz NeoTeo tu página de inicio RegistrarseIniciar sesión

Open Alarm: El sistema de alarma hogareña de NeoTeo (II)

Por: Ariel Palazzesi  @  lunes, 21 de abril de 2008  Nota vista 7623 veces

Seguimos con el diseño de nuestro sistema de alarma domiciliaria. En esta segunda entrega veremos de que forma podemos construir un teclado que nos permita controlar cada una de las funciones de la misma. También aprenderemos a utilizar un sensor infrarrojo para detectar movimiento.
 

¿te interesa?
30 -3
33 votos
Aspecto de un teclado como el propuesto.

El teclado
Probablemente el  periférico de entrada mas utilizado en los dispositivos electrónicos sea el teclado. Es bastante difícil, a pesar de los avances en tecnologías como las pantallas táctiles o el reconocimiento de voz, encontrar un aparato electrónico que no posea una o más teclas. Y nuestra alarma no será una excepción.

Proporcionándole un teclado a este proyecto podremos implementar el uso de contraseñas para la activación y desactivación de la alarma, entre otras posibilidades. Las teclas estarán implementadas mediante pulsadores, que al ser accionados modificarán el estado de los pines del puerto B del microcontrolador.

Se trate de un modesto timbre que posee una sola tecla, o del más completo teclado de ordenador, el principio de funcionamiento es básicamente el mismo: al presionar un pulsador se cierra un circuito, circula una corriente a través de él, y el aparato realiza la acción prevista. La diferencia entre utilizar interruptores o pulsadores radica en que los primeros mantienen el estado de “abierto” o “cerrado” hasta que se los actúa nuevamente, mientras que los pulsadores (los normalmente abiertos) mantienen el estado de “cerrado” solamente mientras se los mantiene presionados. Como decíamos recién, los teclados comúnmente están creados a partir de pulsadores.

El teclado más sencillo que podemos construir contiene una sola tecla. Alguien podrá decir que algo tan simple no llega a la categoría de teclado, pero sin embargo nos va a servir para entender el funcionamiento interno de uno mas complejo. Este hipotético y sencillo teclado tiene solo dos estados posibles: El estado "A", con el pulsador abierto (correspondería a la tecla sin pulsar), y el estado "B", en el que la tecla está pulsada.

En el estado "A", la corriente de la batería no puede circular por el cable para llegar hasta la lámpara, dado que no puede saltar el espacio que hay dentro del interruptor abierto, por lo tanto la lámpara permanece apagada. Cuando el pulsador es presionado, este efectúa un puente en el circuito por cual la corriente puede cruzar y alcanzar la lámpara, y esta se enciende.

En un circuito asociado a un microcontrolador, los estados de la lámpara se corresponderían con el "0" y "1" binarios: la lámpara apagada equivaldría a "0" y encendida a un "1".
 

Funcionamiento de una tecla: circuito abierto y cerrado.

Varias teclas
Veamos como construir un teclado con varias teclas. Como vimos en notas anteriores, los puertos de un microcontrolador PIC en general disponen de un “ancho” de 8 bits, que mediante el byte de control pueden configurarse como entradas o salidas. Esto significa que si configuramos un puerto completo como entrada podríamos "leer" el estado de 8 interruptores a la vez.

En este caso, en el lugar de las lámparas del párrafo anterior tenemos conectadas al pulsador cada uno de los pines correspondientes puerto B de un PIC, como se ve en la figura 2. De esta manera, cada vez que se pulse una de las teclas, tendremos un “1” en el bit correspondiente. Este esquema funciona perfectamente, y es muy fácil de leer mediante un programa, simplemente debemos crear un bucle que lea el byte de datos, y si es distinto de cero analizar sus bits para ver cual/es de ellos están en "1" y así saber que pulsador/es están presionados.

Esta forma de construir un teclado tiene la desventaja de necesitar un número de conductores igual a la cantidad de pulsadores, lo que generalmente es poco práctico. Si nuestra alarma va a tener un teclado “de verdad”, necesitamos enfocar el problema de otra manera.

Multiplexación
Cuando el número de pulsadores empieza a aumentar, lo más conveniente es utilizar técnicas de multiplexado. Esto permite un uso más eficiente de los recursos disponibles, a costa de hacer ligeramente más complejos los circuitos y el software.

Básicamente, se trata de crear una matriz de dos dimensiones con conductores, y colocar en las intersecciones de estos los pulsadores (es más fácil de entender mirando el esquema de la figura 3). De esta manera, cuando pulsamos una tecla, estamos creando un puente en uno de los conductores correspondientes a las filas, y otro correspondiente a las columnas. Analizando un poco el esquema, vemos que para cada pulsador corresponde una sola configuración de fila-columna, por lo que es posible la identificación inequívoca del pulsador presionado.

De esta manera, y usando matrices cuadradas, es decir, misma cantidad de filas que de columnas (que es el caso optimo), podemos tener con "n" conductores (n/2)^2 pulsadores. Prácticamente todos los teclados con numero elevado de teclas, el de nuestra alarma incluido, utilizan un esquema de multiplexado similar a este.

La forma de leer un teclado de este tipo consiste en poner un "1" en una de las filas (o columnas) e ir leyendo las columnas (o filas) una a una. Si aparece alguna en "1" es que el pulsador correspondiente a esa fila y columna esta presionado.
 

Figura 2: Teclas sin multiplexar.
Figura 3: Teclado multiplexado.

El teclado de NeoTeo
Nuestro teclado necesita al menos 10 teclas, una para cada digito del 0 al 9. Esto nos permitiría utilizar cualquier número como contraseña. Podemos pensar en un teclado de 3 columnas y 4 filas (12 teclas),  que además de las mencionadas incluya los símbolos “*” y “#”, o mejor aún en uno de 4 columnas y 4 filas (16 teclas),  con una columna de “teclas especiales”. De ahora en más vamos a suponer que esa es nuestra elección, y que la disposición de las teclas será la que puede verse en la figura 4. Por supuesto, el lector puede diagramar su propio teclado a gusto.

Nos hemos tomado la libertad de dibujar una placa de circuito impreso que sirva para montar los pulsadores de un teclado de 4x4, que incluye un conector para vincularlo eléctricamente a la placa central propuesta en la entrega anterior de este tutorial.

El diseño, que puede verse en la figura 5, incluye los dígitos del 0 al 9, los símbolos “*” y “#”, una tecla para probar el funcionamiento de la sirena (“TEST”), una tecla de disparo instantáneo (“PANICO”), y dos teclas de uso general (“F1” y “F2”).

A continuación te mostramos como realizar un programa en BASIC que permite leer el teclado. Si tienes dudas sobre el significado de alguna de las instrucciones empleadas, puedes darle un repaso a nuestro tutorial sobre programación de microcontroladores.


'----------------------------------
'Alarma NeoTeo
'Ejemplo lectura Teclado
'----------------------------------
AllDigital  'Todos los pines del puerto A como E/S.
TRISA = %11111111  'Puerto A como entradas
TRISB = %00001111  'Puerto B: 4 entradas, 4 salidas

'Declaro las variables a utilizar
Dim tecla As Byte  'Tecla presionada

tecla = 16  '16 = no hay tecla presionada

'Bucle principal
loop:
    'Leo el teclado
    Gosub leoteclado
    WaitMs 10  'Espero
    'Sigo con el resto del programa...

Goto loop  'vuelvo a loop: para repetir indefinidamente.

End                                              

leoteclado:
        tecla = 16  '16 = no hay tecla presionada
        'Leo la primer columna
        PORTB = %10000000
        If PORTB.3 = 1 Then tecla = 1  'Tecla "1"
        If PORTB.2 = 1 Then tecla = 4  'Tecla "4"
        If PORTB.1 = 1 Then tecla = 7  'Tecla "7"
        If PORTB.0 = 1 Then tecla = 10  'Tecla "*"

        'Leo la segunda columna
        PORTB = %01000000
        If PORTB.3 = 1 Then tecla = 2  'Tecla "2"
        If PORTB.2 = 1 Then tecla = 5  'Tecla "5"
        If PORTB.1 = 1 Then tecla = 8  'Tecla "8"
        If PORTB.0 = 1 Then tecla = 0  'Tecla "0"

        'Leo la tercer columna
        PORTB = %00100000
        If PORTB.3 = 1 Then tecla = 3  'Tecla "3"
        If PORTB.2 = 1 Then tecla = 6  'Tecla "6"
        If PORTB.1 = 1 Then tecla = 9  'Tecla "9"
        If PORTB.0 = 1 Then tecla = 11  'Tecla "#"

        'Leo la cuarta columna
        PORTB = %00010000
        If PORTB.3 = 1 Then tecla = 12  'Tecla "TEST"
        If PORTB.2 = 1 Then tecla = 13  'Tecla "PANICO"
        If PORTB.1 = 1 Then tecla = 14  'Tecla "F1"
        If PORTB.0 = 1 Then tecla = 15  'Tecla "F2"
Return


La subrutina “leoteclado” carga en la variable “tecla” el valor correspondiente a la tecla presionada. Si “tecla” vale 16 significa que ningún pulsador ha sido presionado. En función del valor de esta variable se pueden ejecutar las acciones correspondientes.

Figura 4: Distribución de las teclas.
Figura 5: Diseño del PCB propuesto.
Figura 6: PCB listo para usar.
Figura 7: El soft corriendo en PIC Simulator IDE.
Este es el sensor sugerido.

El sensor infrarrojo
Parallax, la empresa fabricante del afamado BASIC Stamp, tiene en su catalogo un sensor infrarrojo que puede sernos de mucha utilidad en nuestro proyecto. Se trata del modelo PIR Sensor (#555-28027), que cuesta muy poco dinero y es sumamente simple de utilizar. Básicamente, se trata de una pequeña placa de circuito impreso que contiene al sensor propiamente dicho. Es capaz de detectar cambios en los niveles de emisión infrarroja de los objetos que tiene situados delante, hasta una distancia de unos 6 metros.

El corazón de este sensor es un dispositivo que contiene un material cristalino que es capaz de generar una pequeña corriente en función de la temperatura ambiente. Una lente, situada delante del sensor propiamente dicho e incluida en el modulo, permite ampliar el rango de operación del dispositivo.

La placa que aloja el sensor dispone de tres pines, dos de ellos dedicados a la alimentación y un tercero que provee una señal digital que puede ser leída directamente por el microcontrolador. Podemos alimentarlo directamente con 5V, y a la hora de diseñar la fuente de alimentación de nuestro proyecto debemos tener en cuenta que la corriente necesaria para que funcione sin problemas ronda los 100 microamperes.

Dispone de un jumper que determina el modo de funcionamiento. En la posición 1 (uniendo los pines “H” y el central), la salida del sensor se mantiene en estado alto de forma continua cuando se detectan objetos en movimiento de forma repetida. En la posición 2 (uniendo el pin central con el “L”), la salida pasa de estado alto a bajo con cada disparo. En ambos modos de operación, la salida permanece en estado bajo mientras no haya actividad frente al sensor.

Nuestro sistema de alarma prevee la conexión de solo uno de estos sensores. Pero como hemos dicho, la idea es que cada uno la adecue a sus necesidades, por lo que puedes agregar alguno(s) más aprovechando los pines de entrada/salida del microcontrolador que queden disponibles.

La rutina encargada de leer el sensor no podría ser más simple. El siguiente listado muestra como debemos realizar esta parte del programa, usando el BASIC del PIC SIMULATOR IDE:


'----------------------------------
'Alarma NeoTeo
'Ejemplo lectura sensor infrarrojo
'----------------------------------
AllDigital  'Todos los pines del puerto A como E/S.
TRISA = %11111111  'Puerto A como entradas
TRISB = %00000000  'Puerto B como salidas

Symbol pir = PORTA.0  'Sensor en A0
Symbol led = PORTB.0  'LED en B0

'Bucle principal
loop:
    led = pir  'Modifico estado del LED.
Goto loop
End


En la próxima entrega de esta serie de tutoriales veremos como integrar todo esto, y como sensar el estado de los demás “periféricos” que hemos pensado para nuestro sistema. ¡No te lo pierdas!
 



Artículo Siguiente
Darwin: Un mando para competir con el Wiimote
Artículo Anterior
Móvil satelital Elektrobit: lo mejor de ambos mundos
CopyRight
Prohibida su copia total con o sin fines comerciales. Copias parciales deben citar la fuente.

 

URL Trackback para esta noticia:
Votos: 0 de 0
Elvis
Elvis
Elvis
13/05/2008
15:12:52
#1   Saludos
Esta pagina esta super interesante, me gusta leer todo lo que envuelve los avances tecnologico y tambien aprovechar las opciones de comprar equipos modernos y construir algunas ideas electronicas como proyectos personales.
Muchas gracias por permitirme comunicarme con ustedes
Atte
Elvis
     Responder 
Votos: 0 de 0
yenni
yenni
yenni
15/05/2008
16:14:31
#2   hola, me gustaria saber como implementar un sistema de alarma hogareño pero unido a un computador, es decir que si se abre una ventana o puerta este me diga cual fue la que se abrio?espero pronta respuesta.
     Responder 
Votos: 0 de 0
Ariel Palazzesi
Ariel Palazzesi
Ariel Palazzesi
15/05/2008
16:31:43
#3   Hola Yenni!
Segui este tutorial, y el de Visual Basic. Entre los dos podras hacer eso, y mucho mas!

Saludos!
     Responder 
Votos: 1 de 1
TERROR254
TERROR254
TERROR254
31/05/2008
5:42:29
#4   QUE TAL ARIEL MEGUSTO TU PROYECTO LO VEO MUY COMPLETO YO QUISIERA HACER UNO MUCHO MAS SENCILLO NO SE SI ME PODRIAS APOYAR. NECESITO REALIZAR UNA ALARMA CON UN SOLO SENSOR O INTERRUPTOR DE LIMITE Y QUIERO USAR UN PIC 16F84A. EL PROBLEMA ES QUE NO SE CUAL ES TODO EL MATERIAL PARA HACERLO NOSE SI ME PODRIAS AYUDAR CON ESO Y EL DIAGRAMA D CONEXION GRACIAS
    Responder 
Votos: 1 de 1
Ariel Palazzesi
Ariel Palazzesi
Ariel Palazzesi
31/05/2008
15:06:27
#1   Hola Terror254!
El proyecto que estamos encarando en NeoTeo es "generico", es decir, te brinda las bases necesarias para que puedas construir una alarma con las caracteristicas que necesitas. Si repasas los capitulos disponibles, verás que es muy facil "reducirla" a lo que necesitas.

Un abrazo!
     Responder 
Votos: 1 de 1
ruben
ruben
ruben
23/07/2008
5:48:58
#5   Muy buen trabajo los felicito por que son estos proyectos basicos que nuestros jovenes se interesen por la electronica, continuen asi es muy interezante 100% click (aplauzos electronicos)
     Responder 
Votos: 0 de 0
MAXWELL CDALDERON
MAXWELL CDALDERON
MAXWELL CDALDERON
04/10/2008
0:04:45
#6   hola ariel me gusto super tu proyecto de alarma es por eso que hoy te pido que por favor me regales una serie mas completa de tutoriales de programacion de microcontroladores y por cualquier cosa este es mi email maxwell154@hotmail.com ESPERO ME DES RESPUESTA PRONTA Y ÑPOSITIVA MILES GRACIAS
     Responder 
 
 
Datos  Login Registrarse
Usuario
   
Email
Website
 
Nuevo comentario:


Tags HTML permitidos: br
 
 
NeoTeo


 


 

Revista NeoTeo

Autores