You are on page 1of 4

3rd Mediterranean Conference on Embedded Computing MECO - 2014 Budva, Montenegro

Low-cost Dual-axis System for Solar Tracking

Dimitrija Angelkov Natasa Koceska Saso Koceski


Faculty of Computer Science Faculty of Computer Science Faculty of Computer Science
University “Goce Delcev” - Stip University “Goce Delcev” - Stip University “Goce Delcev” - Stip
Stip, Macedonia Stip, Macedonia Stip, Macedonia
dimitrijaa@yahoo.com natasa.koceska@ugd.edu.mk saso.koceski@ugd.edu.mk

Abstract— This work presents description of an active solar The enormous gap existing today between the potential of
tracking system, which computes the solar position as a function solar energy and our use of it is mainly due to cost and
of topo-centric position and time. A micro-controller based conversion capacity. The solar cells which convert the sun’s
design of an automatic solar tracker is presented in this paper. energy into electrical energy are expensive and not very
The Sun positioning testing procedures conducted included two efficient. By using specific mechanisms and control
primary motor calibration tests and a heliostat positioning test algorithms, the efficiency of the solar cells could be increased
with two micro switches. The measured errors from the motor and the costs could be reduced.
positioning tests were in the range of 0.22°, whereas solar
positioning tests conducted showed an error of 0.21°, which is Nowadays, many tracking systems are presented in the
satisfying the main market needs for decreased costs and literature and available on the market. They could be classified
increased accuracy. into two main categories: passive (mechanical) and active
(electrical) tracking systems which on their side could be
Keywords-solar-tracker; solar energy; micro controller; constructed with one or two axes of freedom [1].
servomotor.
Mamlook et al. have proposed active two-axes, open loop
I. INTRODUCTION sun tracking system controlled with an open loop system based
The world today has increased energy demand. Some on programmable logic controller [2]. The experimental
estimations show that in the next 38 years the world should evaluation of the designed system has shown that the measured
create enough electrical production capacity for an additional collected solar energy on the moving surface was up to 41.34%
3.3 billion people. Today, over half of the new energy larger compared with the fixed surface.
generation capacity comes from renewable sources. The A prototype of two-axis solar tracking system based on a
estimations also show that renewable sources could meet PIC microcontroller has been implemented in [3]. The
between 77% -95% of global energy demand by 2050 and proposed tracking system is controlled with two 12V, 6W DC
main part of these sources are related to the solar energy. gear box motors. Five light sensors (LDR) are used to track the
However, there are several problems and constrains related sun and to start the operation (Day/Night operation). The two-
with the usage of solar power. Its direct dependency on light axis solar tracking system is constructed with both hardware
intensity must be considered when solar systems are and software implementations.
constructed. Therefore, in order to increase the efficiency of Two-small photovoltaic panels mounted back-to-back with
solar panels and to produce the maximum amount of energy, each other used to provide the necessary movement for the
solar panels have to be perpendicular to the light source. tracking system is proposed in [4]. An electronic circuit card
Considering the fact that the sun is permanently changing its design is made for control and system movement. The authors
location during the day and during the year, solar panels should have calculated an average cost of the system of about $48.
be able to adapt their position correspondingly and to follow
these movements in order to produce the maximum power. The Novel prediction algorithm for solar angles using solar
solution is to make the panels movable by employing some radiation and Differential Evolution for dual-axis sun tracker
tracking system that will maintain their position perpendicular has been proposed in [5]. The procedure used for determining
to the light source. the tilt angle and azimuth angle trajectories is described as a
nonlinear and bounded optimization problem. In order to
Although the presence of solar trackers is not indispensable evaluate the objective function, models for calculating the
for the proper operation of the solar panels, they are very useful available solar radiation and tracking system consumption are
for increasing their performances. However, their usage is applied together with the efficiencies of solar cells, a DC/DC
posing some problems such as cost, reliability, energy converter and inverter.
consumption, maintenance.

169

Authorized licensed use limited to: Fiji National University. Downloaded on April 15,2021 at 22:56:12 UTC from IEEE Xplore. Restrictions apply.
3rd Mediterranean Conference on Embedded Computing MECO - 2014 Budva, Montenegro

