Sei sulla pagina 1di 16

Ivn Lpez Espejo

ivanloes@hotmail.com

PROYECTO BASADO EN MICROCONTROLADOR.


Descripcin global del proyecto.
El presente proyecto consiste en dar solucin a la construccin de un
sistema de control de un recinto, basado en acceso y seguridad.
El sistema controlar el acceso al recinto mediante una base de datos de
usuarios con capacidad de acceso. Estos debern introducir una clave vlida
(por defecto se contemplan cuatro claves que son grabadas, tericamente, en
la memoria interna EEPROM del microcontrolador durante el proceso de
fabricacin) tanto para la apertura de una puerta motorizada, como para su
cierre.
El tiempo de funcionamiento del motor para la apertura de la puerta est
controlado por un potencimetro, con el que el usuario puede ajustar esta
variable dentro del intervalo que va de 5 a 10 segundos. Durante el tiempo que
el recinto permanezca abierto se activar un foco para iluminar el mismo.
Mediante, por defecto, una quinta clave especial podemos acceder a la lectura
de la memoria EEPROM externa al microcontrolador. En esta memoria se
registrarn los diferentes accesos por parte de usuarios (clave utilizada, tipo de
operacin (apertura o cierre), fecha y hora).
Aparte del acceso mediante claves autorizadas a usuarios, en el aspecto de
seguridad del sistema se contempla la posible activacin de una alarma debido
a excesos de temperatura, detectados mediante un sensor (para evitar un
posible riesgo de incendio), o debido a la apertura de alguna de las ventanas
del recinto (en este caso slo se contempl la existencia de una).
Tambin, y debido a que la apertura y cierre de la puerta no son automticos,
se incluye una fotoclula que detecta el posible paso de objetos o personas
durante la operacin de cierre del recinto. En este caso, la puerta queda
bloqueada hasta que un usuario autorizado la reactive mediante una clave
vlida, completndose una operacin de apertura (operacin que tarda en
completarse, como es lgico, el mismo tiempo que la puerta estuvo
cerrndose).
Todo ello consta de una descripcin hardware, dividida en elementos de control
e interfaz de usuario, y software, que regir el funcionamiento lgico del
sistema. A continuacin pasamos a ver la solucin ofrecida.

Descripcin hardware.
En este apartado realizaremos una breve descripcin hardware
atendiendo, no a los elementos finales en su implementacin, sino a los
utilizados para diseo y simulacin mediante computador. En este sentido, para
la descripcin previa del proyecto se prescindi de hacer uso de elementos
como rels, foco de luz alimentado de la red elctrica, fotoclula o motor real.
En su lugar, para representar estos elementos se hizo uso de LEDs (para
simulacin de alarma, motor y foco del recinto) y pulsadores (para simulacin
de pulso enviado por la fotoclula y como elemento mecnico de deteccin de
apertura de ventana, aparte de servir de interfaz de usuario a fin de solicitar
acceso al recinto).
Aparte de los elementos comentados y los propios de conexionado e interfaz,
alimentacin, potencimetro para la regulacin del tiempo de apertura de la
puerta, teclado telefnico como interfaz de usuario, placa de circuito impreso o
resistencias clsicas, de pull-up y pull-down entre otros, pasaremos a comentar
a continuacin los bloques hardware ms relevantes que conforman el sistema.

