GitHub Repo: https://github.com/MayMing5/SolarPanelLightTrackerÂ
The solar panel will rotate until it finds the optimal angle in which the solar panel receives the most light. This project is implemented with a servo, a light-dependent resistor, and an Arduino to control the servos. The project is not complete and is a work in-progress, but the end goal of this project is to have the solar panel rotate to the best angle.
Solar panels output different amounts of power based on the amount of light perpendicular to the panel. This implies that if the source of light (ex: the sun) moves throughout the day then the solar panel will not always output nominal power. To combat this solar panels can be mounted on an axis controlled by a servo motor which is controlled by an Arduino that reads data in from light-dependent resistors.
This project currently uses a light-dependent resistors, a servo (might implement two in the future), an Arduino, and an LED as an indicator. The movement of the servo will be defined by a bang-bang algorithm using the voltage from the light-dependent resistor as the input. The input from the light-dependent resistor is averaged over 5 cycles because there is a lot of variation in readings causing the servo to almost jitter. Additionally, delaying the loops would also delay the indicator light. In future implementations, the solar panel will be mounted to the servo using custom 3D prints.
I successfully implemented a system that controls servo movement based on light intensity by establishing a custom boundary for the light-dependent resistor readings. This setup allows the servo to respond accurately to changes in light levels, adjusting its position to align the solar panel with the brightest light source. By defining a specific threshold for the light-dependent resistor, the servo avoids unnecessary or erratic movements, creating a smoother and more stable tracking response. This implementation not only demonstrated the effectiveness of using light-dependent resistor feedback to control servo positioning but also highlighted the importance of setting precise boundaries and implementing filters to minimize jitter and optimize system responsiveness.
In future iterations of this project, the goal is to expand the design to include a custom PCB and additional components to improve the accuracy and functionality of the solar tracker. This would allow the solar panel to be more sleek and modular and it would also serve as a good practice for custom PCB design. Additionally, the addition of a second servo motor would enable two-axis movement, along with four light-dependent resistors (LDRs) would provide a more precise measure of light intensity from multiple angles. Ultimately, this configuration would allow the tracker to orient the solar panel more effectively, optimizing energy capture as the light source changes position. Lastly, there is an interest in enhancing the project's sustainability by exploring ways for the solar panel to supply power to an external load and possibly even to power its own tracking system.
The following references were used to guide this project.
https://www.instructables.com/Building-an-Automatic-Solar-Tracker-With-Arduino-U/
https://projecthub.arduino.cc/Aboubakr_Elhammoumi/arduino-solar-tracker-77347b
Throughout the project experience, several key lessons and skills were gained. First, this process provided an opportunity to learn Arduino programming. Previously, I had some experience with Arduino, but not to this extent. Additionally, I was able to implement an averaging filter to stabilize LDR readings and create more accurate servo movements. Lastly, the project taught me the importance of documenting each step, from design decisions to implementation challenges, which will support future improvements and enable effective knowledge sharing.