solar tracker using RTC

Single precision float should be adequate for these calculations. However as Nick_Pyner said, a simple table could well suffice. Consider holding data for 365 days (sunrise and sunset) at 4 bytes each, that would be:

365*4*2 = 2920 bytes

Stored in program memory, that is probably less than the library code that would be pulled in to do the sine/cosine/asin/acos calculations anyway.

There would be a slight discrepancy due to the "leap year" factor after a year, but hardly enough to really worry a solar array.

If you need more data (more than sunrise/sunset) you can probably still do it to reasonable accuracy with fairly simple code.

Google: arduino solar panel tracking

I got over 2 million hits.

http://www.nrel.gov/midc/spa/

I HAVE LINKED ATTACHED ABOVE .If you put latitude and longitude u will get elevation angle for particular date,time etc

Nick_Pyner:

AMPS-N:
This mean to say i have spa algorithm it does work over arduino board, since it support double precision floating point.

AMPS-N:
as per research made SPA algorithm code will not work on Arduino board.

I don't know what an SPA algorithm is, and it's not clear whether it will work on an Arduino or not. What is even less clear is why you would need double precision anyway. If you really need to do this, rather than use LDRs, Jan Meeus or Peter Duffet-Smith will tell you all you need to know. You may also find a lookup table will suffice. Once you have settled on all that computing stuff, all you need to do is sort out how you handle the mechanical accuracy stuff.

i wanna do simple single axis.
how should i calculate sun elevation angle??

AWOL:
You can do a two axis tracker using at most four LDRs, a couple of op-amps and a couple of H-bridges.
All the RTC needs to do is return the rig to "home" just before dawn.

It will take some work to get the constant tables into program memory, but without trying, it's a little trite to say "it won't work on an Arduino".
It would almost certainly work unmodified on a Due.

sp. "want to"

whole idea is i wanna do with cheaper solution , I wanna use only rtc, linear actuator and arduino board for the project.
If i am using above component is it possible to it??
if yes how can i do it??
how can calculate sun elevation angle??
i don't have any sensor to locate and control the position.

michinyon:
It is totally possible to calculate the sun's position at any instant, as long as you know the time and your location.

I don't understand your claim that the calculation cannot be made on an arduino.

You can follow the sun this way, without any light sensor at all, if you really wanted to. The obstacle
would be in having an accurate and persistently calibrated position actuator, which is not straightforward
to achieve.

Unless you really want to calc the sun's position, as suggested below, track the sun.
I would think that 4 LDRs would be cheaper than a RTC, the code smaller and as pointed out, accuracy is of no concern, it just tracks. Simpler still if you use a N/S mount as you only need 2 LDRs, and your single actuator. "darkness" is used to reset to the morning sun.

IDK, but tracking may also provide more power from reflected light in times of cloud cover as the sensor, being a heliotrope would point to the brightest part of the sky, not where it thinks the sun is.

[edit]in fact, at Nick Gammon pointed out, you don't need a constant sun location if using a simple N/S mount and single actuator! All you need is (usable) sunrise and day length (1 byte would do, since you will not get 15hrs of usable sun) You may also have mountain/hill/building shadow to contend with . You may also need to adjust for apparent sun speed. You then move your actuator, starting at the correct time, at the correct speed for any day. Personally LDRs would be my choice - simples![/edit]
LDR Sealed type
Tracker

, I wanna use only rtc, linear actuator and arduino board for the project.

See my reply about the Due.

sp. "want to"

For LDR it require periodic maintenance. If dust has been accumulated it might no work. But using RTC i can say that it will be fine for working but problem will be degrade in angle and we cant keep feed back for control the action .

0AlphaOmega:
Unless you really want to calc the sun's position, as suggested below, track the sun.
I would think that 4 LDRs would be cheaper than a RTC, the code smaller and as pointed out, accuracy is of no concern, it just tracks. Simpler still if you use a N/S mount as you only need 2 LDRs, and your single actuator. "darkness" is used to reset to the morning sun.

IDK, but tracking may also provide more power from reflected light in times of cloud cover as the sensor, being a heliotrope would point to the brightest part of the sky, not where it thinks the sun is.