The main drawback of the proposed solutions is the impulse which on the other hand will activate the motors’
obtained precision trying to minimize the costs of the movement in both axes.
developed sun trackers. This paper proposes a low-cost dual
axis tracking system that will have an error smaller than 0.21°.
The proposed system has been evaluated in order to ensure that
it meets the defined goals.
II. DESCRIPTION OF THE SYSTEM
An azimuth–altitude dual axis tracker proposed in this work
has its primary axis (the azimuth axis) perpendicular to the
earth. The secondary axis (often called the elevation axis) are
then typically normal to the principal axis. They are similar to
tip-tilt systems in operation, but they disagree with the way the
array is spread out for daily tracking. Instead of spreading out
the array around the tip of the pole, system can utilize a large
ring mounted on the background with the array mounted on a
series of rolls. The primary advantage of this placement is the
weight of the array that is propagated over a portion of the
band, as opposed to the single loading point of the pole. This
allows supporting much larger arrays. Unlike the system
cannot be located closer together than the diameter of the ring,
which may bring down the system density, especially looking
at inter-tracker shading. Restrictions applying to this type of
tracking are in the sensitivity of the sensors and the level of
intelligence of the arrangement.
The precision range of active tracked systems is between
0.2 to 0.25, depending on the arrangement. Since conventional
Photovoltaic (PV) solar energy cell devices exhibit only a very
minor difference in efficiency with tracking accuracy, and
because active methods are of relatively low technical Figure 1. Schematic representation of automation module for solar tracking
complexity, they are used primarily for conventional
conventional Photovoltaic (PV) solar energy cell tracking.
In Fig. 1, all the connections in the proposed system are
shown. The panel with all the system elements is presented in
Fig. 2. At the end of the day after sunset, the system
automatically goes back to the start point. When it returns back
to zero point if the number of encoder steps is equal with the
steps performed forward, counted from the moment when the
micro-switch is pushed, then we can consider that the system
didn’t make any mistake. Control function that is capable to
cope with the errors found during the movement forwards of
the system is implemented. This function is activated while the
system is returning back to the zero point. The system starts
counting forward when the button ‘Start’ is pushed, and after
that the system goes back to the zero point. That is the point
when the system turns on the switches ‘South’ and ’Zenith’.
These two switches are implemented into the solar tracker.
Consequently, depending on the quad encoder’s resolution, a
cumulative proportional error made during the entire year,
could be calculated. Because we know the altitude and azimuth Figure 2. Representation of the panel with all the elements on it
and start up point that is directly initialized by the two micro
switches, it is easy to follow sun by using a simple proportional
regulation. Like in today computer numeric controlled III. ALGORITHM FOR AZIMUTH AND ALTITUDE
machines, we move the solar panel in an exact direction with CALCULATION
simple counting of impulse which are coming from the
component named Quadrature Encoder. This component is The algorithm proposed for calculation of the Sun's
providing the feedback from the system that is giving the azimuth and Sun's altitude in a specific DATE in a specific

170

Authorized licensed use limited to: Fiji National University. Downloaded on April 15,2021 at 22:56:12 UTC from IEEE Xplore. Restrictions apply.
3rd Mediterranean Conference on Embedded Computing MECO - 2014 Budva, Montenegro

