Atlas / EQ6 MCU Replacement Project


The Atlas/EQ6 mount in manufactured by Synta in China. While is it a very good mount out-of-the-box, it has some problems as far as more advanced uses are concerned.

Many of the problems stem from the desire to manufacture the mount as inexpensively as possible. There are several products that address the mechanical issues by replacing the stepper motors, gearboxes, spur gears and worm/worm gears.

Another area of concern is the original motor control electronics provided with the mount. While the electronics provide a set of basic facilities, they have a number of problems:
There are a number of after market controllers that solve these problems as well as adding GOTO capabilities to the mount. Typically these require the replacement of the motor and, in some cases, the gearbox and drive chain.

Although these controllers offer an impressive array of features they are normally quite expensive - in some cases the price of the controller and motors can rival the price of the mount.

This project takes a different approach. The existing Atmel 8751-clone MCU is replaced with an Atmel MEGA162 controller. This new MCU is almost pin-compatible with the existing MCU and offers several significant features:
The existing motor driving hardware and hand paddle are reused to minimize the cost of the modification, although the motor driver hardware is definitely not optimal, especially for commonly available stepper motors,

The complete setup (existing hand paddle and the hardware/software described on this page) give the mount control system the following capabilities:




Hand Paddle

Motor driver

Polar scope illuminator (for HEQ5 and EQ6 mounts without an illuminator)

Table of Contents

  1. Introduction
  2. Table of Contents
  3. Page & Project Revision Information
  4. Copyright
  5. What's in this Project?
  6. The Mount MCU Replacement Hardware
  7. Replacement MCU Mount Firmware
  8. Software upgrading using the serial bootloader
  9. Control Program
  10. Using Third-Party Software with the Modified Mount
  11. Kits
  12. Thanks
  13. Appendix - Serial Protocol
  14. Contact information

Page & Project Revision Information

Page revision
11 Dec 2005
Add axis direction reversal for the Conrad gearbox.
Add firmware download support to the control program
7 Feb 2005
Fix missing rate change on GOTO in software (removed for testing)
18 Dec 2004
Modified software to avoid resets triggered by RA relay switching (EMF)
Seperated RA and DEC slew control allowing independent operation
Added Meade pulseguide (Mgx) commands
Added drop-down box for 132.8125:1 and 131.8756:1, and 100:1 ratios
Added information mailing list
28 Aug 2004
Added polar scope illumination. Moved sidereal rate calculation to the PC control program to give more accurate tracking results. Enable relay during RA backlash. Initial notes for HEQ5 operation.
4 July 2004
Completely revised page. Add GOTO support, control program, and PCB assembly instructions.  Note on kit availability. See Old page (w/ non PCB construction) for original page
9 May 2004
Attributed concepts from Anand Rajiva, with apologies for the ommission. See the software releases information for details.
4 May 2004
Added attribution information
25 Apr 2004
Update to include serial bootloader option
10 Apr 2004
Update software version, documented serial protocol including LX200-compatible commands
29 Mar 2004
Added programming instructions
10 Mar 2004
Added pictures and detailed modification comments
10 Mar 2004
Updated with fixes suggested by David Butler. Added notes on kits (lack thereof)
9 Mar 2004
Initial version, full of silly typographical and grammatical errors.


Given the cost of Astronomy as a hobby I can see why people would want to make some money back on their projects, but that isn't my interest!

This project, especially the software, is released under the GNU GPL. See the GNU foundation license page for further information.

Basically allows you to use and modify the firmware, with the main restriction that whenever you give the software to someone in a compiled form you must be willing to provide the source code (including any modifications you have made) under the same license.

The hardware modifications are in the placed into the public domain and may be freely copied (and have been ...)

If you wish to use this project as the basis of a commercial kit or modification it would be appreciated if:

What's in this Project?

This project is composed of three main parts;

  1. A circuit that replaces the existing MCU. It adds a serial (RS232) and parallel (ST4) input for guiding. This can be constructed either using a PCB, or by making the changes directly to the board
  2. The firmware for the new mount MCU. This provides the software features.
  3. The PC-hosted control and configuration program.
The AVR Serial Bootloader Project could also be considered part of this project, although it is useful in any AVR based project. It allows you to download updated mount MCU firmware using the same serial interface that is used for configuration, guiding, and GOTO functions.

