Hey GBorsuk.
Do you want to find out how much "extra" you need to rotate so that you get to north/south/east/west coordinate system from something else?
I have built a 2 axis solar array that uses linear actuators to move the panels in X and Y.
I have found many resources that allow me to determin the sun's altitude (elevation) and azimuth (degrees from North) for any given day/time and location on the face of the earth, and even the Hour Angle to look at the sun directly.
What my problem is that these equations are based on having the X axis and Y axis line up with North/South East/West. So that say the elevation is 25deg and the Hour angel is 35 you set your panel to have its X axis at 25 and Y at 35 and your panel should be perpendicular to the the rays of the sun....
Now my panel is not lined up north and south/east and west due to propery lines and fences etc... Instead of my panels facing 180 due south, they face 230 south.
I need to be able to take the coordinates calculated for elevation and hour angle and convert them to elevation and angle for my panels that are skewed. And as such manipulate the actuators with software on a micro controller to adjust them properly.
I have been out of advanced math for more than 2 decades and can't recall what to use to compute my skew...
Any help would be wonderfully appreciated!
Thanks.
think of the plane that the solar panel is in when it is facing due south and its elevation is fixed. The panel rotates about its mid point along the north south axis according to the hour angle. (all based on location and local time etc.. those calcs i have and are working...) now the panels are skewed from alignment from north south so that instead of the panels north south axis at 180 it points to 230.
The panel now is free to move in elevation and hour angle. What i need is the new composit hour angle to place the panel at to have the face of the panel reach the sun.
Does that make sense? Basically I have 2 actuators on the panel and since it does not line up north south i need to compensate the hour angle and elevation numbers to my setup. Elevation is from due south, not from 230 degrees. and Say at 2 pm the hour angle should be +17 degrees, if I put the panel at that angle it points in the wrong direction.
thanks for any help.
So it seems like you have two axes of rotation of which one rotates "left to right" as if north was pointing upwards from the ground, and the other rotates "up and down".
Now you have the angle data for the rotation angles for each axes and they are getting misaligned.
What I am going to suggest you do is the following (and this is actually what engineers do to configure their own equipment that involves rotating since I answered a very similar question quite a while ago): you supply the direction vector in terms of <x,y,z> and then what you do use some linear algebra to solve for the angle positions of each rotation axis (the leftright and the updown) and that will give you an angle.
Rotations can be described by matrices so if you have <x,y,z> (i.e. 3D points), then your rotation matrix is a 3x3 matrix with some other properties. If you want to compose rotations, you just multiply the matrices in a specific order and it will do both of the rotations when you apply this to the vector.
Now for your problem, what happens is that you have some initial vector (i.e. where your device is already pointed to) and you have a destination vector and then what you do is you setup an equation to solve for these angles and then you use your device to take those and rotate it.
Now comes a few questions for you.
The first is, what kind of computations can you do on this device? Can you do basic math instructions with high precision floating point words (not superhigh but high enough) and can you do standard things like write custom code that is big enough (won't be that big though)?
The second is, what kind of data do you supply to the device to do the rotations? Do you give it absolute information (i.e. do you give it information about absolute angles relative to some fixed orientation corresponding to where the angles equal 0) or relative information (you give it angles that are in reference to where the device is already pointing)?
I can go over this in more detail but the basic idea is that in a linear system, you have a matrix A, an initial vector x and a final vector b where you rotate x to get b by using Ax = b.
Now you should have b and x, but you can't just use any A so you need to use the A corresponding to your rotation operations.
If you have two rotations then A = RQ and if you know the axis, then you can set up this matrix in terms of angleaxis rotation matrix where you have a free variable corresponding to the angle for that rotation. You do the same for Q.
Once you've done this you will have a system of equations for both the angles and then you use an iterative scheme to get the angles which you then give to your device to do it's magic.
This is the general solution, but I'll wait for your response to see if you can use special conditions to make the calculations easier.
North
Hour Angle
Around this Axis



xxxxxxxxxxxxxxxx
x x
x x
x x
x x
x x
West x H x East
Elevation x x
Around This x x
Axis x x
x x
x x
xxxxxxxxxxxxxxxx



South.
'H' is as if you were to look straigt down the mounting pole into the ground from above the panel.
Think of the panel as gimbaled at the very center and can tilt about the north/south axis and about the east/west axis There is no rotation. So the angels of travel 180 degrees(theoretical as mechanical limits have to be considered) about the north south axis and the east west axis.
I have the skills to calulate the required angels to aling the panel as long as it sits in a true north/south orientation. for instance say at noon on october 1,2012 the angle about the north/south axis would be zero (ie perpendicular to the local noon sun) and the elevation for my latitude would say be 15 degrees about the east/west axis.
When you "twist" the orientation about the Z axies (ie pointing straing down through the middle of the panel where east/west and north/south axises intersect at point H on my crude diagram) the angles calculated need to be adjusted for my particular installation. At noon the east/west would still be zero degrees however the elevation would need correcting as 15 degrees skewed to the south west from south no longer has proper aligntment.
As the sun now moves across the sky lets say at 7pm in the evening my skew points the panel at say 180degrees but the elevation is off now because the sun set at say 270 degrees on the horizon but my panel points at 300 degrees (ie all relative becuase my panel twisted about the Z axis.
does this make more sense?
Now for the processing power etc. All of this will be done via a desktop PC feeding the movements to the panel remotely. So percision is not an issue. I have the means to know how much to move the panel as there are sensors on the linear actuator that count the revolutions and with simple math I can determine how many degrees the plane of the array moves with one click or say 20 clicks of the sensor.
I hope this clarifies the problem at hand...
I appreciate all your help!
Just to clarify, are you familiar with my response above or not?
Basically the response I have above is a general way to do it for any arbitrary composition of two rotations, and essentially what we need to do is to figure out what these matrices are based on the orientations of the device and how they can move.
I think I can help you out, but I need to ask if you are familiar with the linear algebra technique I talked about above.
I do think i remember vectors in algebra many years ago. I can work it out once i have a concept of where to go on this.
As for your initial questions....
I have absoulte information coming in. IE the sun at 11am is say at hour angle 28.5 degrees and elevation 17 degrees. These calculations i already have a solution for based on date time information local to my installation. (the process would be to calculate every say 5 min and move the array at that time.)
The movement would be a relative one from a start point. IE all the way east (at mechanical limits, which lets say it 70degrees from the plane being perpendicular to the local noon sun. IE the noon sun is 0 degrees rotation about the north/south axis and a small elevation, anyways the panel completely horizontal is 0 in both the north/south and east/west axis...)
I am very rusty on matrices but somethings are coming back to light and i can always brush up on the concept...
Does this help?
George
I'll get back to you soon, but in the meantime what I will do (if you don't do it first) is convert your system with its rotation constraints to a matrix (one for each rotation where the first represents the normal configuration with its constraints and the second one represents the same one with its constraints) and then set up a system of equations (not linear) to get the angle data and then you just plug this in.
Basically if you can only rotate along a set of axes (I'm guessing you can only spin around and go up and down) then all you do is set these up (which are really easy since they are aligned with a particular relative axis) and do it this way.
The only other real thing to ask you for complete clarification is if the rotations "remember" the axis data that they have (i.e. orientation with respect to "north" or "sky north") of if they don't.