INTEGRANTES
López, Alejandra oc.ude.gobbsu.aimedaca|bzepolam#oc.ude.gobbsu.aimedaca|bzepolam
Perez, Pablo. oc.ude.gobbsu.aimedaca|allidapp#oc.ude.gobbsu.aimedaca|allidapp
Gualteros, Fabian. oc.ude.gobbsu.aimedaca|soretlaugf#oc.ude.gobbsu.aimedaca|soretlaugf
RESUMEN
En el trascurso de este documento se desarrolla el control de un prototipo de un ascensor utilizando un sistema digital a través de una tarjeta FPGA, haciendo uso del lenguaje de descripción de hardware verilog.
INTRODUCCIÓN
Con el fin de aplicar los conocimientos adquiridos durante el curso, se ha decidido realizar el control por medio de Xilinx, usando el lenguaje de descripción de hardware verilog para la maqueta del ascensor.
En este documento se hace una descripción de los pasos que se realizaron para llevar a cabo el control de este prototipo, inconvenientes que fueron solucionados y modificaciones para que el sistema en su totalidad tenga un funcionamiento correcto.
Mediante el lenguaje verilog se diseño una rutina que evaluara constantemente el estado de cada sensor y los tiempos asignados para cada piso con el fin de obtener y simular un sistema totalmente real.
OBJETIVOS
• Implementar el control de un ascensor mediante el lenguaje verilog.
• Efectuar un diagrama de estados del proceso realizado.
MARCO TEÓRICO
¿Cómo funciona un ascensor?
Un ascensor o elevador se trata de un sistema para el transporte vertical diseñado para realizar el movimiento de personas o bienes a alturas distintas. Puede ser utilizado bien sea para bajar o subir en un edificio o una construcción subterránea. Esta conformado con partes mecánicas, electrónicas y eléctricas que funcionan en conjunto para lograr un medio seguro de movilidad. Si fuese considerado un forma de transporte, seria el segundo mas usado luego de el auto.
Son colocados generalmente 2 tipos, el ascensor electromecánico y el ascensor hidráulico, generalmente conocido como aerodinámico.
La cabina es el elemento portante del sistema de ascensores. Esta constituida por 2 partes : el bastidor o chasis y la caja o cabina. En sus lados inferior o superior, según necesidades; es encontrado el sistema de paracaídas, bien sea instantáneo o progresivo. Así este sistema libera unas cuñas contra las guías para detener la cabina en el caso de que descienda a velocidad mayor de la permitida por el limitador de velocidad, imposibilitando que la cabina pueda caer de forma libre aun en la situación de que se rompiesen todos los cables que sostienen la cabina . En los ascensores de hoy en día y según normativa de cada país o región también frena en subida, cuando la cabina sube.
Los grupos tractores para ascensores están constituidos generalmente por un motor acoplado a un reductor de velocidad, en cuyo eje de salida va colocada la polea acanalada que arrastra los cables por medio de adherencia.
El control de los sistemas de ascensores funciona gracias a sistemas electrónicos, destinados a hacer funcionar la dirección de movimiento de la cabina y de realizar la selección de los pisos en los que esta deba pararse.
Hoy en día los controles de ascensores funcionan con microprocesadores electrónicos que con algoritmos de inteligencia artificial establecen la forma de administrar la respuesta a los pedidos de llamadas realizando la coordinación de los distintos equipos para trabajar en conjunto.
Sensor final de carrera
El final de carrera o sensor de contacto (también conocido como "interruptor de límite"), son dispositivos eléctricos, neumáticos o mecánicos situados al final del recorrido o de un elemento móvil, como por ejemplo una cinta transportadora, con el objetivo de enviar señales que puedan modificar el estado de un circuito.
Internamente pueden contener interruptores normalmente abiertos (NA), cerrados (NC) o conmutadores dependiendo de la operación que cumplan al ser accionados, de ahí la gran variedad de finales de carrera que existen en mercado.
Los finales de carrera están fabricados en diferentes materiales tales como metal, plástico o fibra de vidrio.
Funcionamiento
Estos sensores tienen dos tipos de funcionamiento: modo positivo y modo negativo.
En el modo positivo el sensor se activa cuando el elemento a controlar tiene una tarea que hace que el eje se eleve y se conecte con el objeto móvil con el contacto NC (normal cerrado). Cuando el muelle (resorte de presión) se rompe el sensor se queda desconectado.
El modo negativo es la inversa del modo anterior, cuando el objeto controlado tiene un saliente que empuje el eje hacia abajo, forzando el resorte de copa y haciendo que se cierre el circuito.
Tarjeta NEXYS 2
La Nexys-2 es una plataforma para diseño de sistemas digitales, basado en el FPGA Xilinx Spartan 3E. Con memorias SDRAM de 16MB y Flash ROM de 16MB, la Nexys-2 es ideal para procesadores embebidos como el Microblaze™ 32-bit RISC de Xilinx. El puerto USB2 junto a la colección de dispositivos I/O (leds, displays, pulsadores), puertos de datos y conectores de expansión, permiten obtener un amplio rango de diseños, que se pueden completar sin necesidad de componentes adicionales.
DISEÑO ASCENSOR
• Construcción maqueta del ascensor
LIMITACIONES
• Conexiones de circuitos con la FPGA puesto a que no poseemos experiencia, y la posible solución es revisar el datasheet de la FPGA.
• Acoplamiento del programa con la maqueta y la tarjeta nexys.
• Se Realizara el ascensor y su funcionamiento básico, que es subir bajar y enviar las señales de cada final de carrera.
DIAGRAMA DE ESTADO Y DIAGRAMA DE FLUJO
DIAGRAMA RTL ASCENSOR
CÓDIGO
`timescale 1ns / 1ps
module Asensor(b0,b1,b2,b3,act0,clk,act1,finalcarrera0,finalcarrera1,finalcarrera2,finalcarrera3);
input wire [1:0]b0,b1,b2,b3;
input clk;
input wire [1:0]finalcarrera0,finalcarrera1,finalcarrera2,finalcarrera3;
output reg [1:0]act0,act1;
//output act0,act1;
reg [1:0]piso0=0;
reg [1:0]piso1=0;
reg [1:0]piso2=0;
reg [1:0]piso3=0;
always@(posedge clk)begin
/////////// asignacion de pisos ////////////////////////////////////////
if(b0==1)begin
piso0=1;
end
else if (b0==0)begin
piso0=0;
end
if(b1==1)begin
piso1=1;
end
else if (b1==0)begin
piso1=0;
end
if(b2==1)begin
piso2=1;
end
else if (b2==0)begin
piso2=0;
end
if(b3==1)begin
piso3=1;
end
else if (b3==0)begin
piso3=0;
end
///// Fin de asignacion de pisos
///// incio de acumulador ////////
//// del piso 1 a cualquier otro piso///////////////////////
if ((piso0==1)&&(piso1==1))begin
act0=1;
act1=0;
if(finalcarrera0==1)begin
act0=1;
act1=0;
end
if(finalcarrera1==1)begin
act0=0;
act1=0;
piso0=0;
piso1=1;
end
end
if ((piso0==1)&&(piso2==1))begin
act0=1;
act1=0;
if(finalcarrera0==1)begin
act0=1;
act1=0;
end
if(finalcarrera1==1)begin
act0=1;
act1=0;
end
if(finalcarrera2==1)begin
act0=0;
act1=0;
piso0=0;
piso2=1;
end
end
if ((piso0==1)&&(piso3==1))begin
act0=1;
act1=0;
if(finalcarrera0==1)begin
act0=1;
act1=0;
end
if(finalcarrera1==1)begin
act0=1;
act1=0;
end
if(finalcarrera2==1)begin
act0=1;
act1=0;
end
if(finalcarrera3==1)begin
act0=0;
act1=0;
piso0=0;
piso3=1;
end
end
//// Fin del primer piso a cualquiero otro piso/////////////////////////
//// del piso 2 a cualquier otro piso///////////////////////
if ((piso1==1)&&(piso2==1))begin
act0=1;
act1=0;
if(finalcarrera1==1)begin
act0=1;
act1=0;
end
if(finalcarrera2==1)begin
act0=0;
act1=0;
piso2=1;
piso1=0;
end
end
if ((piso1==1)&&(piso3==1))begin
act0=1;
act1=0;
if(finalcarrera1==1)begin
act0=1;
act1=0;
end
if(finalcarrera2==1)begin
act0=1;
act1=0;
end
if(finalcarrera3==1)begin
act0=0;
act1=0;
piso1=0;
piso3=1;
end
end
if ((piso1==1)&&(piso0==1))begin
act0=0;
act1=1;
if(finalcarrera1==1)begin
act0=0;
act1=1;
end
if(finalcarrera0==1)begin
act0=0;
act1=0;
piso1=0;
piso0=1;
end
end
//// Fin del segundo piso a cualquiero otro piso/////////////////////////
//// del piso 3 a cualquier otro piso///////////////////////
if ((piso2==1)&&(piso0==1))begin
act0=0;
act1=1;
if(finalcarrera2==1)begin
act0=0;
act1=1;
end
if(finalcarrera1==1)begin
act0=0;
act1=1;
end
if(finalcarrera0==1)begin
act0=0;
act1=0;
piso2=1;
piso0=0;
end
end
if ((piso2==1)&&(piso3==1))begin
act0=1;
act1=0;
if(finalcarrera2==1)begin
act0=1;
act1=0;
end
if(finalcarrera3==1)begin
act0=0;
act1=0;
piso3=1;
piso2=0;
end
end
if ((piso2==1)&&(piso1==1))begin
act0=0;
act1=1;
if(finalcarrera2==1)begin
act0=0;
act1=1;
end
if(finalcarrera1==1)begin
act0=0;
act1=0;
piso1=1;
piso2=1;
end
end
//// Fin del tercer piso a cualquiero otro piso/////////////////////////
//// del piso 4 a cualquier otro piso///////////////////////
if ((piso3==1)&&(piso0==1))begin
act0=0;
act1=1;
if(finalcarrera3==1)begin
act0=0;
act1=1;
end
if(finalcarrera2==1)begin
act0=0;
act1=1;
end
if(finalcarrera1==1)begin
act0=0;
act1=1;
end
if(finalcarrera0==1)begin
act0=0;
act1=0;
piso3=0;
piso0=1;
end
end
if ((piso3==1)&&(piso2==1))begin
act0=0;
act1=1;
if(finalcarrera3==1)begin
act0=1;
act1=0;
end
if(finalcarrera2==1)begin
act0=0;
act1=0;
piso3=0;
piso2=1;
end
end
if ((piso3==1)&&(piso1==1))begin
act0=0;
act1=1;
if(finalcarrera3==1)begin
act0=0;
act1=1;
end
if(finalcarrera2==1)begin
act0=0;
act1=1;
end
if(finalcarrera1==1)begin
act0=0;
act1=0;
piso1=1;
piso2=1;
end
end
//// Fin del cuarto piso a cualquiero otro piso/////////////////////////
//// Fin de acumulador /////////
end
endmodule
REFERENCIAS
[1] Tomas, Floyd. Fundamentos de Sistemas Digitales, Pearson. 9 Edición, Capitulo 7, pag, 407-436.
[2] Profesor Rodrigo Aya, Sistemas Combinacionales y sistemas secuenciales, Universidad Técnica Federico Santa María. Capítulo 4. Pdf. Valparaíso, 1 semestre 2006.