Mostrando entradas con la etiqueta innovación. Mostrar todas las entradas
Mostrando entradas con la etiqueta innovación. Mostrar todas las entradas

martes, 16 de febrero de 2021

Sistema de Frenado


SISTEMA DE FRENADO

DESCRIPCIÓN

El proyecto consiste en la programación de un prototipo de sistema de frenado para vehículos utilizando Arduino UNO y otros componentes descritos más adelante.

El prototipo se basa en un servo que adoptará diferentes posiciones definidas en el código dependiendo de la distancia a la que esté el obstáculo, este dato lo proporcionará un sensor de ultrasonidos. Además se han incorporado estímulos lumínicos (LEDs de colores que brillarán en función de la distancia siguiendo el código de color estandarizado) y auditivos (mediante un zumbador que sonará con mayor frecuencia cuando la distancia al obstáculo sea crítica).



CONTEXTO

4º de ESO tanto en la rama de académicas como de aplicadas.

  • Académicas:
    • Bloque 1: Electrónica Aplicada.
    • Bloque 2: Control y Robótica.
  • Aplicadas:
    • Bloque 3: Electrónica.
    • Bloque 4: Control y Robótica.

ESQUEMA


COMPONENTES

  • Arduino UNO
  • Protoboard
  • Sensor de Ultrasonidos
  • Servo
  • Buzzer Pasivo
  • 3 x LEDs
    • LED verde
    • LED amarillo
    • LED rojo
  • 3 x Resistencias 220 Ω
  • Cables

IMÁGENES



DESCARGAS

CÓDIGO COMENTADO

PROGRAMA

CREADOR/A

Ester Martín Rodríguez

Asignatura: Innovación Docente en la Especialidad de Tecnología

Máster Universitario en Profesor de Educación Secundaria Obligatoria, Bachillerato, Formación Profesional y Enseñanza de Idiomas (Universidad de Salamanca)



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, 6 de marzo de 2014

CASA INTELIGENTE REALIZADA CON ARDUINO

INTRODUCCIÓN

El presente proyecto tiene por objeto la realización de una vivienda inteligente utilizando Arduino. El proyecto consiste en una vivienda con sensor de luz y de temperatura además de un display que va indicando la situación de la vivienda cada cierto tiempo.
Este proyecto está pensado para realizarlo en clase en grupos de alumnos de 3º de E.S.O.

FUNCIONAMIENTO

La vivienda que creamos detecta, mediante sensores la luz y la temperatura a la que se encuentra, a través de la placa colocada en el tejado. Si tapamos el foto sensor (como si fuera de noche) las luces de la vivienda se encienden. La luz de la calefacción aparece encendida, pero si apretamos el sensor de temperatura para aumentar la misma (como si hiciera calor en el exterior) esta se apagaría.

El display nos marca en todo momento la temperatura a la que se encuentra, alternando con la información acerca de las luces (si están apagadas o encendidas).

MARCO LEGISLATIVO

Según el Real Decreto 52/2007, de 17 de mayo, por el que se estable el currículo de Educación Secundaria Obligatoria en la Comunidad de Castilla y León, con este proyecto se cumplen los siguientes objetivos, contenidos y criterios de evaluación:

Objetivos:

1. Valorar y utilizar el proyecto técnico como instrumento de resolución ordenada de necesidades.
2. Elaborar un plan de trabajo y realizar las operaciones técnicas previstas con criterios de seguridad y valorando las condiciones del entorno.
5. Emplear el ordenador como herramienta de trabajo con el objeto de comunicar, localizar y manejar información de diversas fuentes. Conocer y aplicar la terminología y procedimientos básicos de los programas de edición de texto y presentaciones.
13. Utilizar adecuadamente las magnitudes básicas eléctricas.
14. Valorar los efectos de la energía eléctrica y su capacidad de conversión en otras manifestaciones energéticas.
15. Identificar y utilizar correctamente los elementos fundamentales de un circuito eléctrico de corriente continua y comprender su función dentro de él.
20. Valorar de forma critica el impacto del uso de la energía eléctrica sobre el medio ambiente.

Contenidos:

Bloque 5. Electricidad y electrónica.
Circuito eléctrico de corriente continua: magnitudes eléctricas básicas. Simbología. Ley de Ohm. Circuito en serie, paralelo, mixto.
Corriente continua y corriente alterna.
Montajes eléctricos sencillos: circuitos mixtos. Inversor del sentido de giro.
Maquinas eléctricas básicas: dinamos, motores y alternadores. Generación y transformación de la corriente eléctrica.
Introducción a la electrónica básica. Componentes pasivos: condensadores y resistencias. Componentes activos: diodos y transistores. Descripción de componentes y montajes básicos.
Análisis de circuitos eléctricos y electrónicos característicos mediante programas de simulación.

