This is a simple solar tracker which automatically orients itself towards the sun or any bright source of light like the sun .If you place solar panels on this robot it can increase their productivity by 90 to 95 %. At first creating a solar tracking robot may sound complicated but it quite quickly becomes clear. As the title suggests it runs on the arduino board .This is a fun to do and low cost project.
This instructable was inspired from geo bruces instructable solar tracking robot
This instructable explains how to create your own solar tracking robot, how to set up the robot and how to test the robot.
This instructable is a entry in the robot challenge in the age category of 13 - 18 (I am 14 years old).
Step 1: Parts & Tools
~ 2 x Servo Motors - Local Electronics Store
~ 4 x LDR's - Local Electronics Store
~ 4 x 10k Resistors - Local Electronics Store
~ Arduino Uno - Sparkfun.com
~ 2 x 50k Variable Resistor - Local Electronics Store
Tools:
~ Soldering Iron - Sparkfun.com
~ Solder Wire - Sparkfun.com
~ Jumper Wires - Sparkfun.com
~ Protoboard - Local Electronics Store
All the parts will cost you less than 30$ (Excluding the arduino and all the tools)
Step 2: Build The Circuit
Step 3: Build The Sensor Assembly
Step 4: Set It Up
Step 5: The Code
#include <Servo.h> // include Servo library
Servo horizontal; // horizontal servo
int servoh = 90; // stand horizontal servo
Servo vertical; // vertical servo
int servov = 90; // stand vertical servo
// LDR pin connections
// name = analogpin;
int ldrlt = 0; //LDR top left
int ldrrt = 1; //LDR top rigt
int ldrld = 2; //LDR down left
int ldrrd = 3; //ldr down rigt
void setup()
{
Serial.begin(9600);
// servo connections
// name.attacht(pin);
horizontal.attach(9);
vertical.attach(10);
}
void loop()
{
int lt = analogRead(ldrlt); // top left
int rt = analogRead(ldrrt); // top right
int ld = analogRead(ldrld); // down left
int rd = analogRead(ldrrd); // down rigt
int dtime = analogRead(4)/20; // read potentiometers
int tol = analogRead(5)/4;
int avt = (lt + rt) / 2; // average value top
int avd = (ld + rd) / 2; // average value down
int avl = (lt + ld) / 2; // average value left
int avr = (rt + rd) / 2; // average value right
int dvert = avt - avd; // check the diffirence of up and down
int dhoriz = avl - avr;// check the diffirence og left and rigt
if (-1*tol > dvert || dvert > tol) // check if the diffirence is in the tolerance else change vertical angle
{
if (avt > avd)
{
servov = ++servov;
if (servov > 180)
{
servov = 180;
}
}
else if (avt < avd)
{
servov= --servov;
if (servov < 0)
{
servov = 0;
}
}
vertical.write(servov);
}
if (-1*tol > dhoriz || dhoriz > tol) // check if the diffirence is in the tolerance else change horizontal angle
{
if (avl > avr)
{
servoh = --servoh;
if (servoh < 0)
{
servoh = 0;
}
}
else if (avl < avr)
{
servoh = ++servoh;
if (servoh > 180)
{
servoh = 180;
}
}
else if (avl = avr)
{
// nothing
}
horizontal.write(servoh);
}
delay(dtime);
}
















































Visit Our Store »
Go Pro Today »




http://www.instructables.com/id/Arduino-Solar-Tracker/
I wrote it almost a year before this guy "copied" it.
but he didn't read the license terms
This license lets others remix, tweak, and build upon your work non-commercially, as long as they credit you and license their new creations under the identical terms.
"as long as they credit you" <<< you didn't :(
I like the simplicity of the circuit and code. Well done.
Consider painting your cruciform tube black (eliminating stray bounces off the cardboard) to improve the accuracy of the sensors.
Consider how this setup will react to cloudy days. Will it be sending the servos all over the place looking for the brightest spot in the sky? If so, how do you slow down the motion so you don't burn out the servos? Consider adding some acceleration curve code to the movement of the servos, especially once they are driving a load.
Also, consider adding a power relay circuit for the servos so your arduino can turn them on and off, thus relieving them of stress when they aren't moving anyway. The code could;
o turn on the relay, powering the servos
o move the servos to their new position via acceleration curves
o turn off the relay, shutting down the servos
Have fun!