Túnel de Lavado Grupo 16




PRÁCTICA SISTEMAS EMPOTRADOS Y DE TIEMPO REAL:
TÚNEL DE LAVADO

PEDRO HOLGUERA ROMÁN                        ADE + ING. INFORMÁTICA
ALEJANDRO GARCIA-CARO NOMBELA      ADE + ING. INFORMÁTICA

 



ÍNDICE
1.      
Introducción…………………………………………………….…………………
Pág. 2
2.      
Esquema Hardware
– Software………………….…………………………………..  Pág. 3,4,5
3.      
Componentes y
Precios…………………………..………………………………..  Pág.6
4.      
Problemas y
soluciones……………………………..…………………………….   Pág.7
5.      
Trabajo de cada
miembro del grupo…………………………..…………………….   Pág.8
6.      
Código Fuente…………………………………………………………………….   Pág.9,10,11



           
1. INTRODUCCIÓN
Nuestro proyecto consiste en una carretera que lleva a un
túnel de lavado con parking.
La primera parte del proyecto consiste en una carretera con
alumbrado, para ello hemos metido unos Leds que funcionan como farolas y
sensores, que hacen enceder los Leds. Le hemos puesto una iniciación
progresiva, por la cual cuando pase el coche estén encendidos completamente, es
decir, cuando el coche pasa por el sensor y se acerca al Led va aumentando la
intensidad luminosa, y cuando el coche se va alejando, la intensidad luminosa
va disminuyendo.
La siguiente parte consiste en un interruptor para dar
comienzo al lavado. Hemos utilizado un interruptor debido a que no queríamos
realizar un proyecto repetitivo, con únicamente sensores. Hemos añadido un
semáforo para comprobar si el túnel está ocupado o libre. Además, tiene una
condición de entrada, que consiste en que si el túnel está ocupado, por más que
pulses al interruptor de entrada no se abrirá la puerta ni el semáforo cambiará.
 También nuestro proyecto incluye un motorreductor
casero,  realizado con 3 ruedas de
madera, haciendo que nuestra puerta suba a una velocidad moderada.
Cuando el coche entra en nuestro túnel de lavado, con un el
interruptor las turbinas se moverán comenzando a limpiar el coche. No hemos
querido meter agua para el lavado, por los posibles problemas con la
electricidad. Al término, habrá que pulsar otro interruptor de salida, que
abrirá la puerta y cambiará la condición de entrada al túnel a libre, poniéndose
el semáforo a verde para la entrada del siguiente coche.
Nuestro proyecto acaba con un parking, con Leds verdes
iluminados para informar que la plaza está libre, apagándose los Leds con la
ocupación de esa plaza. Esto ocurre mediante una fotorresistencia LDR.
2.  ESQUEMA
HARDWARE –  SOFTWARE

1.      Camino al túnel de lavado conectado por
Leds
         
Software:
o  
Entradas:
o  
Salidas:
§ 
Pin5, Pin13, Pin3…
         
Hardware:
o  
Componentes:
§ 
Sensor
§ 
Leds blancos (6): farolas.
2.      Apertura y cierre de las puertas
         
Software:
o  
Entradas:
§ 
Interruptor Pin4
o  
Salidas:
§  Pin 8, Pin 9, Pin 7, Pin 6, Pin 12,
Pin 13
         
Hardware:
o  
Componentes:
§ 
Interruptor
§ 
Semáforo de Leds
§ 
Motor DC
§ 
Motorreductor casero
3.      Iniciación del lavado
–      Software:
o  
Entradas:
o  
Salidas:
§ 
Motores DC
         
Hardware:
o  
Componentes:
§ 
Motores DC
4.      Parking
–      Software:
o  
Entradas:
o  
Salidas:
§ 
Leds
         
Hardware:
o  
Componentes:
§ 
Fotorresistencias LDR
§ 
Leds
1.      Camino al túnel de lavado conectado por
Leds:
Aumento de los Leds en el camino
         
Software:
o  
ledPin1 = 5; // pin PWM para el LED1
o  
ledPin2 = 13; // pin PWM para el LED2
o  
ledPin3 = 3; // pin PWM para el LED3

2.      Apertura y cierre de las puertas
         
