# Dual Axis solar tracker and motor selection

I have beginner level skills with arduino, trying to make dual axis solar tracker using LDRs.
Purpose:
The system should be able to rotate large solar panel frames say 1KW.

Issue:
Which motor should be used?

1. DC
2. Stepper
3. Servo

If i use DC motor how to i rotate the motor accurately and stop it at the extreme moving points of the solar panel frame (i think i can use push buttons for that purpose ??)
After comparing say left and right LDRs, the left provides a larger signal compared to right LDR and the difference is larger than the predefined tolerance level set in program, so i rotate the motor towards left. I am confused in relating the difference of LDRs output and for how much time the motor should rotate (whether i need to rotate it at full duty cycle or some PWM). As DC motor rotates with high speed, if i incorporate the system with gear box, what should be the turns ratio of motor shaft turns to frame attached gear turns.

Once you have built the framework and mounted the solar panels, measure the torque required to move and hold position. Only then will it be possible to choose an appropriate motor and motor driver.

Motors with worm gear drives hold position without power.

Stepper motors are very inefficient - they need power even when stationary - so they are not suitable for a solar powered system.

A wiper motor from a crashed car would be a cheap source of a high-torque worm-drive motor.

If your solar panels are exposed to wind you will have to take account of the considerable forces involved.

One installation that I have seen used a DC motor to drive a screwed rod to position the solar panels. It could not rotate a full circle but it could follow the sun from dawn to dusk.

...R

@Robin2

I am confused about two majors issues.

1. How to control a DC motor with much sensitivity i mean, in servo we can easily control degree rotation but any idea for DC motor?

2. When the panels frame reaches the end point how do i know this is the point to stop motor? Do i need any kind of pushbutton that gets activate when ever motor reaches that end point ? Or if there is any other way ?

A servo is usually a DC motor, with a potentiometer to measure the angular position of the output shaft.

Limit switches are very often used to detect the endpoints of motion.

An RC servo is just a DC motor with feedback.
Now, that feedback could be a shaft encoder, the output of a couple of LDRs, or the PV panel's output itself.

End-stop switches could be mechanical, magnetic (reed relay, or Hall effect) or optical.
My preference is for a solution that doesn't expose the switch elements to the atmosphere.

As i saw one program in which he used servo motor. Compared LDR values and started to turn motor in increments of 1 degree till it reached the point where the difference of LDR values was in tolerance range (small difference).

For the end points he had set the minimum and maximum angles for servos.

But how do i manage these issues in a DC motor.

As i saw one program in which he used servo motor

But the panel probably wasn't even able to power the servo steering it.

Compared LDR values and started to turn motor in increments of 1 degree till it reached the point where the difference of LDR values was in tolerance range

Thanks
for the end points i will use limiter switches.

Now any idea for the smooth control of DC motor ?

lets say LDRs providing following analog values
LDR_left provding 300
LDR_right providing 1000

and i have set the tolerance=10;
If the difference of LDR values is between 10, the motor should not rotate.
Now i above case 1000-300=700

difference =700

Now if i rotate the motor slowly (low duty cycle i-e 25%) , it will reach smoothly to a point where the difference gets less than tolerance value?
Am i right ?

Am i right ?

Only an experiment, with the completed installation will tell.

Usman93:

1. How to control a DC motor with much sensitivity i mean, in servo we can easily control degree rotation but any idea for DC motor?

I would write some code to make the motor run for a few seconds and see how far the panel moves. The main thing is not to move too far. It will be much easier to manage the code if it takes several short bursts to get the panel to catch up with the sun. Normal solar cells don’t need to be aimed with great accuracy. My guess is that it would be sufficient to update the horizontal position once every 10 minutes (and back to the start during the night) and the vertical position once every 2 weeks.

…R

I will point out that a stepper, with a worm gear would work fine.
for many stepper APPLICATIONS, and APPLICATIONS is the KEY here....
for many applications, the stepper is used as both the motor and the brake.

for this project, you do not need to keep the stepper powered all the time, only when stepping.
and, since you will be using feedback for hte location, stepping does not have to be continuous.

using a worm, you will have a small motor and larger gear. you can make one like this

you could use a simple DC motor, if it spins past the Sun, just let it sit, the Earth's rotation will have it back momentarily.
no need for motor feedback.

if you want to have the panel track some object without feedback, then you need to know what the motor is doing.
for that use, an encoder is needed. you can buy or make your own.,

google print encoder wheel and you will get lots of hits.

MOTOR CONTROL :
if you have a large gear and a threaded rod as shown in the link, say, you use 1/4=20 threaded rod.
and a 6 inch disk. that is a bit over 18 inches in dia. , 20 teeth per inch, around 360 teeth
a motor moving at 1,000 RPM, would take 1.2 seconds to move an inch.

you would be far better to use a gear reduction DC motor, or a stepper.
use an encoder wheel to the DC motor and you have a home brew industrial servo.

I would offer that if you have a solar PV panel, that generally close is more than good enough.
if you overshoot a few degrees, the Earths rotation will instantly and continuously reduce that, until it is dead on, then start to pass the other way.

I have beginner level skills with arduino, trying to make dual axis solar tracker using LDRs.

have you done any google searches to see how others have built their solar trackers? Have you used the forum search feature and searched for "solar tracker"? Two linear actuators would probably do a good job as far as motors go.

Am i right ?

I think you are on the right track. As you have mentioned and others have alluded to, moving the panel slowly or in increments is essential to prevent the panel (assuming detectors are mounted to the panel) from overshooting it’s target position, correcting back, overshooting that, etc., resulting in wild oscillation.

As mentioned, wiper motors are cheap, powerful and hold their position without power.

• Scotty

Any cheap motor driver for these large DC motors? Or i need to make customized circuit for this using some power transistors?

Which large motor? You have to know the voltage and current requirements before choosing a motor driver.

You have to build the tracker framework before you can sensibly choose a motor.

I have no experience of this application, but I would have thought that the motor and drive circuit could pretty basic. I would think that the required speed of movement is very slow, so you could use a simple low power PM DC geared motor running at a few rpm. The control circuit just needs to apply reversible DC power which can be achieved most simply using relays. Maybe a window regulator/motor from a car would be useful and perhaps give more torque if required.

Limit sensing could be done using a Hall effect sensor or photo interrupter mounted on the motor shaft to detect a stall.

I just think a proper controller such as those available as shields would be total overkill.