# Orientation of a Solar Array

Hello!

I was hoping someone on this board might be able to point me in the right direction to solve my problem. I am trying to determine how the tilt angle (from the horizontal) and azimuth of a solar array changes as the array rotates around a fixed axis running from north to south.

The problem is simple if the axis is parallel or at 0 degrees. The tilt angle of the array would be equal to the amount of rotation about the axis; however, if the axis is tilted on a 35degree angle towards the south the problem gets more complex.

Could anyone point me to the right area of Physics that I should study in order to solve my problem. I should be able to refresh my calculus skills as this will probably be required.
Also just to clarify, the azimuth is the north-east-south-west position that the front of the array faces (if it is tilted, as there is no azimuth with 0 tilt). 0 degrees is north, 180 is south increasing clockwise.

Thank you to all that reply

I am having a hard time picturing exactly what you mean. In general, represent any important feature in the problem by a vector with Cartesian components, then apply rotation matrices to the vector until it points in the direction you want. There is no calculus required. This is simple vector geometry.

Stephen Tashi

I agree with chrisbaird that your description of the problem is unclear. If I think of an array with a given tilt angle sitting on a turntable whose top is in the horizontal plane, I can rotate the turntable without changing the angle of the array to the horizontal.

Sorry about the confusion. Let me clarify:
-A flat plane (the array) is attached to a horizontal bar along center (the fixed axis). It kind of works like a teeter totter.
-In my case this bar or fixed axis runs from north to south. It can be adjusted manually to be anywhere from 0 to 80 degrees to the horizontal.
-I have mine at about 35 degrees off of the horizontal.
-The flat plane (or array) then rotates around this tilted axis, to point the plane either East or West.
-So my question is: When the North-South bar is set to 35 degrees, and the plane is rotated around this bar by 60 degrees to the East (or West), what is the tilt of the "flat plane" with respect to the horizontal, not the bar it is attached to.

-I realize that both the plane and the bar are 35 degrees to the horizontal when it is facing due south. I also know that the plane is 90 degrees and the bar 35 degrees to the horizontal when it is facing either due East or West. What I don't know is how to determine the tilt of the plane to the horizontal for the X degrees of rotation around the bar (fixed axis).

I hope this made things more clear, and not more confusing. I will attach a picture (taken from: http://www.sunlinksolartracker.com/products.htm [Broken]) with the hope the visuals will help you understand. I can't find a good picture of the back side, but the one attached shows what the array looks like partially rotated towards the west.

Kindest Regards,
Dan Rogers

#### Attachments

• tracker_city.jpg
27.9 KB · Views: 360
Last edited by a moderator:
Ok!

I might have figured this one out. Let me know if you think I'm on the right track.
1) I said that my x axis runs north south, my y axis is east-west, and z is up-down
2) I created a rotation matrix to describe the 35degree tilt of my center bar that runs north to south. The matrix looks like this:
|COS(35), 0, SIN(35)|
|0 , 1, 0 |
|-SIN(35), 0, COS(35)|

3) I created a matrix to describe the rotation around the center bar (or X axis). That matrix looks like this:
|1, 0, 0|
|0, COS(60), -SIN(60)|
|0, SIN(60), COS(60) |

4) I multiplied the two matrices to get:
|COS(35), 0 , SIN(35)|
|0.49673176494347501832, 0.5 , -0.70940647993850298834|
|-0.2867882182, SIN(60), 0.40957602215|

5) I than took the Z value of my newly rotated Z axis: 0.40957602215
and than used simple trig to say that my new tilt angle with respect to the horizontal is:
COS(Tilt Angle)= Z/1
or rearranged
Tilt Angle = ACOS(Z)
Tilt Angle =ACOS(0.40957602215)
Tilt Angle = 65.82 degrees

Does this look right?

Stephen Tashi
You have to pay attention to the order you use in multiplying the matrices. I'm not sure the order you used is what you want. The most usual way to visualize what matrices do to vectors by saying that they multiply a column vector on the left. So if you use matrix A to represent a rotation then the rotated vector is given by the product:

$$A \begin{bmatrix} x \\ y \\ z \end{bmatrix}$$

The order of multiplication that use used implies that you first changed the location of the existing x,y and z axis by rotating that system about the y-axis.

Then you rotated the system again about the x-axis. However since this rotation is done after the first, the rotation so it is not being done about the original x-axis. It is being done about the x-axis in its revised position, the direction it landed after the first rotation.

