142
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 FPGATESIS 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

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE ... 58 11.pdf · 2.1 La maqueta 2.1.1 Los ascensores 2.2 Programación en el lenguaje VHDL 2.2.1 Declaración de entidad ... controlador

  • 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;