sábado, 14 de marzo de 2015

Control de Ascensor.

                                        MEMORIA

                              ASCENSOR



1. OBJETO
El  objeto  de  este  proyecto  es  el  de  construir  desde  cero,  la  maqueta  de  un  ascensor  con  los sensores  y  accionamientos  necesarios  para  simular  el  comportamiento  real  de  un  ascensor controlándose por un controlador Arduino.

2. ANTECEDENTES
Este proyecto tiene como antecedente, la realización de un proyecto final de ciclo superior de “Desarrollo de Productos Electrónicos“.

3. JUSTIFICACIÓN
Demostrar el funcionamiento electrónico de un ascensor con las características y especificaciones exigidas por el profesorado.

4. DATOS DE PARTIDA
Los datos de partida simplemente fueron la idea de demostrar el funcionamiento electrónico y la programación para controlar un ascensor formado por una fuente de alimentación(B1), un Arduino One(B2) como controlador, un módulo de control de sensores(B3), un módulo de control de pulsadores(B4), un L293D como puente en H para la alimentación del motor y controlado con el Arduino(B5)  y un motor de 5V encargado del accionamiento mecánico del ascensor(B6).








B1: Fuente de alimentación  






Se trata de una fuente de alimentación lineal de 5Vcc capaz de entregar hasta un 1A de intensidad con el debido disipador térmico en el regulador de tensión (7805).



Consta de un transformador de 220V a 12V, un puente de diodos compuesto por cuatro diodos 1N4007, un condensador electrolítico de 1000uF, seguido de otro condensador 330nF de lenteja, seguidamente está el regulador de tensión 7805 (entrega 5V de corriente continua, el encapsulado en el que usualmente se utiliza es el TO220, aunque también se lo encuentra en encapsulados pequeños de montaje superficial y en encapsulados grandes y metálicos como el TO3), a la salida del regulador seguidamente esta el ultimo condensador de 100nF cerámico, de hay salen ya los 5 voltios de corriente continua, yo he añadido una resistencia de 330 ohmios con un led para saber cuando está conectada la placa.


B2: Controlador Arduino One

Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.

El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de entrada/salida.Los microcontroladores más usados son el Atmega168Atmega328Atmega1280ATmega8 por su sencillez y bajo coste que permiten el desarrollo de múltiples diseños. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring y el cargador de arranque que es ejecutado en la placa.














B3: Módulo de sensores












Este módulo se encarga de hacer funcionar unos sensores CNY70, generando como salida una señal analógica que será leída por el controlador y según una calibración convertida a digital.

Cada conector corresponde a cada CNY70 de cada planta del ascensor. Los CNY70 son optotransistores sensibles al reflejo del material que tengan delante, ajustado a una distancia indicada en su datasheet.




B4: Módulo de botones de llamada












Este módulo se encarga del control de los botones de llamada. Los conectores corresponden a los cinco pulsadores exteriores montados en la maqueta. Se basan en lógica negativa.



B5: L293D . Control del motor











El L293D es un circuito integrado constituido por transistores y amplificadores operacionales que funciona como un puente en “H”, es decir que tiene dos circuitos en uno.
Las patillas IN1 e IN2 se encargan de dar polaridad al motor, es decir, elegir el sentido de giro. La patilla EN1 actúa como enable, para activar o desactivar. OUT1 y OUT2 son las salidas para el motor de CC de 5V.
La alimentación del integrado se realiza por la patilla VSS, en este caso es de 5Vcc. La alimentación para el motor es por la patilla VS. Con esta construcción no tenemos problemas de alimentar el motor a otra tensión para conseguir más potencia.
Añadiéndole unos Led´s para saber el sentido de giro del motor y unos diodos 1N5819 que ya van integrados dentro, pero su instalación fuera no afecta para nada y si consigue mayor número de componentes, para poder cumplir los 60 componentes que son los mínimos que los cuales tiene que contar la placa, según las exigencias del proyecto.


B6: Motor DC




Se puede decir que es la salida de todo el circuito, es el accionamiento directo del ascensor. El motor enrollado a una polea reductora donde se encuentra el cable enrollado, que baja hasta el ascensor.
Se utiliza el PWM para adecuar su velocidad.


Programa Arduino


//Definicion sensores
int sensor0=A0;
int sensor1=A1;
int sensor2=A2;
int sensor3=A3;
int sensor4=A4;
//Definicion botones de llamada
int boton0=2;
int boton1=3;
int boton2=4;
int boton3=5;
int boton4=6;
//Definicion motor
int e1=11,e2=10,enable=9;


void setup () {
Serial.begin(9600);
pinMode(sensor0,INPUT);
pinMode(sensor1,INPUT);
pinMode(sensor2,INPUT);
pinMode(sensor3,INPUT);
pinMode(sensor4,INPUT);
pinMode(boton0,INPUT);
pinMode(boton1,INPUT);
pinMode(boton2,INPUT);
pinMode(boton3,INPUT);
pinMode(boton4,INPUT);
pinMode(e1,OUTPUT);
pinMode(e2,OUTPUT);
pinMode(enable,OUTPUT); 
//Al conectar mueve el ascensor a la planta baja como punto de
  ai();
}