I still don't understand the mechanics of your device, so I don't know if that's what you intended. We will also have to pay attention to the signs of the angles that are used.

Stephen,

You stated that I:

"The order of multiplication that use used implies that you first changed the location of the existing x,y and z axis by rotating that system about the y-axis.

Then you rotated the system again about the x-axis. However since this rotation is done after the first, the rotation so it is not being done about the original x-axis. It is being done about the x-axis in its revised position, the direction it landed after the first rotation."

This is exactly what I wanted to do. The angle (with respect to the original XY plane) of the new Z-axis after the 3-axis system was rotated twice, was half of the information I wanted. I was able to simulate these same steps in Google Sketchup and the answer was close to the correct value.

I also wanted to know the angle (with respect to the original ZX plane) of the new Z-axis after the 3-axis system was rotated twice. For some reason I can't figure out how to find this angle.
Any ideas?

Stephen Tashi
Stephen,

I also wanted to know the angle (with respect to the original ZX plane) of the new Z-axis after the 3-axis system was rotated twice.

Multiply the product of the two rotation matrices times $$\begin{bmatrix}0\\0\\1 \end{bmatrix}$$.

That gives the final postion of the z-axis as a vector. We can figure out how to find the angle between the vector and the original zx plane.

Hello!

I was hoping someone on this board might be able to point me in the right direction to solve my problem. I am trying to determine how the tilt angle (from the horizontal) and azimuth of a solar array changes as the array rotates around a fixed axis running from north to south.

The problem is simple if the axis is parallel or at 0 degrees. The tilt angle of the array would be equal to the amount of rotation about the axis; however, if the axis is tilted on a 35degree angle towards the south the problem gets more complex.

Could anyone point me to the right area of Physics that I should study in order to solve my problem. I should be able to refresh my calculus skills as this will probably be required.
Also just to clarify, the azimuth is the north-east-south-west position that the front of the array faces (if it is tilted, as there is no azimuth with 0 tilt). 0 degrees is north, 180 is south increasing clockwise.

Thank you to all that reply

Hello, I am late to this thread but I would like to bring my contribution.

You should get accustomed with Euler angles to manage properly the solar panel. Euler angles are not quit simple to understand and manage, but in the end the work very well.

Your explanation of the problem is clear. You want to move your panel in a way that the sun rays are always perpendicular to the surface.
You can operate the panel with two angles:
Azimuth
0° North
90° West
180° South
270° East

Tilt
0° Panel is vertical (sun at sunset or dawn)

I did something similar some time ago, and the procedure is really not immediate to understand. You should take account of the tilt of the Earth axis (which is not small 23°), and if you take in your computation the Earth tilt you have to manage also the day of the year.

First of all you should display on a paper or in your head (more difficult) your scene: the sun, the earth, the time of the day, the day of the year, the Earth tilt, your latitude.
As you see the situation get pretty soon garbled.

It is convenient to put the Earth at the center of the scene and assume the sun rotates around the Earth during the year.

As for the rotation sequence, the most used Euler rotation proceeds like this:
- Rotate around Z
- Rotate around x
- Rotate around z'

I suggest you to follow this one.

Ok, for the moment I think you have enough to ponder about.
Is it a real application, do you have a solar panel at home, or is it just an exercise ?

Ok!

I might have figured this one out. Let me know if you think I'm on the right track.
1) I said that my x axis runs north south, my y axis is east-west, and z is up-down
2) I created a rotation matrix to describe the 35degree tilt of my center bar that runs north to south. The matrix looks like this:
|COS(35), 0, SIN(35)|
|0 , 1, 0 |
|-SIN(35), 0, COS(35)|

3) I created a matrix to describe the rotation around the center bar (or X axis). That matrix looks like this:
|1, 0, 0|
|0, COS(60), -SIN(60)|
|0, SIN(60), COS(60) |

4) I multiplied the two matrices to get:
|COS(35), 0 , SIN(35)|
|0.49673176494347501832, 0.5 , -0.70940647993850298834|
|-0.2867882182, SIN(60), 0.40957602215|

5) I than took the Z value of my newly rotated Z axis: 0.40957602215
and than used simple trig to say that my new tilt angle with respect to the horizontal is:
COS(Tilt Angle)= Z/1
or rearranged
Tilt Angle = ACOS(Z)
Tilt Angle =ACOS(0.40957602215)
Tilt Angle = 65.82 degrees

