Introduction: 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)

Step 1: 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.

Step 2: 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.

Step 3: 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 ).

Step 4: 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

Step 5: 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

 }


Step 6: 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);

}

Step 7: 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.