void loop () {
int s0, s1, s2, s3, s4, b0, b1, b2, b3, b4;
int pwmsubir=140,pwmbajar=65;
int posicion=0, posicion2;


while (1)

lecturasensores (&s0, &s1, &s2, &s3, &s4);
    lecturabotones (&b0, &b1, &b2, &b3, &b4);


//Programa boton planta baja
if (b0==0) {
      posicion2=0;
if (posicion>posicion2) {
while (s0!=1) {
          lecturasensores (&s0, &s1, &s2, &s3, &s4);
          bajar (pwmbajar);
delay(5);
        }
        parada ();
        posicion=0;
      }
    }


//Programa boton planta 1
if (b1==0) {
      posicion2=1;
if (posicion>posicion2) {
while (s1!=1) {
          lecturasensores (&s0, &s1, &s2, &s3, &s4);
          bajar (pwmbajar);
delay(5);
        }
        parada ();
        posicion=1;
      }
if (posicion<posicion2) {
while (s1!=1) {
          lecturasensores (&s0, &s1, &s2, &s3, &s4);
          subir (pwmsubir);
delay(5);
        }
        parada ();
        posicion=1;
      }
    }


//Programa boton planta 2

if (b2==0) {
      posicion2=2;
if (posicion>posicion2) {
while (s2!=1) {
          lecturasensores (&s0, &s1, &s2, &s3, &s4);
          bajar (pwmbajar);
delay(5);
        }
        parada ();
        posicion=2;
      }
if (posicion<posicion2) {
while (s2!=1) {
          lecturasensores (&s0, &s1, &s2, &s3, &s4);
          subir (pwmsubir);
delay(5);
        }
        parada ();
        posicion=2;
      }
    }


//Programa boton planta 3
if (b3==0) {
      posicion2=3;
if (posicion>posicion2) {
while (s3!=1) {
          lecturasensores (&s0, &s1, &s2, &s3, &s4);
          bajar (pwmbajar);
delay(5);
        }
        parada ();
        posicion=3;
      }
if (posicion<posicion2) {
while (s3!=1) {
          lecturasensores (&s0, &s1, &s2, &s3, &s4);
          subir (pwmsubir);
delay(5);
        }
        parada ();


        posicion=3;
      }
    }


//Programa boton planta 4
if (b4==0) {
      posicion2=4;
if (posicion<posicion2) {
while (s4!=1) {
          lecturasensores (&s0, &s1, &s2, &s3, &s4);
          subir (pwmsubir);
delay(5);
        }
        parada ();
        posicion=4;
      }
    }


delay(200);
  }
}
void ai () {


int s0,s1,s2,s3,s4;


  lecturasensores (&s0, &s1, &s2, &s3, &s4);
delay(5);


while (s0==0) {
    bajar (80);
    lecturasensores (&s0, &s1, &s2, &s3, &s4);
delay(15);
  }


  parada ();


}


void lecturasensores (int *s0,int *s1,int *s2,int *s3,int *s4) {


int e0, e1, e2, e3, e4, filtro=200;


//lectura y muestra de datos de los sensores
  e0=analogRead(sensor0);
delay(5);
  e1=analogRead(sensor1);
delay(5);
  e2=analogRead(sensor2);
delay(5);
  e3=analogRead(sensor3);
delay(5);
  e4=analogRead(sensor4);
delay(5);


//Filtrado de datos analogicos a digitales


if  (e0<filtro)
    *s0=1;
else
    *s0=0;
if  (e1<filtro)
    *s1=1;
else
    *s1=0;
if  (e2<filtro)
    *s2=1;
else
    *s2=0;
if  (e3<filtro)
    *s3=1;
else
    *s3=0;
if  (e4<filtro)
    *s4=1;
else
    *s4=0;


}


void lecturabotones (int *b0,int *b1,int *b2,int *b3,int *b4) {


//Lectura digital de resultado de pulsadores de llamada





Diagrama de flujo Ascensor






GanntProject Ascensor






Aplicación Bluetooth Ascensor






























Lista de componentes



FUENTE DE ALIMENTACIÓN

TRANSFORMADOR 220V/6V 1ª
CONDENSADORES:
                                   1000uF electrolítico
                                   330nF cerámico
                                   100nF lenteja
4 DIODOS  D1N4007
7805
RESISTENCIA 330 Ohmios
DIODO LED ROJO
PORTAFUSIBLE
FUSIBLE 1ª
10 TERMINALES MACHO-HEMBRA


CONTROL MOTOR ( L293D )

4 DIODOS 1N5819
2 DIODOS LED (ROJO Y VERDE)
RESISTENCIAS SMD:
                                    150 Ohmios
                                    100 Ohmios
7 TERMINALES MACHO-HEMBRA


ARDUINO

ATMEGA 328P
CONDENSADORES:
                                  22nF (2)
                                  10nF (1)
RESISTENCIA 10K
PULSADOR 2 PATILLAS
CRISTAL DE CUARZO 16KHz
ZOCALO DE 28 PINES
36 TERMINALES MACHO-HEMBRA


SENSORES


RESISTENCIAS:
                           SMD 47K (5)
                           180 Ohmios ( 5 )
26 TERMINALES MACHO-HEMBRA


PULSADORES


17 TERMINALES MACHO-HEMBRA
RESISTENCIAS 10K







                                    FOTOS PRINCIPALES ASCENSOR






3 comentarios:

  1. Como puedo contactarme. intente cargar el programa pero me tira error

    ResponderEliminar
  2. Como están. Probé cargar el programa del ascensor, pero me tira error (Programa_Ascensor_1:3: error: expected initializer before 'CNY70').
    Me podrían ayudar con este problema.
    Gracias.

    ResponderEliminar