ECO-PLACA
La decisión de hacer una placa solar ha sido porque consideramos que la energía renovable es el futuro, siendo esta accesible puesto que no tiene una instalación muy compleja, silenciosa ya que no produce contaminación acústica y limpia debido a que no emite CO2 a la atmósfera.
Es una forma de cuidar el medio ambiente y por ello, todos los materiales que hemos empleado en la realización del proyecto han sido reciclados.
Componentes empleados
- 1 Placa arduino Uno
- 1 Placa solar de 2.5W 5V/500mAh
- 2 Servo-motores de 9g
- 1 Motor de 3-6v
- 1 Aspas para el motor
- 4 Resistencias de 10k
- 4 LDR
- 2 Pletinas planas
- 2 Pletinas en L
- 1 Protoboard
- 1 Interruptor
- 1 Cartón
- Cables
Software
#include <Servo.h>
Servo motorv;
Servo motorh;
int limiteMotor1 = 170; //Declaramos el limite superiro y el limite inferior de los motores para que no generen daños en la estructura
int limiteMotor2 = 10;
int posicionV = 0; //Declaramos una variable que determinará la posicion en la que se encuentra cada motor
int posicionH = 0;
void setup() {
motorv.attach(9);
motorh.attach(8);
Serial.begin(9600);
}
void loop() {
int LuzA= analogRead(A0); //Guardamos en variables la lectura que hace cada LDR
int LuzB= analogRead(A1);
int LuzD= analogRead(A2);
int LuzI= analogRead(A3);
Serial.println(LuzA);
Serial.println(LuzB);
Serial.println(LuzD);
Serial.println(LuzI);
if(LuzA<LuzB){ //Si el nivel de luz del LDR de arriba es mayor que el de abajo
motorv.write(posicionV++); //Se aumente 1 grado la posicion del motor que se puede en el eje Y
if(posicionV >=limiteMotor1){ //Comprobamos que la posición no sobrepase el limite que le hemos puesto para que no genere daños en la estructura
posicionV=limiteMotor1; //Mantenemos la posicion en el limite
}
delay(10);
}else if(LuzB<LuzA){ //Si el nivel de luz del LDR de abajo es mayor que el de arriba
motorv.write(posicionV--); //Se disminuye 1 grado la posicion del motor que se mueve en el eje Y
if(posicionV <=limiteMotor2){ //Comprobamos que la posición no sea menor que el limite que le hemos puesto para que no genere daños en la estructura
posicionV=limiteMotor2; //Mantenemos la posicion en el limite
}
delay(10);
}else{
motorv.write(posicionV);
}
if(LuzI<LuzD){ //Si el nivel de luz del LDR de la derecha es mayor que el de la izquierda
motorh.write(posicionH ++); //Se aumente 1 grado la posicion del motor que se puede en el eje X
if(posicionH >=limiteMotor1){ //Comprobamos que la posición no sobrepase el limite que le hemos puesto para que no genere daños en la estructura
posicionH=limiteMotor1; //Mantenemos la posicion en el limite
}
delay(10);
}else if(LuzD<LuzI){ //Si el nivel de luz del LDR de la izquierda es mayor que el de la derecha
motorh.write(posicionH--); //Se disminuye 1 grado la posicion del motor que se mueve en el eje X
if(posicionH <=limiteMotor2){ //Comprobamos que la posición no sea menor que el limite que le hemos puesto para que no genere daños en la estructura
posicionH=limiteMotor2; //Mantenemos la posicion en el limite
}
delay(10);
}else{
motorh.write(posicionH);
}
delay(100); //Pequeño delay para reiniciar el proceso
}
Hardware
Problemas encontrados
- Problemas de giro en los servos debido a la protoboard,su solución es utilizar otro modelo placa.
- Intensidad eléctrica aportada por la placa solar insuficiente en interiores aunque exista luz artificial,el motor necesita de unos 40 mA constantemente, la placa en sol directo puede dar hasta 100, pero en interior con sol no directo da un máximo de 15 miliamperios
- Problema con el peso y estabilidad, nos sorprendió que el peso de la placa fuera superior al peso manejado por los servomotores, pues en los materiales de referencia el otros usuarios no encontramos ese problema.
La configuración fue un punto delicado porque tenía que haber un equilibrio entre el número de pletinas y los servomotores puesto que si utilizamos más pletinas para estabilizar la estructura significaba añadir más peso a los motores.
Posibles soluciones no implementadas, utilización de un tipo distinto de motores con más potencia, una placa solar más ligera o una distribución de servomotores distinta(1 motor mas en los ejes horizontal y vertical),pero es más sencillo usar un motor más potente, a la vez que no añades más código innecesario.
Memoria
https://docs.google.com/document/d/1j6qoOtq5z5Ei4Bul3CMLNR2KUsca3ulRtYIQ0iy0Byg/edit?usp=sharing