Close this search box.


Arduino Solar Tracker

In modern solar tracking systems, the solar panels are fixed on a structure that moves according to the position of the sun.

Let us design a solar tracker using two servo motors, a light sensor consisting of four LDRs and Arduino UNO board.

Arduino Solar Tracker Circuit Diagram

Solar Tracker Arduino

The circuit design of solar tracker is simple but setting up the system must be done carefully.

Four LDRs and Four 100KΩ resistors are connected in a voltage divider fashion and the output is given to 4 Analog input pins of Arduino.

The PWM inputs of two servos are given from digital pins 9 and 10 of Arduino.

Components Required

  • Arduino UNO
  • Servo Motor
  • Light Sensors
  • LDR
  • Resistors

Arduino Solar Tracker Working

LDRs are used as the main light sensors. Two servo motors are fixed to the structure that holds the solar panel. The program for Arduino is uploaded to the microcontroller. The working of the project is as follows.

LDRs sense the amount of sunlight falling on them. Four LDRs are divided into top, bottom, left and right.

For east – west tracking, the analog values from two top LDRs and two bottom LDRs are compared and if the top set of LDRs receive more light, the vertical servo will move in that direction.

If the bottom LDRs receive more light, the servo moves in that direction.

For angular deflection of the solar panel, the analog values from two left LDRs and two right LDRs are compared. If the left set of LDRs receive more light than the right set, the horizontal servo will move in that direction.

If the right set of LDRs receive more light, the servo moves in that direction.



  • Take cardboard. Make a hole in the middle and four holes on four sides so that LDR fit into that.
  • Stick the solar panel to the cardboard and bring two wires of the panel out as shown.

Step 2

  • Now cut one of the two leads of the LDR so that one lead is shorter and other is longer.
  • Insert these four LDRs into four holes as shown.
  • Bend the straight Perforated metal strip as shown below.
  • Place the bent metal strip on the back side of the cardboard
  • Apply glue to the LDR to fix them firmly.

Step 3

  • Solder the two leads of LDR as shown
  • To the other ends of LDR Solder resistors of 10k ohm
  • Join the four leads of the 4 LDRs by connecting with a wire.



  • Now take a bus wire.This is used to connect the Outputs of four LDRs to Arduino board.
  • Insert it into metal strip as shown in the image.
  • Now Solder the four wires to four LDRs at any point between LDR and resistor.


Step 5

  • Insert another two wire bus into the perforated metal strip as shown.This is used for supplying Vcc and GND to LDR circuit.
  • Solder one wire to the leads of LDRs which are connected to resistors and other wire to the other leads.
  • Short the leads of LDRs connected to resistors using a wire as shown.

solar-panel-diy-step-4Step 6

  • Now connect a servo motor to the Perforated metal strip using Screw.
  • Apply glue to the servo to fix it firmly.

solar-panel-diy-step-5Step 7

  • Take another straight Perforated metal strip and bend it as shown in the figure.

solar-panel-diy-step-6Step 8

  • Now place the set up of solar panel and first servo motor to the metal strip of second servo motor as shown.

solar-panel-diy-step 8

Project Code

If you are the one who loves to craft inspiring projects then Arduino solar tracker is for you. But still, if you are unable to design projects on your own that may be due to the lack of components or some other issues. To them, we bought the Best Solar Panel Kits for Homes that completely satisfies their requirements.

In this article, detailed information on solar panels like prices, power usage and performance is given for the convenience of users. Make a try with these wonderful solar panel kits to install them in your homes.

