Contents Previous Next


Mel Bartels SCOPE telescope stepper controller program

Version : Jan2002
Author(s) : Mel Bartels, Francis Olivier (
License : GPL
Website :

Disk space required for installation is 2.00 Mb

After the package is installed it can be accessed using the command



A shortcut will be installed in the KDE/GNOME desktop menu system,
as an entry in the Astronomy submenu


The software has gone through several reincarnations, starting as 6502 assembly code for the Commodore 64, when the Commodore 64 first came out (I bought my Commodore 64 for at the
time incredible sales price of $600, and with no floppy or tape drive, and had to reenter my programs everytime I turned the computer back on!). Unfortunately, the stalwart 2 megahertz 6502
processor could only muster recentering the object every couple seconds. The dream of an inexpensive amateur built altaz drive seemed far away, until the AT class machines arrived. The
code was then rewritten in C. Later, the code went through its C++ object oriented life on a 386. Now, in interests of making the code as universal and easy to port, the code lives in ANSI C.
Functions that are directly tied to low level hardware such as the parallel port and bios clock, use pointers to access the appropriate memory locations. For non-DOS machines, some
modification of these parts of the code will be necessary.

The program is based on the popular two-star conversion algorithm, based on an Feb '89 Sky and Telescope magazine article by Toshimi Taki, to translate between altazimuth and equatorial
coordinates. The scope need only be accurately aligned on two widely separated stars using a high power reticle eyepiece; there is no need to level the base. The scope can also be initially
set on a planet, say, soon after sunset. After a couple of minutes of microstepping recentering, the scope is initialized on the same object again. The scope will continue to track the object,
keeping it in the eyepiece field of view for an hour or two.

In addition, the program will use a third initialization point, for more accuracy than the two star initialization would otherwise give. Any of the three initialization positions can be reinitialized
as often as wanted. All init positions are saved to a file for later analysis.

The conversion algorithm allows the input of mount construction errors. For instance, one altitude bearing may be a bit lower than its counterpart. Normally this would cause a pointing error,
but the conversion algorithm will compensate once given the amount of the error. The program can refine the altitude angle based on the initialized positions. Per the original Taki routine, the
starting azimuth can be any number. Now the starting altitude only needs to be set to within 10 degrees or so. This altitude offset algorithm was contributed by Dave Sopchak. This is the
'Z3' error (offset in elevation between the optical axis and the mechanical axis) so named by Taki. Taki's Z1 (axes non-perpendicularity) and Z2 (offset in horizon between the optical axis
and the mechanical axis) errors are also calculated after at least three initializations are done.

The software is event driven by either keyboard or hand paddle input. If no events occur, then the scope moves to the current equatorial coordinates. If the coordinates remain unchanged, the
scope tracks. If new coordinates are entered, the scope slews. Slews can only be interrupted by pressing or releasing a button on the handpad, and by the keyboard, and by the altitude or
azimuth limits if the interrupt driven halfstepping option is turned on. Tracking should be paused if hot-keying out to another program. When the program is exited, the scope's altazimuth
coordinates are saved along with any initialized positions.

The software handles backlash and handles periodic error correction, or PEC, for both axis. A 'guide' function is also included so that guiding for a minute or two nulls occasional tiny residual
drift. Drift can be manually entered in both equatorial and altazimuth coordinates.

Contents Previous Next