Does this look right?

The approach is right, but of course you will have a misalignement because of the earth tilt.
If you want to make a good alignement you have to consider all the variable possible.
We can neglect some fancy things like the nutation of the Earth axis, of the precession of the equinox, but ok.....

I don't see any rotation about the Z axis which is foundamental for your panel.

Thanks for the replies Quinzio and Stephen. This is indeed a lot to think about; however, I have all day! :)
I do have a real solar array set up with this kind of tracking system (single axis). My goal is to model PV array production for any clear sky day of the year. I also have been using Google Sketch-up to rotate a module shaped rectangle the same way my array would rotate. This helps me measure angles and check the accuracy of my matrix calculations.

I have already created a model of sun position in excel for each minute of any day of the year using the NOAA method seen here: http://www.srrb.noaa.gov/highlights/sunrise/calcdetails.html
I than added the Bird clear sky model to estimate clear sky solar radiation for any particular minute. It can be found here:http://rredc.nrel.gov/solar/models/clearsky/

I am pretty sure the NOAA model takes the tilt of the earth into account, and yes you are right, this is very important for accuracy.

I will investigate this Z,X,Z series of rotations and see if I can better understand euler angles. If I get stumped I will post more questions. OH ya.. Also you said a rotation around the Z-axis is fundamental for my panel. I have been calling the axis from the ground to the sky my Z-axis, is this correct? While reading about matrices I noticed computer gaming programmers use Y-axis as the vertical axis and X, Z as the 2 horizontal axis (at least before rotation). Sorry if this adds more confusion, I just want to be sure we are talking about the same axis.

Thank you again for all the information and help you have provided.

Dan Rogers

Last edited:
Ok a bit of an update. I have been able to calculate the tilt and azimuth; however I had to use an angle I measured using Google Sketch-up. I'm hoping someone might be able to tell me where I can get this angle from. Anyways here is what I did step by step:
x-axis: North to South through array
y-axis: East to West through array
z-axis: Ground to sky through array

Azimuth: 0 degrees = North, 90 degrees = East, 180 degrees = south, ect.
Tilt above horizontal: angle between the ground and the array (angle between inital x-y plane and final x-y plane)

1) I rotated the x-z plane around the Y axis 35 degrees (My tilt above horizontal is now 35 degrees, and azimuth is 180 degrees {or facing due south})

2) I rotated the y-z plane around the X axis 60 degrees (My tilt is now unknown as well as my azimuth)

3) I multiplied my two matrices created from the previous steps.

3) I used the position of my Z axis after these two rotations to calculate my tilt angle. This was done by calculating the ACOS of the z position of my Z axis (Cell 33 of my new matrix created in step 3). [I now know that my tilt angle is 65.8218 after rotating the single axis of my array 60 degrees east or west]-{note that the initial 35 degree rotation is a manual adjustment made to the array just once it will not change throughout the day}

*From this point forward I rotate the array again even though these rotation don't actually take place in real life. I am just using them to calculate the azimuth. Bare with me!

4) I rotate the arrays x-y plane around its Z-axis by 51 degrees (This will not change the current tilt or azimuth of the array). I did this so that my Y-axis is back in the initial x-y plane (or earth's plane).

5) I rotated the array back 65.8218 degrees (my current tilt angle). Now the array's x-y plane is parallel to the initial x-y plane (earth plane); however, the arrays Y axis is now 71.7 degrees off of the original Y axis. This is my azimuth!!! Yea!!! Well sorry not quite... 180-71.7 = 108.3 = Azimuth

*** Now my only problem is I had to measure to get that 51 degrees in step 4. Any idea where this number comes from, and how I can calculate it. This is the missing piece in my puzzle!!!***

