Ascensor
Universidaddesan%20buenaventura20130927.jpg

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.

estructura.gif

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.

$T2eC16F,!)0E9s37FbL2BQ1M,U1pow~~60_35.JPG

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.

NEXYS2high2.jpg

DISEÑO ASCENSOR

Ascensor.jpg

• Construcción maqueta del ascensor

ioTGdL1tvbtCdsQmre91cGMaaLgodJUN11f3IVC68svHFNaQMA=w385-h683-no

gqfENxOLGRWAiaWsqT6MR1I8dTa8AQWQaSC8Gi6alRP2G5v4rw=w385-h683-no

oM98o3DLWzInVUrAeUltJpnnYhM6jwtdZeLJ_V-eaQqbOd_6bg=w960-h540-no

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

qO2os7K-Nxpxyf7cqKKqajTsjKUvjEM_mRm5BFDJP-C49NABdQ=w805-h534-no

eujpue0IlHvoxhNqXiLzsUJTGtO4sZL4z4EA8G3jhwJmZ1PvV_Z9hODJtmkVCalUkXp6WbUVEMXRLqbygNUrdZSD-SFwV9pK6miloS6WQlg_JDbkT6fd73BgMlZ9pBwxiJ2Q3h8OuhUBTDji94pFJ4LsuppLVfP_yqqnXVOJKS-Wb7KNWi0TFXBfw4QQtBDoxGWoeNgz8XxUIT-uyFEWjXHy_HonoguTzDSQuRBYMJW4-x7oHjtSVyhUHhySv2qnxosoPMCmMZJTtTAwgQo3meqPSO8ITtZT2q5JjR8g4cdsyTPQPjtGNfHU_MbEoR62ZpY8ZT3oCw1VJjRgZYjLKUlzfMHcMp7BCHthQ6ApuGDbGPixURe9UqNEVYlclgnSrSNmMeLPBbjUe5xLLE1eWR5-SsUnX5Ke6PeSVwfAKElOTXMtmUDADhMDmhrqOLYu4xgI45X0Z0k-K_dh--UGkkeywXU1dC2LB2_LI2eVT3ftgt0qfq9B9ZP_3jt6666bddJR5ZZvP6ynU2id5fyr23vv9Gd7knUtHo1CVTXHOIQ=w942-h891-no

DIAGRAMA RTL ASCENSOR

BfrZ28bGWXlM6IfaZnCKXNKPMh8u6AKj5DMWyHGNThZUs20tVNajpneFV7FSxtK3inUdhqRWXtniAlkIn8JBNordgnav5iXZD93NtUSx-KAm4fCrGim_xF6RecnacaOJtnPSLg1f7uw5gzc3Klf4ygDHIUOYUZGAluqoAdPhyelxKk7AZ6ByQ5fDAwoVZxLi1YLrmqTAqlOhj9IfMOq9CkeMLTKZh9mKRqlJWt0pjZ9LmEctoOs-Sc80lUP3dxy49gYwIZ5DRl1iuS1X5gerHnyaj7FFmnSnAL4-DXUnkBADzVk1LxEPHKfRmU8yFrbxU0jDOlkMFyZORD0O1DdLtOvaioOzbxo88iIFh8E05vjlX2cnwvmp0jOtP6XC53bLXE2YdGz4IMVYTHi78EomGxsCswBMfnFohn-I5B0fZkwl40SEj2vsASqXX3i9SSDOtis28ocLiBpJpr-HGOWnyagQ243ouhdSmGOSe0SidvsqyhXbpITqvUQ-Aelq7NGyUX2ebie7tXs5NOyrHagGZWoRX-xK9ih4MnVNZGo0WnI=w605-h527-no

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.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License