Solar Tracking System
Build a Dual-Axis Solar Tracking System Using Arduino
In this project, we’ll create a DIY dual-axis solar tracking system that adjusts a solar panel's orientation in two directions for optimal sunlight capture. By using light-sensitive sensors and Arduino, the system dynamically tracks sunlight to maximize energy generation.
_______________________________________________________________________________
How the System Works
The dual-axis system uses four LDR sensors and four resistors in voltage divider circuits to measure light intensity from multiple directions. These readings are processed by the Arduino, which controls servo motors to adjust the panel's horizontal and vertical positions for optimal sunlight exposure.
___________________________________________________________________________________
___________________________________________________________________________________
Components Buying Link:-
- Arduino UNO:-https://amzn.to/3mhamzG
- Solar Panel:-https://amzn.to/4iefe0v
- Breadboard:-https://amzn.to/3Ulqv3G
- SG90 Servo Motors:-https://amzn.to/3PqtfMt
- LDR Sensors:-https://amzn.to/3Ozj6eZ
- 10k Resistors:-https://amzn.to/3ZvG64P
- Jumper Wires:-https://amzn.to/3GvV1SW
- Battery:-https://amzn.to/4gdcwH6
___________________________________________________________________________________
3D Model File Link:- Google Drive
3D Model File Link:- Google Drive
___________________________________________________________________________________
Circuit Diagram:-
#include <Servo.h>
Servo horizontal; // Horizontal Servo Motor
int servohori = 180;
int servohoriLimitHigh = 175;
int servohoriLimitLow = 5;
Servo vertical; // Vertical Servo Motor
int servovert = 45;
int servovertLimitHigh = 100;
int servovertLimitLow = 1;
// LDR pin connections
int ldrlt = A0; // Bottom Left LDR
int ldrrt = A3; // Bottom Right LDR
int ldrld = A1; // Top Left LDR
int ldrrd = A2; // Top Right LDR
void setup() {
horizontal.attach(2);
vertical.attach(13);
horizontal.write(180);
vertical.write(45);
delay(2500);
}
void loop() {
int lt = analogRead(ldrlt); // Top left
int rt = analogRead(ldrrt); // Top right
int ld = analogRead(ldrld); // Bottom left
int rd = analogRead(ldrrd); // Bottom right
int dtime = 10;
int tol = 90; // Tolerance value for adjustment
int avt = (lt + rt) / 2; // Average value of top sensors
int avd = (ld + rd) / 2; // Average value of bottom sensors
int avl = (lt + ld) / 2; // Average value of left sensors
int avr = (rt + rd) / 2; // Average value of right sensors
int dvert = avt - avd; // Difference between top and bottom
int dhoriz = avl - avr; // Difference between left and right
if (abs(dvert) > tol) {
if (avt > avd) {
servovert = ++servovert;
if (servovert > servovertLimitHigh) servovert = servovertLimitHigh;
} else {
servovert = --servovert;
if (servovert < servovertLimitLow) servovert = servovertLimitLow;
}
vertical.write(servovert);
}
if (abs(dhoriz) > tol) {
if (avl > avr) {
servohori = --servohori;
if (servohori < servohoriLimitLow) servohori = servohoriLimitLow;
} else {
servohori = ++servohori;
if (servohori > servohoriLimitHigh) servohori = servohoriLimitHigh;
}
horizontal.write(servohori);
}
delay(dtime);
}
___________________________________________________________________________________
Why Choose Dual-Axis?
Improved Tracking:
Captures sunlight from both vertical and horizontal directions, maximizing energy generation.
Scalability:
Can be adapted for larger panels or more sensors for higher precision.
___________________________________________________________________________________
Key Benefits
This system provides an excellent opportunity to explore renewable energy technologies while increasing the efficiency of solar panels. It’s an engaging and practical project for anyone interested in Arduino and sustainable energy solutions.
Comments
Post a Comment