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.


jueves, 9 de febrero de 2017

PROYECTO ARDUINO: TIOVIVO





DATOS

Universidad de Salamanca (España).

Máster de Profesor de Educación Secundaria Obligatoria y Bachillerato, Formación Profesional y Enseñanza de Idiomas, especialidad en Tecnología.

Asignatura: Innovación docente en la especialidad de Tecnología.

Curso: 2016 / 2017


COMPONENTES

Jorge Vega
Rafael Pinto
Carlos Álvarez


INTRODUCCIÓN

El enunciado de la Actividad determinaba que, utilizando la Placa Arduino, teníamos que diseñar un proyecto en el que utilizáramos, al menos, dos componentes de entrada y dos de salida. También deberíamos programar el sistema para que, a partir de unas órdenes dadas, respondiera de forma predeterminada.

Es entonces cuando nos decantamos por construir un Tiovivo, ya que deberíamos utilizar un motor como componente principal. Al principio queríamos añadir luces al mismo Tiovivo, pero enseguida nos dimos cuenta que la rotación de éste podría suponer un problema. Ahí es cuando decidimos colocar esta especie de "entrada" al parque temático.

Cuando ya tuvimos claro cuales serían los componentes de salida, nos centramos en los de entrada, y, después de unos minutos de análisis, decidimos colocar dos switches (uno para on/off y el otro para cambiar sentido de rotación) y un sensor lumínico.


VÍDEO DEL PROYECTO




FUNCIONAMIENTO DEL PROYECTO

El sistema es sencillo y lógico:

Por un lado el Tiovivo, hecho de palos de helado sujetos por varillas de madera, con un motor en la base. Hemos pegado en la parte inferior del Tiovivo un trozo de madera circular con un hueco en el centro, de forma estrellada, que combina perfectamente con la forma estrellada que tiene el motor.
El dispositivo se acciona y se para mediante un interruptor o switch, que podéis ver como está conectado tanto con la placa Arduino como con el motor en el apartado "esquema del circuito". También hemos añadido otro switch para cambiar el sentido de rotación del motor.

Para conseguir que el motor modere su velocidad sin utilizar a un reductor mecánico, hemos insertado dos "delay" en la programación. (Podréis ver la programación entera en el apartado "código empleado").


if (motorEnabled == 1) {

    analogWrite(enablePin, motorSpeed); 

    delay(35);

    analogWrite(enablePin, 0);

    delay(100);

    analogWrite(enablePin, motorSpeed);

  } else { 

    analogWrite(enablePin, 0);

  }



Por el otro lado, la puerta de entrada al parque temático, que la hemos construido con los mismos palos de helado empleados en el Tiovivo. Hay gran cantidad de cables debido a que los 5v que genera la placa Arduino solo alimenta 2 led dispuestos en serie como máximo por cada puerto: después de hacer varias pruebas vimos que 3 y más de 3 le costaba bastante. Estas luces led se encienden cuando el sensor lumínico detecta poca cantidad de luz; para ello debemos baremarlo durante los 5 primeros segundo tapando, por un lado, el receptor y enfocando, por otro lado, con la linterna del móvil (el objetivo de esto es que reciba el dato de luz mínima y máxima que va a recibir).




CÓDIGO EMPLEADO



ESQUEMA DEL CIRCUITO