I have a Dobsonian telescope.

It is using Altazimuth mount.

Basic idea of using it is to target the object by moving telescope vertical axis perpendicular to the ground, and an elevation axis that is parallel to the ground.

I have installed two step motors to automate the movement along both vertical and elevation axis.

I would like to find out how can I cancel out earth rotation speed by simultaneously moving both vertical axis and elevation axis motors.

Idea behind it is to point telescope at the object and press the button. Then the step motors driver software would follow the object as the earth rotate.

I will quote few lines from The Basic Astronomical Telescope Mounting Designs to help me explain what I am trying to achieve:

[Using altazimuth telescope...:]

If you happen to be observing from the North or South Pole, the vertical axis would be aligned with the Earth's spin axis. The nice thing about that would be that when you found an object to observe, rotation in only the vertical axis would be needed to keep the object in the field of view. Rotating at the Earth's spin rate in the opposite direction as the Earth's rotation would keep and object motionless in the eyepiece.

However, for any other latitude on the planet, the vertical axis is not aligned with the Earth's spin axis. This means that to keep an object in the field of view requires motion in both axes. The motion rates will change over time as the elevation angle changes. Tracking objects near the horizon requires mostly changes in elevation, and tracking objects more straight up requires mostly changes in azimuth.

I need to find mathematical algorithm that will help me solve the problem described in the second paragraph.

Hope this is clear.

  • $\begingroup$ Nowadays there's usually an Arduino involved somewhere: google.com/… Without a latitude wedge, you'll get frame rotation over time. google.com/… $\endgroup$ Commented Dec 29, 2014 at 14:34
  • $\begingroup$ So you're trying to create your own clock drive? en.wikipedia.org/wiki/Clock_drive $\endgroup$
    – user21
    Commented Dec 29, 2014 at 21:55
  • $\begingroup$ @barrycarter clock drive is used with equatorial mounts. My telescope is altazimuth mount. I need to find the algorithm to drive both motors using altazimuth mount. $\endgroup$
    – Kocur4d
    Commented Dec 30, 2014 at 0:36
  • $\begingroup$ @Wayfaring Stranger I plan to use Arduino but at this stage I would like to stay away from net ready solutions and see if it is possible to build it from scratch. $\endgroup$
    – Kocur4d
    Commented Dec 30, 2014 at 0:41
  • 1
    $\begingroup$ @Kocur4d Understood. When I need to make something a little complicated, I usually have a look at the "Make" sites and the like, figure out what's wrong with those designs for my purposes and design new from a position of knowing what others have tried. Someone is likely to have a great bearing design, but poor stepper/servo control or vice versa. If you look at a enough designs you can get a feel for what's best for you. $\endgroup$ Commented Dec 30, 2014 at 1:51

2 Answers 2


Given ra, dec, lat, lon in radians, and d in number of fractional days since '1970-01-01 00:00:00 UTC', the azimuth of a star is:

$-\cot ^{-1}(\tan (\text{dec}) \cos (\text{lat}) \sec (\text{d1}+\text{lon}-\text{ra})+\sin (\text{lat}) \tan (\text{d1}+\text{lon}-\text{ra}))$

and the elevation is:

$\tan ^{-1}\left(\frac{\sin (\text{dec}) \sin (\text{lat})-\cos (\text{dec}) \cos (\text{lat}) \sin (\text{d1}+\text{lon}-\text{ra})}{\sqrt{(\cos (\text{dec}) \sin (\text{lat}) \sin (\text{d1}+\text{lon}-\text{ra})+\sin (\text{dec}) \cos (\text{lat}))^2+\cos ^2(\text{dec}) \cos ^2(\text{d1}+\text{lon}-\text{ra})}}\right)$

where d1 is: $\frac{\pi (401095163740318 d+11366224765515)}{200000000000000}$

(you will need to resolve the ambiguity in the arc(co)tangent, but this isn't difficult).

These formulas aren't as daunting as they seem, since, for you, lat, lon, ra, and dec will be fixed, and the only thing that changes is d.

Hope this helps, but I'm worried that it just demonstrates how complicated these formulas are.

  • 1
    $\begingroup$ "401095163740318" and its like will push 64 bit math pretty hard. If Arduino, it might be best to look for a library already optimized for this particular calc. $\endgroup$ Commented Dec 31, 2014 at 14:48
  • $\begingroup$ Good point. I perhaps went the route of excessive (and probably unwarranted) precision. Most people build this formula up in steps, but, ultimately, this is what you'll end up calculating. $\endgroup$
    – user21
    Commented Dec 31, 2014 at 15:26
  • $\begingroup$ It is complicated. I can't confirm it atm. It will take some time before I can understand it... $\endgroup$
    – Kocur4d
    Commented Jan 5, 2015 at 0:48

Note that how fast - and which direction - you need to move also depends on where you're pointing; it's not a one rate fits everything solution.

For example, if you're pointing at the celestial pole, you don't need to move the scope at all. While if you're pointing at the celestial equator, that needs the fastest tracking rate. What you end up doing is tracking along a circle that represents the declination.

Which means that in order to work out what the declination is, you're going to need angle encoders on both your alt and az axes.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .