Introduction: DIY Solar Tracker
Introduction
We aim to introduce young students to engineering and teach them about solar energy; by having them build a Helios as part of their curriculum. There is an effort in engineering to push energy generation away from the use of fossil fuels and towards greener alternatives. One option for greener energy is to use a device called a heliostat, which uses a mirror to direct the sun’s light onto a target throughout the day. Such a device can be used for many applications, from concentrating solar energy onto the heat reservoir of a power plant to illuminating areas that are blocked from the sun.
In addition to the number of uses of this technology, there is also a diverse range of structures that have been designed to enable solar tracking. The physical structure of Helios’s design, as with other heliostat designs, functions to mount a mirror onto two controllable axes. The mechanism will track the sun by using a program to calculate the star’s location in the sky thought the day, based on the global position of the Helios. An Arduino micro-controller will be used to run the program and control the two servo motors.
Design Considerations
To ensure that this project is widely dispersed, considerable effort went into designing the Helios to be built with common tools and cheap materials. The first design choice was to build the body almost entirely out of foam core, which is rigid, affordable, easy to acquire, and easy to cut. Also, for maximum strength and rigidity, care was taken to design the body so that all of the foam parts are either in tension or compression. This was done to take advantage of foam core’s strength in tension and compression, and because the adhesive that was used is more effective at supporting a load in tension than in bending. Additionally, the shaft that is attached to the mirror is powered through a timing belt, which allows for a small alignment error between the motor and the mirror, the servo motors are accurate to within 1 degree, and the platform runs on the open source Arduino platform. These design choices, along with a few other considerations, make the presented design a durable and affordable, educational tool.
Our open-source promise
The goal of Helios is to promote engineering education. Because this is our main focus, our work is licensed under the GNU FDL license. Users have full rights to reproduce and improve on what we have done, as long as they continue to do so under the same license. We hope that users will improve the design and continue to evolve Helios into a more effective learning tool.
Epilog Challenge VIAn Epilog Zing 16 Laser would allow me to complete higher quality projects, , and increase the amount of impact that I have with them.build interesting large scale things, and to tinker more effectively in general. An Epliog Laser would also allow me to build more interesting things and write more cool Instructables, such as this one about a Kayak that I refurbished. My next goal is to build a kayak from laser cut plywood that is reinforced with carbon fiber or glass fiber, as well as a cardboard surf board that is wrapped in structural fiber.
I've also entered this instructable in the Tech and the Teach It contests. If you enjoyed this post, please vote!
Step 1: Table of Contents
Table of Contents:
- Introduction: DIY Solar Tracker
- Table of Contents
- Tools and Bill of Materials
- Step 1-16 Hardware Assembly
- Step 17-22 Electronics Assembly
- Purchasing Links
- Works Cited
- Thanks for your Support!!!
Step 2: Tools and Bill of Materials
All of these tools can be purchased at local stores or at the links in the reference section. The total cost of these materials is approximately $80, if they are all purchased online at the given links.
BOM
- Power Drill
- Drill Bits (.1258”, .18”, and .5” Diameter)
- Screwdriver Set
- Straight Edge
- Box Cutter
- Large Vice Grips
- 2 Foam Core Sheets (20” X 30”, ~.2in thick)
- 9.5” Long by 1/2” Diameter Rod
- Square Nut (7/16” -14 Thread Size, 3/8” Thick)
- Vigor VS-2A Servo (39.2g/5kg/0.17 sec)
- Tape
- Timing-Belt Pulleys (2), 1” OD
- Washers
- Krazy Glue
- Timing-Belt 10"
- Templates (Files attached)
- Mirrored Acrylic Sheet (6” X 6”)
- Krazy Glue Gel
- 8 Machine Screws (4-40, 25mm long)
- 8 Nuts (4-40)
- 1.5" long Nails
- Starter Kit for Arduino Uno
- Real Time Clock Module
- Wall Adapter Power Supply (5VDC 1A)
- 9V battery
- 3.3 KOhm Resistor (2)
Step 3:
Print the templates in the attached file.
Note: These have to be printed in full scale. Compare the printouts with the PDFs, to ensure that your printer has not changed the scale.
Attachments
Step 4:
Secure the templates to the poster board as shown in Figure 1 and, using the center lines as guides, drill the .18 inch and .5 inch holes.
Note: Drill the .5 inch holes with the .18inch drill bit first for increased accuracy.
Step 5:
With a sharp box cutter, cut out the individual components.
Note: Cut the foam core with multiple passes of the box cutter, this will result in a much cleaner cut. Don’t try to cut through the whole sheet in one pass.
Step 6:
Glue the matching cutouts together as shown in Figure 2, using the super glue. You should be able to look through the cutouts and see that all of the holes are aligned, the base of parts 1 and 2 should be flat, and one template on part 3 should be facing out.
Note: After applying glue to one surface, join the parts and press them together for 30 seconds. Then, allow the glue to set for five minutes.
Step 7:
Using the superglue gel, glue parts 1, 2 and 3 together as shown in Figure 3. Be sure that the parts are arranged so that the .5” diameter holes are closest to the section of the base that is labeled short, also be sure that the template on the base is facing down/out. Allow the glue to set for five minutes. After the glue has set, insert 3 nails through the base and into each of the uprights for added support.
Step 8:
Cut through the top layer of both cross beams and insert them into the Helios as shown in Figure 4. Apply superglue gel to joints between the cross beams and the walls of the Helios, and the surface shared between the two cross beams, as indicated in blue. Allow the glue to set for five minutes.
Step 9:
Place a piece of tape along the cuts, as shown in Figure 5.
Step 10:
Superglue the spacer to the base, by lining it up with the template as shown in Figure 6, and allow the glue to set for five minutes.
Step 11:
Center the largest servo horn onto the bottom base and secure it with the superglue, as shown in Figure 7. Allow the glue to set for five minutes.
Step 12:
Bore out one of the timing belt-pulleys to a .5” diameter hole using the .5 inch drill bit, and check that it fits onto the .5” diameter shaft. It should either press on, or have a gap small enough to fill with super glue. If the drilled hole is too small, sand down the outer diameter of the shaft by hand.
Step 13:
Carefully bore out two square nuts to .5” diameter holes and check that they fit snuggly onto the shaft.
Note: Clamp the nut to a sacrificial surface, with a pair of vice grips, and progressively increase the diameter of the hole with multiple bits until a .5” diameter hole is left. Remember to plunge the drill bit into the nut slowly.
Step 14:
Attach a servo horn to the timing belt pulley as shown here, being careful to center the servo horn’s axis with the pulley’s, as shown in Figure 8.
Step 15:
Assemble the shaft and servo, with no glue, and align the two timing belt pulleys as shown in Figure 9. Some of the rod should be exposed from the wall opposite the pulley.
Note: Screw the servo into the uprights, being careful not to force the screws through the foam core, and screw the servo horn into the servo. You may use superglue instead of screws , however you won’t be able to easily disassemble the unit.
Step 16:
Once the shaft’s pulley is aligned with the servo’s pulley, slide the inner set of washers against each wall and glue them to the shaft using the superglue gel. They will keep the shaft from sliding out of alignment. Also, glue the pulley to the shaft using the super glue. Let the glue set for five minutes.
Step 17:
Shorten the timing belt to the correct length, around 7.2 inches, and use the superglue gel to make a loop that connects the shaft’s pulley to the servo’s pulley, as seen in Figure 10. First, wrap the belt around both pulleys and take out the slack. Now, cut the belt just after the teeth on both ends, the ends of the belt to just reach each other. Now cut around .5” of belt from the piece you just removed. Finally, bring both ends together and glue them with this extra length of belt, image 2. Once the glue dries, place the belt around the pulleys. It should be such a snug fit that you will have to unattach the pulley from the servo to fit the belt on. If it fits, place it to the side for later.
Step 18:
Glue the mirror template onto the back of the mirror, or draw the center line by hand. Then, using the line as a guide, glue the square nuts onto the mirror with the super glue gel. Make sure that the mirror is able to rotate 180 degrees from facing straight up to facing straight down without interfering with anything, and then glue the square nuts to the shaft with the superglue gel.
Note: The bottom edge of the square washers should be aligned with the dotted line on the template.
Step 19:
Install the final servo, secure the bottom base to the final servo with a screw through the servo horn, and place the timing belt onto the pulleys to complete the Helios.
Note: Once you understand how the electronics and software work, by reading below, you can adjust your Helios to increase its accuracy.
Step 20:
Connect the servos as shown, leaving the power disconnected from the DC jack. (Figure 12)
Note: Connect the 9 volt battery directly to the Arduino through the jack on the board and connect the Arduino to your computer through its USB port. DO NOT connect the 9 volt battery to the prototyping board, as this may damage your real time clock.
Step 21:
Download and Install Arduino Version 1.0.2 from here.
Note: This download includes the Helios control code and all the libraries that you will need to run it. To install, download the folder and unzip it. The Arduino program runs directly out of its directory, no formal installation is required. For general installation directions and directions on how to install drivers for your Arduino, head here.
Step 22:
Run the Blink Arduino Sketch based on the directions here. Once you get this short sketch to work, you can be sure that you have properly connected your Arduino to your computer.
Step 23:
Open the control program (ArduinoCode >Helios_2013) to set the time and location of the Heliostat, and to upload the program onto the Arduino.
1) Choose whether you want Helios to act like a solar panel and track the sun (set the variable heliostat=0) or a heliostat (set the variable heliostat=1)
a. Note: We suggest that you try it as a solar panel first to make sure that it moves how you expect. If one of the axis seems to be off, then you may have put in one of the servos backwards.
2) Gently turn Helios clockwise all the way. Then point the whole machine east.
3) Enter the coordinates of your location.
a. Find the coordinates of a location by Google searching the address. Next, right click the location and select “What’s here?”. The coordinates will appear in the search box, with latitude and the longitude.
b. Change the default latitude and longitude values in the program to the latitude and longitude values of Helios.
4) If you choose to use Helios as a solar panel, then skip this step. If you choose to use Helios as a heliostat, then enter the altitude and azimuth angle of Helios’s target. The coordinate system is defined in Figure 15.
5) To set the Real Time Clock, determine the current time in UTC and replace the corresponding variables with these values, in military time. Then delete the “//” where indicated, upload the sketch, and replace the “//” (Ex. 6:30pm EST is 10:30pm UTC. In the program this would look like hour=22, minute=30, and second=0)
a. After the clock is set, unplug the servos and run the code in “solar panel” mode (heliostat=0). Verify the calculated angles of the solar tracker with something like the solar position calculator from sunearthtools.com (http://www.sunearthtools.com/dp/tools/pos_sun.php). “dAzimuth” is the Azimuth angle of the sun as predicted by Helios and “dElevation” is the elevation /altitude angle of the sun. Both Helios’s and the website’s predictions should agree to within around five degrees. Any discrepancy within this range is from the uploaded time being off by a few minutes, and would cause an unnoticeable change in Helios’s behavior.
b. Once Helios’s prediction for the sun’s location is accurate, then replace the “//” to comment out the code that sets the clock. The real time clock only needs to be set once, so it will not have to be updated as you upload new sketches or change targets.
6) Remove the USB and power from the Arduino and connect the servo motors again.
Step 24:
If Helios was assembled correctly, then it should point towards the target that you command and keep the sun’s reflection stationary there when power is applied to the Arduino once again. Helios will correct the sun’s reflection every degree. This means that the sun’s refection will shift until the sun has moved one degree, at this point Helios will move to correct the reflection. Once you understand how the program works, you may want to play with the variables “offset_Elv” (Elevation) and “offset_Az” (Azimuth) to compensate for any assembly error. These variables control the orientation of Helios’s coordinate system.
Step 25: Purchasing Links
Foamcore: http://www.amazon.com/Elmers-Acid-Free-Boards-16-Inch-902015/dp/B003NS4HQY/ref=sr_1_4?s=office-products&ie=UTF8&qid=1340998492&sr=1-4&keywords=20x30+foam+core
Rod: http://www.mcmaster.com/#cast-acrylic/=i6zw7m (Part Number: 8528K32)
Box cutter: http://www.amazon.com/IRWIN-2082300-Utility-Standard-Retractable/dp/B0001Q2EOS/ref=sr_1_2?ie=UTF8&qid=1340619344&sr=8-2&keywords=box+cutter
Servo: http://www.hobbyking.com/hobbyking/store/__16641__Vigor_VS_2A_Servo_39_2g_5kg_0_17sec.html
Tape: http://www.amazon.com/Henkel-00-20843-4-Inch---500-Inch-Invisible/dp/B000NHZ3IY/ref=sr_1_1?s=hi&ie=UTF8&qid=1340619520&sr=1-1&keywords=invisible+tape
Templates: Print the pages at the end of this document. Paper can be purchased online at: http://www.amazon.com/Inches-Letter-Bright-Sheets-998067R/dp/B004WL0L9S/ref=sr_1_1?ie=UTF8&qid=1340864035&sr=8-1&keywords=paper
Square nut: http://www.mcmaster.com/#machine-screw-square-nuts/=hflvij (Part Number: 98694A125)
Super glue: http://www.amazon.com/Krazy-Glue-KG92548R-Instant-0-18-Ounce/dp/B000BQSFSM/ref=sr_1_2?ie=UTF8&qid=1340861717&sr=8-2&keywords=Krazy+Glue
Super glue gel: http://www.amazon.com/Krazy-Glue-KG86648R-Instant-0-07-Ounce/dp/B000H5SFNW/ref=sr_1_4?ie=UTF8&qid=1340863003&sr=8-4&keywords=all+purpose+instant+krazy+glue
Straight Edge: http://www.amazon.com/The-Classics-12-Inch-Stainless-TPG-152/dp/B002IXKD9U/ref=sr_1_1?ie=UTF8&qid=1340863091&sr=8-1&keywords=ruler
Power Drill: http://www.amazon.com/Black-Decker-9099KC-7-2-Volt-Cordless/dp/B0002TXNX0/ref=sr_1_1?ie=UTF8&qid=1340863181&sr=8-1&keywords=power+drill
Screws: http://www.mcmaster.com/#machine-screw-fasteners/=mumsm1 (Part Number: 90272A115)
Nuts: http://www.mcmaster.com/#hex-nuts/=mums50 (Part Number: 90480A005)
Mirror: http://www.mcmaster.com/#catalog/118/3571/=i705h8 (Part Number: 1518T18)
Screwdriver Set: http://www.amazon.com/Stanley-66-052-6-Piece-Precision-Screwdriver/dp/B00009OYGV/ref=sr_1_5?s=hi&ie=UTF8&qid=1340863503&sr=1-5&keywords=screwdriver+set
2 Timing-Belt Pulleys: https://sdp-si.com/eStore/Direct.asp?GroupID=218 (Part Number: A 6M16-040DF25)
Timing-Belt: http://www.mcmaster.com/#timing-belts/=i723l2 (Part Number: 7887K82)
Drill Bits: http://www.amazon.com/Bosch-TI18-18-Piece-Titanium-Assortment/dp/B0000TZZWE/ref=sr_1_6?s=hi&ie=UTF8&qid=1340874037&sr=1-6&keywords=drill+bits
Washers: http://www.mcmaster.com/#catalog/118/3226/=hzc366 (Part Number: 95630A246)
Large Vice Grips: http://www.amazon.com/7-Inch-Curved-Locking-Pliers-Cutter/dp/B00004YO5L/ref=sr_1_10?ie=UTF8&qid=1340863806&sr=8-10&keywords=vise+grips
Nails: http://www.mcmaster.com/#standard-nails/=i708x6 (Part Number: 97850A228)
Arduino Kit: http://www.amazon.com/Starter-Kit-Newsite-Uno-Breadboard/dp/B0051QHPJM/ref=sr_1_2?s=electronics&ie=UTF8&qid=1367794217&sr=1-2&keywords=arduino
Real Time Clock Module: https://www.sparkfun.com/products/99
Power Supply: http://www.amazon.com/gp/product/B006GEPD6U/ref=oh_details_o01_s01_i00?ie=UTF8&psc=1
Battery: http://www.amazon.com/Duracell-Batteries-9Volt-size-battery/dp/B00009V2QT/ref=pd_sbs_hpc_9
Resistors: http://www.radioshack.com/product/index.jsp?productId=2062345
Step 26: Works Cited
4photos. (2112, 07 07). 3d compass navigation. Retrieved June 6, 2013, from 4photos: http://4photos.net/en/image:43-215776-3d_compass_navigation_images
Commons, C. (2010, January 1). Real Time Clock Module. Retrieved May 28, 2013, from Sparkfun: https://www.sparkfun.com/products/99
Commons, C. (2011, January 1). DC Barrel Jack Adapter - Breadboard Compatible. Retrieved May 28, 2013, from Sparkfun: https://www.sparkfun.com/products/10811
Commons, C. (2013, May 16). Ethernet library. Retrieved May 28, 2013, from Arduino: http://arduino.cc/en/Reference/Ethernet
ElmarM. (2013, March 24). Haunted Doll. Retrieved May 28, 2013, from instructables: https://www.instructables.com/id/Now-the-fun-part-create-a-creepy-story-to-go-wit/step17/Arduino-and-Breadboard-setup/
Gaze, M. (n.d.). STEPsss. Retrieved May 28, 2013, from kennyviper: http://kennyviper.com/Temp/Chloe/electronic%20workshop%20final%20work/Male%20Gaze/male%20gaze/Stepsss.html
sonlineshop. (2012, January 1). Resistor 2.2K Ohm. Retrieved May 28, 2013, from http://sonlineshop.com/index.php?route=product/product&product_id=72
Step 27: Thanks for Your Support!!!
We would like to extend a huge thank you to Alexander Mitsos, our supportive advisor, and all of the people that supported us throughout this project:
- Whitney Meriwether
- Benjamin Bangsberg
- Walter Bryan
- Radha Krishna Gorle
- Matthew Miller
- Katharina Wilkins
- Garratt Gallagher
- Rachel Nottelling
- Randall Heath
- Paul Shoemaker
- Bruce Bock
- Robert Davy
- Nick Bolitho
- Nick Bergeron
- Paul English
- Alexander Mitsos
- Matt C
- William Bryce
- Nilton Lessa
- Emerson Yearwood
- Jost Jahn
- Carl Men
- Nina
- Michael and Liz
- Walter Lickteig
- Andrew Heine
- Rich Ramsland
- Bryan Miller
- Netia McCray
Roberto Melendez

Runner Up in the
Tech Contest

Runner Up in the
Epilog Challenge VI

Participated in the
Teach It! Contest Sponsored by Dremel
122 Comments
Tip 1 year ago
Hi there !
Did someone manage to modify the code to track the moon when the sun is gone ? It should add some intersting light inside a house !
Question 1 year ago on Step 27
Hi there. What an awesome project! I would like to try this out, but I can't seem to find a working link to the code. I get an Error 404 not found. Is the code still available? Thanks!
Answer 1 year ago
Thank you. What link are you trying for the code? It should work.
Here is the link again: https://drive.google.com/drive/folders/0B_swEoD4gUJ8WUZjUlJQNGJzVm8?resourcekey=0-Jd14GKWlaedILZXsWcGikw&usp=sharing
Reply 1 year ago
Thanks for the link! The link I was having trouble with in step 21 was not working before. Now it is. Strange.
Reply 1 year ago
great
Reply 1 year ago
hello, I can see files however once download, it till no access is allowed
Reply 1 year ago
Hi, what is the error message that you see once you download the files and try to open them?
Reply 1 year ago
Hi, thanks for coming back, what I got is "You do not have permission to download this document"!!
Reply 1 year ago
I am confused, this makes it sound like you can download the files "hello, I can see files however once download, it till no access is allowed". In that case, you would need to open them as an administrator.
Please paste screenshots of the error that you see. Everybody should have access to download the files.
Reply 1 year ago
I was able to download the files in incognito mode just now, so I wasn't signed into my Google drive. It should work for you. Please send screenshots.
Reply 1 year ago
Hi pdanial7, yes it is confusing, not sure why I can't download it. please find what I got
Reply 1 year ago
Strange. Please DM me an email address and I will add you to the drive directly.
Reply 1 year ago
Herein my email: tawfiek1976@gmail.com
thanks in advance
Reply 1 year ago
Done. Looking at your screenshot, it may be a problem with your computer. If this is a school computer, it may not allow you to download certain files. It could also be an issue from a virus blocker not liking the file-types.
Reply 1 year ago
padaniel, thank you very much, it working now
1 year ago
Hey! can't access shared files. Pdaniel7, could you help please
2 years ago
Hello Everyone
I am a final year Mechatronical Engineering student
I came across this DIY heliostat project and it looked like precisely what i needed for the functional part of my final year project.
I need to build and write a report on a functional small scale heliostat field that can track the sun with open loop control(system uses only its predefined algorithm and current
state to determine its actions, without making use of feedback) and no error model used for calibration. The sun's position is determined by a solar position algorithm that is used as an input by mathematical calculations that will program the heliostats( only like 5) to turn to a fixed position and reflect the sun on to a small target.
The project will fit on to a base board the size of a table so that is portable to move outside. It will consist of 2 or 3 rows of heliostats with fixed locations on the baseboard situated in a formation around a small scale tower that will act as the receiver(i was thinking of using a solar panel as the receiver at the top of the tower because i don't know if the object can overheat). I was thinking of programming the heliostats with an Arduino and using servo motors to turn the heliostats, like used in this project.
I have worked on this project for a while but have a few questions that i hope you guys could help me with
I have calculated the suns position and the solar Azimuth-, Elevations-, declination- and hour angles. The local solar time and the solar vector. I have the longitude and latitude of my location( the project that is on the base board's).
My problem comes in:
1. I do not know how to calculate the math for the reflected sun beam(target vector) and put it into code to turn the motors every time the sun moves a certain degrees. If someone could give me a reference to some sort of math or explanation of how to calculate it. then i might understand how to implement the code. At the moment i don't know where to find all the functions used in this project's code so it is difficult for me to understand when i cant see the core of the worked out calculations. I searched for calculations on the internet but all the articles i found goes to much in-depth for precision an decimal accuracy for the reflected ray. Mine doesn't need to be precise it just needs to be functional.
2. Can i use a Arduino to control all the heliostats(5) at once or how will i go about it?
3. How is it going to effect my code if the project is moved outside to reflect the sun onto the small tower. They might move it to different locations each time. Is it just going to effect my latitude and longitude input values or do i have to keep other things in mind as well.
4. how does the calibration proses work to test if the heliostats reflect the sun onto the tower because i only use open loop with no feedback, only a predetermined set of calculations.
I really need all the help i can get. There is no project on the internet as simplistic as this one that uses servo motors and a Arduino.
Please let me know if you can help me, if you guys have more info you can send it to me via: maniedutoit6@gmail.com
Manie
2 years ago
Figure 7 looks like a black circle on a white rectangle; no servo horn. Anyone else see it better?
Reply 2 years ago
If you look at the "Vigor VS-2A Servo" on hobbyking.com, for example, you should see a circular servo horn.
2 years ago on Introduction
When the plate that holds the mirror (or solar panel) is vertical all the weight is offset from the axis. A counterweight would negate this imbalance and the servo motor would use less energy in moving the plate.