Criterios de evaluación:

1. Realizar un proyecto técnico, analizando el contexto, proponiendo soluciones alternativas y desarrollando la más adecuada.
3. Realizar las operaciones técnicas previstas en el proyecto técnico incorporando criterios de economía, sostenibilidad y seguridad, valorando las condiciones del entorno de trabajo.
4. Utilizar las tecnologías de la información y la comunicación para elaborar, desarrollar, publicar y difundir un proyecto técnico.
5. Instalar programas y realizar tareas básicas de mantenimiento informático. Utilizar y compartir recursos en redes locales.
12. Diseñar, simular y realizar montajes de circuitos eléctricos sencillos en corriente continua, empleando pilas, interruptores, resistencias, bombillas, motores y electroimanes, como respuesta a un fin predeterminado.
13. Describir las partes y el funcionamiento de las maquinas eléctricas básicas.
14. Describir y utilizar el electromagnetismo en aplicaciones tecnológicas sencillas.
15. Utilizar correctamente las magnitudes eléctricas básicas, sus instrumentos de medida y su simbología.
17. Emplear Internet como medio activo de comunicación intergrupal y publicación de información.
24. Identificar automatismos en sistemas técnicos cotidianos y describir la función que realizan.
26. Identificar los elementos básicos de un sistema de control.

ELEMENTOS UTILIZADOS

Arduino Uno

Arduino es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. Se creó para artistas, diseñadores, aficionados y cualquiera interesado en crear entornos u objetos interactivos.

Protoboard

Resistencias





LEDs



Foto resistor


Sensor temperatura


Display

FOTOGRAFÍAS DE LA CASA INTELIGENTE




CÓDIGO UTILIZADO

/*Proyecto Arduino Casa Inteligente
Laura Lavandera Mayo
Elena Vega Rodríguez
Paula Salicio Geanini

Elementos que vamos a utilizar:
1 TMP36 sensor de temperatura
3 LEDs amarillos
1 LED rojo
1 fotorresistor (sensor de luz)
1 Display
4 resistencias de 220 ohmios
1 resistencia de 10000 ohmios
1 resistencia variable de 10000 ohmios

*/
#include<LiquidCrystal.h> //incluimos libreria LiquidCrystal para poder usar el display
LiquidCrystal lcd(12,11,9,8,7,6); /*iniciamos la libreria con los numeros de los pines que va utilizar el display*/
const int sensorTemperatura=A0; /*establecemos una constante entera, el sensor de temperatura va a la entrada analogica A0*/
const int sensorLuz=A1; /*establecemos una constante entera, el sensor de luz va a la entrada analogica A1*/

const int pin1=2; //los led van a la salida digitales 2,3,4 y 5
const int pin2=3;
const int pin3=4;
const int pinChimenea=5;

float valorTemperatura=0; //establecemos varialbes de tipo float para hacer calculos
float voltaje=0;
float temperatura=0;
float valorSensorLuz=0;
float valorLuz=0;
float sensorLow=1023;
float sensorHigh=0;

void setup() //funcion setup, establecemos las condiciones iniciales
{
  Serial.begin(9600); //Establecemos conexion con el puerto Serial
  while(millis()<5000)  //hacemos una calibración del sensor de la luz para su correcto funcionamiento
   valorSensorLuz=analogRead(sensorLuz); //la variable valorSensorLuz recibe el valor leido por el sensor de la luz
   if(valorSensorLuz>sensorHigh) //si el valor obtenido es mayor que 0
   {
   sensorHigh=valorSensorLuz; //establecemos el valor de la variable sensorHigh como el valor leido por el sensor
   }
   if(valorSensorLuz<sensorLow) //si el valor leido es menor que 1023
   {
     sensorLow=valorSensorLuz; //establecemos el valor de la variable sensorLow como el valor leido por el sensor
   }
  }
 
  lcd.begin(16,2);  //establecemos que el display va a tener 16 caracteres y 2 filas para escribir
  lcd.clear();  //limpiamos el contenido que pueda tener el display
  lcd.setCursor(0,0);  //establecemos la primera linea donde empezariamos a escribir
  lcd.print("Proyecto ");  //escribimos en la primera linea la cadena de texto Proyecto
  lcd.setCursor(0,1);  //establecemos la segundo linea donde empezariamos a escribir
  lcd.print("Casa inteligente");  //escribimos en la segunda linea una cadena de texto
  delay(3000); /*Establecemos un retraso de 3 segundos para que se pueda leer bien el texto
              del display*/
}

