top of page
Writer's pictureTechnical Tamizha

Single Axis Solar Tracker

Updated: Dec 10, 2021

The Single Axis Solar Tracker controlled with Arduino which is open source prototyping platform based on easy-to-use hardware and software.


How it works,

The #Solartracker tracks the Sun with help of LDR's placed on both side of the Solar Panel.

If the value of Right LDR goes high the Servo Motor will rotate Right side ,If left LDR goes high servo will rotate Left side. If both values are same the Servo will stop rotating.








If you have any trouble comment or contact me : @technical_tamizha_official



Tutorial Video :




Here is a list of the items which you need in order to complete this project. If you are looking to make a dual axis tracking stand then you will need to double up on the servos, LDRs and resistors.



An Arduino (Uno used here)

Single Axis Tracking Stand (Brief DIY Design)

2 x 10K Resistors

2 x LDRs

1 x Solar Panel

Connection Wires

Servo Motor


The specific servo model or size has not been stated as it depends on the size and weight of your solar panel. The one used in this project is a 9 gram analogue servo. You can use any size PWM hobby servo with the Arduino although the larger servos will require their own power source.


Circuit Diagram: This Circuit Diagram will make your Connection simple. Note : connect servo to 9th pin - (R - Resistor) (PR - Photo Resistor(LDR))




Program :



Download Or Copy Paste the Program in your Arduino IDE



//Program by Technical Tamizha #include <Servo.h> //including the library of servo motor Servo myservo; int initial_position = 90; int LDR1 = A0; //connect The LDR1 on Pin A0 int LDR2 = A1; //Connect The LDR2 on pin A1 int error = 5; int servopin=11; //You can change servo just makesure its on arduino's PWM pin void setup() { myservo.attach(servopin); pinMode(LDR1, INPUT); pinMode(LDR2, INPUT); myservo.write(initial_position); //Move servo at 90 degree delay(2000); } void loop() { int R1 = analogRead(LDR1); // read LDR 1 int R2 = analogRead(LDR2); // read LDR 2 int diff1= abs(R1 - R2); int diff2= abs(R2 - R1); if((diff1 <= error) || (diff2 <= error)) { } else { if(R1 > R2) { initial_position = --initial_position; } if(R1 < R2) { initial_position = ++initial_position; } } myservo.write(initial_position); delay(100); }

Upload the given code into the Arduino. if you have any questions regarding the solar tracker project you can ask in the comment section or contact me : @technical_tamizha_official


Did you make this project?? share it with us






Recent Posts

See All

Commentaires


bottom of page