4) I rotate the arrays x-y plane around its Z-axis by 51 degrees (This will not change the current tilt or azimuth of the array). I did this so that my Y-axis is back in the initial x-y plane (or earth's plane).

Hi Dan.
First of all you should get an angle which is different from 51°. I checked the computation more than once, but I cannot understand why this difference.
Anyway, this angle can be calculated with the concept of gradient.
To understand the gradient imagine you have your panel in a certain position. If you place a small ball on the face of the panel the ball will start to move following a certain direction, to finally fall down. This is the maximum slope you have on the panel face. This fact is because every falling object falls following the maximum slope.
The opposite of that direction is the direction of the gradient.
Now what you want is to put the face x axis in the gradient direction, so that y axis will be parallel to ground.

$$arctg\left ( \frac{tg\ 60}{tg\ 35 \ cos\ 60} \right ) = 78.6°$$
This is the angle you should rotate the panel clockwise (looking the panel from the above).
The problem is I obtain 78.6° while you say you had to rotate it 51°.
I cannot understand, maybe you could check it again.
It's important to be understand if you rotate the panel about the ground axis or by the panel axis.
Anyway I made the computation by rotating the panel about the X axis and then about the panel y axis, but it doesn't match your data.

Maybe you could show come pictures showing how the rotating joints are displaced.

5) I rotated the array back 65.8218 degrees (my current tilt angle). Now the array's x-y plane is parallel to the initial x-y plane (earth plane); however, the arrays Y axis is now 71.7 degrees off of the original Y axis. This is my azimuth!!! Yea!!! Well sorry not quite... 180-71.7 = 108.3 = Azimuth
The azimuth is displaced from the south by this angle
$$arctg\left ( \frac{sin\ 60}{tg\ 35 } \right ) = 51.04°$$
(pointing east in this example)
Again I found an angle which is different from your.
I cannot understand why. Maybe you could post some picture to show the basic movements of the panel. It would be interesting as well to see the array of panels !

See you.

Last edited:
Hey Quinzio,

Thank you for the help. I don't know if I did the best job explaining how my solar array operates; however, I noticed that the 51.4 degrees you calculated was awful close to my 51 (even though we were trying to calculate different things). I was able to use your azimuth formula but considered this the gradient not the azimuth. After that I was able to correctly calculate the tilt and azimuth for any rotation about my trackers single axis.

Anyways to clarify, I created a model of the array in Google sketchup and will attach it to this post. There are actually 3 arrays in the model. The first shows the array with 0 tilt, the 2nd shows the array with its single axis adjusted to 35 degrees, and the 3rd shows the array rotated 60 degrees around its single axis.

Let me know if you don't have a copy of Google Sketchup (its free), and I will take some screen shots and post them.

Now I must move on to the next step of my problem. I have a method of calculating azimuth and tilt from the number of degrees rotation around my axis; however, I need to rearrange this problem to solve for tilt if I know the azimuth, or azimuth if I know the tilt. After that I need to use my angle of incidence calculation to try and find out what tilt will give me the lowest Angle of Incidence.

#### Attachments

• array3.zip
42.9 KB · Views: 106
Here is a copy of my excel sheet that shows my results and how I calculated them. If anyone is interested. I had to delete some of the bottom rows in order to shrink the file size to 100kb. You can just copy (drag and drop) the formulas down the sheet to get to 90 degrees. If you need help with this step just ask.

#### Attachments

• Single Axis Tracker Calculation (V1).xls
93.5 KB · Views: 103
So I was able to calculate azimuth from knowing the modules tilt angle with respect to the ground. I can't seem to be able to calculate the modules tilt angle from the azimuth though.

I think this is because I require information about both the gradient and the degrees of rotation about the tilted axis to get there.

If I take an azimuth of 120 degrees, I know the displacement from my resting position (180) is 60 degrees. If I take the COS of 60 [COS(60)=.5] this gives me the Y position of my Y axis. In my calculation of azimuth from tilt I got this Y position by:

I also calculated the gradient in the previous calculations from the degrees of rotation around the tilted axis. So substituting that formula for (Gradient) gives me:

R= Rotation
Axis Tilt = 35

.5 = COS(R) x COS(ATAN[SIN(R)/TAN(Axis Tilt)])

so...

ACOS(.5) = R x ATAN([SIN(R)/TAN(Axis Tilt)])

then...

TAN(ACOS(.5)) = TAN(R) x SIN(R)/TAN(35)

TAN(35) x TAN(ACOS(.5)) = TAN(R) x SIN(R) = SIN(R) x SIN(R)/COS(R)

1.212795 = SIN(R) x SIN(R)/COS(R)

This is where I'm stuck. Does anyone know hoe I can rearrange anymore to solve for R? I'm starting to think I might need calculus for this step. Any hints?

Hi Dan,
I have to revise my previous formula because I assumed the panel are moving in a wrong way.
Looking your picture cleared my doubts.
I will give you the expressions from going to Panel Tilt, Azimuth to Sun Elevation, Azimuth.