Each part is detailed in the sections below.

The Mount MCU Replacement Hardware

First comes the circuit. The current version is split into two parts:

Page 1 has the circuit for the board that plugs into the socket of the existing MCU (after the original one is removed, of course!)
Page 2 has the circuit for the board that sits in the interface box on top of the existing top cover.

This is the top panel drill/cutting guide (300 dpi)
This is the interface box drill/cutting guide (300 dpi)

The two circuits are linked by ten pins that pass through new hole in the existing top cover, allowing them two boards to be plugged together.

The following shows the construction on the MCU Replacement hardware using the PCB method.

Start assembly by printing the box punch overlay any putting it inside the box used to hold the interface PCB.

Pinch the holes and drill to the specified sizes.

Put a hole in the middle of the RJ41 (square connector) and DB9 (lower) connector holes that is large enough for the nibbler tool and nibble to the correct size.

Use a file to smooth any rough edges and paint with at least two coats of black spray paint. I used Rust-o-leum matt black paint. This paint requires minimal surface preparation.

The MCU Replacement is built on two circuit boards cut from a single panel using a Rotary tool (i.e. Dremel) with a cutting wheel.

Always use safety glasses when using a rotary tool. Trust me - it's easy to get cutting wheels to explode if they twist.

It may be necessary to trim the left side of the main board to avoid the original crystal and to remove the top, left hand corner of the main board to avoid an capacitor.

First get the cup pins and pin strip assembled.

  1. Cut the pin strip into 20 pin lengths and insert them into the socket. Put the side with the small bump into the socket.
  2. Put the cup pins over the exposed pins of the pin strip.

Note that the socket is just used to hold the pin strip and is not used in the project.

Assemble the main board:

  1. Put the cup pins into the main PCB from the top (making sure they are pressed down as far as possible and solder from the bottom. It is essential these protrude from the top of the board as little as possible.
  2. Remove the pin strip, leaving the cup pins behind.
  3. Insert the pin strip (still in the socket) into the PCB from the bottom and solder from the top. Again, the pin strip should be pressed up against the board.

    Leave the socket on the pin strip pins - it will prevent the pin strip pins from being bent or broken.
  4. Install the passive components and solder in height order (starting with the least high ones)
  5. Install the MAX 232 and solder

Check your work! If possible, remove flux using a flux remover to simplify inspection.

Finally insert the new MCU. You may need to bend the pins of the MCU slightly inward. Don't use too much pressure or you could break the pins!

HEQ5 note: Replace SV2 with a 10 pin male header. The interface box will be connected with a 10 pin IDC crimp header and cable (6")

The ten pins that link the main PCB to the interface PCB come from a 14 pin wirewrap sockets.

  1. Cut the socket into two rows of pins. Carefully clean up the left over connecting plastic with a sharp knife
  2. Trim two pins off one end of each row

HEQ5 note: This step does not apply.

Assemble the interface PCB. Note that only the following components should be fitted:

  1. L2 (The 6-pin RJ41 socket)
  2. SV3 (The two rows of the wirewrap socket
  3. R1 (The 1.5K resistor)

The remaining components will be mounted on the metal box for the final assembly.

HEQ5 note: Don't fit SV2 - the control board and interface PCB are wired together so that the interface board can be located outside the HEQ5 covers.

The remaining interface box components are mounted on the interface box as shown. The DB9 has wirewrap pins (they don't show up very well in this photograph.

Note: For v1 of the PCB the LED should be reversed with respect to the legend on the PCB.

The LED is in a small, plastic LED mount. The mount is pushed into the hole in the box (from the front) and then the LED is inserted from the rear.

Make sure the led mount is flat against the box and the LED is pushed all the way into the mount.

The next step is to put the interface PCB into the interface box. The easiest way to do this is to this is to get the switch and LED wires in first, tilt the PCB with the DB9 end higher, and get each row of the DB9 connector into their holes separately.

Once all the pins of the parts pass through the PCB get the PCB level, with the front of the RJ41 socket level with the front of the box (but not any higher)

Then solder the pins of the switch, LED, and DB9 connector.

Attach the top panel template to the top of the box. I used glue, but it leaves a residue - use double sided tape.

Do not punch or drill the mounting holes at this mount.

Cut out the square hole using a rotary tool. It is VITAL that you wear safety glasses for this step as there is a good chance that you will break at least one cutting wheel.


Note that this hole will be completely under the interface box, so slight overcutting is OK, but not too much.

This is how the top panel looks after the hole is cut and the template removed.

Do not remove the template that this time.

Time to start assembling the parts.

  1. Remove the original MCU from the board using a flat-bladed screwdriver
  2. Carefully remove the socket from the pinstrip pins
  3. Plug the main board into the socket on the original controller board

Don't force it - the main board should plug easily in the socket. If  force is required then stop and make sure the pins on the pin strip are straight.

At this point it's time to do some testing ....

  1. Set up the board on the bench. Make sure there are no wire clippings, solder blobs, or tools about to short out the board.
  2. Attach power and the hand paddle (with the power switch off).
    Use a current limited power supply if you have one.
  3. Set the guiding rate switch to 16x
  4. Turn the power on and wait 5 seconds. If you smell anything burning turn the power off immediately!
  5. Press the RA left (or right) buttons. The relay should click

This is the whole initial test and verifies that the CPU is running the mount firmware and is able to accept commands from the hand controller.

The remaining testing will be done after the mount is reassembled.

Install the top plate. Note how the ICP header and 10 pin  socket are exposed through the square cutout.

Ignore the mounting holes - you haven't drilled them yet.

Plug the 10 wirewrap pins of the interface box into the 10 pin socket, being careful to get the pins into the holes.

Mark the true location of the holes in the interface box mounting ears and remove the interface box and top cover. They should align with the hole marks on the template, but may differ slightly due to printer tolerances.

Make sure the box is square to the plate and mark where the actual mounting holes will be.

  • Disassemble the controller
  • Punch and drill the mounting holes
  • Remove the drilling template
  • Attach interface box to panel and trim excess screw length with rotary tool cutting wheel
  • Reassemble the controller
I drilled and tapped the holes, but it should be possible to use self-tapping machine screws.

Again, remember to use those safety glasses!

HEQ5 note: Remount the mount controller PCB and mount the controller box at a convenient place on the mount.

Finally put the mount back together. Plug the cables back into the board and screw the board back into the mount.

Time for the final testing:

  1. Install the control program (as shown in the next section) onto a PC.
  2. Connect a serial cable between the DB9 port of the interface box to the PC.
  3. Start the control program (with the mount on)
  4. Select the comm port in the comm port menu
  5. Select the mount information menu. A window should pop up identifying the mount firmware.

If that all works, you're done!

Replacement MCU Mount Firmware

All this hardware is useless without the firmware to make it all work. This firmware is made available under the terms of the GNU GPL. This allows you to get, and modify the mount firmware to suit your own requirements.

Hopefully what I have written will be enough, but if you feel the need to add features feel free to send the code back to me for inclusion in the main program. Note that I may use the code as it is, or rewrite it to fit in better with the way the rest of the program works.

If you want to experiment with the software, add features, or just like to build it yourself then you will need the FREE GNU "C" compiler toolchain for the AVR-family of processors from the WinAVR project

The current mount firmware version can be found in this zip file [ver7]

Hopefully you'll be starting with a programmed MCU, but if you are starting with a "raw" CPU you will need to prepare it for this application. To do that you'll need a programmer for the Atmel AVR processor. The STK500 or AVR ISP are recommended.

If you need a MCU prepared please contact me and we should be able to organize something.

To prepare a MCU for serial bootloader upgrading:
  1. Set the fuses as follows:
  2. Set the locks bits to protect the bootstrap area from reprogramming via the MCU (the bootstrap cannot be upgraded using the bootstrap!)
  3. Download the serial bootloader to the MCU. See the AVR Serial Bootloader Project for the bootloader source and object code.

Software upgrading using the serial bootloader

The serial bootloader allows the MCU firmware to upgraded without a special programmer or removing the MCU from the board.

The EQ6 control program (see the next section) supports download of new firmware to the MCU.

Control Program

The EQ6 Control Program is used to configure the mount. It's a very simple program (and my first windows program - be kind!)

Like the mount firmware, this program is also released under the terms of the GNU GPL. The source code can be found in the following zip file. You will need Microsoft Visual to build the code (though it can be built using Visual Studio with some minor modification).

Note: These images are for an early version of the control program - current versions are similar but contain additional controls..

When the program starts you will see a screen like:

At this screen you can:
To actually change the mount configuration, or to get information from the mount, two steps are required. The first is to select a comm port. This is the port the telescope is connected to.

The next step is to either update the mount (by pressing the 'Update Mount' button), or to fetch information from the mount using the 'Mount Information' menu near the top of the screen.

If you select 'Mount Information; you should see:

In the mount is not connected, not responding, or is connected to a different serial port that the one selected you will see:

Note that it takes several seconds for information to be displayed in this case.

The main use of the control program is to set the backlash compensation. To set the backlash compensation do the following:
  1. Set up your scope so that it is pointing at a star at high magnification
  2. Set the paddle to 2x guiding speed (using the switch on the hand paddle)
  3. Increase the RA backlash value (and update the mount) until the star jumps when the RA buttons are briefly pressed, then reduce the setting slightly
  4. Perform the same process for the DEC axis
After this process is complete save the mount setup for later reference.

Using Third-Party Software with the Modified Mount

There are two main types of software that can be used with the Modified Mount:

  1. Autoguiding programs

    Any program that issues LX200 guiding commands should be compatible with the modified mount. The mount firmware has been tested with startrack[free], k3ccd tools[commercial], GuideDog[free, personal use], and Meade Autostar Suite for DSI/LPI[commercial].
  2. Planetarium programs

    Any program that sends LX200 GOTO commands should also be compatible with the modified mount. The mount firmware has been tested with cartes du ciel[free] and should work with other programs.

    Reports of compatibility (good or bad) will be most welcome.
A few notes are in order about the GOTO features of the Modified Mount. Obviously, due ti the mount motors and driving hardware are unmodified, the GOTO abilities of the mount will be limited. For example, to slew from horizon to horizon would take up to 45 minutes!

To limit the slewing time the following procedure is used. Note that method of performing some of these steps is dependent on the particular planetarium software.

  1. Using the planetarium program find a bright (i.e.. naked eye) star as close to the target position as possible. A planisphere can also help, especially in light-polluted skies.
  2. Point the telescope at the star by moving the OTA and fine tuning with the hand paddle
  3. Use the planetarium software to synchronize the mount with the position of the star
  4. Select the target object
  5. Use the planetarium program to tell the mount to go to the selected object
The telescope will start slewing in RA and DEC as necessary. The LED on the interface box indicates that slewing is in progress.


The least expensive, but most complex, way to create a modified mount is to modify the original mount PCB directly to add the necessary circuitry, using the supplied circuit diagrams. This requires significant skill in the modification of electronic hardware and a real possibility of doing harm to the mount PCB.

The simplest way to perform the modification is to build the PCBs using the method described the Mount MCU Replacement Hardware section of this document.

I will be making a kit available that contains the parts you can't get off the shelf:
These will be offered at cost price, about $20 plus postage at the time of writing. Contact me for current price and availability information.

The remaining parts of the kit should not be too hard to find. To simplify this task, see the following digikey order that you can use - just tick the items you need! The part numbers lead to full technical information in the digikey catalog and they will ship internationally!

Note that the digikey order has, in some cases, enough parts to build more than one board. They have some minimum order quantities.


First, thanks to the folks on the Yahoo EQ6 mailing list. Without their help and support this project would not be possible.

Second thanks to Anand Rajiva for several valuable suggestions that have significantly increased the usefulness of this project. He a commercial kit that was originally based on an early version of this project (though you'd never guess from the lack of acknowledgement!).

ccs_hello (Ching) suggested that Meade pulseguide support would be a good idea. He was right :-)

John Archbold has helped shake out some problems and has done some excellent reverse engineering (that I really need to put up or link to!).

Appendix - Serial Protocol

This firmware actually supports two separate protocols:
A full definition of these LX200 commands (and the values returned) can be found at the Meade Website. The Mount Firmware supports the following subset of the LX200 command set:

Return mount alignment mode (always 'P' for polar)
:CM# SYNC to the coordinates specified by the last :Sds and :Sr commands
Get current DEC from mount. This will only change while the mount is slewing in response to a GOTO command
Get current RA from mount. This will only change while the mount is slewing in response to a GOTO command
Return firmware date
:GVN# Return firmware revision number
Return product name
:GVT# Return firmware time
Start guiding east (RA RIGHT), west (RA LEFT), north (DEC UP), or south (DEC DOWN) at the current guiding rate
Start a timed guiding (pulse guide) operation at the current guiding rate.

The 'tttt' parameters is specified in milliseconds

This command will be terminated by other motion commands on the same axis (RA or DEC)
GOTO the coordinates specified by the last :Sds and :Sr commands
Stop all guiding motion
Stop guiding east
Stop guiding west
Stop guiding south
Stop guiding north
Set guiding rate to +/- 0.3x sidereal rate
Set guiding rate to +/- sidereal rate
Set guiding rate to +/- 8x sidereal rate
Set guiding rate to +/- 16x sidereal rate
Undocummented guiding rate command issued by Meade Autostart suite - ignored
Set DEC of next GOTO or SYNC
Set RA of next GOTO or SYNC
:U# Toggle output precision

The custom set of commands are based on a different concept. Each command operates on a number (called the accumulator), or single bit flag that is set before the command is executed.

This reduces the number of characters required for each commands and is very simple to extend, making it especially convenient for configuration and test commands.

The commands that set the accumulator and flags are controlled by:

Clear the accumulator to zero and set the flag to OFF
Set flag to OFF
Set flag to ON
0 to 9
Add the digit to the accumulator
Indicates the number in the accumulator is negative

The following commands use the flag and/or the accumulator:

Start / stop guiding in DEC UP, depending on the flag
Start / stop guiding in DEC DOWN, depending on the flag
Start / stop guiding in RA LEFT, depending on the flag
Start / stop guiding in RA DOWN, depending on the flag
Stop all guiding

Set DEC backlash to the specified number of microsteps from accumulator. A good value seems to be about 100
Set then way DEC backlash is used depending on the value of the accumulator:
< 0:   Always finish motion in the DOWN direction
0:      Take up backlash only at the start of motion (see below)
>0:    Always finish motion in the UP direction

Note that backlash is always taken up at the start of motion if the direction of motion has changed.
Set RA backlash to the specified number of microsteps from accumulator. Typically this should be set to zero as the direction of motion does not change.
Set the way RA backlash is used depending on the value of the accumulator:
< 0:   Always finish motion in the LEFT direction
0:      Take up backlash only at the start of motion (see below)
>0:    Always finish motion in the RIGHT direction

Note that backlash is always taken up at the start of motion if the direction of motion has changed.

Set tracking rate used by the mount according to the accumulator. The following tracking rates are supported:
< 0:    Disable tracking (for testing or terrestrial use)
0:        Track at sidereal rate
1:        Solar / planetary rate
2:        Lunar rate

Reverse DEC motion if flag set (for Conrad grearbox and custom controller reuse)
 o Y
Reverse RA motion if flag set (for Conrad grearbox and custom controller reuse)

Polar scope illumination level is set to the value in the accumulator. The range is 0 .. 255. Values above this will be treated as if they were 255.

Set paddle guiding rate used in 2x paddle movement mode. Set to +/- 0.3x if the flag is ON, or +/- 1x if the flag is OFF.

This command is accepted, but ignored. for backward compatibility

The mount is now given low level data that determines the tracking rate. The mount has a table of  three entries (sidereal, solar, and lunar tracking rates). The table contains an integer divisor (gives a rough tracking rate, within about 0.5%) and an adjustment that specifies how often a clock interrupt should be added or deleted to get an exact rate. This gives an accuracy better than that of the crystal that the timing is generated from.
Tracking table entry being updated
As per tracking rate
The accumulator is the integer divisor of the CPU clock used to generate the master tracking clock.
As per tracking rate
The accumulator represents how often a master tracking clock should be inserted/deleted.
As per tracking rate
The accumulator contains the time, in seconds, for the mount RA axis to complete a complete rotation. This is used by the GOTO code to determine how long to slew to reach the new position.

Contact information

If you have comments, corrections, or just want more information then please contact me via email at

I've set up a mailing list for information or questions about this project. To subscribe send an empty email to the EQ6MCU mailing list request address