Software:
o  
Entradas:
§ 
Interruptor Pin4
o  
Salidas:
§  subeMotorP:
Pin 8;                 // +V
§  subeMotorN:  Pin 9;               // -GND
§  bajaMotorP:  Pin 7                  // +V
§  bajaMotorN:
Pin 6;                 // -GND
§  ledSemaforoRojo:
Pin 12;
§  ledSemáforoVerde:
Pin 13;

3.      Iniciación del lavado
–      Software:
o  
Entradas:
§ 
Interruptor
o  
Salidas:
§ 
Motores
4.      Parking
–      Software:
o  
Entradas:
o  
Salidas:
§ 
Leds
         
Hardware:
o  
Componentes:
§ 
Fotorresistencias LDR
§ 
Leds
1.      Camino al túnel de lavado conectado por
Leds:
         
Pin conectado directamente al diodo Led y luego
a tierra.

2.      Apertura y cierre de las puertas:
o   Pin
6 = Baja el motor Negativo
o   Pin
7 = Baja el motor Positivo
o   Pin
8 = Sube el motor Positivo
o   Pin
9 = Sube el motor Negativo

                                Motorreductor casero
3.      Iniciación del lavado con interruptor:

3. COMPONENTES Y PRECIOS



4. PROBLEMAS Y SOLUCIONES
El primer problema que se nos planteó, fue la dificultad que
tuvimos para la subida del código al arduino. Empezamos con una prueba, un
ejemplo para que un led parpadease (Ejemplos Blink), para comprobar que todo
nos funcionaba correctamente. Probamos varios ejemplos sencillos y seguía sin
poder subirse al arduino. Nos daba el siguiente problema:

Preguntamos a más compañeros a ver si les pasaban lo mismo,
porque no sabíamos si era fallo del programa o del arduino. Nos dejaron su
arduino y nos dimos cuenta de que el nuestro tenía algún fallo y no nos dejaba
subir código. Al final, el profesor nos cambió el arduino.
Otra dificultad que tuvimos fue la iniciación al elaborar
nuestro propio código en arduino. El código nos compilaba correctamente, pero
nos costó que los circuitos hiciesen exactamente todo lo que necesitábamos para
nuestro túnel de lavado. Con la utilización de Leds no fue especialmente
costoso, pero con los motores para el cambio de polaridad para la apertura y el
cierra de las puertas fue realmente difícil.
El arduino nos daba problemas en los valores de entrada de
los interruptores. Me explico mejor. Programábamos que según nos viniese un
HIGH de un pin conectado, hiciese un código implementado. Sin dar al
interruptor, numerosas veces hacía el código del valor en LOW. Como era un
bucle, recibía la mayoría de veces un HIGH, pero de vez en cuando recibía un
LOW y nos hacía el código que no debía.
Teníamos numerosas ideas para añadir al proyecto, pero con
las limitaciones de los pins en el arduino no pudimos llevar todas a cabo. Como
por ejemplo poner un sensor antes del funcionamiento del lavado, poner los leds
de salida del túnel incrementando su intensidad para aumentar su iluminación
según pasase el coche, una pantalla para que pusiese los sitios libres en el
parking y algunas más.



5. TRABAJO DE CADA MIEMBRO
El trabajo fue realizado en su totalidad por ambos miembros
del grupo. Pero cómo en todos los grupos a alguien se le da mejor una cosa que
a la otra, por lo que Alejandro García-Caro se ha centrado más en la elaboración
del túnel de lavado, la pintura de la madera, el corte. Elaboró también el
código en los motores, en los que consiguió la idea final para el correcto
funcionamiento de los motores, consiguiendo invertir la polaridad de estos y
controlando la intensidad. Pedro Holguera se centró más en los circuitos, la
programación y en su elaboración para la consecución de lo que el programa
necesitaba. Las medidas y la organización de la maqueta fueron realizadas en
consenso, igual que su elaboración.  Cada
vez que teníamos que comprar componentes íbamos los dos. La elaboración del
vídeo ha sido más de Alejandro y la elaboración del Power Point de Pedro.

