domingo, 12 de febrero de 2017

PROYECTO PUENTE LEVADIZO CONTROLADO CON ARDUINO.


FINALIDAD:                                                                                    


Consiste en diseñar y montar un puente levadizo, controlado con Arduino. El proyecto consta de modo automático y modo manual. En el primer caso el puente se elevará automáticamente cuando detecte al barco, y descenderá cuando haya pasado. En el segundo caso el puente será manejado a través de dos interruptores.

Este proyecto es adecuado para realizarlo con alumnos de 3º o 4º de la E.S.O. dentro de la asignatura de Tecnología. 

REALIZADO POR:                                                                         

Daniel Gil Fuentes.
Raquel Sastre Velasco.

Dentro de la asignatura: Innovación docente en la especialidad de tecnología. Incluida en el Máster de Profesor de Educación Secundaria Obligatoria y Bachillerato, Formación Profesional y Enseñanzas de Idiomas. Curso 2016-17.

¿QUÉ NECESITAMOS?                                                                

Materiales electrónicos: 

   Materiales para realizar la maqueta:



MONTANDO EL CIRCUITO EN LA PROTOBOARD:             

Empezaremos montando todos los componentes electrónicos en la protoboard según se muestra en la imagen siguiente realizada con fritzing.

Puente levadizo.

Conecta el servo motor, el cable rojo a 5V, el cable negro a tierra y el cable amarillo al pin 9. Debes conectar también el condensador en paralelo al servo motor.

Modo automático.

Conecta los fotosensores a 5V y a los pin A1 y A2 respectivamente. Y conecta según la imagen las resistencias de 10 kiloohmnios.

Semáforo.

Conecta el positivo de los led a los pin 2,3 y 4, (teniendo en cuenta que el positivo es el conector más largo), y en el negativo conecta la resistencia de 220 ohmnios.

Modo manual.

Por último conecta los interruptores a los pin 10 y 11 respectivamente. Y conecta según la imagen las resistencias de 10 kiloohmnios.




ESQUEMA ELÉCTRICO:                                                              




CÓDIGO:                                                                                         

El siguiente código debes subirlo a la placa de Arduino a través de la IDE de Arduino:

 
int switchstate1 = 0;
int switchstate2 = 0;

//sensores de luz.
// variable to hold sensor value
int sensorValue1;
int sensorValue2;
// variable to calibrate low value
int sensorLow = 1023;
// variable to calibrate high value
int sensorHigh = 0;
// LED pin

//servomotor
// include the servo library
#include <Servo.h>
//servomotor
Servo myServo;  // create a servo object

void setup() {
// put your setup code here, to run once:

  // declare the LED pins as outputs
  pinMode(2, OUTPUT); //Verde
  pinMode(3, OUTPUT); //Rojo
  pinMode(4, OUTPUT); //Amarillo

  pinMode(10, INPUT);
  pinMode(11, INPUT);
 
  //Sensores luz
  // Make the LED pin an output and turn it on
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);
 
  myServo.attach(9); // attaches the servo on pin 9 to the servo object
  Serial.begin(9600); // open a serial connection to your computer

  // calibrate for the first five seconds after program runs
  while (millis() < 5000) {
    // record the maximum sensor value
    sensorValue1 = analogRead(A1);
    sensorValue2 = analogRead(A2);
    if (sensorValue1 > sensorHigh) {
      sensorHigh = sensorValue1;
      }
    if (sensorValue2 > sensorHigh) {
      sensorHigh = sensorValue2;
      }
    // record the minimum sensor value
    if (sensorValue1 < sensorLow) {
      sensorLow = sensorValue1;
      }
    if (sensorValue2 < sensorLow) {
      sensorLow = sensorValue2;
      }
    Serial.print("sensorHigh: ");
    Serial.println(sensorHigh);
    Serial.print("sensorLow: ");
    Serial.println(sensorLow);
  }
  // turn the LED off, signaling the end of the calibration period
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}

void loop() {
// put your main code here, to run repeatedly:

 {
 //Sensores.
 //read the input from A0 and store it in a variable
 sensorValue1 = analogRead(A1);
 //read the input from A0 and store it in a variable
 sensorValue2 = analogRead(A2);
 }
 switchstate1 = digitalRead(11);
 switchstate2 = digitalRead(10);

    if (switchstate1==LOW) {
 
      if (sensorValue1<700) {
        // set the servo position
        digitalWrite(4, HIGH); // turn the yellow LED on pin 4 on
        digitalWrite(2, LOW); // turn the green LED on pin 2 off
        delay(3000);
        myServo.write(60);
        digitalWrite(3, HIGH); // turn the red LED on pin 3 on
        }
     if (sensorValue2<700) {
        // set the servo position
        delay(3000);
        myServo.write(0);
        digitalWrite(4, HIGH); // turn the yellow LED on pin 4 on
        digitalWrite(3, LOW); // turn the red LED on pin 3 off
  
        delay(3000);
        digitalWrite(4, LOW); // turn the yellow LED on pin 4 off
        digitalWrite(2, HIGH); // turn the green LED on pin 2 on
        delay(15);
        }
     }
     else {
        if (switchstate2==HIGH){
        myServo.write(60);
        digitalWrite(3, HIGH); // turn the red LED on pin 3 on
        digitalWrite(2, LOW); // turn the green LED on pin 2 off
        delay(15);
        }
        else {
        myServo.write(0);
        digitalWrite(4, HIGH); // turn the yellow LED on pin 4 on
        digitalWrite(3, LOW); // turn the red LED on pin 3 off
        delay(3000);
        digitalWrite(4, LOW); // turn the yellow LED on pin 4 off
        digitalWrite(2, HIGH); // turn the green LED on pin 2 on
        delay(15);
        }
     }
}

FUNCIONAMIENTO:                                                                     

El siguiente vídeo muestra como funciona el puente en modo automático y en modo manual.


Modo automático:

Cuando el arduino detecta al barco a través del foto sensor 1, envía una señal al semáforo y este cambia primero a ámbar y después a rojo. A continuación se eleva el puente. Porteriormente  el barco atraviesa el canal y sólo cuando el barco llega al foto sensor 2, se envía la orden al semáforo y este cambia primero a ámbar y después a verde. A continuación el puente desciende para que puedan circular los vehículos.

Modo manual: 

En este modo el puente se eleva mediante dos interruptores; al pulsar el primero se acciona el modo manual, y el segundo levanta y baja el puente.


No hay comentarios:

Publicar un comentario