So.... there I am, sitting quietly working away, minding my own business, when I get accosted in IRC by a regular, wanting help and ideas for controlling the tracking on his solar array...
I pitch in a few ideas, and another regular puts his hands up "I'll have me one of them too!". Then a third....
So I'm planning to document here what I'm planning so others might chip in, pick up on my oopsee's etc.
Step 1 was to decide the basic operation. Sun-followers have ended up being too unreliable. Not because of their design, but because of the environment. Clouds, weather etc. Combined with the reliance on good construction, requiring optics, mounting suitably etc, we ruled that out for this application.
Instead, we've elected to use a time-based positioning system. Sure, it's not as accurate to position as a sun-tracker under ideal conditions, but it's "close enough" virtually all the time, even in broken sunlight, and it won't hunt.
That does imply it needs a clock of some sort, so finding a suitable board was the next stop. It also needs to be programmable so we can make it do what WE want. It needs moderately accurate timing for the drive times, and wait times. It needs enough outputs to operate east and west drive, and optionally elevation if its a 2-axis board. It would be nice if it had inputs for limit switches and/or manual drive. If there was interest or demand, it might be nice to monitor the supply voltage so the actuator drive time can be adjusted automatically if volts are up or down a bit. It might also be nice if it could monitor panel voltage or current, ambient temperature, array temperature or even just sunlight level. It would also be nice if it could be used to log data!
Fortunately, I've used some small "PLC" boards for a number of my own projects, that tick all these boxes. Smallish, reasonably low cost, 8 digital outputs, 8 digital inputs, 3 analog inputs and up to 8 temperature sensors, will take a few thousand lines of program, has a built-in webserver and ethernet interface!
My next step has been thinking about how to make it work out sunrise time sufficiently accurately to be useful, AND so it can be used by multiple people without having to rewrite the code each time. The plc logic engine doesn't have lookup tables, or floating point maths. So I've been playing with some approximation techniques using purely integer maths, and trying to estimate sunrise at an arbitary latitude/longitude to within about 15 minutes. I'm getting close.
Once I have that I'll move on.
The current plan is (starting at sunrise) - drive the arrays west for a small time - around 2 seconds - every 15-20 minutes. The exact times will vary depending on the time of year (length of day).
About half an hour after sunset, to move the panels to a mid-way "park" position. This should minimise the wind loading and maximise the chance that any overnight rain will wash the panels clean. About half an hour before sunrise, drive the panels fully east ready to catch the sun, and so the cycle repeats.
Each night, it will need to recalculate the sunrise/sunset times for the following day.
The board has timekeeping in software, but with its internet connectivity, will go out and synchronise itself with the very accurate internet NTP pool. This means the device won't need backup batteries, or to have its clock set etc. It'll just work. (It will need to be told your lat/long, and the time your actuator takes to drive).
So, any thoughts, comments, "please add" etc - now's the time to do it!