PLACE (φ=the place's latitude) in a specific TIME could be B = 360 / 365 * (dayNo - 81);
described with the diagram presented in Fig. 3. TIME is the B = B * toRad;
local apparent solar time (0 - 24h). For a given DATE the EoT = 9.87 * Math.sin(2 * B) - 7.53 * Math.cos(B) -
algorithm first calculates the variable n showing the number of 1.5 * Math.sin(B);
days from the beginning of the year. Afterwards, sun’s _root.EoT_text.text = toStr(EoT, 2);
declination angle δ is calculated as a function of the sun’s LSTM = 15 * int(_root.GMTOffset.text);
angular position specified by the ecliptic longitude λ [6]. TimeCorrection = 4 * (LON - LSTM) + EoT;
Throughout 1 day, the hour angle ω varies from 0° to 360° as _root.TimeCorrection_text.text =
the Earth rotates on its axis. Using these input and calculated
toStr(TimeCorrection, 2);
data the algorithm first computes the zenithal angle θz, and
DEC = 23.45 * Math.sin(0.9863 * (284 + int(dayNo))
finally calculates the azimuth γs and sun’s altitude α.
* toRad);

_root.DEC_text.text = toStr(DEC, 2);


DEC = DEC * toRad;
A = -1 * Math.sin(LAT) * Math.sin(DEC) /
(Math.cos(LAT) * Math.cos(DEC));

arccos = Math.atan(Math.sqrt(1 - A * A) / A);


if (A < 0)
{
arccos = arccos + Math.PI;
}
HH = arccos * toDeg / 15;
sunrise = 12 - HH - TimeCorrection / 60;
sunriseH = String(Math.floor(sunrise));
sunriseM = String(Math.round((sunrise -
Math.floor(sunrise)) * 60));
if (sunriseM.length == 1)
{
sunriseM = "0" + sunriseM;
}
_root.sunrise_text.text = sunriseH + ":" + sunriseM;
sunset = 12 + HH - TimeCorrection / 60;
_root.sunset_text.text = String(sunset);
sunsetH = String(Math.floor(sunset));
sunsetM = String(Math.round((sunset -
Math.floor(sunset)) * 60));
if (sunsetM.length == 1)
{
Figure 3. Flowchart of the implemented control algorithm sunsetM = "0" + sunsetM;
}
// initialization of constants _root.sunset_text.text = sunsetH + ":" + sunsetM;
setInterval(calcSun,1000); // set interval with 1000 ms time if (A < -1)
function calcSun() {
{ sunrise = 0.01;
// take initial value for time, date and geographical coordinates sunset = 25;
dayNo = int(_root.Month.text) + int(_root.Day.text); }
_root.dayNumber.text = dayNo; LSoT = H + (TimeCorrection + M) / 60;
LON = _root.Longitude.text; HRA = 15 * (LSoT - 12);
LAT = _root.Latitude.text * toRad; _root.HRA_text.text = toStr(HRA, 2);
H = int(_root.Hour.text); HRA = HRA * toRad;
M = int(_root.Minute.text); A = Math.sin(DEC) * Math.sin(LAT) +
_root.s_day.text = int(dayNo); Math.cos(DEC) * Math.cos(LAT) * Math.cos(HRA);
_root.s_time.text = H + M / 60; alt = Math.atan(A / Math.sqrt(1 - A * A));
_root.s_lat.text = _root.Latitude.text; _root.Alt_text.text = toStr(alt * toDeg, 2);

171

Authorized licensed use limited to: Fiji National University. Downloaded on April 15,2021 at 22:56:12 UTC from IEEE Xplore. Restrictions apply.
3rd Mediterranean Conference on Embedded Computing MECO - 2014 Budva, Montenegro

A = (Math.cos(LAT) * Math.sin(DEC) - yp = (Math.PI / 2 - alt) * Math.cos(azi);


Math.cos(DEC) * Math.sin(LAT) * Math.cos(HRA)) i = i + 0.1;
/ Math.cos(alt); // mathematical calculation for }
azimut return;
azi = Math.atan(Math.sqrt(1 - A * A) / A); }
if (A < 0) function toStr(arg1:Number, arg2:Number)
{ {
azi = azi + Math.PI; return (Math.round(arg1 * 100) / 100);
} }
if (LSoT > 12)
{ Figure 4. Code listing of the implemented control algorithm
azi = 2 * Math.PI - azi;
} The presented code listing given in Fig. XX describes the
_root.Azi_text.text = toStr(azi * toDeg, 2); //show entire software for successful sun tracking. Position of the sun
value for azimuth to screen is determined using the function of the two-quadrature encoder
xp = (Math.PI / 2 - alt) * Math.sin(azi); input pins, which are assigned using the component
yp = (Math.PI / 2 - alt) * Math.cos(azi); connections window into program Proteus. Switching the pins
if (alt > 0) around in the connections window allows for the encoder to
{ increment on clockwise or counter clockwise motion
snorg._x = x0 + 279 / Math.PI * xp; depending on the application.
snorg._y = y0 - 279 / Math.PI * yp; IV. CONCLUSION
}
else This work presents a microcontroller based design
{ methodology of an automatic low-cost dual-axis solar tracker.
snorg._x = -1; The sun positioning testing procedures conducted included two
primary motor calibration tests and a heliostat positioning test
snorg._y = -1;
with two micro switches. The measured errors from the motor
}
positioning tests were in the range of 0.22°, whereas solar
i = sunrise; positioning tests conducted showed an error of 0.21°, which is
b=0; close due to the step precision of the motors. This system can
while (i < sunset) // make calculation only when the be used to track every kind of object in the sky. With small
sun is shown on sky, after that system must to go into reconstruction, it can be used in telescopes to watch the objects
zero point. in the sky. Precision of system is common with a resolution of
{ quad encoder.
H = i;
LSoT = H + TimeCorrection / 60; REFERENCES
HRA = 15 * (LSoT - 12); [1] H. Mousazadeh, A. Keyhani, A. Javadi, H. Mobli, K. Abrinia, A.
HRA = HRA * toRad; Sharifi. A review of principle and sun-tracking methods for maximizing
solar systems output. Renewable and Sustainable Energy Reviews,
A = Math.sin(DEC) * Math.sin(LAT) + 13(8), 1800-1818, 2009.
Math.cos(DEC) * Math.cos(LAT) * Math.cos(HRA); [2] R. Mamlook, S. Nijmeh, S.M. Abdallah. A programmable logic
alt = Math.atan(A / Math.sqrt(1 - A * A)); controller to control two axis sun tracking system. Information
A = (Math.cos(LAT) * Math.sin(DEC) - Math.cos(DEC) * Technology Journal 2006;5(6):1083–7.
Math.sin(LAT) * Math.cos(HRA)) / Math.cos(alt); [3] L. L. Oo, N.K. Hlaing. Microcontroller-based two-axis solar tracking
azi = Math.atan(Math.sqrt(1 - A * A) / A); system. In Computer Research and Development, 2010 Second
International Conference on (pp. 436-440). IEEE.
if (A < 0)
[4] S. Kivrak. Design of a low cost sun tracking controller system for
{ photovoltaic panels. Journal of Renewable and Sustainable Energy, 5(3),
azi = azi + Math.PI; 033119, 2013.
} [5] S. Seme, G. Štumberger. A novel prediction algorithm for solar angles
if (LSoT > 12) using solar radiation and differential evolution for dual-axis sun tracking
purposes. Solar energy, 85(11), 2757-2770, 2011.
{
[6] T.J. Jansen. Solar engineering technology. New Jersey: Prentice Hall;
azi = 2 * Math.PI - azi; 1985. pp. 11–6.
}
xp = (Math.PI / 2 - alt) * Math.sin(azi);

172

Authorized licensed use limited to: Fiji National University. Downloaded on April 15,2021 at 22:56:12 UTC from IEEE Xplore. Restrictions apply.

You might also like