Hello, I made this piece of code which does the calculation.
It's a Visual Basic code. You can find at Microsoft a free version of Visual Basic, but all the code can be easily converted to C, or other codes.
The code is divided into two parts.
The first part is with panel horizontal, you give the tilt angle in degree and the other rotation. I called them RotationA (tilt) and B.
As you do RotationA positive, panel will face south, and RotationB positive panel will face East.
Before the second part you have the angle of the panel face wrt the ground plane and the azimunth wrt the south.
You can also fine the panel "disaplacement", that is how much you have to rotate the panel about its perpendicular to have the edge parallel to the ground (the 51 degree of the posts above).

In the second part you have the Sun azimuth and elevation. Elevation is the Sun angle wrt the horizon, azimuth wrt the south (positive toward east).
In the end you have RotationA and B which are the same angle as before.

In the examples of the previous posts RotationA=35°. RotationB= 60°

Now I have obtained the correct angles of azimuth 71, and panel "displacement" of 51.

I have quickly tested the code, if there's something wrong, just tell me to fix it.
Have fun.

Code:
Module Module1
Public Structure vector
Dim x As Double
Dim y As Double
Dim z As Double
End Structure

Sub Main()
Dim Rotation_A As Double
Dim Rotation_B As Double
Dim Vector_X As vector
Dim Vector_Y As vector
Dim Vector_Z As vector
Dim Vect_temp As vector
Dim Vector_Xafter_rotA As vector
Dim Vector_Yafter_rotA As vector
Dim Vector_Zafter_rotA As vector
Dim Rota_axis As vector
Dim Panel_Y_axis As vector

Dim Tilt As Double
Dim Azimuth As Double
Dim Panel_rot As Double

Vector_X.x = 1
Vector_X.y = 0
Vector_X.z = 0
Vector_Y.x = 0
Vector_Y.y = 1
Vector_Y.z = 0
Vector_Z.x = 0
Vector_Z.y = 0
Vector_Z.z = 1

' Begin part I
' Enter RotationA and B

Rotation_A = 35 * (2 * Math.PI / 360)
Rotation_B = -60 * (2 * Math.PI / 360)

Vector_Xafter_rotA = Euler_Zxz_(Rotation_A, Rotation_B, 0, Vector_X)
Vector_Yafter_rotA = Euler_Zxz_(Rotation_A, Rotation_B, 0, Vector_Y)
Vector_Zafter_rotA = Euler_Zxz_(Rotation_A, Rotation_B, 0, Vector_Z)

' Tilting
Tilt = 90 - Math.Asin(Vector_Yafter_rotA.y) / (2 * Math.PI / 360)
' Azimuth
Azimuth = (Math.Atan2(-Vector_Yafter_rotA.z, -Vector_Yafter_rotA.x) / (2 * Math.PI / 360))
' Panel rotation
Vect_temp = Vec_pr(Vector_Y, Vector_Yafter_rotA)
Vect_temp = Vec_mul(Vect_temp, Vec_mod(Vect_temp) ^ -1)
Panel_rot = Math.Acos(Dot_pr(Vect_temp, Vector_Zafter_rotA))
Panel_rot /= (2 * Math.PI / 360)

' End part I

' Begin part II
' Enter Elevation and Azimuth

Tilt = 80 * (2 * Math.PI / 360)
Azimuth = 10 * (2 * Math.PI / 360)

Panel_Y_axis.y = Math.Sin((Math.PI / 2) - Tilt)
Panel_Y_axis.x = ((Math.Cos(Math.PI + Azimuth)) Mod (2 * Math.PI)) * Math.Cos((Math.PI / 2) - Tilt)
Panel_Y_axis.z = ((Math.Sin(Math.PI + Azimuth)) Mod (2 * Math.PI)) * Math.Cos((Math.PI / 2) - Tilt)

Rota_axis = Vec_pr(Vector_Z, Panel_Y_axis)
Rota_axis = Vec_mul(Rota_axis, Vec_mod(Rota_axis) ^ -1)
Rotation_B = Math.Acos(Dot_pr(Vector_Z, Panel_Y_axis)) - Math.PI / 2

Panel_Y_axis = Vec_add(Vec_mul(Vec_pr(Rota_axis, Panel_Y_axis), Math.Sin(-Rotation_B)), Vec_mul(Panel_Y_axis, Math.Cos(-Rotation_B)))

Rotation_A = Math.Acos(Dot_pr(Vector_X, Panel_Y_axis)) - Math.PI / 2