MICROCONTROLADOR PIC18F4520
Se seleccion este dispositivo como corazn del sistema debido a sus
prestaciones, las cuales superan con creces los requerimientos establecidos.
Por la topologa software dada como solucin resultaba imprescindible esta
eleccin respecto de, por ejemplo, un microcontrolador de gama media de la
serie PICF16XX, puesto que cualquier modelo de esta ltima, slo permite una
interrupcin externa (fueron necesarias dos: para el control de la alarma por
apertura de ventana y para gestin de acceso al recinto).
En cuanto a la memoria interna de programa se refiere, podran haber servido
algunos de los modelos de la serie PIC16FXX. Estos tienen un contador de
programa de 13 bits, lo que les permite direccionar hasta 8192 palabras de
memoria de programa de 14 bits. No obstante, algunos de ellos, como el
PIC16F84, slo implementan 1024 palabras de memoria de programa de 14
bits, lo que, debido a lo comprobado durante la compilacin del cdigo, los
hace absolutamente insuficientes. Sin embargo, el PIC utilizado presenta una
memoria de programa de 16384 palabras de 8 bits cada una, lo que permite
cubrir con creces las necesidades de almacenamiento requeridas, dando un
amplio desahogo al sistema.

LCD LM016L
Pantalla LCD que forma parte de la interfaz de usuario.

MEMORIA EEPROM 24C32A


Memoria externa EEPROM de 4MB (4096 palabras de 8 bits cada una).
Permite, segn la solucin software dada, almacenar hasta 85 registros de
acceso al recinto. Nos permite comunicarlo con el PIC haciendo uso de la
interfaz serie I2C.

RELOJ-CALENDARIO PCF8583
Dispositivo configurable que nos permite registrar la fecha y hora de los
accesos al recinto. Hace uso de la interfaz serie I2C.

SENSOR DE TEMPERATURA DS18S20


Sensor digital de temperatura con una resolucin de 9 bits. Se comunica
mediante bus 1-wire (slo requiere una lnea de datos). Opera en el rango de
-55 C a +125C. Tiene una precisin de 0.5C.

A continuacin se muestra el esquema hardware dado como solucin.

1. Pulsador de acceso al recinto. Al ser presionado se solicita una clave


vlida para apertura o cierre de la puerta.
2. Pulsador que simula el efecto del rel tras la apertura de una de las
ventanas del recinto.
3. LED de alarma por exceso de temperatura y por apertura de ventana.
4. Luz del recinto.
5. LED que muestra el funcionamiento del motor de la puerta.
Permanece tanto tiempo encendido como tiempo est funcionando el
motor.
6. Pulsador que simula la seal enviada por una fotoclula al detectar el
paso de un objeto durante el cierre de la puerta del recinto.
7. Potencimetro para regulacin del tiempo de funcionamiento del
motor de la puerta.
8. Microcontrolador PIC18F4520.
9. Reloj-calendario PCF8583.
10. Memoria EEPROM externa 24C32A.
11. Teclado telefnico.
12. Sensor de temperatura DS18S20.
13. Display LCD LM016L.

Descripcin software.
El control lgico del sistema ha sido programado en lenguaje C y
compilado mediante el software PIC C Compiler. Est basado en un diseo
modular, de modo que, segn su aplicacin, las funciones se agrupan en
distintos ficheros de cdigo C, los cuales son finalmente agrupados en un nico
archivo, el cual desencadena y gestiona el funcionamiento lgico final del
sistema.
En total, el proyecto se compone de 10 ficheros. A continuacin pasamos a
describir brevemente cada uno de ellos.

1wire.C
Se definen funciones bsicas para comunicacin con un solo sensor
1-wire. Por defecto se define para el PIN A5 del microcontrolador, al cual se
conecta el sensor de temperatura a fin de tomar la lectura de la misma.

Acceso.C
Cdigo para la gestin de acceso al recinto. Contiene las siguientes
funciones:
void entryAndExit()  Esta funcin gestiona la apertura de la puerta (motor) y
encendido de la luz interior del recinto. Tambin ofrece solucin en el caso de
deteccin de paso de un objeto durante la operacin de cierre de la puerta. A
esta funcin se accede siempre que se d una clave de acceso vlida desde la
interfaz de usuario (a excepcin de con la clave especial para la lectura
secuencial de la memoria EEPROM externa).
void checkPass()  Dada una clave introducida mediante la interfaz de
usuario, este mtodo se encarga de la verificacin de la misma. En el caso de
que se encuentre en la memoria EEPROM interna inherente al
microcontrolador, se llamar a la funcin de gestin de apertura o cierre
entryAndExit() y se proceder al grabado en memoria de los datos de acceso,
llamando al mtodo writeData() (contenido en el archivo Memoria.C). Todo ello
en el caso de que la clave introducida sea de acceso, puesto que en el caso de
introducir el password correspondiente a la lectura secuencial de la memoria
EEPROM externa, se proceder a la llamada del mtodo readData() (tambin
contenido en el fichero Memoria.C).
Si la clave introducida no es vlida, simplemente se especifica a travs del LCD
y no se hace nada.
void access()  Se encarga de leer una clave de acceso a travs de teclado
para entrar o salir del recinto. Tras la confirmacin de la clave introducida, esta
funcin llamar a checkPass(), mtodo que ser el encargado de verificar los
datos introducidos. A la funcin access() se accede mediante interrupcin
externa tras hacer uso del pulsador especfico.
5

Alarma.C
Cdigo para la gestin de la alarma del recinto, tanto por temperatura
como por apertura de ventana. Contiene las siguientes funciones:
void windowAlarm()  Controla la alarma por apertura de ventana. Mediante
interrupcin externa procedente de un pulsador que simula dicha apertura, se
pasa a la ejecucin de la funcin en cuestin, donde se activa el LED de
alarma y se muestra un aviso por LCD que bloquean el sistema hasta que se
d solucin al problema.
void fireAlarm()  Controla la alarma por exceso de temperatura. De nuevo,
esta funcin activa el LED de alarma y muestra un aviso por LCD que bloquean
el sistema hasta que se d solucin al problema. La propia funcin comprueba
la temperatura y es llamada peridicamente tras el desbordamiento del
temporizador del watchdog, el cual saca al microcontrolador del modo de bajo
consumo. Esta llamada se gestiona desde el fichero principal, el que aglutina
todos los mdulos programados.

ds1820.C
Driver bsico del sensor de temperatura. Realiza una secuencia
completa de inicializacin, conversin de temperatura y lectura del sensor de
temperatura con alimentacin externa.

Inicializa.C
Contiene funciones de inicializacin del sistema: bienvenida, registro de
passwords en la memoria EEPROM interna del microcontrolador y de ajuste,
display y lectura de fecha y hora. Las funciones en cuestin son las siguientes:
void welcome()  Funcin de bienvenida. Se encarga de displayar en el LCD
un mensaje de bienvenida al sistema, llevando a cabo la inicializacin del
propio LCD.
void writePass()  Realiza el grabado de las claves de acceso en la memoria
EEPROM interna. Esto debe venir hecho de fbrica, pero para el caso presente
realizaremos esta escritura al inicio de la simulacin.
void displayDate()  Muestra por el LCD en un instante dado la fecha y horas
actuales.
date_time_t returnDate()  Devuelve la fecha y la hora.
void adjustDate()  Esta funcin se encarga de permitirle al usuario el ajuste
inicial de la fecha y la hora. Los datos son ledos desde teclado. La funcin
tambin llama a displayDate(), permitindonos comprobar el ajuste realizado
para confirmacin.
6

LCDeasy.C
Funciones para la gestin del display LCD de la EasyPIC3 con el
compilador de CCS.

Memoria.C
Fichero para la gestin del uso de la memoria EEPROM externa del
microcontrolador. Contiene las siguientes funciones:
void WriteData()  Su utilidad es el registro de informacin acerca de los
accesos al recinto.
void readData()  Funcin para la lectura secuencial de la memoria
EEPROM, permitindonos, mediante una clave especial, acceder al registro de
accesos al recinto.

PCF8583.C
Funciones para el RTC I2C: PCF8583. Incluye funciones de conversin
BCD-binario y de lectura/escritura a travs de I2C.

