Pages: [1]   Go Down
 Author Topic: A little Trig Challenge For You?  (Read 660 times) 0 Members and 1 Guest are viewing this topic.
0
Offline
Newbie
Karma: 0
Posts: 24
Arduino rocks
 « on: December 01, 2010, 11:39:03 pm » Bigger Smaller Reset

I'm working on a sun tracking project using mirrors to direct the sun into a skylight, but have struck a 3d geometry issue. You can check the project out if your interested here: http://arduinobeam.blogspot.com/
I didn't see this issue coming and still struggle a bit to visualise it but a 3d model helps.

See image below..

Because of the way the primary mirror is offset to prevent shadow being cast onto it from the secondary mirror, it turns out a few complications occur. The adjustment of the primary (elevation) mirror angle effects the azimuth alignment because the reflection plane is not vertical (as it would be if both mirrors were in line). To solve this I need to be able to calculate the two angles marked with ? from the elevation angle E and the mirror offset (currently 18.4deg). I know that the angles A are equal (this is the path of a ray in the plane of reflection).

I have had a go at this, but so far am struggling with the derivation. I assumed that the solid lines were of known length (1 for convenience) but this may not be necessary. If anyone feels inspired please give it a crack and let me know how you get on!
 « Last Edit: December 02, 2010, 02:16:41 am by Chojin » Logged

0
Offline
Karma: 16
Posts: 2857
ruggedcircuits.com
 « Reply #1 on: December 02, 2010, 12:33:34 am » Bigger Smaller Reset

Forgive me if this is too naive but isn't it as simple as saying that 2A = E + ?   (where ? is the lower unknown angle), hence ? = 2A - E.

With this quantity known, A = 18.4 + ? (where ? is the upper angle...you really ought to use different symbols  hence  ? = A - 18.4.

--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, light sensor, potentiometers, pushbuttons
 Logged

0
Offline
Newbie
Karma: 0
Posts: 24
Arduino rocks
 « Reply #2 on: December 02, 2010, 02:13:05 am » Bigger Smaller Reset

Ah but A is unknown as it increases and decreases with changed in E (the elevation of the sun). Sorry about the symbols bad form I know, try this one out:

E and 18.4 are known, that's all..
 Logged

Offline
Sr. Member
Karma: 6
Posts: 353
Arduino rocks
 « Reply #3 on: December 02, 2010, 04:10:05 am » Bigger Smaller Reset

Have a look at
http://www.qsl.net/kd2bd/predict.html

I haven't used the Windows version, but under Linux you can run predict in server mode.
One of the things it broadcasts on port 1280 is the sun's current altitude and azimuth.
You could put an Ethernet shield on your Arduino and receive the Sun's or Moon's current position.
 Logged

Central Europe
Offline
Edison Member
Karma: 7
Posts: 1220
Use the Source, Luke.
 « Reply #4 on: December 02, 2010, 04:45:40 am » Bigger Smaller Reset

Chojin,

if there are right angle between the planes containing x and y and the planes containg x and E, you should have:

x = 2 * 18.4 = 36.8 and
y = E / 2

Korman
 Logged

0
Offline
Newbie
Karma: 0
Posts: 24
Arduino rocks
 « Reply #5 on: December 02, 2010, 05:36:41 pm » Bigger Smaller Reset

Hey Korman, there are right angles between the planes containing x and y and the planes containing x and E. But x does not equal 2*18.4. that seems intuitive, and is what I first thought as well, but the model I made shows how the projection of the two equal angles 'a' onto a second plane creates two new angles.. if that makes sense.

I may need to go back to the old text books, seems like this should be easily solvable with the right technique.
 Logged

0
Offline
Newbie
Karma: 0
Posts: 24
Arduino rocks
 « Reply #6 on: December 03, 2010, 02:07:52 am » Bigger Smaller Reset

After tackeling the cad model in a different way it became clear that the tips of the incoming ray vectors all lay on a circle offset from the circle traced by the centre of the elevation mirror. Knowing this and using some similar triangles I came up with these two equations:

az = sin-1(sin(off)/cos(e))
em = tan-1(tan(off).tan(e)/(sin(az) + tan(off).cos(az)))

where :