Sun Tracking Control

The most important function of the control system is sun tracking. When the mirror is stationary the sun will be moving 15 degrees per hour. Without automatic sun tracking the power will drop to 0% in less than an hour (see sun tracking model test video). With automatic sun tracking the sensors will notice the sun has moved and the Arduino will turn on the motor to correct the mirror position. With the right system the accuracy can be extremely high.


Please have a look at these suntracking videos.  The mirror follows a lamp in the first one and aims at the sun outside in the second video.

For the solar thermal car we will be using one axis and 2 direction sun tracking. This means the mirror will rotate around the trough axis in both directions (CW and CCW). Two axis tracking is very complicated and is not required for this system. There is no way we can lift the 24 foot mirror up for the second axis of sun tracking. When the sun is only a few degrees off in the trough axis, the light is reflected and misses the pipe altogether. The heat drops and the turbine stops.


Sun 1

However, in the other axis, the power of the system is only reduced by the cosine of the angle, which is similar to a solar panel that is off by the same small angle. Solar thermal trough power plants only sun track their mirrors in one axis as well.  As seen in the graph below, at an angle of 25 degrees, only 10%  of the power is lost.


It is possible to have a system that tracks in one axis and only one direction. This system would have to be manually reset every night as it can only rotate with the sun. I have designed my system with 2 directions so we can drive the car while the mirror tracks the sun in both directions.


The sun tracking is controlled the the Arduino that uses two light sensors (LDR) and a motor to aim the mirror at the sun. The sensors are in the shadow of the receiver pipe when the mirror is aimed at the sun. When the mirror is not aimed at the sun one sensor will receive direct sunlight and the other will not. The Arduino compares the light from both sensors and turns on the motor to rotate the mirror to move the sensor out of the light. When both sensor are in the shade, the motor turns off. The sun tracking motor that we have used is a windshield wiper motor from a car. This motor has a worm gear drive that results in very low speed rotation with high torque. The worm gear also locks the motor position when it is off. So when the motor corrects the mirror angle and turns off, the worm gear drive holds the mirror in this position until another correction is needed.

Mirror 1

Below is the code used in the Arduino for sun tracking

int sun1 = A1; // sun sensor read pins Analog 1 and 2
int sun2 = A2;
int cw = 2; //motor drive pins digital 2 and 4
int ccw= 4;
void setup(){ // needed to load??
// initialize the digital pin as an output.
pinMode(cw, OUTPUT);
pinMode(ccw, OUTPUT);
void loop(){
int readsun1 = analogRead(sun1); // read light values
int readsun2 = analogRead (sun2);
if((readsun1-readsun2)>101) // if one sensor gets more light turn
digitalWrite (ccw, HIGH);
if ((readsun1-readsun2)<-101) //if other sensor gets more light turn other way
digitalWrite (cw, HIGH);
if(abs(readsun1-readsun2)<100) // if both sensors get same light stop
digitalWrite (cw, LOW);
digitalWrite (ccw, LOW);


The drive system uses a half circle track with a diameter of 4 feet. A long garage door chain sits on the track. The worm gear windshield wiper motor uses a small sprocket to drive the chain and rotate the mirror. A tension spring keep tension in the chain at all times while rotating. The large diameter of the track and the small sprocket result in a very slow moving and accurate system that has a lot of torque.


Make a free website with - Report abuse