Rotation_A /= (2 * Math.PI / 360)
Rotation_B /= (2 * Math.PI / 360)

' End part II

End Sub

Function Euler_Zxz_(ByVal rot1 As Double, ByVal rot2 As Double, ByVal rot3 As Double, ByVal myvector As vector) As vector
Dim ret_vector As vector

ret_vector.x = (Math.Cos(rot1) * Math.Cos(rot3) - Math.Cos(rot2) * Math.Sin(rot1) * Math.Sin(rot3)) * myvector.x
ret_vector.x += (-Math.Cos(rot1) * Math.Sin(rot3) - Math.Cos(rot3) * Math.Cos(rot2) * Math.Sin(rot1)) * myvector.y
ret_vector.x += (Math.Sin(rot2) * Math.Sin(rot1)) * myvector.z

ret_vector.y = (Math.Cos(rot2) * Math.Cos(rot1) * Math.Sin(rot3) + Math.Cos(rot3) * Math.Sin(rot1)) * myvector.x
ret_vector.y += (Math.Cos(rot1) * Math.Cos(rot2) * Math.Cos(rot3) - Math.Sin(rot1) * Math.Sin(rot3)) * myvector.y
ret_vector.y += (-Math.Cos(rot1) * Math.Sin(rot2)) * myvector.z

ret_vector.z = (Math.Sin(rot3) * Math.Sin(rot2)) * myvector.x
ret_vector.z += (Math.Cos(rot3) * Math.Sin(rot2)) * myvector.y
ret_vector.z += (Math.Cos(rot2)) * myvector.z

Return ret_vector

End Function

Function Vec_pr(ByVal vectorA As vector, ByVal vectorB As vector) As vector
Dim ret_vector As vector
ret_vector.x = vectorA.y * vectorB.z - vectorB.y * vectorA.z
ret_vector.y = vectorA.z * vectorB.x - vectorB.z * vectorA.x
ret_vector.z = vectorA.x * vectorB.y - vectorB.x * vectorA.y
Return ret_vector
End Function

Function Dot_pr(ByVal vectorA As vector, ByVal vectorB As vector) As Double
Dim ret_scalar As Double
ret_scalar = vectorA.x * vectorB.x
ret_scalar += vectorA.y * vectorB.y
ret_scalar += vectorA.z * vectorB.z
Return ret_scalar
End Function
Function Vec_mod(ByVal vectorA As vector) As Double
Return Math.Sqrt(Dot_pr(vectorA, vectorA))
End Function
Function Vec_mul(ByVal vectorA As vector, ByVal fact As Double) As vector
Dim Ret_vector As vector
Ret_vector.x = vectorA.x * fact
Ret_vector.y = vectorA.y * fact
Ret_vector.z = vectorA.z * fact
Return Ret_vector
End Function
Function Vec_add(ByVal vectorA As vector, ByVal vectorB As vector) As vector
Dim Ret_vector As vector
Ret_vector.x = vectorA.x + vectorB.x
Ret_vector.y = vectorA.y + vectorB.y
Ret_vector.z = vectorA.z + vectorB.z
Return Ret_vector
End Function
End Module

Last edited:
Hey!

Well I can't thank you enough for all of your help Quinzio. I am currently downloading visual basic (well XP SP3 first). I can't wait to try out the code!!!
This was a very good learning experience. I will let you know when I actually finish my excel sheet model and will post it if you are interested.

Thanks again!!!

Quinzio. I have downloaded a copy of Visual Basic Express 2010. I open a new Windows Fourms application and copy and paste your code but I can't seem to get it to work. Any ideas what I might be doing wrong?
Thanks again for all your help!

Hi there !
I wrote that code for a "Console Application", which is the equivalent of the old DOS non-graphic applications. That means you have no windows-like input output, and you step-by-step into the code to watch it working.

So I now fit that code inside a Windows Form application, which is indeed more pleasant to see and use.
There is the project attached, unzip it and click on the .sln file.
It should open automatically.
With the project loaded press F5 to run it, or the "play-like" green arrow.
How to use it should be quite straightforward, that's what I hope...
To make step by step execution into the code, press F8, then launch a conversion, or place a so called breakpoint in the code.
I made it with Visual Basic 2008 version, but this shouldn't affect anything, it's a rather simple piece of code.
Have fun, bye.

#### Attachments

• SolarPanel.zip
79.1 KB · Views: 81
Last edited: