The Solar Flower:Dual Axis Solar Tacker
by satviktamirisa in Circuits > Arduino
585 Views, 2 Favorites, 0 Comments
The Solar Flower:Dual Axis Solar Tacker
The Dual axis solar tracker has been discussed below and is a proof of concept model to improve the efficiency of the solar power output. A solar cell is a electronic instrument that is used for the power generation by converting the photon energy received from sun light to electrical energy with the usage of semiconductor materials.
Supplies
solar panel ~ 5v
Arduino UNO (2)
LDR (5)
servo MG 995 (1)
servo SG90 (1)
Power supply
10Kohm resistor (5)
breadboard
Basla wood sheets (5)
Why Do We Need a Tracking System
Electricity has always been a basic need to a sustainable living. Generation has been in non convectional methods, which are hazardous, polluting the enviornment and making the process lesser green.
The renewable resources such as solar energy, wind energy, tidal energies are much more greener energies but the output of these generation units are less efficient than the non convectional methods, making it less usuable for extensive usage.
The solar tracking system, now will be able to fullfil the drawback set in the convectional solar panel system, orienting the solar panel in the direction of the sun, surface area of the solar under light will be more and hence higher power genration from the solar panel.
Build a Mechanical Structure
step 1.1: Start by building a mechanical structure .
step 1.2: Cut 2 circular strucuturs of with radius 10cm and 7cm.
step 1.3: Now make a 3 rectangualar pieces of 4cm*2cm and curve the edges on one side of the breath.
step 1.4: Cut 2 rectangular long strips of 10cm* 3cm
step 1.5: Arrange these pieces to get the structure shown in the figure below.
Eletronic Circuit
Build the circuit as shown in the figure using the necessary components
DESCRIPTION
So if you want to break the circuit now you can jut view it as 2 circuits - LDR CIRCUIT and DATA input to servo, 1 control unit- Arduino control unit.
A LDR circuit has been built up to respond to the light emission. An LDR circuit can be programmed to controll the servo motors based on the intensity parameters. A LDR offers resistance under the photon energy, these values will be fed to arduino as analog input values.
Remember: Most of the microcontrollers understand only Binary language(very conservative, ain't they:( ), therefore ADCs are used to convert the analog value to digital values. when you monitor the values in serial monitor window of the Arduino IDE you will observe the values as 0-1027(highest value).
Here Arduino is the control system, it has been programmed to behave as desired, as for this project it is control unit to control the servo motors.
The digital output pins of the arduino uno will input to data pins of the servo motor. Power the servo motor externally(I have used a power bank of 12v ).
Integrate the Circuit With Mechanical Structure
step 3.1 Place the MG 995 servo on the larger base for setting the base angle(azimuthal angle)
step 3.2 Place 3 LDRs at 30* , 90*, 120* on the base wood
step 3.3 Attach the small rectangular wood pieces with the curved edges on the base wood for the support to build the structure that houses the solar panels as shown in the figure.
step 3.4 Attach the 2 remaining LDRs on eac end of the solar panel to set the elevation angle.
Step 3.5 this completes the Hardware structure
Arduino Code for Base Rotation
#include <Servo.h>//include the servo library
Servo myservo;
int pos = 90;
// initialize the analog input variables
int sens1 = A0; // initialize the analog input variables
int sens2 = A1;
int sens3 = A2;
int tolerance = 2;
//set the initial setup values
void setup() {
myservo.attach(9);
pinMode(sens1, INPUT);// enter the pinmode either input or output
pinMode(sens2, INPUT);
pinMode(sens3, INPUT);
myservo.write(pos);
Serial.begin(9600);
delay(2000);
}
void loop() {
int val1 = analogRead(sens1); // read the value of sensor 1
int val2 = analogRead(sens2); // read the value of sensor 2
int val3 = analogRead(sens3);// read the value of sensor 3
if((abs(val1 - val2) <= tolerance) || (abs(val2 - val1) <= tolerance)||(abs(val3 - val1) <= tolerance)||(abs(val1 - val3) <= tolerance)||(abs(val2 - val3) <= tolerance)||(abs(val3 - val2) <= tolerance)) {
//do nothing if the difference is less than the specified tolerance value
} else {
if(val1 > val2)
{constrain(pos , 30 , 70);
pos = 30;// set the pos value equal to 30 if val1 is greater than val2
delay(50);
}
if(val2>val1){
if(val2>val3)
{pos = 90; // set the pos value equal to 90 if val2 is greater than val1 and
delay(50);// val2 is greater than val3
}}
if(val3 > val2)
{ constrain(pos , 100 , 120);
pos = 150; // set the pos value equal to 150 if val3 is greater than val2
delay(50);
}
}
if(pos > 180) { pos = 180; } // reset to 180 if it goes higher
if(pos < 0) { pos = 0; } // reset to 0 if it goes lower
myservo.write(pos); // write the position to servo
delay(50);
Serial.println(sens1 , sens2, sens3);//monitor the analog values in serial
monitor
}
Arduino Code for Elevation Angle
#include <Servo.h>
Servo myservo;
int pos = 90;
int sens1 = A0;
int sens2 = A1;
int tolerance = 2;
void setup()
{
myservo.attach(9);
pinMode(sens1, INPUT);
pinMode(sens2, INPUT);
myservo.write(pos);
Serial.begin(9600);
delay(2000);
}
void loop()
{
int val1 = analogRead(sens1);
int val2 = analogRead(sens2);
if((abs(val1 - val2) <= tolerance) || (abs(val2 - val1) <= tolerance)) {
} else {
if(val1 > val2)
{
pos = --pos;
}
if(val1 < val2)
{
pos = ++pos;
}
}
if(pos > 180) { pos = 180; }
if(pos < 0) { pos = 0; }
myservo.write(pos);
delay(10);
Serial.println(sens1 , sens2);
}
Measure the Current Values
Use a multimeter to measure the voltage and current values. We observed a enhanced output with the Dual axis solar tracking system.