Universidad
Autónoma Del Caribe
Buscador de posicionamiento solar y
sensor de intensidad
Ingeniería
Mecatrónica
German Lozano Mantilla
Jairo Orduz Rodriguez
Materia:
Sensores
Y Actuadores
Profesor:
Ing.
Mauricio Barrios
01/11/2013
Barranquilla/Atlantico
Introducción
En
esta práctica vamos a implementar el uso de celdas fotovoltaicas, servomotor y
la tarjeta Arduino, esto con el fin de lograr construir un seguidor solar e
identificar la intensidad que refleja la luz del ambiente en el que se
encuentre.
Objetivos
Por
medio del flujo luminoso que llega a unas fotoceldas estas variando la
resistencia se caracteriza para poder predecir o dar un estado aproximado del cambio
climático en el sector donde se esté sensando, y a su vez lograr capturar los
rayos de luz directamente haciendo que el dispositivo se mueva buscando la
mejor posición de donde provienen los rayos de luz.
Conceptos Básicos
Flujo Luminoso
Es la medida de la potencia luminosa
percibida su unidad de medida por el Sistema Internacional de Unidades es el lumen
(lm).
1 lm = cd*sr = lx*m^2
Donde
Cd=Candela
Lx=Flujo luminoso
Células Fotovoltaicas
En general las células fotovoltaicas reciben
la energía solar y son capaces de convertir esa luz en un potencial eléctrico. Estas celdas dependen del efecto
fotovoltaico que consiste en la emisión de electrones por un material cuando se
hace incidir sobre él una radiación electromagnética. El primer fabricante fue
Willoughby Smith a mitad del siglo XIX, transformo parcialmente la energía
luminosa en energía eléctrica.
Principio de funcionamiento
Los fotones del rayo de luz tienen
una energía característica determinada por la frecuencia de la luz. En el proceso de
fotoemisión, si un electrón absorbe la energía de un fotón y éste
último tiene más energía que la función
trabajo, el electrón es arrancado del material. Si la energía del fotón es
demasiado baja, el electrón no puede escapar de la superficie del material.
Aumentar la intensidad del haz no cambia la energía de los
fotones constituyentes, solo cambia el número de fotones. En consecuencia, la
energía de los electrones emitidos no depende de la intensidad de la luz, sino
de la energía de los fotones.
Los electrones pueden absorber energía de los fotones cuando
son irradiados, pero siguiendo un principio de "todo o nada". Toda la
energía de un fotón debe ser absorbida y utilizada para liberar un electrón de
un enlace atómico, o si no la
energía es re-emitida. Si la energía del fotón es absorbida, una parte libera
al electrón del átomo y el resto contribuye a la energía cinética del electrón como una partícula libre.
Servomotor
Un servomotor (también
llamado servo)
es un dispositivo similar a un motor de corriente continua que
tiene la capacidad de ubicarse en cualquier posición dentro de su rango de
operación, y mantenerse estable en dicha posición
Un servomotor es un motor eléctrico que consta con la
capacidad de ser controlado, tanto en velocidad como en posición.
Los servos se utilizan frecuentemente en sistemas de
radio control y en robótica, pero su uso no está limitado a
éstos. Es posible modificar un servomotor para obtener un motor de corriente
continua que, si bien ya no tiene la capacidad de control del servo, conserva
la fuerza, velocidad y baja inercia que caracteriza a estos dispositivos.
Materiales a usar:
Celdas
Fotovoltaicas (x3)
Servomotor
Madera balso
Display LCD 2x16
Arduino Mega 2560
R3
Resistencias 330Ω
(x3)
Potenciómetro 1kΩ
Cables de conexión
Diagrama de Conexión
Codigo Arduino
/* Este Programa Está Diseñado Para
Seguir La Intensidad Lumínica Del Ambiente
Usando Servomotor y Celdas
Fotovoltaicas, Además Para Dar Porcentaje De Valores
Relacionados Con La Intensidad Q
Reciban Las Celdas*/
// Germán Lozano && Jairo
Orduz
// Universidad Autónoma Del Caribe
// Materia: Sensores y Actuadores
#include <Servo.h> // Incluye La Libreria Del
Servomotor
#include
<LiquidCrystal.h> // Incluye La
Libreria Del LCD 2x16
//pines de las fotoceldas
int fotoDerecha=3;
int fotoCentro=5;
int fotoIzquierda=4;
int Lumin; // Variable Donde Se Va a Guardar El
Procentaje De Luz
//Salida analoga PWM Servo
int motor=6; // Le damos nombre al pin 6 del servo
int angulo=90; // Le damos nombre al angulo inicial de 90
grados del servo
Servo myservo; // declaramos un nombre para
identificar mejor el servomotor
LiquidCrystal lcd(12,11,5,4,3,2); //
declaramos los pines a usar del LCD
void setup(){
lcd.begin(16, 2);
Serial.begin(9600);
//inicializamos a una velocidad de 9600 baudios
myservo.attach(motor); // pin de
conexion del servo
myservo.write(angulo); //
inicializamos el servo
delay(200); // Retardo de 200
milisegundos antes de iniciar la siguiente lectura
lcd.clear(); // limpia el lcd
lcd.setCursor(0,0); // ubica la
escritura del LCD en la fila 1 columna 1
lcd.print("Universidad");
lcd.setCursor(0,1);
lcd.print("Autonoma");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Sensor De");
lcd.setCursor(0,1);
lcd.print("Luminosidad");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("German Lozano");
lcd.setCursor(0,1);
lcd.print("Jairo
Orduz");
delay(1000);
}
void loop(){
/* Le damos
nombre a las variables analogicas de entrada
de las fotoceldas
*/
int val1=analogRead(fotoDerecha);
int val2=analogRead(fotoCentro);
int val3=analogRead(fotoIzquierda);
Lumin = val2;
Lumin = map(Lumin, 0, 1023, 0, 100); /* Realizamos un mapeo entre el
cambio de voltaje que
generan las fotoceldas y el
porcentaje de 0 a 100*/
if(Lumin>=1&&Lumin<=20){
Lluvia();
}
if(Lumin>=21&&Lumin<=40){
ProbableLluvia();
}
if(Lumin>=41&&Lumin<=60){
Nublado();
}
if(Lumin>=61&&Lumin<=80){
Despejado();
}
if(Lumin>=81&&Lumin<=100){
Soleado();
}
if(val3>val2&&val3>val1){
rotaDerecha();
}
else
if(val1>val2&&val1>val3){
rotaIzquierda();
}
}
void rotaDerecha(){
if(angulo<180){
angulo++;
myservo.write(angulo);
delay(15);
}
}
void rotaIzquierda(){
if(angulo>0){
angulo--;
myservo.write(angulo);
delay(15);
}
}
void
Lluvia(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(Lumin);
lcd.print("% De Luz");
lcd.setCursor(0,1);
lcd.print("Lluvioso");
delay(15);
}
void ProbableLluvia(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(Lumin);
lcd.print("% De Luz");
lcd.setCursor(0,1);
lcd.print("Probable Lluvia");
delay(15);
}
void Nublado(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(Lumin);
lcd.print("% De Luz");
lcd.setCursor(0,1);
lcd.print("Cielo Nublado");
delay(15);
}
void Despejado(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(Lumin);
lcd.print("% De Luz");
lcd.setCursor(0,1);
lcd.print("Cielo Despejado");
delay(15);
}
void Soleado(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(Lumin);
lcd.print("% De Luz");
lcd.setCursor(0,1);
lcd.print("Cielo Soleado");
delay(15);
}
Conclusión
Para concluir, este documento ya
sabiendo todos los conocimientos acerca de cómo funcionan los diferentes
componentes antes mencionados, sabemos que será de bastante utilidad en el ámbito
diario si queremos conocer o dar un dato aproximado acerca del cambio climático
que en nuestra ciudad es bastante impredecible.
Ademas de ello es un proyecto básico
y didáctico para quienes se están iniciando en el mundo de la programación con
Arduino y sus diferentes implementaciones.
A continuación añadiremos unas imagenes del proyecto terminado y un video de su funcionamiento.
Debido a que el video posee alta resolución su peso es demasiado para lograr cargarlo. así que he optado por añadirlo al Dropbox y que puedan observarlos desde este Link: https://dl.dropboxusercontent.com/u/78447322/20131031_231754.mp4
Esperamos les haya gustado el proyecto y que puedan aplicarlo.
MUCHAS GRACIAS..!!!