Proyecto.C
Cdigo que aglutina todos los mdulos programados y que desencadena
y gestiona el funcionamiento del sistema. Incluye parmetros y definiciones
bsicas de funcionamiento (interrupciones, definicin I2C, optimizacin de
funciones de I/O). Slo se define la siguiente funcin:
void main()  Graba los passwords en la memoria interna, da un mensaje de
bienvenida, solicita el ajuste de la fecha/hora por parte del usuario, habilita
interrupciones, pone en funcionamiento el watchdog as como el modo de bajo
consumo y finalmente habilita el acceso al recinto mediante interrupcin y
posibilita la comprobacin de la temperatura tras el desbordamiento del
temporizador asociado al watchdog, el cual saca al PIC del modo de bajo
consumo.

Teclado.C
Este fichero contiene una funcin denominada int leerTeclado(), la cual
permite controlar la lectura del teclado.

Una vez descritos la agrupacin y funcionamiento software del sistema, se


pasa a mostrar un diagrama que ofrece una visin global del mismo.

Funcionalidad.
En este apartado describiremos a nivel usuario las funcionalidades del
sistema.
Tras ser arrancado, se muestra el siguiente mensaje de bienvenida:

A continuacin se nos indica que deberemos ajustar la fecha y hora del


sistema. Para continuar, presionaremos cualquier tecla del keypad:

La siguiente secuencia de capturas muestra el ajuste del reloj-calendario al


viernes 07/08/09 a las 21:30:00. Tras terminar la configuracin se pide
introducir a travs del keypad un 1 en el caso de que los datos sean correctos,
o un 0 a fin de reintroducir la informacin. Los datos se van introduciendo
secuencialmente tal y como se van solicitando y no es necesario confirmar
ninguno de los pasos intermedios. Las cifras se introducen de izquierda a
derecha, de modo que si queremos configurar el ao 2009, presionaremos en
primera instancia un 0 y luego un 9. El formato de la fecha y hora es dd/mm/aa
hh/mm/ss. Finalmente se solicita el da de la semana; se introducir un 0 para
el domingo, un 1 para el lunes y as sucesivamente hasta un 6 para el sbado.

Se puede apreciar cmo los efectos han surtido efecto en el mdulo del
PCF8583, como se recoge en la siguiente captura:

El LCD entonces no mostrar nada. Una vez finalizada la configuracin inicial


de rigor, podemos comenzar a usar el sistema. Cada cierto perodo de varios
segundos se analiza la temperatura en la sala. Esto ocurre cuando el
temporizador del watchdog se desborda y saca al PIC del reposo. Si la
temperatura es mayor de 40C, se enciende el LED de alarma y se muestra un
mensaje en el LCD. Esto no ocurre as cuando el usuario bloquea dicha
funcionalidad por una operacin de acceso al recinto (apertura o cierre), o por
una lectura secuencial de la memoria EEPROM externa.

Sin embargo, con la alarma por apertura de ventana ocurre algo ligeramente
distinto, puesto que esta acta por interrupcin, as que en el instante en el que
el sistema sea inicialmente configurado y no se est atendiendo ninguna otra
(por ejemplo, la asociada al acceso al recinto), la alarma por apertura de
ventana saltar, encendindose el mismo LED de alarma, pero mostrndose un
mensaje distinto por la pantalla LCD. Si, anteriormente, para simulacin
podamos alterar el valor de la temperatura sin ms que clickar sobre las
flechas del mdulo DS18S20, ahora deberemos actuar el pulsador numerado
10

con la cifra 2, tal y como se mostr en el esquema hardware incluido al final del
apartado Descripcin hardware.

En cualquier momento tras el ajuste de la fecha y hora podremos presionar el


pulsador de acceso al recinto. Actuaremos tantas veces en l como veces
queramos abrir y cerrar la habitacin. Una vez hecho esto se mostrar lo
siguiente en el display:

Introduciremos 4 cifras consecutivas. Una vez ledas, sin necesidad de


presionar ninguna otra tecla, el sistema mostrar el siguiente mensaje de
confirmacin:

Presionaremos entonces un 1 si queremos confirmar los datos introducidos o


un 0 si queremos, por haber habido un error durante el tecleo, volver a meter la
clave. Supongamos entonces que hemos introducido una clave no vlida. El
sistema mostrar lo siguiente a travs del LCD, saliendo al punto de lectura de
temperatura y llevando de nuevo al reposo al PIC hasta que el watchdog ladre
o se genere una interrupcin externa:

Presionando de nuevo el pulsador activaremos una peticin de acceso. Ahora


introduciremos una de las cuatro claves (una por cada usuario) que permiten la
entrada al recinto. Estas cuatro claves son: 1302, 2502, 0475 y 2009.

11

Tras confirmar la operacin se nos mostrar lo siguiente:

Seguidamente se proceder a, en este caso, la apertura del recinto,


producindose un grabado del acceso en memoria. Ello se especificar en el
LCD durante todo el tiempo de apertura, siendo este regulado a travs del
potencimetro marcado con el nmero 7 en el esquema hardware del apartado
Descripcin hardware. Cuando el valor de la resistencia es nulo, el tiempo
de apertura es de 10 segundos, mientras que es de 5 segundos si el valor es
mximo, en este caso, 1k. Podemos regular, por tanto, dicho tiempo dentro
de ese intervalo. Durante todo el proceso se activar el LED asociado al motor,
el cual indica su funcionamiento y, adems, se proceder al encendido de la luz
del recinto.

Podemos ahora, por ejemplo, consultar cmo se ha grabado el acceso en la


memoria externa EEPROM sin ms que volver a actuar sobre el pulsador de
12

entrada al recinto. En este caso introduciremos la clave 2305. Tras confirmar su


validez aparecer el siguiente mensaje mientras que ninguno de los
parmetros (como el de la luz del recinto) son modificados:

A continuacin se muestra una explicacin de lo que secuencialmente se ir


leyendo de la memoria y mostrando en el LCD. Si en el campo operacin se
muestra un 1, se habr realizado una apertura, mientras que si se muestra un
0, se habr completado un cierre:

Nosotros accedimos con el PIN 1302. Fue mostrado lo siguiente:

Una vez se haya completado la lectura de la memoria EEPROM, se mostrar a


travs del LCD el siguiente mensaje:

Sin ms que accionar otra vez el pulsador de acceso, se nos solicitar de


nuevo la clave para, en este caso, cerrar el recinto. Al igual que para la
apertura de la puerta, con el potencimetro controlaremos el tiempo de
operacin del motor. Si en este instante la fotoclula detecta el paso de algn
objeto, la puerta quedar bloqueada y se solicitar de nuevo un password para
completar una operacin de apertura. El pulsador que simula el efecto de la
fotoclula est numerado con la cifra 6 en el esquema hardware incluido al final
del apartado Descripcin hardware. En esta situacin, el LCD mostrar el
siguiente mensaje:

13

Problemas encontrados y soluciones aportadas.


El principal y, realmente, nico problema surge a raz de la
implementacin de la memoria EEPROM externa. Aun con una planificacin
organizada y programacin lgica no funcion a priori tal y como se esperaba,
necesitndose de varios cambios hasta conseguirse tal fin.
El problema asociado al que le he tenido que dar una solucin, bajo mi parecer,
bastante insatisfactoria, ha sido el siguiente: me percat de que el primer
registro de acceso al recinto lo haca correctamente y, al leerlo, as se
comprobaba. No obstante, al leer la memoria EEPROM una segunda vez, este
primer registro quedaba modificado como si un nuevo acceso hubiera
cambiado el contenido de la memoria. Realizando sucesivos registros de
acceso me percat de que seguan una secuencia muy peculiar: el primero de
ellos estaba completamente corrompido a excepcin de la hora, el segundo
slo mostraba correctamente el tipo de operacin y la fecha, el tercero
mostraba todo bien a excepcin de la hora y el cuarto se realizaba
correctamente. Este patrn se repeta, es decir, los registros cuarto, octavo,
doceavo y sucesivos se realizaban de forma completamente correcta, por lo
que aprovecho nicamente estas posiciones de memoria para el registro de los
accesos, lo que implica un desaprovechamiento de ms de tres cuartas partes
del dispositivo pero que, al menos, me permite cumplir la funcin de forma
correcta. Pasamos por tanto de poder realizar 341 registros de acceso a
nicamente 85.

14

Presupuesto.
A continuacin se incluye una tabla con una lista de componentes
necesarios, su precio, cantidad usada y sitio de compra. Se despreciaron de la
contribucin al presupuesto elementos como la placa del sistema o
herramientas para su implementacin. Tampoco se tienen en cuenta los
posibles gastos de envo asociados al hecho de tener que realizar ciertos
pedidos a tiendas fuera del entorno.

Elemento
Microcontrolador
Memoria
EEPROM
Sensor de
Temperatura
Reloj-Calendario
Pantalla LCD
Teclado
Telefnico
Resistencia

Rel
Potencimetro
Foco de Luz
Motor
Alarma
Interruptor/
Pulsador
Fotoclula
TOTAL

Marca y
Modelo
Microchip
PIC18F4520
ISSI 24C32A

Precio
Unidad
10.81

Sitio de
Compra
Farnell ES

Cantidad
x1

Precio
Total
10.81

0.47

Farnell UK

x1

0.47

Dallas DS18S20

5.07

Farnell UK

x1

5.07

NXP PCF8583
Hitachi LM016L*
EAO ECO12150

3.03
221.62
5.18

Farnell UK
Icelect
Farnell UK

x1
x1
x1

3.03
221.62
5.18

Pull-Up/Down y
clsicas

0.07
(Todo
modelo)
3.76 Reed
7.84 Cls.
1.31
28.40
41.91
32.61
0.67

Farnell UK

x11

0.77

Farnell ES

x3

19.44

Farnell ES
Farnell ES
Farnell ES
Farnell ES
Farnell ES

x1
x1
x1
x1
x2

1.31
28.40
41.91
32.61
1.34

16.38

Farnell ES

x1

16.38
388.34

Reed (1) y
clsicos (2)
Ajustable 1k
SLB 150W
AIRPAX
110V 3W
B3FS-1002
EMPC

*Nota: El modelo aparece como descatalogado o fue imposible localizarlo en otras tiendas de
componentes electrnicos, por lo que tuve que solicitar un presupuesto a Icelect, compaa que se dedica
a distribuir dispositivos de difcil localizacin o que, directamente, dejaron de fabricarse.

15

Planificacin.
Debido a que el proyecto no es demasiado complejo, resultara
contraproducente el dividir el trabajo en muchas etapas y entre un nmero,
para el caso, relativamente alto de personas.
Una primera etapa debera de consistir en dar una visin global del problema y
ofertar una primera solucin base. Una vez hecho esto, parte del equipo habra
de encargarse del diseo hardware, siendo este co-diseado simultneamente
con un equipo encargado de la parte software a fin de permitir la existencia de
feedback en tiempo real que permita la mayor agilidad posible en la realizacin
del proyecto.
Finalmente se procede a simular el diseo y posteriormente, una vez
satisfechas todas las fases, a emular un prototipo a fin de realizar correcciones
o mejoras o generar el sistema final.

El tiempo inicial previsto para el desarrollo del trabajo fue de una


semana. Este tiempo no fue ajustado en funcin del proyecto en s, sino en
funcin de la disponibilidad y organizacin personal. No obstante, se
necesitaron finalmente 10 das, con una media de aproximadamente 4 horas
diarias. El retraso en mayor medida fue debido a la generacin del presente
guin y a la correccin de detalles.

16

Potrebbero piacerti anche