void loop() //funcion loop, que corresponde con un bucle infinito
{
  int valorTemperatura=analogRead(sensorTemperatura); //la variable entera valorTemperatura lee el valor del sensor de tempeatura
  float voltaje=(valorTemperatura/1024.0)*5.0; //hacemos una conversion para convertir el valor leido a grados celsius
  float temperatura=(voltaje-0.5)*100;
 
  lcd.clear();//limpiamos el contenido que pueda tener el display
  lcd.setCursor(0,0);//establecemos la primera linea donde empezariamos a escribir
  lcd.print("La temperatura");//escribimos en la primera linea
  lcd.setCursor(0,1);//establecemos la segunda linea donde empezariamos a escribir
  lcd.print("es ");//escribimos en la segunda linea una cadena de texto
  int tempeInt=(int)temperatura; //hacemos un casting para convertir un float a entero, para facilitar la lectura de la temperatura
  lcd.print(tempeInt,DEC); //escribimos en la la temperatura en base decimal
  lcd.print(" C"); //escribimos una C que representa los grados celsius
  delay(5000); //establecemos un retraso de 5 segundos para que se pueda leer bien el display
  Serial.print("Temperatura: "); //Tambien escribimos en el puerto serial la tempeatura
  Serial.print(temperatura);
  Serial.println();
 
  valorSensorLuz=analogRead(sensorLuz); //la variable valorSensorLuz recoge el valor leido por el sensor de la luz
  Serial.print("valor luz: "); //Escribimos en el puerto serial el valor leido
  Serial.print(valorSensorLuz);
  Serial.println();
  if(valorSensorLuz<800.0) //si el valor obtenido por el sensor de la luz es menor a 800, es decir hay poca luz
  {
     for(int i=2;i<=4;i++)
    {
       digitalWrite(i,HIGH); //encedemos los leds del techo
    }
 
    lcd.clear();//limpiamos el contenido que pueda tener el display
    lcd.setCursor(0,0);//establecemos la primera linea donde empezariamos a escribir
    lcd.print("Luces de casa");//Escribimos en el display que se han encendido las luces de la casa
    lcd.setCursor(0,1);
    lcd.print("encendidas ");
    delay(1000); //Establecemos un retraso de 1 segundo para que podamos leer el display
  }
  else //si el valor de la luz es mayor o igual a 800
  {
    for(int i=2;i<=4;i++)
    {
       digitalWrite(i,LOW); //los leds del techo permaneceran apagados
    }
 
    lcd.clear();//limpiamos el contenido que pueda tener el display
    lcd.setCursor(0,0);//establecemos la primera linea donde empezariamos a escribir
    lcd.print("Luces de casa");//Escribimos en el display que se han apagado las luces de la casa
    lcd.setCursor(0,1);
    lcd.print("apagadas ");
   delay(1000); //Establecemos un retraso de 1 segundo para que podamos leer el display 
  }
   
   
  if(temperatura<=24.0) //Si la temperatura es menor a 24
  {
      digitalWrite(5, HIGH); //encedemos el led de la chimenea
      Serial.println("Temperatura menor a 24"); //imprimimos por el puerto serial que la temperatura es menor a 24
      delay(1000);
      lcd.clear(); //limpiamos el contenido que pueda tener el display
      lcd.setCursor(0,0);//establecemos la primera linea donde empezariamos a escribir
      lcd.print("La temperatura");//Escribimos en el display la temperatura que hay ahora
      lcd.setCursor(0,1);
      lcd.print("ahora es ");
      int tempeInt=(int)temperatura; //hacemos un casting para convertir un float a entero, para facilitar la lectura de la temperatura
      lcd.print(tempeInt,DEC); //escribimos en la la temperatura en base decimal
      //lcd.print(temperatura,DEC);
      lcd.print(" C"); //escribimos una C que representa los grados celsius
      delay(5000); //retraso de 5 segundos para leer bien el display
  }
  else //si la temperatura es mayor a 24ºC
  {
          digitalWrite(5, LOW); //apagamos el led de la chimenea y mostramos la temperatura actual
          delay(1000);
          lcd.clear();
          lcd.setCursor(0,0);
          lcd.print("La temperatura");
          lcd.setCursor(0,1);
          lcd.print("ahora es ");
          int tempeInt=(int)temperatura;
          lcd.print(tempeInt,DEC);
          Serial.println("Temperatura mayor a 24");
          delay(1000);
   
  }
 
  delay(100);
 
}

 ESQUEMA DEL CIRCUITO REALIZADO CON FRITZING