101 Responses

    1. This designed only for tracking sun and increasing its efficiency….Power of the solar panel is not considered…Servo motors used here consume very less power..They are powered from arduino board it self

      1. Can you please explain the steps for the programm….what do you declare of each entry into the programm?

        Thank you in advanceQ!!!!!

  1. Page excellent , and excellent projects for beginners im a student and I think this is awesome because we need projects like this to be best. congratulations !

  2. greetings to you sir and all on this site. please i want to work this project in my school. as my second year project in the university. What i want to ask is the solar panel tracker tracking the sun light intensity for other panels on 100w or others?thank you will be waiting for your reply

  3. sir,if one has about 10 100w solar panels how can he connect the solar tracker,and how many connection of the solar straker does he need

  4. Hello,
    I tried makin the project bt d motors r moving very slow. They r not moving as fast as given in d video. I tried changin d servo motor bt d isssue remains d same. Cn der b ny oder prob

  5. Hi, Anyone else noticed that the diagram might be wrong? It states 100k resistors, however i believe it should be 10k? 10k is also listed in the picture text step 3

    1. Hi, Please check the connections once again. Try to calibrate the servos and LDR before connecting.

  6. Hi, the arduino code has to change. As it is now, it is not possible to use the High/Low limits for servos…

    1. The limits for Servo motors are made as per our convenience. Please calibrate the servos and change the max limits for the servos.

    2. hey , i thought that too, my motors arent working , pls can u send me the corrected program
      .pls the corrected code?

  7. Sir, when I When I combined that source code with code for ESP8266 to display the value of the LDR sensor on Thingspeak, the servo motor is not running. how to handle it? Thanks before.

  8. How about using just two analog inputs? Place two LDR’s on adjacent sides of the solar panels, not in the corners. One of the LDR’s works as a pull-up resistor and the other one works as the pull-down resistor.
    More thoroughly: connect 5V to the top side LDR, connect the other leg of the top side LDR to analog pin A0, connect A0 further to the bottom side LDR. And the other leg of the bottom side LDR to ground. Now, when the top gets more light, A0 voltage rises. When panel twists upwards, the bottom LDR gets more light and A0 drops back to the middle voltage. Similar connection for left and right and A1.
    This setup might need additional resistors to assure that when the panel faces the sun and both LDR’s get equally much light, the total resistance won’t drop too low to draw too much current from the 5V. So you still need your 4 resistors, but you need only two analog input ports and the programming might become easier.

    1. Hi, This is actually a great idea and you can complete with just two Analog pins. Try to share your work (in case you have implemented) so that others can benefit from it.

  9. im using motor Ls-3006, once i connected everything and uploaded the program,
    the motor keep rotating (more the 180 degree). How can i control the rotation angle of the motor

    1. Hi, You should use maximum limits for both sides (left and right) and restrict your servo to rotate with in those limits.

  10. For this code, are we supposed to put in any values? If yes, what should we put?

    ,servoh =;
    servov =;

    1. Hi, By values, if you mean any user inputs, then we need to set the Servo motor limits for both the servos. servoh =;servov =; This statement returns the current position of the servo in the form of angle (between 0 and 180).

  11. Which compiler is used? the code wont work for atmel studio 7 unless more peripherals and initialization is added

  12. Could the servos be replaced with 12V linear motors, and the power to them be 12V instead of 5V? I am new to this & looking to learn.

  13. When I took light and push it to LDR the panel is not stopping.It has a little bit movements.If we take out the light the panel does not stay in the same position.Can anyone say reason?

  14. plzz.. help me with the resistors at LDR is it 100k or 10k
    or did they booth work .and how it impacts on analog read values …?

    1. if u have done it can u please answer my few question that are:
      which battery is used to give supply to the device.
      and can u provide a proper discription of connections.
      and also tell me about the specifications of material used.

  15. I wants to use stepper motor instead of servo motor. So can I know which type of change in code is required?

  16. Hi..
    Good idea..
    But i want to know about solar panel which u used for this prpject…
    Plz provide full information

  17. what if I only want to make a single axis? which LDR are used? the top ones? I still confused about the movement of servo, which is the horizontal one

  18. Hi there.

    I am having difficulty externally powering the Ardiuno in this project. It seems to only work if I use the USB connection to my computer, but for the final project, I was hoping to use a 9V battery, I know the Ardiuno is equipped with a voltage regulator, so this shouldn’t be a problem, but the servos act extremely weird when the power supply changes.

    If anyone has ideas please let me know.


  20. in my setup the servos are rotating very slow than that of shown in video ? what can i don to increase its speed ? can decreasing resistance help?

  21. the panel moves with a jerk when operated. the motion is not smooth. what could be the possible reason?

  22. Hi, why 100kohm resistor is used..?
    what is the purpose of that resistor…? can you pls explain that

  23. HOW MUCH POWER RATING IS SERVO MOTOR CAN USE. Please send the value such as power, current, voltage rating.

  24. may i know which servo motor is used for west east movements i.e., vertical movements from circuit diagram.

  25. Analog inputs of the Photo resistor voltages can only be taken by A0,A1,A2,A3,A4,A5

Leave a Reply

Your email address will not be published. Required fields are marked *