[edit]in fact, at Nick Gammon pointed out, you don't need a constant sun location if using a simple N/S mount and single actuator! All you need is (usable) sunrise and day length (1 byte would do, since you will not get 15hrs of usable sun) You may also have mountain/hill/building shadow to contend with . You may also need to adjust for apparent sun speed. You then move your actuator, starting at the correct time, at the correct speed for any day. Personally LDRs would be my choice - simples![/edit]

LDRs can have very large surface areas, and it is going to take a severe accumulation of dust affecting only one of the LDRs (both equally affected by dust is not going to harm performance) to cause you problems.

For LDR it require periodic maintenance.

I thought I was lazy! If it's just dust, who cares? The performance would effect both devices! But you could build in an auto calibration routine.

Snap AWOL.

However, we may be forgetting about the Bangalore Tracker Crapper, these little birds are very well know for their preference to relieve themselves on the western most side of any solar tracking device! During the days of the Raj they caused untold problems! :astonished:

Sorry AMPS-N, couldn't help myself :wink:
You have painted yourself into a corner, it will have to be calculated then, but you will have to compromise on "cheapest". Leap years can be handled with a counter, but you will need to keep at least some variables in NVM.
keep us posted.

i have simple idea to do this. But i dont how to to it
every linear actuator will moves mm per second,
First i will calculate time taken to cover the full stroke length . and i will retract it.
in my code i say

initially length @ zero position.for every 10 min i say move until it reaches the final stroke position and when it reaches end position i say reverse direction.

0AlphaOmega:
Sorry AMPS-N, couldn't help myself :wink:
You have painted yourself into a corner, it will have to be calculated then, but you will have to compromise on "cheapest". Leap years can be handled with a counter, but you will need to keep at least some variables in NVM.
keep us posted.

Not a terribly scientific test, but for a giggle I took the SPA sources and recompiled them with all "double" replaced by "float".
For here and now, zenith is off by by about 1/100th of a degree, azimuth by 1/10th of a degree, and sunrise and sunset times are both eight seconds early.
For a mechanical system, I could live with those errors.

AWOL, sounds good to me, what size did it compile down to if you have the figures handy?
PS, I like that slight hint of yours about 'want to'

I just compiled it for a Linux box for speed of testing and simplified I/O, so the size is irrelevant, I'm afraid (FWIW it's a 36kB executable on a Xeon W3530).
Accuracy should be maintained for an Arduino, though.
At the moment, I don't have the time to go through and move the tables to PROGMEM for AVR, but I'm pretty certain it would work as-is on a Due (64 bit doubles - yay!)

AMPS-N:
whole idea is i wanna do with cheaper solution , I wanna use only rtc, linear actuator and arduino board for the project.
If i am using above component is it possible to it??
if yes how can i do it??
how can calculate sun elevation angle??
i don't have any sensor to locate and control the position.

Obviously, it is possible to do it, but it isn't advisable. What you are talking about is altitude but, if you are only going to control one axis, you will be better off putting the device on an equatorial mount and controlling the azimuth. I have already told you where the calculations are but, when I said what I said about a lookup table, I didn't realise it would be so compact, and I think you would be better off trawling for an on-line service, or a freebie programme that can provide the data for same, thereby saving you from calculating anything.

Update:
The SPA source compiles for the Due (64 bit doubles) and produces correct results.
The size of the main tables comes to 17532 bytes, so even halved for 32 bit floats won't fit in RAM on a Mega.
It compiles, but doesn't run (see above), on a Mega, with a sketch size of 29K, so I'd be surprised if it squeezed into a Uno, even with the tables in ROM.
A challenge.
I'm on it. :slight_smile:

How accurately are we trying to track the sun's position? Some of the solutions being discussed seem to be aimed at very high accuracy indeed - which might be justified if we're trying to aim a telescope but would be ridiculously over the top if we're just trying to point a solar panel in the right general direction.

PeterH:
How accurately are we trying to track the sun's position? Some of the solutions being discussed seem to be aimed at very high accuracy indeed - which might be justified if we're trying to aim a telescope but would be ridiculously over the top if we're just trying to point a solar panel in the right general direction.

Indeed, and so absurdly so that a lust for intellectual exercise by the ignorant is the only explanation. At this 1x magnification, an astronomer would be seeing it as so trivial it is a potential use for that old iron frame falling weight siderial clock gathering dust in the attic. The Arduino/RTC/linear actuator could then be used just to lift the weight at midnight. No calculations needed - probably.