6. CÓDIGO FUENTE
//variables de nuestro
alumbrado inicial
int ledPin1 = 5; // pin PWM
para el LED1
int ledPin2 = 13; // pin
PWM para el LED2
int ledPin3 = 3; // pin PWM
para el LED3
boolean encenderLed;
int 
MAXDIODO = 15;
int 
INIDIODO = 0;
//variables de nuestra
apertura de puerta
int subeMotorP = 8;                // +V
int subeMotorN = 9;                // -GND
int bajaMotorP = 7;                  // +V
int bajaMotorN = 6;                  // -GND
int libre = 4;
const int MAX = 150;
const int
tiempoCambioSentido = 3000;
const int tiempoMotorSubida
= 2000;
const int tiempoMotorBajada
= 2000; 
//
int interruptor1 = 10;
int ledRojoSemaforo = 12;
int ledVerdeSemaforo = 11;
void setup(){
  //asignacion de nuestro alumbrado
   pinMode(encenderLed, INPUT);
  //asignacion de la apertura de puerta
   pinMode(subeMotorP, OUTPUT);     
  
pinMode(subeMotorN, OUTPUT);
  
pinMode(bajaMotorP, OUTPUT); 
  
pinMode(bajaMotorN, OUTPUT);
   pinMode(libre,INPUT);
//entrada del interruptor, Led verde es LOW y Led rojo es HIGH
  }
void loop()
  {
    //codigo de nuestro alumbrado inicial
   delay(2000); //tiempo de espera de llegada
del coche 2 segundos
   if (encenderLed = LOW){  //sensor infrarrojos emisor-receptor, si nota
una interferencia entre emisor receptor se pone a LOW y comienza nuestro
alumbrado  
    for (int i=INIDIODO; i<=MAXDIODO+10;
i++) // el valor de i asciende
      {
        if (i<=MAXDIODO)                             analogWrite(ledPin1, i); //
se escribe el valor de I en el PIN de salida del LED1
        if
((i>=INIDIODO+5)&&(i<=MAXDIODO+5))        analogWrite(ledPin2, i-5); // se
escribe el valor de I en el PIN de salida del LED2
        if (i>=INIDIODO+10)                          analogWrite(ledPin3,
i-10); // se escribe el valor de I en el PIN de salida del LED3
        delay(500); // pauses for 300ms
      }
    for (int i=MAXDIODO; i>=INIDIODO-10;
i–) // el valor de I desciendei
      {
        if (i>=INIDIODO)                             
analogWrite(ledPin1, i); // se escribe el valor de I en el PIN de salida
del LED1
        if
((i<=MAXDIODO-5)&&(i>=INIDIODO-5))         analogWrite(ledPin2, i+5); // se
escribe el valor de I en el PIN de salida del LED2
        if
((i<=MAXDIODO-10)&&(i>=INIDIODO-10))       analogWrite(ledPin3, i+10); // se
escribe el valor de I en el PIN de salida del LED3
        delay(500); // pauses for 300ms
      }
   }
   delay(3000);//tiempo de espera para dar al
interruptor para la apertura de la puerta
   //codigo de nuestra apertura de puerta
   if (digitalRead(libre) == HIGH) { //El Led
está en verde y se le da al interruptor y comienza el proceso
     digitalWrite(ledVerdeSemaforo, LOW);
     digitalWrite(ledRojoSemaforo, HIGH);
     delay(100);
    
    
analogWrite(bajaMotorP, 0);  //
guarantee initial state
     analogWrite(bajaMotorN,
0);  // guarantee initial state
     delay(tiempoCambioSentido);
    
     // Sube la puerta
     analogWrite(subeMotorP, MAX); 
     analogWrite(subeMotorN, MAX);
     delay(tiempoMotorSubida);
    
     // Apagado
     analogWrite(subeMotorP, 0);
     analogWrite(subeMotorN, 0);
     delay(tiempoCambioSentido);
    
     // Baja la puerta
     analogWrite(bajaMotorP, MAX-10);
     analogWrite(bajaMotorN, MAX-10);
     delay(tiempoMotorBajada);
    
     // Apagado
     analogWrite(bajaMotorP, 0);
     analogWrite(bajaMotorN, 0); 
     //delay(tiempoCambioSentido);
   
  }
  else {
    digitalWrite(ledVerdeSemaforo, HIGH);
     digitalWrite(ledRojoSemaforo, LOW);
     delay(100);
  }

  }

También te podría gustar...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *