Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA
MECÁNICA Y ELÉCTRICA
UNIDAD CULHUACAN
“DISEÑO E IMPLEMENTACION DEL CONTROLADOR PARA
LA OPERACIÓN DE UN ASCENSOR, EMPLEANDO VHDL
EN UN FPGA”
TESIS COLECTIVA QUE
PARA OBTENER EL TITULO DE:
INGENIERO EN COMUNICACIONES Y ELECTRONICA
PRESENTAN:
Cruz Ruiz Roberto Carlos
León Martínez Erika Liliana
Rodríguez Reyes Carlos Hernán
Asesores:
Ing. Edgar Maya Pérez
M. en C. Lázaro Eduardo Castillo Barrera
AGRADECIMIENTOS
En primer lugar quiero agradecer a mis padres, por darme su apoyo incondicional: Guadalupe y Ricardo, gracias por todo su esfuerzo, por enseñarme que la vida no es fácil y que cada día se compone de algo nuevo por aprender. A mis abuelos Agustina y Benjamín, quienes me han enseñado que para todo hay una solución, excepto para la muerte. A las familias López Martínez, León Sánchez, Arango León que de manera directa o indirecta contribuyeron durante todo este tiempo a que esta meta se alcanzara. Gracias por ser parte de mi GRAN familia. Gracias Carlos Rodríguez por tu espera, tu paciencia y tu enorme contribución en la creación de este trabajo. A todos los profesores de la hermosa ESIME Culhuacán, de quienes no sólo adquirí conocimientos ingenieriles sino aprendizaje para toda la vida, muchas gracias. Roberto, gracias por mostrarme que no hay obstáculo que juntos no podamos vencer, que las carencias y la distancia pierden su significado cuando existe el amor. Circe, eres la última sin embargo, no la menos importante. Gracias por llegar a mi vida, por enseñarme a ser responsable, por desarrollar la habilidad de hacer muchas cosas a la vez, por todos tu esfuerzos, por aquellas noches en las que estudiábamos juntas. Gracias hija mía, por el sólo hecho de existir. Eres simplemente la razón de mi existencia y te amo con toda mi alma. Podría pasar agradeciendo sin embargo, todas y cada una de las personas que vivieron conmigo el desarrollo de este logro sabe cuánto empeño puse para alcanzarlo. Por lo que sólo me resta decir, que en verdad deseo poner “La Técnica al servicio de la Patria” por el orgullo de ser Politécnico. Erika León
AGRADECIMIENTOS
Estos últimos años me han ayudado a comprender que uno como persona puede trabajar en un proyecto y sacarlo adelante, puede culminar una obra maestra con solo dos manos, puede tomar la decisión más importante de su vida y salir triunfante, puede cruzar el país o mundo completamente solo, pero sin embargo, siempre están esas personas que te apoyan, que te brindan la mano, que te aconsejan, que te ayudan, que brindan una mano cuando te ven caído. A todas esas personas que durante la carrera me extendieron la mano, les hago la dedicatoria de este proyecto, el cual culmina con una etapa importante de mi vida, me gustaría empezar por agradecer a aquellas dos personas que me vieron nacer y crecer, mis padres, Cecilia Ruiz y Carlos Cruz, los cuales siempre me dieron su apoyo y amor incondicional, me aconsejaron y me hicieron un hombre de bien, y a pesar de mis errores, ellos siempre están conmigo, al igual que todos mis hermanos, que siempre fueron un ejemplo a seguir, y en especial mi hermana Elizabeth que me demostró que pase lo que pase siempre hay que seguir adelante. A mi ahora esposa Erika León, que día a día me daba aliento para seguir adelante y no rendirme, y que como dicen, está en las buenas y en las malas conmigo, y me dio el regalo más grande que un hombre puede tener, la dicha de ser padre, padre de mi hija Circe Naomi, la cual era y sigue siendo el combustible que día y noche me hace triunfar y salir adelante, y vencer todos los retos que me vienen por delante. A todos esos amigos que aunque ya no tenemos contacto siguen estando ahí presentes, en especial a mi amigo Carlos Rodríguez, por el apoyo incondicional en este proyecto. A todos aquellos profesores que me demostraron que la ingeniería es lo más bello que uno puede conocer en la vida y me engendraron el siempre querer ir mas adelante, así como aquellas personas que siempre me ofrecieron un cobijo en esas noches largas de tareas interminables, a todos aquellos, gracias y me gustaría decir, esta va por ustedes, Huelum, Huelum, Gloria!!! Roberto Cruz
AGRADECIMIENTOS
A mis padres:
Por su ayuda y dedicación ofrecida en el transcurso de mi vida. A mis hermanas:
Por su apoyo moral. A Israel: Por brindarme su ayuda y amistad incondicional. Al Prof. Edgar Maya Pérez: Por su apoyo, consejos, tiempo y conocimientos brindados a este proyecto. Al Prof. Lázaro Eduardo Castillo Barrera: Por su apoyo para que este proyecto se hiciera posible. A Roberto y Erika: Por su apoyo y confianza en la realización de este proyecto. A mis maestros, compañeros y amigos que de alguna manera colaboraron en mi formación. Al Instituto Politécnico Nacional por ser mí segunda casa, y por tener el orgullo de ser politécnico.
Carlos Rodríguez
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
1
Contenido
Introducción
Planteamiento del problema
Objetivos Generales
Objetivo Particulares
Justificación
Capítulo 1: Estado del Arte
Antecedentes
1.1 Entorno de desarrollo sobre FPGA para aplicaciones
domóticas basadas en tecnología X10
1.2 Desarrollo de un dispositivo digital para la medición de
variables ambientales, utilizando un arreglo de compuertas
programable en campo
1.3 Implementación en FPGA de Máquinas de Estado en VHDL
Capítulo 2: Marco Teórico
2.1 La maqueta
2.1.1 Los ascensores
2.2 Programación en el lenguaje VHDL
2.2.1 Declaración de entidad
2.2.2 Declaración de arquitectura
2.3. Domótica
6
6
8
8
9
13
14
15
16
17
19
20
23
24
25
26
27
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
2
2.4. Sensores para medición de variables
2.4.1 Sensor Sharp GP”Y0A21YK
2.4.2 Sensor LM35
2.5 Los FPGA
2.5.1 Transistores
2.5.2 Circuitos integrados
2.5.3 Microprocesadores
2.5.4 FPGA
Capítulo 3: Diseño e Implementación
3.1 Diagrama a bloques
3.2 Diseño del algoritmo de la secuencia de control para el
controlador del ascensor
3.3 Diseño de la máquina de estados para el controlador
utilizando el lenguaje VHDL
3.4 Implementación en la tarjeta SPARTAN 3E
3.4.1 Entradas y salidas
3.4.2 Programación de la tarjeta SPARTAN 3E
3.5 Diseño e implementación de la etapa de potencia
3.5.1. Cierre y apertura de puertas
3.5.2. Ventilación
3.5.3. Iluminación crepuscular
3.5.4. Sensores Sharp (acoplamiento de señal)
3.5.5. Sensores de temperatura
3.5.6. Indicadores de piso
3.5.7. Botonera
29
29
31
32
32
33
33
34
35
36
37
42
45
45
49
50
51
54
56
57
58
62
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
3
Capitulo 4: Resultados y pruebas
4.1 Simulación de la secuencia de control del ascensor
4.2 Simulación de los sensores
Conclusiones
Recomendaciones
Bibliografía
Referencias Electrónicas
Glosario
Acrónimos
Abreviaturas
Anexos
Listado de figuras
Figura 2.1 Ascensor del proyecto
Figura 2.2 Tablero externo
Figura 2.3 Botonera de control
Figura 2.4 Elementos que integran la domótica
Figura 2.5 Sensores Sharp GP2Y0A21K
Figura 2.6 Funcionamiento del sensor Sharp
Figura 2.7 Sensor LM35
Figura 2.8 Tecnologías relativas al FPGA
Figura 3.1 Diagrama a bloques
Figura 3.2 Diagrama de flujo de la secuencia de arranque
Figura 3.3 Secuencia de transporte del ascensor
Figura 3.4 máquina de estados del algoritmo de control
Figura 3.5 Los switches de cada piso
Figura 3.6 Conector Hirose
69
70
81
83
84
85
86
88
90
91
92
20
22
22
28
29
29
31
32
36
37
40
43
45
47
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
4
Figura 3.7 Software Xilinx Pace
Figura 3.8 Pantalla de proceso satisfactorio de programación
49
Figura 3.9 Transistor sin protección
Figura 3.10 Transistor con protección (diodo free-wheeling)
Figura 3.11 Puente “H” para motores
Figura 3.12 Puente “H” para ventiladores
Figura 3.13 Circuito de iluminación dentro de las cabinas
Figura 3.14 Circuito para los sensores de presencia
Figura 3.15 Circuito para los amplificadores unipolares
Figura 3.16 Circuito amplificador para los sensores de temperatura
Figura 3.17 Conexión en paralelo de los display
Figura 3.18 Circuito del tablero de control
Figura 3.19 Conexión de los interruptores en el tablero de control
Figura 3.20 Biblioteca de componentes electrónicos
Figura 3.21 Arrastre de componentes
Figura 3.22 Conexión de los componentes
Figura 3.23 Cambio de valores
Figura 3.24 Barra de herramientas
Figura 3.25 Ventana de configuración
Figura 3.26 Vistas del circuito
Figura 3.27 Circuitos del desarrollo
Figura 4.1 Simulación de entradas de sensores de la cabina a la tarjeta
SPARTAN 3E
Figura 4.2 Leds indicadores de la tarjeta SPARTAN 3E
Figura 4.3 Switches que simulan el llamado desde los pisos
Figura 4.4 Fuente Test Bench Wave Form
Figura 4.5 Ventana del simulador Xilinx ISE
53
53
54
55
56
57
59
60
62
63
63
64
65
65
65
66
67
67
68
71
71
72
73
74
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
5
Figura 4.6 Simulación de arranque
Figura 4.7 Simulación de paro
Figura 4.8 Iluminación y apertura
75
76
Figura 4.9 Llamada al ascensor
Figura 4.10 Obstáculos en la puerta
Figura 4.11 Cierre completo de puertas y avance
Listado de tablas
Tabla 1.1 FPGA disponibles en el mercado
Tabla 1.2 Costo total del proyecto
Tabla 2.1 Tipos de sensores Sharp para la detección de obstáculos
Tabla 3.1 Localidades de cada botón
Tabla 3.2 Asignación de pines en la SPARTAN 3E
Tabla 3.3 Combinación lógica para motores
Tabla 3.4 Estados lógicos del ventilador
Tabla 3.5 Despliegue de los display
Tabla 4.1 Voltajes vs distancia del sensor Sharp GP2YA21K, sin acoplamiento
Tabla 4.2 Sensor Sharp GP2YA21K, con acoplamiento
78
79
80
11
12
30
46
48
51
55
61
81
82
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
6
Introducción
Actualmente los avances científicos y tecnológicos han profundizado y transformado,
lo que adquiere dimensiones distintas en función de las interrelaciones emergentes de
la globalización económica y política. Particularmente nuestro país al igual que la gran
mayoría de los de América Latina luchan por posicionarse ante dichos avances a pesar
de las circunstancias en las que históricamente se intenta desarrollarse, aunadas al
posicionamiento en que nos ubica la globalización mundial.
Particularmente en el mundo del hoy, en cuestiones de tecnología, los circuitos
integrados son omnipresentes en gran cantidad de componentes electrónicos utilizados
en una diversidad de espacios desde el hogar hasta la industria.
Una de las alternativas que la tecnología de circuitos nos ofrece, son los circuitos tipo
Field Programmable Gate Array (FPGA), los cuales están al alcance de países con un
desarrollo tecnológico medio, como México.
El presente trabajo tiene como fin encontrar soluciones tecnológicas económicas,
poco intrusivas y de fácil manejo para el usuario final en el mundo de la domótica.
Actualmente el uso de sistemas empotrados sobre FPGA, llegará a ser, al cumplir con
las premisas que le son sustantivas, una de las vías de desarrollo más importantes y a
tener en cuenta en los próximos años en ese ámbito.
Planteamiento del problema
Hoy en día, en las grandes ciudades la necesidad de aprovechamiento de los
espacios físicos que son utilizados por edificios de 4 o más niveles, han llevado a la
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
7
implementación de ascensores que a través del tiempo, tecnológicamente cada vez son
más sofisticados en cuanto a velocidad, seguridad y confort para pasajeros, permitiendo
que el tráfico de personas sea más rápido y cómodo.
Actualmente existen diversos tipos de ascensores para pasajeros que son utilizados
según las necesidades de los usuarios, al mismo tiempo que esta diversidad, aumenta
la tecnología con que cuentan, la cual es cada vez más innovadora.
En referencia a las tecnologías utilizadas para el control de puesta en marcha de la
cabina del ascensor, así como apertura y cierre de puertas que actualmente trabajan de
manera análoga, la presente investigación ofrece la posibilidad de trabajar sistemas
digitales, que de alguna forma facilitan el control de dichas variables, a través del
acoplamiento adecuado de señales aunado a una etapa de potencia, que permiten
manejar actuadores únicamente utilizando 1’s y 0’s lógicos, evitando así la complejidad
que conlleva el manejo de sistemas analógicos.
De igual forma, el ahorro de la energía en favor del cuidado del medio ambiente es
de vital importancia, por ello, además haciendo uso de la Domótica se controlan
variables como iluminación y temperatura, para la reducción de los tiempos de
utilización de energía, lo que permitirá que la luz dentro de la cabina se vaya regulando
con respecto la luz durante el transcurso del día, además de que la temperatura será
regulada de acuerdo a las condiciones requeridas por el medio ambiente.
De acuerdo con lo anterior, la presente investigación diseña la innovación en este
tipo de procesos de secuencias de control dentro de un ascensor de pasajeros, que se
logrará con la utilización de un FPGA contenido en una tarjeta SPARTAN 3E y su
programación en el lenguaje VHDL para el sistema digital; así como las variables
temperatura e iluminación del campo de la domótica por medio de sensores.
Los objetivos diseñados para la presente investigación son los siguientes:
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
8
Objetivos generales
Desarrollar la secuencia para el controlador de un ascensor electromecánico,
trabajar los sensores de control de las variables temperatura e iluminación
utilizando el lenguaje VHDL en un FPGA, por medio de una tarjeta de
programación SPARTAN 3.
Objetivos Particulares
Construir la maqueta de un ascensor la cual permita la apreciación de la
secuencia de control.
Diseñar el algoritmo de la secuencia de control necesario para el controlador del
ascensor.
Analizar las funciones de la tarjeta SPARTAN 3, para determinar cuáles
funciones se utilizarán.
Crear el sistema digital del controlador utilizando el lenguaje VHDL en un FPGA.
Controlar las dos variables temperatura e iluminación también utilizando el
lenguaje VHDL en un FPGA, por medio de una tarjeta de programación
SPARTAN 3.
Evaluar los sensores elegidos para la medición de las variables anteriores.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
9
Diseñar e implementar la etapa de potencia para enlazar el funcionamiento de la
tarjeta con la parte de motores y sensores del proyecto.
De acuerdo a lo planteado cabe hacerse las siguientes preguntas:
Desarrollar la secuencia de control de un ascensor electromecánico, ¿es posible
utilizando una tarjeta SPARTAN 3?
¿Utilizando la tarjeta SPARTAN 3 es posible controlar las variables de la
domótica como temperatura e iluminación?
Justificación
El presente problema de investigación, aborda lo referente a la secuencia de control
que ejecutará las maniobras de un ascensor para el adecuado transporte de usuarios,
además de controlar dos variables de la domótica, incluidas en la secuencia de control
anterior. A fin de optimizar el ahorro de energía.
Se sabe que para el control de las operaciones planeadas, es necesario abordar el
diseño e implementación de un sistema electrónico, para el cual existen diversas
posibilidades que lo resuelvan, para este caso, se resolverá con el hardware FPGA y el
lenguaje VHDL, con la mirada de comenzar a trazar un camino diferente en el control
de ascensores.
Se tiene conciencia que este mismo trabajo se pudo haber realizado con un PIC o un
microprocesador, sin embargo la inquietud radicó en el hecho de usar una tecnología
diferente para el mismo fin. Puesto que en un circuito electrónico existen múltiples
procesos concurrentes, transistores y compuertas que emiten sus señales de forma
simultánea.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
10
La grabación de FPGA es, en muchos casos, similar a la de PROMS y EPROMS, lo
que para la realización de este proyecto es una ventaja, pues esos dispositivos se han
manejado a lo largo de toda la carrera, dando como resultado el conocimiento del
manejo sobre ellos. El interés de la industria por los FPGA es creciente, y cada vez son
más los diseñadores que las usan.
Un prototipo de un circuito sobre FPGA puede obtenerse en horas y por muy pocos
miles de pesos (todo el sistema de desarrollo y de quemado) y el resultado es un ASIC
realizado en casa. Frente a esto un fabricante de ASIC nos exigirá millones de pesos
por una cantidad mínima de cincuenta o cien ASIC, y nos tardará incluso semanas en
devolver los resultados.
Actualmente el mercado ofrece gran variedad de FPGA que abarcan desde modelos
baratos con pocas puertas y encapsulados convencionales, hasta modelos con más de
cincuenta mil puertas y certificados para sistemas militares y para el espacio. Sirva
como ejemplo decir que el vehículo Mars Pathfinder de la NASA, que actualmente
recorre la superficie de Marte lleva varios FPGAs como parte de su cerebro electrónico.
Estos FPGA están grabados a partir de descripciones en VHDL o Verilog y pueden ser
realizadas en su propia casa.
Viabilidad
Los FPGA disponibles en el mercado de acuerdo a su clasificación comercial,
basada en su forma de programación, son los siguientes: Static RAM, Antifusibles y (E)
EPROM tabla 1.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
11
Tabla 1.1. FPGA disponibles en el mercado
Costos del proyecto.
Para la realización de este proyecto además de la tarjeta SPARTAN 3E se
requirió de un puerto de expansión para la misma; una forma de hacer
comprobable la secuencia de control que se logró con una maqueta a escala;
requirió de una etapa de potencia para que se pudieran mover los motores y
también los sensores encargados de la detección de las variables. Lo anterior
aunado al tiempo que los tres autores del presente trabajo invirtieron, generaron
una serie de gastos que en conjunto arrojan el costo total del proyecto, mismos
que son presentados en la tabla 1.2 que se muestra a continuación.
Tecnología de programación Volátil Reprog. Chip área R (ohm)
C (ff)
Static RAM cells SI In circuits Large 1-2K 10-20 PLICE antifuse NO NO S:antifuse
L: prog. Trans. 300-500 3-5
Via link antifuse NO NO S:antifuse L: prog. Trans.
50-80 1.3
EPROM NO Out of circuit Small 2-4K 10-20 EEPROM NO In circuit 2x EPROM 2-4K 10-20
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
12
Componente Dólares Pesos
Maqueta a escala de un ascensor SelectaTM OTIS. $ 700
*Tarjeta SPARTAN 3E $300 $ 3360
*Puerto de expansión para la tarjeta $ 10 $ 112
Etapa de potencia $ 300
Sensores de presencia y temperatura $ 1420
Hora ingeniero $ 600
Considerando que cada ingeniero trabajó 3 horas al día por
tres días a la semana durante 6 meses
$129,600
Total (por tres ingenieros) $388,800
Costo total del proyecto $394,692
Tabla 1.2. Costo total del proyecto
* Para el viernes 3 de octubre de 2008 a las 13:30 h tipo de cambio a la venta $11.20
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
13
Capítulo 1 Estado del Arte
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
14
El presente trabajo toma como bases algunos otros desarrollos realizados con
anterioridad, que sirven como precedente para los objetivos de esta investigación.
Particularmente se toman como referencia dos proyectos españoles (Cruz, D. M. D.
etal.; Olarte, C. J.C., 2007, Solarte, M. G. R, 2007, Jaramillo, R. J.C., 2007) y uno
mexicano (Porta, G. M. A. etal., 2007). El común denominador de dichos proyectos es la
aplicación del FPGA sumado a su programación en el lenguaje VHDL, en los cuales se
controlan algunas de las variables de domótica con protocolos para redes inalámbricas,
temperatura digitalmente y máquinas de estado.
Este trabajo se propone controlar las siguientes variables: temperatura, iluminación,
apertura y cierre de puertas, puesta en marcha de una cabina, el tablero o botonera,
presencia de persona (s) dentro de la cabina. De manera que su fundamentación
teórica es aportada en parte, por los desarrollos anteriormente descritos.
Antecedentes
El ascensor tal como lo conocemos hoy, tuvo sus comienzos en el año 1800 y eran
propulsados por vapor dentro de cilindros que elevaban la cabina. Para bajar
simplemente se abría una válvula y por acción de la gravedad la cabina bajaba.
Recién a comienzos de 1900 aparecen los cables de acero en la tracción de un
ascensor, en mecanismos con poleas de desvío y contrapeso.
En 1853, Elisha Graves Otis participa de una exposición en el New York Crystal
Palace mostrando un ascensor con "freno de emergencia" que evitaba la caída de la
cabina aún luego de romperse los amarres que la mantenían en posición, marcando un
hito en la historia del ascensor. En 1857, el primer ascensor de pasajeros Otis entró en
operación en un almacén de la ciudad de Nueva York y diez años más tarde los hijos
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
15
de Elisha fundan Otis Brothers and Company en Yonkers, Nueva York, para comenzar
la producción en masa de ascensores. Varios otros modelos de ascensores aparecen
en escena: a tornillo, hidráulicos, etc.
Recién en 1887 se incorpora el motor eléctrico en un ascensor cuando el inventor
alemán Werner von Siemens coloca un motor eléctrico en la parte inferior de una cabina
de ascensor.
A partir de allí la tecnología de motores y control de ascensores se desarrolla
rápidamente. En 1889 hace su aparición el ascensor con motor eléctrico y reductor,
haciendo posible el desarrollo de edificios más altos al poder transportar pasajeros a
más altura.
En 1903 el diseño evoluciona hacia el ascensor sin reductor y motor de corriente
continua acompañando la construcción de edificios de más de 100 pisos de altura. Los
controles de los ascensores comienzan a hacerse más complejos permitiendo hacer los
viajes más confortables al agregar velocidades intermedias de nivelación y la
interconexión de varios ascensores en grupo.
1.1. Entorno de desarrollo sobre FPGA para aplicaciones domóticas basadas en
tecnología X10
Para la observación del sistema digital operando sobre los actuadores domóticos, se
tomó como base a Cruz, D. M. D. etal, quien afirma que el sistema lo constituyen dos
tipos de elementos: los componentes hardware que conforman el circuito programado
en el FPGA, y la aplicación software que es ejecutada en el hardware y es almacenada
en memoria.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
16
Es importante hacer notar que este entorno de desarrollo sobre FPGA para
aplicaciones domóticas, contiene el protocolo de comunicaciones X10 que permite
controlar dispositivos de manera remota haciendo uso de instalaciones eléctricas y de
los módulos receptores a los que están conectados.
Para el controlador del ascensor un protocolo de este tipo no es necesario, sin
embargo, la contribución de aquella tecnología radica en la necesidad de crear una
comunicación entre tarjeta y actuadores.
De manera similar se encontró que las señales de control del protocolo X10, se
basan en la transmisión de ráfagas de pulsos de 120 KHz. Las transmisiones se
sincronizan con el paso por el cero de la corriente alterna. Un 1 binario se representa
por un pulso de 120 KHz, durante 1 milisegundo mientras que un 0 binario se
representa por la ausencia de ese pulso de 120 KHz, lo que notablemente sirvió para el
sistema digital del presente trabajo ya que se comporta de la misma forma, manejo de
1’s y 0`s lógicos.
1.2. Desarrollo de un dispositivo digital para la medición de variables ambientales utilizando un arreglo de compuertas programable en campo
Este desarrollo de Olarte, C. J.C., 2007, específicamente se enfoca en la temperatura
en el rango +2°C a +150°C utilizando el sensor de LM35, cuya salida análoga es
digitalizada por medio del conversor análogo-digital ADC0804 y procesada
posteriormente por el FPGA.
Para el controlador del ascensor no se necesita el conversor debido a que no es de
interés desplegar el valor analógico, ni la utilización de más bits para la precisión de la
temperatura, sino trabajar con un acoplamiento que maneje sólo un bit por señal para
que el sistema digital active los actuadores correspondientes.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
17
La etapa de lógica programable fue implementada, en un FPGA XC3S200, la cual
hace parte de un módulo SPARTAN-3. Este dispositivo recibe la información de
temperatura proveniente del ADC0804 a través de 8 líneas de entrada llamadas
temperatura y tiene además una entrada para la señal de reloj clk y otra entrada
asíncrona reset para reiniciar el diseño en cualquier momento.
Una recomendación relevante de los autores fue resolver cualquier diseño en VHDL
utilizando un enfoque descendente (top-down design), es decir, empezando con la
descripción global del dispositivo (entidad) y luego dividirlo en dispositivos más
pequeños que luego serán interconectados para realizar la tarea deseada. Lo anterior
es con el fin de poder detectar posibles fallas más fácilmente y hacer el proceso de
desarrollo más rápido diseñando código reutilizable.
1.3. Implementación en FPGA de Máquinas de Estados con VHDL
En el diseño de la máquina de estados de acuerdo con Porta, G. M. A. etal., 2007 se
empleó el asistente para elaborar diagramas de estado de Active HDL 5.1, el cual da la
opción de generar automáticamente el código en VHDL correspondiente.
Antes de realizar la síntesis, la implementación del diseño y la generación del archivo
de programa, debe generarse un archivo *.ucf que contiene las constantes de usuario,
en el cual se asignan las terminales del Spartan III a las entradas y salidas
correspondientes al diseño elaborado, en la opción Asign Package Pins, la cual genera
automáticamente el archivo *.ucf, en caso de que aún no haya sido creado por el
usuario.
Se presentó el procedimiento de diseño y proceso de síntesis de máquinas de
estados tipo Moore en VHDL mediante un ejemplo sencillo, con la finalidad de mostrar
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
18
de manera didáctica e incentivar el uso de esta tecnología, recalcando que es posible
realizar diseños más complejos.
Todo lo anterior sirve para el procesamiento digital con orientación a control, en
donde se pueden implementar diversas estructuras de controladores digitales; así como
en el diseño de controladores inteligentes en donde se pueden integrar tecnologías de
vanguardia.
.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
19
Capítulo 2. Marco Teórico
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
20
2.1. La maqueta
El diseño de esta maqueta está basado en un ascensor OTIS 2000E en escala 1:10,
que es utilizado como herramienta de apoyo para comprobar la funcionalidad de la
secuencia de control diseñada en este proyecto
El tablero fue extraído de la maqueta por comodidad y para apreciar mejor la
botonera y sus componentes.
De acuerdo a la escala bajo la que se construyó, para el presente caso, el alto total
de la maqueta es de 2 m de largo, con un ancho de 1m; cada piso mide 50cm de alto. A
continuación se presenta un diagrama básico del diseño de la maqueta (Figura 2.1)
Figura 2.1. Diagrama de maqueta de ascensor del proyecto
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
21
Para el ascensor, se cuenta con el cubo que servirá a los cuatro niveles, una cabina,
con un cuarto de máquinas en la parte superior.
Es necesario utilizar algunos elementos eléctricos dentro de la maqueta, mismos que
simulan los mecanismos de temperatura, iluminación, accionamiento de puertas, del
desplazamiento de la cabina.
Estos elementos son:
a. 1disipadores de calor, que simula el ventilador que se encuentra colocado en la
cabina del ascensor.
b. 4 leds ultra brillantes, que sirven para la iluminación.
c. 1 sensor para detectar presencia dentro de la cabina.
d. 1 sensores para detectar presencia en la puerta de la cabina.
e. 1sensor LM35 para mantener el control de la temperatura, colocado en cada
cabina.
f. 4 red switch, para detectar el límite superior e inferior del ascensor.
g. 4 displays de siete segmentos, dos por cada piso de la maqueta.
h. 1 Liquid Cristal Display (LCD), para la cabina.
En la maqueta se encuentran colocados los displays y la botonera de cada piso,
mientras que los LCD están colocados con la botonera que en los ascensores reales se
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
22
ubican dentro de la cabina, sin embargo para este caso se colocan externamente para
una mejor apreciación de las operaciones que se ejecutan con cada cabina.
La figura 2.2, muestra el tablero externo para cada piso dentro de la maqueta.
Figura 2.2. Tablero externo
Donde el display muestra el piso en el cual se localiza el ascensor en el momento en
el que el usuario quiere hacer uso de él y la botonera es para mandar llamar al
ascensor.
La siguiente botonera –que se encuentra en el interior de la cabina en el mudo real
de la figura 2.3 representa los pisos, botones de cierre y apertura de puertas así como
el botón de emergencia.
Figura 2.3. Botonera de control
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
23
2.1.1. Los ascensores.
Los ascensores desde su aparición con base en Ledo, J. M. (1967), han facilitado la
vida del ser humano en lo que al transporte dentro de los edificios se refiere. Con el
paso del tiempo han modificado su estructura, pues hoy en día es posible notar la
sofisticación de estos, ubicados en diversas construcciones alrededor de todo el
mundo, contrastando con los dispositivos respecto a lo que en un inicio estos contenían
arquitectónica, mecánica y eléctricamente. Por lo anterior es importante realizar una
descripción muy breve del desarrollo de los ascensores que permiten el análisis y la
comparación para la proyección hacia el futuro.
Actualmente de acuerdo con Blanco, P. A. I. (2000), gracias a las correas de
tracción, huecos estándar admiten cabinas hasta 47 cm más anchas y por consiguiente
hasta cinco pasajeros más en huecos convencionales, el cuidado con el medio
ambiente, con un uso racional de la energía, se contribuye a disminuir los costes de
funcionamiento.
Respecto a la perspectiva futura de los ascensores se dice que habrán llegado al
límite del ahorro de consumo con el uso de imanes permanentes en los motores y los
variadores de frecuencia.
Las redes de ascensores serán accesibles vía Internet, permitiendo a las empresas
de mantenimiento realizar rutinariamente controles en los ascensores instalados en
cualquier lugar del mundo al igual que hoy navegamos por distintas páginas de Internet.
Los cables de acero serán reemplazados por materiales sintéticos de mayor resistencia
y durabilidad. Los ascensores con reductor serán historia. Las cabinas podrán
reconocer el idioma para aceptar comandos vocales eliminando la necesidad de apretar
botones para colocar llamadas.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
24
2.2 Programación en el lenguaje VHDL
Las siglas VHDL, provienen de VHSIC (Very High Speed Integrated Circuit) Hardware
Description Language, López, P. S. (2002). VHDL es un lenguaje de descripción y
modelado diseñado para representar (en una forma que los humanos y las máquinas
puedan leer y entender) la funcionalidad y la organización de sistemas hardware
digitales, placas de circuitos, y componentes.
VHDL es un lenguaje con una sintaxis amplia y flexible, Maxinez, D. (2002), que
permite el modelado estructural, en flujo de datos y de comportamiento hardware. VHDL
permite el modelado preciso, en distintos estilos, del comportamiento de un sistema
digital conocido y el desarrollo de modelos de simulación.
Existen dos formas de describir un circuito, Pardo, C. F. (1997):
- Estructura: VHDL puede ser usado como un lenguaje de Netlist normal y corriente
donde se especifican por un lado los componentes del sistema y por otro sus
interconexiones.
- Comportamiento: VHDL también se puede utilizar para la descripción comportamental
o funcional de un circuito. Esto es lo que lo distingue de un lenguaje de Netlist. Sin
necesidad de conocer la estructura interna de un circuito es posible describirlo
explicando su funcionalidad. Esto es especialmente útil en simulación ya que permite
simular un sistema sin conocer su estructura interna, pero este tipo de descripción se
está volviendo cada día más importante porque las actuales herramientas de síntesis
permiten la creación automática de circuitos a partir de una descripción de su
funcionamiento.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
25
Veremos a continuación que en la declaración de estas estructuras se pueden incluir
otros elementos, Ferrero, M. F. J. (1999), aunque en la mayoría de los casos tanto la
entidad como la estructura se declaran de las formas vistas hasta el momento.
2.2.1. Declaración de entidad
La entidad es la parte del programa que define el módulo. Es decir, define las
entradas y salidas del circuito. Además, la entidad es la estructura que permite en
VHDL realizar diseños jerárquicos, ya que un diseño jerárquico es generalmente una
colección de módulos interconectados entre sí. En VHDL estos módulos se definen
mediante la palabra clave ENTITY:
ENTITY nombre IS GENERIC (lista de propiedades); PORT (lista de puertos);
declaraciones
BEGIN sentencias
END nombre;
Las partes GENERIC y PORT son las más usadas en la entidad. La instrucción
GENERIC sirve para definir y declarar propiedades o constantes del módulo que está
siendo declarado en la entidad. Las constantes declaradas aquí tienen el mismo
significado que las constantes declaradas como parámetros en las funciones y
procedimientos que se verán más adelante. Es decir, a la entidad se le pueden pasar
como parámetros las constantes definidas en GENERIC, si se pasan valores entonces
la constante tomará el valor que se le pasa, y si no se le pasa ningún valor, la constante
tomará el valor que se asigne en GENERIC.
Con la palabra clave PORT, también opcional como el resto de partes de la entidad,
se definen las entradas y salidas del módulo que está siendo definido. Esta forma de
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
26
declarar estas entradas y salidas ya se ha visto, y simplemente consiste en un nombre,
seguido por el tipo de conexión, y seguido por el tipo de datos de la línea.
Habíamos visto dos tipos de conexiones que eran IN, para indicar entrada, y OUT
para indicar salida.
La diferencia entre IN y OUT es importante: las señales de entrada se pueden leer
pero no pueden asignárseles ningún valor, es decir, no se puede cambiar su valor en el
programa, y vienen a ser como constantes. Las señales de salida pueden cambiar y se
les pueden asignar valores, pero no pueden leerse, es decir, no pueden ser usadas
como argumentos en la asignación de cualquier elemento del VHDL.
2.2.2 Declaración de arquitectura
En la arquitectura es donde se define el funcionamiento del módulo definido en la
entidad. Una arquitectura siempre está referida a una entidad concreta por lo que no
tiene sentido hacer declaraciones de arquitectura sin especificar la entidad. Una misma
entidad puede tener diferentes arquitecturas, es en el momento de la simulación o la
síntesis cuando se especifica que arquitectura concreta se quiere simular o sintetizar.
La declaración de la arquitectura se realiza mediante la palabra clave
ARCHITECTURE y su sintaxis completa es:
ARCHITECTURE nombre OF la_entidad IS declaraciones
BEGIN
Instrucciones
END nombre;
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
27
Antes de definir la funcionalidad en el bloque BEGIN...END, hay una parte declarativa
donde se definen los subprogramas (funciones, procedimientos, etc.), declaraciones de
tipo, declaraciones de constantes, declaraciones de señales, declaraciones de alias,
declaraciones de componentes, etc. Es importante destacar que las señales sólo
pueden ser declaradas dentro de la parte declarativa de una arquitectura.
A continuación vienen, después del BEGIN, todas las instrucciones que definen el
comportamiento, estructura y funcionalidad del circuito. Hay que destacar que dentro de
la arquitectura las instrucciones son de dos tipos, o concurrentes, o de instanciación
que es en realidad también una construcción concurrente. En el caso de definir
estructura las instrucciones serán de instanciación, es decir, de colocación de
componentes y las conexiones entre ellos.
El lenguaje VHDL es una herramienta más para programar, Perry, D. (2002), y su
orientación está dirigida hacia los elementos Application-Specific Integrated Circuit
(ASIC) como los FPGA, los Complex Programmable Logic Device (CPLD), entre otros.
Sin embargo, no se debe perder de vista que su desarrollo a lo largo del tiempo ha
permitido que de ser un lenguaje utilizado en un principio para fines militares, hoy en
día esté abierto a todas las personas que se interesen por conocerlo.
2.3. Domótica
La palabra domótica deriva de la unión de domus (casa) y de Informática, Sáez, D., y
hace referencia a la incorporación de la vivienda a un conjunto de tecnologías
informáticas y de comunicaciones que permiten gestionar y automatizar desde un
mismo sistema las diferentes instalaciones de uso cotidiano en una vivienda,
proporcionando una mejor calidad de vida de los usuarios de la misma y una mejor
conservación y cuidado del edificio.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
28
Cada vez son más los aparatos eléctricos que se incorporan a la vivienda, de forma
que el consumo de energía puede llegar a ser importante. Mediante un sistema
domótico es posible implementar mecanismos que regulen y optimicen dicho consumo,
como el control de la climatización y regulación de la temperatura por zonas; la
utilización de electrodomésticos en tarifa nocturna; la iluminación por detección de
presencia; el riego controlado por sensor meteorológico; la desconexión automática de
dispositivos, etc.
Lo anterior se puede resumir de manera muy sencilla en la Figura 2.4, donde se
muestra la cantidad de variables que pueden ser manipuladas a través de la domótica.
Figura 2.4. Elementos que integran a la Domótica
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
29
2.4. Sensores para medición de variables 2.4.1. Sensor Sharp GP2Y0A21YK (Figura 2.5)
Figura 2.5. Sensor Sharp GP2Y0A21YK
Este dispositivo emite luz infrarroja por medio de un led emisor de IR, esta luz pasa a
través de una lente que concentra los rayos de luz formando un único rayo lo más
concentrado posible para así mejorar la directividad del sensor, la luz va recta hacia
delante y cuando encuentra un obstáculo reflectante rebota y retorna con cierto ángulo
de inclinación dependiendo de la distancia, la luz que retorna es concentrada por otra
lente y así todos los rayos de luz inciden en un único punto del sensor de luz infrarroja
que contiene en la parte receptora del dispositivo.
Este sensor es un CCD lineal y dependiendo del ángulo de recepción de la luz
incidirá esta en un punto u otro del sensor pudiendo de esta manera obtener un valor
lineal y proporcional al ángulo de recepción del haz de luz (figura 2.6).
Figura 2.6. Funcionamiento del sensor Sharp GP2Y0A21YK
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
30
Dependiendo del modelo elegido leeremos de una manera u otra la salida de este con lo
cual tendremos que remitirnos a la hoja de especificaciones del modelo elegido para ver
su funcionamiento interno (Tabla 2.1).
En los modelos analógicos la salida es un voltaje proporcional a la distancia
medida.
En los modelos digitales la lectura será de 8 bits serie con reloj externo.
En los modelos Booleanos la salida será de 1 bit y este marcara el paso por la
zona de histéresis del sensor con lo cual solo tendremos una medición de una
distancia fija.
Datasheets Rango de
medida
Tipo de
salida
GP2D-02 10 a 80 cm. Digital 8 bits
GP2D-05
10 a 80 cm. (adj,
micro pot.) Lógica 1 bit
GP2D-12 10 a 80 cm Analógica
(0-3V)
GP2D-15
adj. a 24cm de
fabrica Lógica 1 bit
GP2D-120 4 a 30 cm. Analógica
(0-3V)
Tabla 2.1. Tipos de sensores Sharp para detección de obstáculos
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
31
Debido a su gran rango de medida este sensor es adecuado para detectar obstáculos
reflectantes como paredes, usados en robots de exploradores para los de laberintos,
entre otros.
2.4.2. Sensor LM35
Figura 2.7. Sensor LM35
Es un sensor de temperatura con una precisión calibrada de 1ºC y un rango que
abarca desde -55º a +150ºC (Figura 2.7).
El sensor se presenta en diferentes encapsulados pero el más común es el T0-92 de
igual forma que un típico transistor con 3 patas, dos de ellas para alimentarlo y la
tercera nos entrega un valor de tensión proporcional a la temperatura medida por el
dispositivo. Para conocer su configuración basta con colocarlo sobre una mesa con las
terminales hacia nosotros y las letras del encapsulado hacia arriba y tenemos que de
izquierda a derecha los pines son: VCC, Vout, GND.
La salida es lineal y equivale a 10mV/ºC por lo tanto:
+1500mV = 150ºC
+250mV = 25ºC
-550mV = -55ºC
Para hacernos un termómetro lo único que necesitamos es un voltímetro bien
calibrado y en la escala correcta para que nos muestre el voltaje equivalente a
temperatura. El funciona en el rango de alimentación comprendido entre 4 y 30 volts.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
32
Podemos conectarlo a un convertidor Analógico/Digital y tratar la medida
digitalmente, almacenarla o procesarla con un microcontrolador o similar
2.5. Los FPGA
Es apropiado considerar la forma en la cual los FPGAs fueron desarrollados y las
razones por las cuales aparecen en escena, Maxfield, C. (2004), el contexto con otras
tecnologías relativas, es presentada en la Figura 2.8.
Figura 2.8. Tecnologías relativas al FPGA
2.5.1. Transistores
Un transistor es un dispositivo semiconductor formado de la unión PNP (positivo-
negativo-positivo) o NPN (negativo-positivo-negativo).
En 1947 los físicos William Shockley, Walter Brattain y John Bardeen, crearon el primer
transistor: un dispositivo punto-contacto formado de germanio.
El año de 1950 vio la introducción de un componente más sofisticado llamado
transistor de unión bipolar (BJT), el cual fue más fácil y barato de construir. Para finales
de los 50’s, los transistores fueron hechos de silicio en vez de germanio. Sin embargo,
aunque el germanio ofrece una certera ventaja eléctrica, el silicio es más barato y más
amigable para trabajar.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
33
2.5.2. Circuitos Integrados
Los primeros transistores como componentes discretos fueron encapsulados de
manera individual en pequeñas latas de metal. Con el tiempo, la gente comenzó a
pensar que era una buena idea fabricar circuitos enteros en una sola pieza
semiconductora. La primera discusión pública de esta idea es atribuida a G. W. A.
Dummer, en un reporte presentado en 1952. Pero no fue hasta el verano de 1958 que
Jack Kilby, trabajando para Texas Instruments (TI) acertadamente fabricó un oscilador,
comprimiendo cinco componentes dentro de una sola pieza semiconductora.
Al mismo tiempo que Kilby estaba trabajando en su prototipo, dos investigadores de
Fairchild Semiconductor –el físico suizo Lean Hoerni y el físico estadounidense Robert
Noyce- inventaron técnicas ópticas litográficas que en la actualidad son usadas para
crear transistores e interconexiones en los circuitos integrados modernos.
A mediados de los 60, Texas Instruments (TI) introdujo una gran selección de
construcciones básicas a bloques de circuitos integrados llamados la serie de los 54XX
y la serie de los 74XX, que específicamente eran para uso militar y comercial,
respectivamente.
2.5.3 Microprocesadores
En 1971, Intel, introdujo el primer microprocesador (µP) –el 4004- el cual fue
concebido y creado por Marcian “Ted” Hoff, Stan Mazor y Federico Faggin. El 4004
contenía alrededor de 2300 transistores y podía ejecutar hasta 60000 operaciones por
segundo.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
34
2.5.4 FPGA
Xilinx desarrolló una clase nueva de circuito integrado llamado Field-Programable
Gate Array (arreglo de puertas programables de campo) o FPGA, el cual salió al
mercado en 1984, Gómez, J. E. (2002).
El primer FPGA estuvo basado en CMOS y utilizaba celdas SRAM para propósitos de
configuración. Todos esos dispositivos contenían relativamente pocas compuertas.
Esos dispositivos estaban basados en el concepto de bloques lógicos programables,
comprendían de 3 entradas, un registro que podía actuar como un flip-flop o una latch y
un multiplexor.
Cada FPGA contenía un gran número de esos bloques lógicos programables. Cada
bloque en el dispositivo podía ser configurado para una función diferente. Cada registro
podía ser configurado para inicializar a 0 ó 1 lógico y actuar como un flip-flop o una
latch. Si la opción flip-flop era seleccionada, el registro podía ser configurado para ser
disparado por un pulso positivo o negativo de reloj.
Actualmente los FPGA’s son utilizados para los diseños de prototipo ASIC o para
proveer una plataforma de hardware para verificar la implementación física de nuevos
algoritmos. Además contienen millones de compuertas que los han convertido en
sumamente manejables. Tienen características como: núcleos de microprocesadores
incrustados, altas velocidades en las interfaces de entrada-salida. Se sabe que para
la siguiente generación de FPGA, éstos contendrán billones de transistores o al menos
eso es lo que Xilinx anunció hace poco.
Otras tecnologías están por venir como el FPGA-ASIC wireless para comunicaciones.
Esto ya lo está llevando a cabo Sun Microsystems, basándose en procesos
extremadamente rápidos.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
35
Capítulo 3. Diseño e implementación
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
36
3.1. Diagrama a bloques del proyecto
En este capítulo se analizará inicialmente el diseño de cada uno de los componentes que conforman el proyecto. En la figura 3.1 se muestra un diagrama a bloques de dichos elementos.
Figura 3.1. Diagrama a bloques
En los siguientes párrafos se describe detalladamente cada una de las etapas
anteriores y considerándose las características de cada dispositivo es posible
acoplarlos y llegar al punto de la implementación.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
37
3.2 Diseño del algoritmo de la secuencia de control necesario para el controlador
del ascensor.
Para plantear de manera correcta la información a programar en el FPGA contenido
en la tarjeta SPARTAN 3E, haciendo uso del lenguaje VHDL, es necesario conocer los
pasos que llevará a cabo la secuencia de control. Para ello se toman en cuenta con las
especificaciones marcadas por la Norma Oficial Mexicana (NOM-053-SCFI-
200,”Elevadores eléctricos de tracción para pasajeros y carga- Especificaciones de
seguridad y métodos de prueba para equipos nuevos”).
Para dar la secuencia de arranque es necesario considerar que:
1.-El proyecto consiste de un elevador para un edificio de 4 niveles,
2.-Es necesario el botón de encendido, por lo que consideramos que el botón para esta
operación se encuentra en el cuarto de máquinas.
3.- El manejo de 3 variables (entradas en el FPGA); 1 para la iluminación, 1 para la
temperatura y uno para la apertura y cierre de puertas.
La secuencia de arranque es descrita a través del Diagrama de flujo mostrado en la
Figura 3.2:
NO
Se oprime el botón de encendido
Busca Planta Baja como nivel inicial
¿Está en planta baja?
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
38
SI
NO
SI
Abrirá las puertas mientras esté inactivo en
planta baja.
El LCD indicará “-Planta Baja-Recepción”, el
display indicará “0”.
Las luces no se encienden si no hay presencia
¿Hay presencia?
La iluminación es activada
1
1
Se activa el sensor de temperatura para regular la temperatura
dentro del ascensor
Se activa el sensor de presencia de las puertas, que impide el
cierre de las mismas si las personas continúan entrando.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
39
Figura 3.2. Diagrama de flujo de la secuencia de arranque
Para transportarse de un nivel a otro (secuencia de transporte), el ascensor cuenta con
un detector que marca el “tope”, mismo que permite que los límites de cada piso no
sean rebasados o queden por debajo de los mismos.
Lo anterior se explica con el diagrama de flujo Figura 3.3, que muestra dicha secuencia
de transporte.
SI
Se activa el sensor de seguridad de las puertas, el cual manda
una señal para que el ascensor pueda ascender o descender.
Se oprimirá el botón del piso al que se desea ir
.
Cerrará las puertas y ejecutará la acción
.
El sensor de presencia en las puertas detecta
¿Hay presencia?
Abre las puertas al llegar a algún piso
2
2
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
40
NO
NO
SI
SI
Figura 3.3. Secuencia de transporte del ascensor
El sensor de seguridad de las puertas se cerciora del cierre correcto
¿Cierre correcto?
Sigue regulando la temperatura e iluminación, si es que el ascensor
no está estático
Ordena la secuencia de botones que han sido oprimidos de mayor a
menor si está bajando o menor a mayor si sube.
De acuerdo a la secuencia de botones va realizando las acciones.
Despliega la ubicación por cada piso en el LCD y el display
2
3 3
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
41
Para los usuarios que se encuentran en espera de utilizar el ascensor, se describen a
continuación las acciones que el controlador ejecutará en caso de llamadas desde los
niveles.
-Si el ascensor está subiendo y es presionado un botón de un piso superior y uno
inferior atenderá al más próximo superior.
-Si el ascensor está bajando y es presionado un botón de un piso inferior y uno
superior, atenderá al más próximo inferior.
-Regulación de temperatura e iluminación la conserva en caso de no estar estático.
-Botón de emergencia que al ser oprimido el controlador toma como prioridad bajar o
subir según el usuario lo requiera.
-Después de esta acción el ascensor continuará con sus prioridades de manera normal.
En los siguientes párrafos se describen ciertas condiciones especiales que son
necesarias para la operación de la cabina.
- El elevador no operará, a menos que la(s) puerta(s) de cubo esté(n) cerrada(s)
- Se accionará un sensor que generará una señal para detener el movimiento del
elevador, después de que el mismo sobrepase el último piso superior y/o inferior
servidos.
-El elevador contará con dispositivos de alarma y luz de emergencia. Para poder
atender, en caso de necesidad, un auxilio interior, los pasajeros deben tener en la
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
42
cabina un dispositivo fácilmente identificable de tono y timbre distintivo y accesible que
permita pedir ayuda.
3.3. Diseño de la máquina de estados para el controlador, utilizando el lenguaje
VHDL en un FPGA
Para la programación propiamente del FPGA, se ha diseñado la máquina de estados
(Figura 3.4), lo que facilita la creación del algoritmo en el dispositivo programable.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
43
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
44
Figura 3.4. Máquina de estados del algoritmo de control
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
45
3.4. Implementación en la tarjeta SPARTAN 3E
Para la implementación del programa en la tarjeta de SPARTAN 3E se requiere
asignar a cada una de las entradas y salidas del diseño un pin de la misma, para esto
la tarjeta SPARTAN 3E tiene asignado un número (que depende de la localización de
cada pin dentro de la tarjeta) para cada uno de sus pines, lo que facilita la asignación
de los mismos.
3.4.1. Entradas y salidas.
Se requieren 4 botones que el usuario puede activar dependiendo el piso al que
desee ir, para este caso se utilizaron los switches de la tarjeta SW0, SW1, SW2 y SW3
los cuales se muestran en la Figura 3.5.
Estos switches funcionan como cualquier otro, es decir, cuando se encuentran en
cierta posición están activados y cuando se encuentran en otra posición están
desactivados. Cuando se encuentran activados estos botones debido a su
configuración dentro de la tarjeta, proporcionan un nivel alto que corresponde a 3.3V y
cuando se encuentran desactivados un nivel bajo correspondiente a 0V.
Figura 3.5. Los switches de cada piso
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
46
Las localidades correspondientes a cada botón se muestran en la Tabla 3.1.
BOTON LOCALIDAD
SW0 L13
SW1 L14
SW2 H18
SW3 N17
Tabla 3.1. Localidades de cada botón
En total se requieren asignar 20 pines tomando en cuenta las entradas y salidas del
diseño, debido a que ya se asignaron 4 entradas correspondientes a los switches de la
tarjeta SW0, SW1, SW2 Y SW3, nos faltan por asignar otros 16 pines puesto que estos
pines corresponden a dispositivos y componentes que son externos a la tarjeta, para
este caso la tarjeta cuenta con varios conectores de expansión los cuales permiten
agregar componentes externos a la tarjeta SPARTAN 3E.
Estos conectores son (Figura 3.6):
- 1 conector Hirose de 100 pines con 43 conexiones de entrada o salida asociadas
con el FPGA, incluyendo 15 pares de entradas y salidas diferenciales y 2 pares
de entradas solamente.
- 3 módulos de conexión de 6 pines
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
47
Figura 3.6 Conector Hirose
Para este caso se utilizará el conector de expansión Hirose el cual debido a que
provee de 43 pines de entrada y salida permite agregar una mayor cantidad de
componentes a la tarjeta1.
Conector Hirose 100-pin Fx2
Voltajes aplicados al conector:
Los voltajes que se pueden aplicar al conector son:
3.3V los cuales son proporcionados por la tarjeta.
2.5V provenientes del Jumper JP9, esto debido que algunas de las entradas
diferenciales requieren este voltaje.
1 Para mayor información consúltese anexo
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
48
5V provenientes de una alimentación externa.
Entonces conociendo lo anterior se le asignaron los siguientes pines de la tarjeta a
cada uno de los sensores ya antes mencionados, lo que se representa a través de la
siguiente Tabla 3.2.
SENSOR DIRECCION LOCALIDAD
Abierto Entrada B4
Cerrado Entrada D5
Arranque Entrada A6
Nivel Entrada C5
Presencia Entrada A4
Presencia_a Entrada A13
Piso0 Entrada D7
Piso1 Entrada C7
Piso2 Entrada F8
Piso3 Entrada E8
Clk Entrada C9
Puerta_a Salida F11
Puerta_c Salida E11
Motor_subir Salida F9
Motor_bajar Salida E9
Iluminacion Salida F12
Tabla 3.2. Asignación de pines en la SPARTAN 3E
Para asignar los pines anteriores se requiere el software Xilinx Pace el cual se
observa en la Figura 3.7.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
49
Figura 3.7. Software Xilinx Pace
3.4.2. Programación de la tarjeta Spartan 3E.
La tarjeta SPARTAN 3E se puede programar de dos formas, por el puerto paralelo de
la PC usando una cable JTAG o mediante el puerto USB de la PC.
Los pasos para programar la tarjeta son los siguientes.
Tener el código en lenguaje VHDL.
Sintetizar el código para verificar si este no tiene errores.
Asignar pines de la tarjeta con el Xilinx Pace a las entradas y salidas del
diseño.
Programar el dispositivo mediante el software IMPACT de Xilinx.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
50
Si el proceso de programación es satisfactorio se generara un archivo de tipo .bit
acompañado de una pantalla como la que se muestra en la Figura 3.8.
Figura 3.8. Pantalla de proceso satisfactorio de programación
Por otro lado las salidas de nuestro controlador son por un lado el motor que permite
transportar el cubo (mediante 2 bits), el motor de la puerta (mediante dos bits) y la
iluminación dentro del ascensor (mediante un bit).
3.5. Diseño e implementación la etapa de potencia
En esta parte se describen las etapas necesarias para comunicar a la tarjeta con los
actuadores.
Además considerando las variables de domótica para el ahorro de energía a favor del
medio ambiente, así como del propio sistema digital para la puesta en marcha de la
cabina.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
51
3.5.1 Cierre y apertura de puertas automáticas
El siguiente circuito está basado en la configuración del puente H, el cual hace una
inversión de giro de un motor usando solamente dos bits de control, que serán enviados
desde la tarjeta SPARTAN 3E, la combinación que se tiene con la tarjeta es la
siguiente: 00, 01, 10, 11, de las cuales las tres primeras serán tomadas en cuenta para
la inversión de giro, quedando de la siguiente manera (Tabla 3.3):
Combinación Acción
0 0 Motor apagado
0 1 Motor giro a la izquierda
1 0 Motor giro a la derecha
1 1 Sin efecto en el motor
Tabla 3.3. Combinación lógica para los motores
Teniéndose en cuenta que la tarjeta maneja voltajes tipo TTL (Transistor-Transistor
Logic) para manejar las diferentes etapas de potencia se tuvo el apoyo del control tipo
ON – OFF).
La etapa de potencia consta de una derivación de un diodo de rápida recuperación
(1N914), que tiene la función de proteger las salidas de la tarjeta SPARTAN 3E, ya que
con la inducción de las bobinas de los relevadores puede llegar a dañarlas o hasta
quemarlas, esto es por la sobrecarga de tensión que genera el relevador, está a su vez,
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
52
enviando una corriente de regresión, la cual puede quemar la salida de la tarjeta al
momento de la conmutación.
Este diodo está conectado a la base de un transistor tipo BJT (Bipolar Junction
Transistor) BC548B, teniendo en cuenta que las corrientes que manejan los relevadores
no son superiores a 80 mA y que la corriente de colector (IC) que maneja este
dispositivo es de ±100mA; por esta razón son adecuados para el funcionamiento del
mismo; el colector de este dispositivo está conectado en serie a una terminal de las
bobinas del relevador, que a su vez está conectado a VCC de 24v, este voltaje es
porque las bobinas se activan a este voltaje.
Como las bobinas generan un sobre voltaje en el transistor que lo puede quemar al
momento de conmutar (además de que puede dañar la tarjeta), es necesario observar
este efecto con ayuda de las graficas presentadas a continuación (Figura 3.9).
Para efectos de simulación, la tarjeta de control fue sustituida por un generador de
onda cuadrada que nos da un pulso de 1 Hz para la conmutación del transistor y el BJT;
la salida es tomada directamente del colector del transistor, el emisor está a tierra,
teniendo en cuenta que el transistor solo sirve como un interruptor entre emisor y
colector.
Figura 3.9. Transistor sin protección
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
53
Para eliminar el efecto de sobrecarga y darle una mayor protección al transistor así
como a la tarjeta de control se conectó en paralelo a la bobina del relevador un diodo de
rápida recuperación, esta configuración es conocida como Diodo Free-Wheeling (Figura
3.10), permitiendo que, cuando el transistor se abra, la corriente que venía circulando
por la bobina continúe ahora su paso por el diodo, con lo cual hace que la corriente de
la bobina disminuya suavemente a medida que circula por el diodo, este efecto se
muestra a continuación:
Figura 3.10. Transistor con protección (diodo free-Wheeling)
Así podemos notar como la sobrecarga antes generada desaparece al momento en
que el diodo la absorbe, de esta manera protegeremos tanto el transistor como la tarjeta
de control.
Los pines normalmente abiertos y normalmente cerrados están conectados a una
batería de 12v que a su vez está conectada a un divisor de voltaje para la regulación de
velocidad de los motores quedando el circuito de la siguiente manera (Figura 3.11).
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
54
Figura 3.11. Puente “H” para motores
3.5.2 Ventilación.
Para la ventilación se ocupa un disipador alimentado a 12v, el cual en sus circuitos
de control y potencia es muy similar a los circuitos de los motores de las puertas
automáticas antes descritos, incluyen diodos de protección 1N914, transistores BJT
BC548B como interruptor, y relevadores con bobinas a 5V para comunicar la etapa de
control con la de potencia.
La única variante radica en que solamente se va a tener el estado apagado o prendido
sin tener que usar la inversión de giro del motor (Tabla 3.4), permitiéndonos
exclusivamente usar un solo bit del puerto de la tarjeta SPARTAN 3E por cada
ventilador.
El común del relevador está conectado a la terminal positiva del ventilador, y la otra
terminal del ventilador está conectada hacia la referencia (Figura 3.12), así para cuando
el relevador conmute y mande un positivo quede polarizado para que este mismo pueda
girar.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
55
Salida lógica Estado
0 Apagado
1 Prendido
Tabla 3.4. Estados lógicos del ventilador
Figura 3.12. Puente “H” para ventiladores
3.5.3 Iluminación crepuscular
Como también se sabe la domótica no solo es el ahorro de energía, sino también el
brindar confort humano, el tratar de crear ambientes agradables y cómodos, una de las
variantes dentro de ella es la iluminación crepuscular y mantener apagadas las
lámparas cuando no se utilicen.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
56
Lo que se logra a través de un circuito de control el cual funciona de manera similar
al de los ventiladores, solo que en este caso, usaremos el Pulse Width Modulation
(PWM) o modulación por ancho de pulso, que es una técnica en la que se modifica el
ciclo de trabajo de una señal periódica ya sea para transmitir información a través de
un canal de comunicaciones o control de la cantidad de energía que se envía a una
carga, en este caso la utilizaremos para transmitir la cantidad de energía necesaria a
las lámparas, haciendo que estas prendan a cierta intensidad.
Para la iluminación de las cabinas se utilizó un circuito igual al que se maneja para
el encendido de los motores, ya que solo queremos ejemplificar el efecto de ahorro de
energía si el elevador no se encuentra en uso y no detecta la presencia de alguna
persona. El circuito es el siguiente (Figura 3.13):
Figura 3.13. Circuito para iluminación dentro de las cabinas
3.5.4 Sensores Sharp GP2Y0A21YK (acoplamiento de señal)
Este dispositivo es capaz de detectar un obstáculo hasta 80 cm de distancia, solo
que con variaciones de voltaje dependiendo el voltaje de alimentación que se tenga,
para hacer que el dispositivo nos entregara señales digitales (“0” y “1”) se acopla con un
CI LM339, amplificador comparador en modo no inversor para tener una salida positiva,
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
57
mismo que con un voltaje de referencia hace que el comparador mande salidas lógicas
al momento en el cual el voltaje de entrada, que en este caso será el voltaje que mande
el sensor sobrepase al voltaje de referencia.
El circuito lleva una resistencia de pull-up conectada en la salida del amplificador a
VCC de un valor de 3.3kΩ que sirve para la estabilidad de la ganancia del mismo.
La distancia de detección es posible cambiarla a través de un divisor de voltaje que
variará el voltaje necesario de referencia con el que el comparador se dispara (Figura
3.14), lográndose el ajuste preciso para censar con un rango de 2cm hasta casi 80cm,
teniendo una salida lógica estable de 0v sin detectar obstáculos y 5v cuando detecta
algún obstáculo.
Figura 3.14. Circuito para los sensores de presencia
Con la ayuda de este circuito podemos hacer que la tarjeta de control mande a
prender los leds de las cabinas.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
58
3.5.5 Sensores de temperatura.
Para el censado de la temperatura se uso el dispositivo LM35, el cual es un
transductor que entrega una variación de voltaje de 10mV/°C, para acoplarlo a la
tarjeta se hizo lo siguiente:
A) Etapa de amplificación:
Como se había mencionado antes, los voltajes que maneja la tarjeta son de tipo TTL,
lo cual hace que manejemos rangos de 0 a 5v para mandar entradas lógicas a la
misma (0v para “0” y 5v para “1”), así que tomando en cuenta que la temperatura
máxima que vamos a censar es de 40°C, la salida que nos entregaría el LM35 seria de
400mV, mucho menos de lo que necesitamos para activar por lo menos una entrada de
la tarjeta de control, por tal motivo se diseño una etapa de amplificación con las
siguientes características:
Rango de amplificación: 0 a 5 v
Voltaje mínimo de entrada: 0v
Voltaje máximo de entrada: 500mV
Sabemos que:
-------ec. 3.1
------ec. 3.2
--ec.3.3
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
59
Se propone a Rf = 100k
---ec. 3.4
------- ec. 3.5
-------ec. 3.6
Con ayuda de un CI LM358 que contiene dos amplificadores operacionales
unipolares internamente (Figura 3.15), se puede lograr que el circuito funcione
correctamente. Para obtener una salida positiva del amplificador se configura en modo
no inversor de la siguiente forma:
Figura 3.15. Circuito de los amplificadores unipolares.
El circuito anterior nos entrega una salida analógica de 0 a 5 v, ahora lo que se
necesita hacer es que a cierto rango de temperatura tengamos un 1 lógico o un 0
lógico, lo que se logra con un CI LM339 como se hizo con los sensores Sharp
GP2Y0A21YK, que a cierto voltaje hacen que el operacional se active y mande una
salida de 5v o un 1 lógico, poniendo un divisor de voltaje en la entrada del voltaje de
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
60
referencia (Figura 3.16), para así para poder calibrar la temperatura a la cual vamos a
mandar las señales de activación.
Figura 3.16. Circuito de amplificación para los sensores de temperatura
Nota: Comercialmente no existen valores de resistencias de 11kΩ, por lo tanto se hace
un arreglo en serie de dos resistencias, una de 10kΩ y una de 1 kΩ para así poder
formar la resistencia necesaria.
3.5.6 Indicadores de piso
Cada piso de la maqueta cuenta con un indicador, que señala en que piso se
encuentra, para esto se utilizó un display de 7 segmentos, en el que se muestra el
número del piso en el que se encuentra, para poder mandar la salida, se necesita un
decodificador de BCD a display 7 segmentos tipo ánodo común, que comercialmente es
un CI 74LS47, el cual tiene una entrada de 4 bits, en forma BCD, como solo se tiene
planta baja y 3 pisos, no necesitamos más que solo dos bits de los 4 que tiene el
decodificador, las otras dos entradas se mandan a 0 lógico.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
61
El despliegue de los display sería el siguiente (Tabla 3.5):
Entrada Salida
0000
0001
0010
0011
Tabla 3.5. Despliegue de los display
Como cada piso junto con el tablero debe de tener su propio indicador solo se deben
conectar en paralelo las salidas del decodificador, quedando de la siguiente manera
(Figura 3.17):
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
62
Figura 3.17. Conexión en paralelo de los display
3.5.7 Botonera
Para poder controlar el ascensor por dentro es necesario tener la botonera para los
pisos correspondientes y botones de emergencia, apertura de puertas, cierre de
puertas.
Para este circuito con la misma tarjeta de control podemos alimentarlo, ya que lo
único que se necesita es mandar manualmente con un interruptor un 1 ó 0 lógico
(Figura 3.18).
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
63
Figura 3.18. Circuito del tablero de control
Como se muestra en el diagrama de la figura 3.19., esto se logra conectando un
interruptor normalmente abierto a Vcc en serie con una resistencia de 10kΩ, y a su vez
aterrizándola a tierra, la entrada de la tarjeta se conecta entre la resistencia, esto para
que cuando el interruptor esté abierto lo que vea la entrada de la tarjeta sea un 0 lógico,
y cuando cierre vea un 1 lógico.
Figura 3.19. Conexión de los interruptores del tablero de control
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
64
La creación de los circuitos de potencia es una creación de los tres autores del
presente trabajo, razón por la cual a continuación se describe brevemente, el
procedimiento necesario.
Para el diseño de las tarjetas PCB (Printed Circuit Board) lo hicimos por medio de un
software llamado PCB WiZARD, que sirve para el diseño de circuitos eléctricos
impresos en placas fenólicas.
Los pasos a seguir son:
1. Asegurarse de tener el software instalado, una vez hecho esto, se le da doble
clic al icono correspondiente a PCB Wizard.
2. Teniendo abierta nuestra área de trabajo debemos crear un archivo nuevo
dando clic en NEW que se encuentra en el menú FILE.
3. Para abrir la biblioteca donde se encuentran contenidos los componentes
electrónicos, lo único que hacemos es dar clic en el botón que aparece en la
barra de herramientas y eligiendo la opción de Circuit Symbols, escogeremos
los elementos que utilizaremos, que en este caso serán los de la Figura 3.20:
Figura 3.20. Biblioteca de Componentes electrónicos
De la sub-ventana que aparece escogeremos los símbolos de los dispositivos que
ocuparemos, en este caso, se hará un contador de décadas de 0 a 9 con un display de
7 segmentos, para poner los dispositivos en el área de trabajo solo se buscan en la
sub-ventana y se arrastran de la siguiente forma (Figura 3.21):
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
65
Figura 3.21. Arrastre de componentes
Después de haber arrastrados todos los componentes los acomodamos a nuestro
gusto y des sus terminales empezamos a unirlos conforme a la configuración,
quedando de la siguiente manera (Figura 3.22):
Figura 3.22. Conexión de los componentes
Después de haber conectado nuestro circuito debemos de percatarnos si los valores
de los componentes son los adecuados, en caso contrario, podemos cambiarlos
dándoles doble clic, apareciendo un mensaje como el siguiente (Figura 3.23):
Figura 3.23. Cambio de valores
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
66
Al igual que podemos cambiar el valor de resistencias, capacitores, inductores y
demás, también podemos hacer modificaciones en otros elementos como el de color,
tamaño de led, tipo y tamaño de integrado, entre otros que podemos usar.
Después de tener perfectamente armado nuestro circuito, lo que procede es
convertirlo a formato PCB, que nos dará varias presentaciones de nuestro circuito
hecho en placa fenólica, el cual nos intentará dar el “positivo” para la impresión del
circuito o bien si se quiere un negativo también se logra a través de la edición de la
imagen.
Para que podamos obtener el PCB primero damos clic en la barra de herramientas
(Figura 3.24), TOOLS, CONVERT, DESING A CIRCUIT BOARD.
Figura 3.24. Barra de Herramientas
Con esto el programa mandara un mensaje del cual si queremos elegir una
configuración hecha por el programa o hecha por el usuario, escogemos una de las dos
y damos click en siguiente (Figura 3.25):
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
67
Figura 3.25. Ventana de configuraciones
Como el circuito de ejemplo que vamos a hacer no es muy complicado se elijo la
opción de que el mismo programa creara el PCB con opciones que están por default.
Después de haber dejado al asistente que terminara, nos da las siguientes vistas del
circuito (Figura 3.26):
Figura 3.26. Vistas del circuito
Como podemos ver, la manera en la cual podemos hacer nuestros PCB es bastante
amigable, y no se pierde tanto tiempo en el diseño. Sin embargo, esto es para la forma
automática, en la cual el mismo programa da configuraciones a los circuitos, los
diagramas electrónicos que en el trabajo se muestran al igual que los PCB están
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
68
hechos con configuraciones hechas por el usuario y algunas pistas hechas de forma
manual.
A continuación (Figura 3.27) se muestra algunos de los circuitos que se utilizaron
para el desarrollo del proyecto:
Figura 3.27. Circuitos del desarrollo
Este circuito es utilizado para el cierre y abre de puertas, o en otras palabras para el
cambio de giro de un motor, se muestra una perspectiva del como quedara el circuito ya
armado y la imagen de las pistas en forma positiva para el planchado del mismo.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
69
CAPÍTULO 4. PRUEBAS Y
RESULTADOS
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
70
Todo trabajo de investigación requiere de ciertas pruebas para comprobar si los
objetivos fijados fueron alcanzados. Para esto, después de la documentación, el diseño
y para el caso presente, la implementación; es de suma importancia realizar algunas
pruebas que contribuyan a comparar la teoría y la práctica, logrando así la obtención de
resultados que nos llevan a una conclusión.
Razón por la cual en los siguientes párrafos se presentan algunas pruebas
necesarias para que el proyecto funcionara adecuadamente.
4.1 Simulaciones con la secuencia de control del ascensor y la Spartan 3E
Una de las pruebas realizadas fue la simulación de los sensores de presencia en
cabina y puerta, los de nivel, los de cierre y apertura correcta de puertas y el arranque
lo que se logró con la ayuda de algunos interruptores de tipo push-bottom, mismos que
con conexiones a la tarjeta SPARTAN 3E permitieron recrear el voltaje (0v a 5v) que
serán enviados al FPGA como señales de disparo.
Se usaron 10 push Bottom (Figura 4.1):
- 4 representan los sensores que hay en cada piso.
- 1 representa el nivel que determina la correcta posición del ascensor.
- 1 para el arranque
- 1 para la presencia de obstáculos en las puertas.
- 1 para la presencia dentro de la cabina.
- 2 para los sensores de cierre y apertura correctos de la puerta.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
71
Figura 4.1. Simulación de entradas de sensores de la cabina hacia la tarjeta SPARTAN 3E
Como salidas se usaron 5 leds de la tarjeta dos que nos representan el giro del
motor principal en cada sentido y otros dos que nos representan la apertura y cierre de
las puertas y por ultimo un led que representa la iluminación dentro del ascensor
(Figura 4.2).
Figura 4.2. Leds indicadores de la tarjeta SPARTAN 3E
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
72
Además por otro lado, como se observa en la Figura 4.3 se utilizaron los switches
SWO, SW1, SW2 y SW3 ya mencionados, pertenecientes a la propia tarjeta simulando
los botones que se usan para mandar llamar al ascensor desde otros pisos.
Figura 4.3. Switches que simulan el llamado desde los pisos
El software usado para efectuar las simulaciones es el Xilinx ISE, mismo con el cual
se realizo el programa en VHDL para el control del ascensor. Para efectuar una
simulación en este software primeramente debemos tener nuestro código en VHDL
sintetizado.
Posteriormente a nuestro proyecto debemos agregar una nueva fuente de tipo Test
Bench Wave Form (Figura 4.4), al hacer esto automáticamente en nuestro proyecto se
creara un archivo de extensión .tbw, que es necesario para efectuar las simulaciones.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
73
Figura 4.4. Fuente Test Bench Wave Form
Por otro lado se debe tomar en cuenta que debido a que VHDL es un lenguaje de
programación enfocado a sistemas digitales, entonces las simulaciones efectuadas en
el software Xilinx ISE se efectúan mediante formas de onda y de diagramas de tiempo
los cuales nos indican el estado de los puertos de entrada y/o salida programados. Para
este trabajo la simulación se enfocará en el estado de las salidas al tener ciertas
condiciones de entrada y no en el tiempo en que estas se ejecutan.
Para comenzar lo que necesitamos es ver cómo se comportan nuestros puertos de
salida bajo ciertas condiciones de entrada, entonces lo primero que necesitamos es
asignar esas condiciones de entrada, las cuales se asigna mediante la siguiente
ventana del simulador de Xilinx ISE (Figura 4.5).
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
74
Figura 4.5. Ventana del simulador Xilinx ISE
Las entradas que se están considerando son el reloj interno de la tarjeta SPARTAN
3E (clk), el botón de arranque (arranque), los botones para mandar llamar al ascensor, y
los sensores de nivel, presencia en la puerta(presencia), presencia dentro del ascensor
(presencia_a), los sensores de piso y los sensores de cierre y apertura de
puerta(cerrado y abierto).
Las salidas por un lado son: el motor para mover la cabina (motor_subir,
motor_bajar), el motor de la puerta (puerta_a, puerta_c) y la iluminación.
A) Simulación 1. Arranque
Para este caso se colocaron las entradas clk y arranque en nivel alto, es decir, “1”
lógico lo cual significa que el reloj interno de la máquina esta en ciclo alto y que se
accionó el botón de arranque respectivamente. Por otro lado como el ascensor se
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
75
encuentra inicialmente en planta baja, entonces esperamos que se active el motor y
comience a bajar y que no haya cambios en las demás salidas. (Figura 4.6)
Figura 4.6. Simulación de Arranque
B) Simulación 2. Paro
En este caso suponemos que el ascensor se encuentra bajando después de que se
dio el arranque, por lo cual se espera que el ascensor pare hasta que llegue a la planta
baja. Debido a esto se colocaron las entradas clk, nivel y el sensor del primer piso a “1”
y las demás se colocaron en “0”. En nuestras salidas se esperan dos cosas: que el
motor pare y que la puerta comience a abrir. (Figura 4.7)
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
76
Figura 4.7. Simulación de paro
C) Simulación 3. Iluminación y Apertura
En esta simulación suponemos que el ascensor se encuentra en la planta baja y que
la puerta comienza a abrirse. Para este caso se probaran dos sensores, el sensor de
apertura completa de la puerta y el sensor de presencia dentro del ascensor. Por lo cual
en la simulación se colocaron estas dos entradas en “1” y las demás entradas se
dejaron en “cero” excepto clk y el sensor de la planta baja.
Lo que se espera obtener es primeramente que como se activo el sensor de apertura
completa de la puerta entonces el motor de la puerta deje de funcionar y segundo,
como se activo el sensor de presencia dentro del ascensor entonces la iluminación
debe encenderse por lo cual iluminación debe encontrarse en “1”. (Figura 4.8)
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
77
Figura 4.8. Iluminación y apertura
D) Simulación 4. Llamada al ascensor.
Para este caso probaremos que sucede cuando el ascensor recibe la llamada de un
piso distinto al que se encuentra. Para este caso supondremos que el ascensor se
encuentra en la planta baja y es llamado o algún usuario dentro del mismo ascensor
decide ir al piso 2.
Entonces en este caso en nuestras entradas colocamos el botón para mandar llamar
el ascensor en 02H, el sensor de piso se encuentra en “1”, el sensor de presencia
dentro del ascensor se encuentra en “1” debido a que suponemos que hay gente dentro
del ascensor y las demás entradas se colocan en “0”, excepto clk. Por otro lado lo que
se espera obtener es que la puerta comience a cerrarse o sea que puerta_c sea “1”.
(Figura 4.9)
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
78
Figura 4.9. Llamada al ascensor.
E) Simulación 5. Obstáculos en la puerta.
En esta simulación se probará que sucede cuando se da el caso en el cual la puerta
esta cerrándose debido a algún llamado al ascensor y hay algún obstáculo que impida
el cierre completo de la misma, en otras palabras en esta simulación se probará que
funcione el sensor de presencia en puertas. Entonces para esto se supondrá que el
ascensor ha recibido un llamado y este ha comenzado a cerrar sus puertas y en este
momento se activa el sensor de presencia en puertas.
Por lo cual en este caso nuestras entradas de botón, piso y presencia dentro del
ascensor permanecen sin cambio y lo único que cambia es que el sensor de presencia
en puertas (presencia) se coloca en “1”, las demás entradas permanecen en “0”
excepto clk.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
79
Lo que se espera es que como el sensor de presencia en puertas detecto algún
obstáculo entonces en lugar de que las puertas del ascensor se sigan cerrando, éstas
comiencen nuevamente a abrirse hasta que el sensor ya no detecte presencia, por lo
que puerta_a debe estar en “1”. (Figura 4.10).
Figura 4.10. Obstáculos en la puerta
F) Simulación 6. Cierre completo de puertas y avance.
En esta simulación suponemos que el ascensor se encuentra cerrando sus puertas
después de recibir algún llamado de algún piso distinto al que se encuentra, también se
supone que el sensor de presencia de puertas no detecta nada por lo cual no hay nada
que impida el cierre completo de las puertas. Para este caso nuestras entradas de piso,
botón y presencia dentro del ascensor no cambian, lo que cambia es que se activa el
sensor de cierre completo de puertas (cerrado), las demás entradas se colocan en “0”
excepto clk.
Lo que se espera obtener es: primeramente que el motor de la puerta deje de
funcionar y segundo que como la puerta está completamente cerrada entonces el
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
80
ascensor comience a subir debido a que fue llamado de un piso superior al que se
encuentra. (Figura 4.11).
Figura 4.11. Cierre completo de puertas y avance Nota.
Con las simulaciones anteriores se comprobó que las salidas de nuestro programa
responden correctamente a las condiciones de entrada más comunes que se pueden
dar cuando el ascensor se encuentra funcionamiento.
Por otro lado se debe tomar en cuenta que debido a que como en la simulación no
podemos trabajar en tiempo real entonces no se pueden simular algunas condiciones
de la secuencia de control propuesta como las llamadas múltiples al ascensor, es por
esto que las demás condiciones se observaran en la implementación física del
programa de control.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
81
4.2 Simulaciones con los sensores
Al tratarse de un dispositivo de reflexión por infrarrojos con medidor de distancia
proporcional al ángulo de recepción del haz de luz que incide en un sensor lineal
integrado, es oportuno que para el presente proyecto se ajuste la salida del sensor para
adecuar la distancia a la cual debe detectar. Este ajuste se logra con una serie de
pruebas de voltaje vs distancia, hasta alcanzar la más adecuada.
En la Tabla 4.1 se observan los valores de los voltajes y las distancias medidas,
considerando que el sensor Sharp GP2Y0A21YK tiene un rango de medición de hasta
80 cm, con voltajes de alimentación no mayores a 7v de acuerdo a como lo marca su
hoja de especificaciones .
Distancia (cm) Voltaje (v)
10 2.23
20 1.35
30 0.97
40 0.64
50 0.52
60 0.50
70 0.43
80 0.38
Tabla 4.1. Voltaje vs Distancia del sensor Sharp GP2Y0A21YK, sin acoplamiento
La tarjeta SPARTAN 3E maneja voltajes TTL, es decir, no mayores a 5v, razón por la
cual en el diseño se hizo un acoplamiento, utilizando un amplificador operacional como
comparador con el CI LM339, que permite mantener estable el voltaje a través del
ajuste fino hecho con un preset de 1 K para crear el divisor de voltaje preciso. Lo
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
82
relevante en este apartado radica en el hecho de poder comparar los voltajes y las
distancias de la tabla anterior, sin acoplamiento en el sensor, con los de la tabla 4.2
donde el dispositivo ya cuenta con acoplamiento y el ajuste de la distancia a censar que
en este caso se tomó como ejemplo 40 cm. Dándonos salidas digitales de 0v sin
detectar presencia y 5v con presencia (“0” y “1” lógicos)
Distancia (cm) Voltaje (v)
10 4.43
20 4.43
30 4.43
40 4.43
50 0
60 0
70 0
80 0
Tabla 4.2. Sensor Sharp GP2Y0A21YK, con acoplamiento
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
83
Conclusiones
Para el presente trabajo encontramos las siguientes conclusiones:
1) El dispositivo llamado FPGA, es capaz de realizar procesos de manera
simultánea, debido a su capacidad de manejar los datos de forma paralela.
2) Puesto que el FPGA es programable, se necesitó de un software para realizar
dicha acción, mismo que es posible encontrarlo en la página electrónica del
distribuidor del dispositivo, lo que reduce el costo del proyecto ya que no es
necesario pagar por una licencia.
3) Gracias a dispositivos de alta integración como el FPGA es posible que señales
analógicas como la temperatura, iluminación, distancia, presencia, etc. sean
mayormente manejables en su conversión a señales digitales.
4) El lenguaje de programación VHDL, cuenta con estructuras preestablecidas, las
cuales se pueden ocupar como base para la creación de códigos nuevos.
5) Debido a que VHDL es un lenguaje de programación con el que se crean
diseños de circuitos electrónicos, se disminuye el tiempo, el espacio físico y el
costo invertidos en las pruebas que una implementación real con circuitos físicos
podría llevar.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
84
Recomendaciones
Se sabe que el proyecto se limita al manejo de la secuencia de control del ascensor,
así como al propio control de temperatura e iluminación dentro de las cabinas, sin
embargo, en el transcurso de la indagación van surgiendo nuevas interrogantes que a
continuación se recomienda se consideren si se desea continuar trabajando sobre esta
línea de investigación.
1) Se puede crear una tarjeta multicapa, que únicamente contenga al FPGA con
sus puertos de entrada-salida.
2) El mismo código utilizado para la creación del controlador de la presente
investigación puede ser llevado al control de dos o más ascensores, debido al
tipo de programación que se emplea y a la capacidad del dispositivo.
3) Utilizar sensores más cercanos a la realidad industrial, puesto que los manejados
en este trabajo son sólo para fines de demostración y la capacidad de trabajo es
muy baja.
4) La tarjeta SPARTAN 3E puede trabajar vía Wi-Fi, lo que abre paso a la
complementación con el protocolo Zig-Bee, creado para la normatividad de la
domótica.
5) Buscar las maneras que permitan que el controlador sea ampliable y modificable,
de manera que podamos en un futuro ir añadiendo nuevas funcionalidades y
servicios al usuario final. La posibilidad de incorporar nuevos dispositivos
externos (como puedan ser teclados numéricos, pantallas lcd’s, pantallas táctiles,
etc.) lo que permitirá incrementar la funcionalidad y mejorar la interfaz de
usuario.
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
85
Bibliografía
Blanco, P. A. I. (2000). El ascensor. Edit. Edinumen, México. pp 67.
Cruz, D. M. D. etal (s/fecha). Entorno de desarrolloentorno de desarrollo sobre FPGA
para aplicaciones domóticas basadas en tecnología X10. Departamento de Lenguajes y
Sistemas Informáticos y Departamento de Electrónica y Electromagnetismo. Escuela
Superior Técnica de Ingeniería Informática. IMSE-CNM, CSIC- Universidad de Sevilla,
España.
Ferrero, M. F. J. (1999). Descripción de circuitos digitales mediante VHDL. Universidad
de Oviedo.
Gómez, J. E. Desarrollo de sistemas basados en FPGA. Edit. Prentice- Hall. México
2002. pp. 130
Ledo, J. M. Ascensores y montacargas. Edit. CEAC, Michigan 1967. pp 192
López, P. S. Diseño de sistemas digitales con VHDL. Edit. Thomson-Paraninfo,
México 2002. pp 353
Maxfield, C. The design warrior’s guide to FPGA. Edit. Newness, EUA 2004. pp 553
Maxinez, D. VHDL: El arte de programar sistemas digitales. Edit. Compañía Editorial
Continental, México 2002. pp. 352
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
86
Norma Oficial Mexicana (NOM-053-SCFI-200,”Elevadores eléctricos de tracción para
pasajeros y carga- Especificaciones de seguridad y métodos de prueba para equipos
nuevos”). Diario Oficial de la Federación. 26 de mayo de 2000.
Olarte, C. J.C. etal (2007). Desarrollo de un dispositivo digital para la medición de
variables ambientales utilizando un arreglo de compuertas programable en campo.
Scientia et Technica Año XIII, No 34.Universidad Tecnológica de Pereira.
Pardo, C. F. (1997). VHDL Lenguaje para descripción y modelado de circuitos.
Universitat de Valéncia.
Perry, D. VHDL: Programming by Example. Edit. McGraw-Hill Professional, México
2002. pp 476
Porta, G. M. A. etal (2006). Implementación en FPGA de Máquinas de Estados con
VHDL. Encuentro de Investigación en Ingeniería Eléctrica. Instituto Politécnico Nacional.
Centro de Investigación y Desarrollo de Tecnología Digital.
Sáez, D. (). Domótica. Revista del Instituto Tecnológico de la Informática.
Referencias Electrónicas
http://www.ufps.edu.co/materias/uelectro/htdocs/pdf/incuba.pdf 01/12/08
www.diee.unican.es/proyectos/oiane2000.ppt 01/12/08
http://www.otis.it/products/detail/0,1355,CLI15_DSC89_PRD730_PRT45_PST73_RES1
,00.html#spec 01/12/08
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
87
http://www.schindler.es/esp_index/esp_pass.htm 01/12/08
http://www.revdelascensor.com/home.html 01/12/08
http://www.dte.uvigo.es/logica_programable/aplicaciones/trabajos_sdp2_2005/control_c
alefaccion.pdf 02/12/08
http://document.sharpsma.com/files/GP2Y0A21YK-DATA-SHEET.PDF 05/12/08
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
88
Glosario
Término Descripción Bottom-up.
Bottom-up hace énfasis en la programación y pruebas tempranas,
que pueden comenzar tan pronto se ha especificado el primer
módulo. Este enfoque tiene el riesgo de programar cosas sin saber
cómo se van a conectar al resto del sistema, y esta conexión puede
no ser tan fácil como se creyó al comienzo. El rehúso del código es
uno de los mayores beneficios del enfoque de este modelo.
Chip.
Es una pastilla muy delgada en la que se encuentra una enorme
cantidad (del orden de miles o millones) de dispositivos
microelectrónicos interconectados, principalmente diodos y
transistores, además de componentes pasivos como resistencias o
condensadores.
Chipset.
“Conjunto de circuitos integrados”, traducido del inglés a un conjunto
de microchips diseñados para actuar en conjunto, y usualmente
comercializados como una unidad. Se designa circuito integrado
auxiliar al circuito integrado que es periférico a un sistema pero
necesario para el funcionamiento del mismo.
Compuerta.
Es un dispositivo electrónico que es la expresión física de un
operador booleano en la lógica de conmutación. Cada una consiste
en una red de dispositivos interruptores que cumple las condiciones
booleanas para el operador particular. Son esencialmente circuitos
de conmutación integrados en un chip.
Confort.
Es aquello que produce bienestar y comodidades.
Hardware.
Corresponde a todas las partes físicas y tangibles de una
computadora; sus componentes eléctricos, electrónicos,
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
89
electromecánicos y mecánicos.
Infrarrojo.
Es un dispositivo que emite un tipo de radiación electromagnética de
mayor longitud de onda que la luz visible, pero menor que la de las
microondas.
Microcontrolador.
Es un circuito integrado o chip que incluye en su interior las tres
unidades funcionales de una computadora: CPU, Memoria y
Unidades de E/S, es decir, se trata de una computadora completa
en un solo circuito integrado.
Microprocesador.
Es un circuito integrado que contiene algunos o todos los elementos
necesarios para conformar una (o más) "unidad central de
procesamiento".
Netlist.
Es la descripción de la conectividad de un diseño electrónico, es
utilizada en lenguajes de diseño de circuitos.
PLICE Antifuse.
Consiste en un elemento dopado de silicio (con carga positiva), un
dieléctrico (óxido-nitrógeno-óxido) y un lado de polisilicio.
Software Es el conjunto de los programas de cómputo, procedimientos,
reglas, documentación y datos asociados que forman parte de las
operaciones de un sistema de computación.
Static Ram Cells.
Es un tipo de memoria formada por un semiconductor, donde la
palabra “Static” indica que no necesita ser refrescada de manera
periódica.
Top-down El enfoque de este modelo enfatiza la planificación y conocimiento
completo del sistema. Se entiende que la codificación no puede
comenzar hasta que no se haya alcanzado un nivel de detalle
suficiente, al menos en alguna parte del sistema. Esto retrasa las
pruebas de las unidades funcionales del sistema hasta que gran
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
90
parte del diseño se ha completado.
Transistor.
Es un dispositivo electrónico semiconductor que cumple funciones
de amplificador, oscilador, conmutador o rectificador. El término
"transistor" es la contracción en inglés de transfer resistor
("resistencia de transferencia").
Verilog.
Es un lenguaje de descripción de hardware usado para modelar
sistemas electrónicos. El lenguaje, algunas veces llamado Verilog
HDL, soporta el diseño, prueba e implementación de circuitos
analógicos, digitales y de señal mixta a diferentes niveles de
abstracción.
Xilinx.
Es la mayor empresa en investigación y desarrollo de chips
conocidos como field-programmable gate arrays (FPGAs).
Acrónimos.
Descripción Español ASIC Application Specific Integrated Circuit Circuito Integrado para Aplicaciones
Específicas. BJT Bipolar Junction Transistor Transistor de Unión Bipolar CMOS Complementary Metal Oxide
Semiconductor Semiconductor Complementario de óxido Metálico
CPLD Complex Programmable Logic Device EEPROM Electrically-Erasable Programmable
Read-Only Memory Memoria de solo lectura programable y borrable eléctricamente
EPROM Erasable Programmable Read-Only Memory
Memoria de solo lectura programable y borrable
FPGA Field Programmable Gate Array JTAG Joint Test Action LCD Liquid Crystal Display Display de Cristal Líquido NASA National Aeronautics and Space
Administration Administración Nacional de Aeronáutica y del Espacio
PCB Printed Circuit Board Circuito impreso PIC Programmable Integrated Circuit Circuito Integrado Programable
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
91
PROMS Programmable Read-Only Memory Memoria de solo lectura programable
PWM Pulse Width Modulation Modulación por ancho de pulso SRAM Static random access memory Memoria Estática de Acceso
Aleatorio TI Texas Instruments TTL Transistor- Transistor Logic Lógica Transistor-Transistor VHDL Very High Speed Integrated Circuit
Hardware Description Language
VHSIC Very High Speed Integrated Circuit
Abreviaturas.
Descripción
µP Microprocesador A Amperes C Capacitancia (F) CA Corriente Alterna Clk Clock (reloj) E/S Entrada/Salida GHz Gigahertz Hz Hertz IC Corriente de colector KHz Kilohertz mA Miliamperes MHz Megahertz Ns Nanosegundo ºC Grados centígrados PB Planta Baja R Resistencia (Ω) Vcc Voltaje de alimentación
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
92
Anexos
Circuito Integrado LM339
Circuito integrado LM358
Diodo de rápida recuperación (1N914)
Transistor BC548C
Sensor LM35
Sensor Sharp
Tarjeta Spartan 3E
Código realizado en VHDL para la operación de un ascensor
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
93
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
94
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
95
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
96
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
97
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
98
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
99
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
100
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
101
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
102
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
103
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
104
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
105
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
106
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
107
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
108
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
109
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
110
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
111
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
112
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
113
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
114
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
115
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
116
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
117
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
118
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
119
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
120
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
121
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
122
Código realizado en VHDL para la operación de un ascensor
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity lcd is
port(
boton :IN STD_LOGIC_VECTOR(3 DOWNTO 0); --Botones en cada piso
piso :IN STD_LOGIC_VECTOR(3 DOWNTO 0); --Sensores de piso
clk,arranque :IN STD_LOGIC; -- Boton de arranque
presencia,abierto,cerrado :IN STD_LOGIC; --Sensores
presencia_a :IN STD_LOGIC; --Sensor de presencia
alarm :IN STD_LOGIC; --Botón de alarma
temperatura :IN STD_LOGIC; --Sensor de temperatura
d_emergencia :IN STD_LOGIC; -- Boton de detección falla
abrir_m,cerrar_m :IN STD_LOGIC; --Apertura y cierre
paro :IN STD_LOGIC; --Boton de paro
puerta_a,puerta_c,motor_subir,motor_bajar :out std_logic; --Motor y puerta
alarma :out std_logic; -- Luz emergencia
iluminacion :out std_logic; -- Iluminación
ventilador :out std_logic; --Ventilador
);
end lcd;
architecture behavior of lcd is
--Maquina de Estados A1
TYPE estados IS
(inicial,arranque1,parado,paros,cerrando,cerrando1,cerrando2,cerrando3,cerrando4,subir1,subir2,
subir3,subir4,bajar1,bajar2,bajar3,bajar4,abriendo);
SIGNAL presente: estados:=inicial;
TYPE estados2 IS (subiendo,bajando);
SIGNAL direccion: estados2:=subiendo;
SIGNAL bot,bot1,bot2,bot3,bot4 : std_logic_vector(3 downto 0):="0000";
SIGNAL bot11,bot12,bot13,bot14 : std_logic_vector(3 downto 0):="0000";
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
123
SIGNAL bot_ant : std_logic_vector(3 downto 0):="0001";
SIGNAL alarma1: std_logic:='0';
SIGNAL bandera : std_logic:='0';
SIGNAL parar,parar1 : std_logic:='0';
SIGNAL ilu : std_logic:='0';
signal i,i_1 : integer range 0 to 5000000 := 0;
signal i2,i2_1 : integer range 0 to 2000 := 0;
signal i4,i4_1 : integer range 0 to 50000000 :=0;
signal i5 : integer range 0 to 800000 :=0;
signal i7,i8 : integer range 0 to 50000:=0;
signal rp : integer range 0 to 50000:=0;
signal al : integer range 0 to 50000000:=0;
signal al2,al3,al4,al5: integer range 0 to 50000000:=0;
signal al21,al31,al41,al51: integer range 0 to 50000000:=0;
signal ilum, ilum_1: integer range 0 to 2000:=0;
--Reloj1
signal r_princ,seg : std_logic;
begin
--RELOJP1
reloj_p: process(clk)
begin
if clk='1' and clk'event then
if rp=50000 then
rp<=0;
r_princ<='1';
else
rp<=rp+1;
r_princ<='0';
end if;
end if;
end process reloj_p;
--Elevador 1
PROCESS(r_princ)
BEGIN
if r_princ='1' and r_princ 'event then
CASE presente IS
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
124
WHEN inicial=>
IF arranque = '1' then
presente<=arranque1;
END IF;
WHEN arranque1=>
IF piso= "0001" THEN
presente <= abriendo;
display1 <= "00";
END IF;
WHEN parado =>
if i8=30000 or cerrar_m/='0' then
i8<=0;
IF(BANDERA = '1') then
presente<=cerrando;
END IF;
IF ((BOT1/="0000") AND (BOT1/= PISO)) then
presente <= cerrando1;
END IF;
IF((BOT2/="0000") AND (BOT2/= PISO)) then
presente <= cerrando2;
END IF;
IF ((BOT3/="0000") AND (BOT3/= PISO)) then
presente <= cerrando3;
END IF;
IF((BOT4/="0000") AND (BOT4/= PISO)) then
presente <= cerrando4;
END IF;
else
i8<=i8+1;
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
125
end if;
WHEN cerrando=>
if(presencia='1') or (abrir_m='1') or (bot11/="0000") then
presente<=abriendo;
end if;
if(bot12/="0000") or (bot13/="0000") or (bot14/="0000") then
presente<=parado;
end if;
WHEN cerrando1 =>
bot_ant<="0001";
if cerrado = '1' THEN
if(bot1 > piso) and piso/="0000" then
presente <= subir1;
elsif(bot1 < piso) and piso/="0000" then
presente <= bajar1;
elsif piso = "0000" then
presente <= bajar1;
end if;
end if;
WHEN cerrando2 =>
bot_ant<="0010";
if cerrado = '1' THEN
if(bot2 > piso) then
presente <= subir2;
elsif(bot2 < piso) then
presente <= bajar2;
end if;
end if;
WHEN cerrando3 =>
bot_ant<="0100";
if cerrado = '1' THEN
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
126
if(bot3 > piso) then
presente <= subir3;
elsif(bot3 < piso) then
presente <= bajar3;
end if;
end if;
WHEN cerrando4 =>
bot_ant<="1000";
if cerrado = '1' THEN
if(bot4 > piso) then
presente <= subir4;
elsif(bot4 < piso) then
presente <= bajar4;
end if;
end if;
WHEN subir1|bajar1 =>
if(piso = "0100") then display1 <= "10"; end if;
if(piso = "0010") then display1 <= "01"; end if;
IF ((BOT1 = PISO) ) THEN
display1 <= "00";
presente <= abriendo;
end if;
if paro = '1' then
parar<='1';
presente <= paros;
end if;
WHEN subir2|bajar2 =>
if(piso = "0100") then display1 <= "10"; end if;
IF ((BOT2 = PISO) ) THEN
display1 <= "10";
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
127
presente <= abriendo;
end if;
if paro = '1' then
parar<='1';
presente <= paros;
end if;
WHEN subir3|bajar3 =>
if(piso = "0010") then display1 <= "01"; end if;
IF ((BOT3 = PISO)) THEN
display1 <= "01";
presente <= abriendo;
end if;
if paro = '1' then
parar<='1';
presente <= paros;
end if;
WHEN subir4|bajar4 =>
if(piso = "0100") then display1 <= "10"; end if;
if(piso = "0010") then display1 <= "01"; end if;
IF ((BOT4 = PISO)) THEN
display1 <= "11";
presente <= abriendo;
end if;
if paro = '1' then
parar<='1';
presente <= paros;
end if;
WHEN abriendo =>
IF abierto ='1' then
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
128
presente <= parado;
end if;
WHEN paros =>
if paro = '1' and parar = '1' then
parar<='0';
presente <= inicial;
end if;
END CASE;
end if;
END PROCESS;
--Funciones E1
PROCESS(presente)
BEGIN
CASE presente IS
WHEN inicial=>
motor_subir <='0';
motor_bajar <='0';
puerta_a <= '0';
puerta_c <= '0';
WHEN arranque1=>
motor_subir <='0';
motor_bajar <='1';
puerta_a <= '0';
puerta_c <= '0';
WHEN parado|paros=>
motor_subir<='0';
motor_bajar<='0';
puerta_a <= '0';
puerta_c <= '0';
WHEN cerrando|cerrando1|cerrando2|cerrando3|cerrando4=>
motor_subir<='0';
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
129
motor_bajar<='0';
if (presencia ='1') or (abrir_m='1') then
if(abierto = '1') then
puerta_a <= '0';
puerta_c <= '0';
else
puerta_a <= '1';
puerta_c <= '0';
end if;
else
if(cerrado = '1') then
puerta_a <= '0';
puerta_c <= '0';
else
puerta_a <= '0';
puerta_c <= '1';
end if;
end if;
WHEN bajar1|bajar2|bajar3|bajar4 =>
motor_subir <='0';
motor_bajar <='1';
puerta_a<='0';
puerta_c<='0';
WHEN subir1|subir2|subir3|subir4 =>
motor_subir <='1';
motor_bajar <='0';
puerta_a<='0';
puerta_c<='0';
WHEN abriendo =>
motor_subir<='0';
motor_bajar<='0';
if(abierto = '1') then
puerta_a<='0';
puerta_c<='0';
else
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
130
puerta_a<='1';
puerta_c<='0';
end if;
END CASE;
END PROCESS;
--Funciones EspE1
process(r_princ)
begin
if r_princ='1' and r_princ'event then
if presencia_a = '1' then
iluminacion <='1';
ilu <='1';
else
if ilu = '0' then
iluminacion <= '0';
else
if ilum = 2000 then
iluminacion <= '0';
ilu <= '0';
else
ilum <= ilum + 1;
iluminacion <= '1';
end if;
end if;
end if;
if(presencia_a = '1') then
if(temperatura = '1') then
ventilador <= '1';
else
ventilador <= '0';
end if;
end if;
if(alarm = '1' or paro='1') then
alarma1 <= '1';
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
131
end if;
if(d_emergencia = '1') then
alarma1 <='0';
end if;
if(alarma1='1' ') then
if(aux_al='0') then
if(al>=0 and al<500) then
al<=al+1;
alarma<='1';
end if;
if(al=500) then
al<=0;
aux_al<='1';
end if;
end if;
if(aux_al='1') then
if(al>=0 and al<500) then
al<=al+1;
alarma<='0';
end if;
if(al=500) then
al<=0;
aux_al<='0';
end if;
end if;
else
alarma<='0';
end if;
end if;
end process;
--Funciones EE1
PROCESS (r_princ)
begin
if r_princ ='1' and r_princ'event then
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
132
if (presente=parado) or (presente=subir1) or (presente=bajar1) or (presente=subir2) or
(presente=bajar2) or (presente=subir3) or (presente=bajar3) or (presente=subir4) or
(presente=bajar4) or(presente=cerrando) or (presente=cerrando1) or (presente=cerrando2)
or (presente=cerrando3) or (presente=cerrando4) or (presente=abriendo) then
if(boton="0001") then
bot11<=boton;
end if;
if(boton="0010") then
bot12<=boton;
end if;
if(boton="0100") then
bot13<=boton;
end if;
if(boton="1000") then
bot14<=boton;
end if;
end if;
if(presente=inicial) then
bot1<="0000";
bot2<="0000";
bot3<="0000";
bot4<="0000";
bot11<="0000";
bot12<="0000";
bot13<="0000";
bot14<="0000";
end if;
if(presente=parado) then
if(bot_ant="0001") then
bandera<='0';
bot1<="0000";
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
133
bot11<="0000";
--boton_11<="0000";
end if;
if(bot_ant="0010") then
bandera<='0';
bot2<="0000";
bot12<="0000";
--boton_12<="0000";
end if;
if(bot_ant="0100") then
bandera<='0';
bot3<="0000";
bot13<="0000";
--boton_13<="0000";
end if;
if(bot_ant="1000") then
bandera<='0';
bot4<="0000";
bot14<="0000";
--boton_14<="0000";
end if;
end if;
case direccion is
when subiendo=>
if(i7=30000) or (cerrar_m/='0') then
i7<=0;
if( bot11="0000" ) and (bot12="0000") and (bot13="0000") and (bot14="0000") and
(piso="0001") and (incendio1/='1') and (alarma1/='1') then
bandera<='1';
elsif( bot11="0000" ) and (bot12="0000") and (bot13="0000") and (bot14="0000") and
(piso/="0001") and (incendio1/='1') and (alarma1/='1') then
bot1<="0001";
direccion<=subiendo;
elsif(bot12>bot_ant) and (alarma1/='1') then
bot2<=bot12;
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
134
direccion<=subiendo;
elsif(bot13>bot_ant) and (bot_ant="0010") and (incendio1/='1') and (alarma1/='1') then
bot3<=bot13;
direccion<=subiendo;
elsif(bot14>bot_ant) and (bot_ant="0100") and (incendio1/='1') and (alarma1/='1') then
bot4<=bot14;
direccion<=bajando;
elsif((bot11/="0000")or(bot12/="0000")) and ((bot13="0000") and (bot14="0000") and
(bot_ant="0100")) and (incendio1/='1') and (alarma1/='1') then
if((bot12/="0000")) and (bot11="0000") then
bot2<="0010";
direccion<=bajando;
elsif((bot11/="0000")) and (bot12="0000") then
bot1<="0001";
direccion<=subiendo;
elsif((bot12/="0000")) and (bot11/="0000") then
bot2<="0010";
direccion<=bajando;
end if;
elsif((bot11/="0000")) and (bot12="0000") and (bot13="0000") and (bot14="0000") and
(bot_ant="0010") and (incendio1/='1') and (alarma1/='1') then
bot1<="0001";
direccion<=subiendo;
elsif((bot14/="0000") or (bot13/="0000"))and((bot12="0000")and (bot11="0000") and
(bot_ant="0001")) and (incendio1/='1') and (alarma1/='1') then
if(bot14/="0000") and(bot13="0000") then
bot4<="1000";
direccion<=bajando;
elsif(bot13/="0000") and (bot14="0000") then
bot3<="0100";
direccion<=subiendo;
elsif(bot13/="0000") and(bot14/="0000") then
bot3<="0100";
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
135
direccion<=subiendo;
end if;
elsif((bot14/="0000")) and (bot11="0000")and (bot12="0000")and (bot13="0000")and
(bot_ant="0010") and (incendio1/='1') and (alarma1/='1') then
bot4<="1000";
direccion<=bajando;
end if;
if( (alarma1='1')) and (piso/="0001") then
bot1<="0001";
bot2<="0000";
bot3<="0000";
bot4<="0000";
direccion<=subiendo;
end if;
if((incendio1='1') or (alarma1='1')) and (piso="0001") then
bot1<="0000";
bot2<="0000";
bot3<="0000";
bot4<="0000";
end if;
else
i7<=i7+1;
end if;
when bajando=>
if(i7=30000) or (cerrar_m/='0') then
i7<=0;
if( bot11="0000" ) and (bot12="0000") and (bot13="0000") and (bot14="0000") and
(piso="0001") and (incendio1/='1') and (alarma1/='1') then
bandera<='1';
elsif( bot11="0000" ) and (bot12="0000") and (bot13="0000") and (bot14="0000") and
(piso/="0001") and (incendio1/='1') and (alarma1/='1') then
bot1<="0001";
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
136
direccion<=subiendo;
elsif(bot13<bot_ant) and (bot13/="0000") and (incendio1/='1') and (alarma1/='1') then
bot3<=bot13;
direccion<=bajando;
elsif(bot12<bot_ant) and (bot12/="0000") and (bot_ant="0100") and (incendio1/='1') and
(alarma1/='1') then
bot2<=bot12;
direccion<=bajando;
elsif(bot11<bot_ant) and (bot11/="0000") and (bot_ant="0010") and (incendio1/='1') and
(alarma1/='1') then
bot1<=bot11;
direccion<=subiendo;
elsif((bot14/="0000")or(bot13/="0000")) and ((bot11="0000") and (bot12="0000") and
(bot_ant="0010")) and (incendio1/='1') and (alarma1/='1') then
if((bot14/="0000")) and (bot13="0000") then
bot4<="1000";
direccion<=bajando;
elsif((bot13/="0000")) and (bot14="0000") then
bot3<="0100";
direccion<=subiendo;
elsif((bot13/="0000")) and (bot14/="0000") then
bot3<="0100";
direccion<=subiendo;
end if;
elsif((bot14/="0000")) and (bot12="0000") and (bot11="0000") and (bot13="0000") and
(bot_ant="0100") and (incendio1/='1') and (alarma1/='1') then
bot4<="1000";
direccion<=bajando;
elsif((bot11/="0000") or (bot12/="0000"))and((bot13="0000")and (bot14="0000") and
(bot_ant="1000")) and (incendio1/='1') and (alarma1/='1') then
if(bot12/="0000") and(bot11="0000") then
bot2<="0010";
direccion<=bajando;
Instituto Politécnico Nacional
Diseño e implementación del controlador para la operación de un ascensor, empleando VHDL en un FPGA
137
elsif(bot11/="0000") and (bot12="0000") then
bot1<="0001";
direccion<=subiendo;
elsif(bot11/="0000") and(bot12/="0000") then
bot2<="0010";
direccion<=bajando;
end if;
elsif((bot11/="0000")) and (bot14="0000")and (bot12="0000")and (bot13="0000")and
(bot_ant="0100") and (piso/="0001") and (incendio1/='1') and (alarma1/='1') then
bot1<="0001";
direccion<=subiendo;
end if;
if( (alarma1='1')) and (piso/="0001") then
bot1<="0001";
bot2<="0000";
bot3<="0000";
bot4<="0000";
direccion<=subiendo;
end if;
if (alarma1='1')) and (piso="0001") then
bot1<="0000";
bot2<="0000";
bot3<="0000";
bot4<="0000";
end if;
else
i7<=i7+1;
end if;
end case;
end if;
END PROCESS;