The Cerebral Forum
Solar Projects => Student Sun Tracking and Heliostat Projects => Topic started by: jadon on June 17, 2014, 04:18:08 AM
My project requires self learning heliostat tracking system. My idea of achieving is as follows.
1. Fabricate three pan tilt mounts(worm gear based). Two for heliostat and one for solar PV panel( sun tracking mode).
2. Simultaneous tracking of all the three mounts by having aruino mini at each of the heliostats wirelessly receiving the solar alt and az from a mega.
3. A CMOS camera mounted on pan tilt servo/stepper motor driven by again the mega in suntracker mode. However the captured image of the sun would be processed by visual c++ and open CV library to manipulate the pan tilt control of camera to get the sun in center of the frame.The final alt and az of the camera hopefully will be slightly different from those calculated by mega.
3. The formula derived value will not drive the 2 heliostat and the PV panel directly but after passing through camera- open CV setup. However these calculated angles will be fed to camera pan tilt servos to bring the sun in the frame of camera.
4. Mega will do all calculations till finding solar alt, az then pass it to cam pan tilt and get back revised angles from servo position and then transmit wirelessly (xbee or any cheaper alternative) . At the heliostat end a mini will take in these values and use machine and target parameters( stored on mega or mini: need advice) and calculate machine alt and az and finally move the machine in the desired direction.
I need help regarding how to divide the code between arduino mega and the minis at each heliostat and how to modify the code to achieve the above aim. I hope I have proved myself to be absolute dummy regarding mod the code.
Any ideas, help, comment, criticism are welcome.
I have a few random questions. Some of your answers might change my own ideas for this project.
How long do you have to work on this project? (Some of this stuff could take a long time to figure out.)
How big are the heliostats and sun tracker going to be?
Why do they need to move simultaneously?
I actually doubt that a camera would find any error in the calculations on the Mega. Granted, it doesn't hurt to double check, but what might be more interesting is once you have the camera algorithm worked out you might try "turning off" the Mega calculations and seeing how well the camera tracks on its own.
I actually just had an idea that might make this project a whole lot easier. Instead of sending the sun's alt and az to the mini Arduinos and have them do the rest of the machine's position calculations, just send the number of steps the stepper motors need to take to each machine. You can basically leave most of the code untouched if you do this (no need to divide very much), and you would also still be able to keep probably all the features for the Sun Harvester Shield. Joystick control might take some modification, and might also be delayed, but if you need it it could probably be made to work.
In general, everything should be a lot more organized too since everything except the stepper control code is left on the Mega.
Also, since you are just sending simple integer values, you might be able to use a wireless method that's cheaper than the XBees.
I wonder if maybe just a laser pointer and a photoresistor would work. I guess it depends on how fast you need to update the data and whether you have a direct line of sight from the laser pointer to the photoresistor.
Those are my thoughts for now anyway.
Sorry for returning back late.
I have about 9 months to make it work.
Why I thought of sending the solar angles to each machine was because I thought the sequential calculation might take time if you have say thousand heliostats and on top of that enabling each machine axis and moving and then moving to next axis and machine. Thats why I wanted simultaneous motion on both axes and all such machines. It wont be required for few machined though.Sending just the stepper steps would definitely make things easier. I just wanted to let each machine calculate its own target angles and also store data for machine and various targets. The mega is howevever required to help each machine register targets from a central location by the harvester shield. I dont want joystick on all machines.
Main purpose of the project is to see if camera can track the sun and how it compares with the calculated model.
It would just give eyes to to the project. I have read somewhere that tracking this way is very accurate though for different purpose I guess for filming the sun or for aligning telescopes.Question is do we need that accuracy if at all there is and can we utilize the accuracy given other sources of errors which may have been overlooked.
What is a cheaper alt to zigbee and how do we use it
I could not get the laser and the photo resistor idea.
Size of heliostat would be 2x2 ft. I was wondering are the 17 size motors sufficient for this as i cannot use bigger motors due to the limitation of the driver board. How far can we go reducing gears my calc indicates reducing by factor greater than 100. A lot depends on the design and balance.Is it necessary for azimuth and elevation axis to pass through the centre of the mirror. Will any offsets affect the accuracy.Are such offsets already taken care of in the code?
Lastly I cannot thank you enough for your reply.
Sorry about the delay in my own reply.
I haven't checked to confirm, but I would imagine that a single Arduino could do the required calculations for one thousand heliostats in hardly any time at all. Maybe in just a few seconds or less?
The real delay would be in sending the info wirelessly, although even that should be pretty fast, assuming you are using XBees.
You may have already seen this, but here is someone who has done something that sounds similar to what you want to do.
Here is a pdf on the project. http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1507&context=theses&sei-redir=1&referer=http%3A%2F%2F (http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1507&context=theses&sei-redir=1&referer=http%3A%2F%2F)
I know of two other projects that use cameras for tracking. One was by Google and the other was a commercial heliostat who's name I can't remember right now. In both cases the tracking doesn't actually seem to be especially good.
I don't understand how you would manage multiple mirrors with a camera system. I mean, if the reflection for one is off, how would the software know which heliostat needs to be moved? All the reflections look the same.
(OK I just reread your post. You're only trying to double check the position of the sun aren't you. The above doesn't really apply.)
The laser and photoresistor idea might not work for what you need, but basically one Arduino would turn the laser on and off. The light from the laser would shine on the photoresistor which is connected to another Arduino. Assuming that the flashes sent a binary code, the second Arduino could use them to determine how many steps to move each motor. Of course, you wouldn't be able to have anything in between the two Arduinos though since it would block the light.
Another option might be this. http://www.glacialwanderer.com/hobbyrobotics/?p=291 (http://www.glacialwanderer.com/hobbyrobotics/?p=291)
I haven't experimented with it myself, but it might be your best option. Probably better than the laser pointer.
The NEMA 17 motors should be fine, depending on their torque. The torque can actually vary greatly from one type of NEMA 17 motors to the next. You're basically looking for the high torque NEMA 17 motors, not the high speed motors.
The azimuth and elevation axis does not need to pass through the center of the mirror. It's been awhile since I did it, but I checked for errors using a CAD program and by testing in real life, and there didn't seem to be any errors added by moving the mirror away from the center.
Hope that helps!
I apologize if I'm butting in on this thread, so feel free to ignore me ... your project seems overly complicated. Cameras, OpenCV and C++ etc etc.
You can track the position of the sun extremely precisely with a simple setup of 4 LDRs like this (http://www.instructables.com/id/Arduino-Solar-Tracker/). The LDRs could be mounted on the solar panel, since that needs to point at the Sun anyway - and the voltage/current output from the panel (or a 5th LDR) can be used to estimate weather conditions and stop tracking in cloudy conditions.
You can set up limit switches such that the "reset" position of everything - LDRs and mirrors - is aiming at the heliostat target. Then, using stepper motors, you can measure the precise number of steps taken in each axis by the LDRs to point at the Sun, and move the mirrors precisely half that many steps in the same direction, to reflect light at the target. Would such a setup work for your project?
Hi alobo, and welcome to the forums!
My general philosophy is that today's complicated is tomorrow's simple. Once the work is done, it's done.
Granted, the Cameras, OpenCV, and C++ are possibly overly complicated for most backyard tinkerers, but I believe that Jadon's project is geared more towards the giant arrays of heliostats. When you go large scale, things get a lot more complicated no matter how you do it. In particular, it is hard to get a good focus of the reflected light when you have a large number of heliostats.
I should also mention that Jadon's task is part of his assigned PhD project, so it isn't supposed to be easy. :)
Ah, I didn't know it was for a PhD project. And that does makes sense for large arrays of heliostats I guess.
Good luck with that Jadon! :)