Progress Update - Week 15 to 21 of April

  • Saturday, Apr 20, 2024
blog-image

Progress Update - Week 15 to 21 of April


This week the team completed the first iteration of software that maximizes the power generated, which means having the solar cells perpendicular to the solar irradiance. We will give you an overview of the main functionalities of the code and what we expect to have acomplished by the next weeks.

Our code revolves around a main loop that iterates every 15 minutes, comprised of three important steps: The first step is the aquisition of the coordinates of the Sun, the second step is obtaining the optimal angle for maximum power production and the last step is rotating the step motor to the optimal angle, previously calculated.

To aquire the coordinates of the Sun, we used a public library called SolarCalculator, developed by jpb10 on github. This library has a function called “calcHorizontalCoordinates()”, that takes as inputs the latitude, longitude and the time (in UTC format) and is capable of obtaining the azimuth and elevation of the Sun, in degrees. Since the cells only rotate in one axis (in this case up or down) we will be only using the solar elevation and excluding the azimuth.

After obtaining the solar elevation, we need to perform some simple calculations to the determine how much the cells need to rotate, and in which direction. We start by subtracting the current elevation of the cells by the solar elevation, and we store that value by the name gamma. This in turn tells us how much do we need to rotate, given by the absolute value of gamma, and in which direction we will be rotating, given by the signal of gamma. If gamma is positive, the cells will rotate downwards and if gamma is negative, the cells will rotate upwards.

Lastly to rotate the step motor, to the angle previously calculated, we will need to translate gamma into an estimate of notches that need to be turned on the motor.

We are now facing an issue with aquisition of time on the UTC format, since it requires either a manual input, that wouldn’t allow for a fully automatic process, or internet access, that our arduino is not currently capable of doing. We are now looking into a solution to this problem, particularly implementing an ethernet shield to obtain the time used to calculate the solar coordinates.


https://github.com/JoaoRibeiro0306/SolarBlinds