Datos autor proyecto:
Alumno: Jonatan Villa Cuadrado
Asignatura: Innovación Docente de la Especialidad de Tecnología
Máster: Máster Universitario en Profesor de Educación Secundaria Obligatoria y Bachillerato, Formación Profesional y Enseñanza de Idiomas
Centro: Universidad de Salamanca
Curso: 2021/2022
Descripción proyecto:
En el proyecto que se va a mostrar a continuación, se puede observar un prototipo simple que imita el comportamiento de las potenciales placas solares a instalar en una planta fotovoltaica. Dichas placas tienen la función de orientarse en función de la dirección desde la cual reciban más cantidad de luz, además de avisar tanto con señales acústicas como visuales de que las placas van a proceder a moverse, evitando así los posibles accidentes laborales de trabajadores u operarios que se encuentren trabajando en la planta solar, mejorando tanto el rendimiento de las placas solares, como la prevención de riesgos laborales.
También se trabajan de forma transversal y se intentan mejorar los siguientes ODS:
Funcionamiento:
En el prototipo que se observará a continuación, se puede ver que está compuesto por tres LDR, los cuales, cada uno tiene una dirección distinta y a través de ellos se mide y compara cual recibe más luz y por lo tanto hacia que dirección deberá girar el servo que mueve la placa solar. Antes de iniciar el giro, se produce una alerta sonora y visual que evitará accidentes laborales. Este funcionamiento se puede observar en el siguiente video.
Video:
Lista de componentes:
Montaje circuito:
A continuación se mostrará el esquema del circuito necesario para realizar este proyecto. Para su realización se ha utilizado la aplicación web de Autodesk, Tinkercad. En primer lugar aparecerá un circuito en donde se pueden observar los componentes con su aspecto real, y seguidamente se mostrará el esquema con la simblogía normalizada.
Código:
// Incluimos la biblioteca del servo con la que podemos controlar su velocidad.
#include <VarSpeedServo.h>
VarSpeedServo Servo2; // Creamos un objeto de servo.
// Pin analogico de entrada para el LDR
int pinLDR1= A0;
int pinLDR2= A1;
int pinLDR3= A2;
// Variable donde se almacena el valor del LDR
int valorLDR1;
int valorLDR2;
int valorLDR3;
// Variable donde se almacena el ángulo del servo motor.
int grados=Servo2.read();
// Variable donde se almacenará el número de bandera.
int bandera;
// Configuración a realizar una sola vez
void setup()
{
// open a serial connection to your computer
Serial.begin(9600);
// attaches the servo on pin 3 to the servo object
Servo2.attach(9);
// Configuramos como salidas los pines donde se conectan los led
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
//
bandera=0;
}
//
void loop()
{
// Guardamos el valor leido del ADC en una variable
// El valor leido por el ADC (voltaje) aumenta de manera directamente proporcional
// con respecto a la luz percibida por el LDR
valorLDR1= analogRead(pinLDR1);
valorLDR2= analogRead(pinLDR2);
valorLDR3= analogRead(pinLDR3);
//
if ((valorLDR1 > valorLDR2) && (valorLDR1 > valorLDR3) && (bandera!=1)){
digitalWrite(5,HIGH);
tone(6, 50, 200);
delay(300);
digitalWrite(6,LOW);
tone(6, 50, 200);
delay(300);
digitalWrite(6,LOW);
tone(6, 50, 200);
delay(2000);
Servo2.write(135, 30, true);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
delay(1000);
bandera=1;
}
//
if ((valorLDR1 < valorLDR2) && (valorLDR2 > valorLDR3) && (bandera!=2)){
digitalWrite(5,HIGH);
tone(6, 50, 200);
delay(300);
digitalWrite(6,LOW);
tone(6, 50, 200);
delay(300);
digitalWrite(6,LOW);
tone(6, 50, 200);
delay(2000);
Servo2.write(90, 30, true);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
delay(1000);
bandera=2;
}
//
if ((valorLDR1 < valorLDR2) && (valorLDR2 < valorLDR3) && (bandera!=3)){
digitalWrite(5,HIGH);
tone(6, 50, 200);
delay(300);
digitalWrite(6,LOW);
tone(6, 50, 200);
delay(300);
digitalWrite(6,LOW);
tone(6, 50, 200);
delay(2000);
Servo2.write(45, 30, true);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
delay(1000);
bandera=3;
}
}
No hay comentarios:
Publicar un comentario