
The AutoPA upgrade is a work-in-progress that allows motorized polar alignment by turning the Azimuth and Altitude using two additional stepper motors.
The steppers turn the OAT with an estimated precision of 4 arcseconds/step for Azimuth, and 1 arcsecond/step for Altitude.
They can be manually controlled in arcminute integers via the calibration menu on the LCD, or via LX200 commands for finer precision.
Purchased Parts |
Quantity |
28BYJ-48 stepper |
2 |
6801 bearing |
3 |
6001 bearing |
1 |
625 bearing |
1 |
5 mm shaft, 57 mm long minimum |
1 |
16T pulley |
3 |
GT2 6 mm belt |
~ 500mm |
Superglue |
|
GT2 belt tension spring |
2 |
Scotch (cellophane) tape |
|
Various size M3 screws (mostly 12mm) |
~ 20 |
M3 nuts |
6 |
M3x12 screws |
6 |
M4x12 screws |
2 |
M4x8 screws |
4 |
LM2596 buck converter (6 V output) |
1 |
Optional: silicone based lubricant for altitude wormgear |
|
Printed parts |
Quantity |
13_rear_AltAz_mount.stl |
1 - Replaces default rear mount |
Alt_gearbox.stl |
1 |
Alt_track.stl |
1 |
Alt_wormgear_cap.stl |
1 |
Alt_wormgear_largegear.stl |
1 |
Alt_wormgear_worm.stl |
1 |
Az_M14_belt_ring.stl |
2 |
Az_M14_dome_cap.stl |
2 |
Az_motor_mount.stl |
1 |
Az_pivot_frameA.stl |
1 |
Az_pivot_frameB.stl |
1 |
Az_slide_frame_left.stl |
1 |
Az_slide_frame_right.stl |
1 |
Az_slide_plate.stl |
2 |
Alternative bearing option |
Quantity |
6801 bearing instead of 1x 625 bearing |
1 |
13_rear_AltAz_mount_6801_.stl instead of 13_rear_AltAz_mount.stl |
1 |
6801_5mm_bushing |
1 |

- Superglue a strip of belt onto altitude track and ensure it's
centered perfectly, otherwise there will be too much friction
between the track and the rear mount.
- Insert altitude track into the rear mount and ensure it slides
fairly easily. Trim the opening in rear mount with a utility
knife if needed.
- Slide the track back and forth repeatedly to wear it down a bit
if needed.
- Insert 1x 625 bearing into the rear mount on the inside recessed
circle.
- Note: If you are using the alternate 6801 bearing option,
use a 6801 bearing instead, then insert the 6801 bushing into
the bearing so it has a 5mm inner diameter.
- Insert 3x 6801 bearings into the altitude gearbox.
- Slide the worm through gearbox so that the end with the openings
faces the stepper.
- Assemble the drive shaft:
- Slide one 16T pulley onto 5mm shaft, with the hub of the pulley
facing outwards, and leave the grubscrews on the pulley loose.
- Insert the 5mm shaft into the bearing within the rear mount and
hold in place.
- Temporarily insert the altitude track through bottom opening of
the rear mount and align the 16T pulley with the center of the
belt, while keeping the shaft pressed flush against the rear
mount through the bearing.
- Remove the altitude track and pulley (without allowing the pulley to shift) then tighten the grubscrews.
- Remove flange from 16T pulley. Insert the pulley into the wormgear large gear. The teeth of the pulley should be a relatively snug fit with no movement.
- Slide the wormgear large gear onto the very end of the 5 mm shaft and leave the grubscrews loose.
- Install the shaft in the rear mount bearing and the large gear inside the gearbox bearing. Push the gearbox towards the rear mount until the gearbox is touching rear mount. At this point the large gear should have slid along the 5mm shaft into it's proper position spaced from the other 16T pulley.
- Remove the gearbox and tighten the grubscrews on the 16T pulley attached to the large gear.
- Optional: apply silicone based lubricant to the large gear - it will perform better and wear down slower.
- Install the gearbox to the rear mount with 4x M3 12mm screws.
- Insert 2x M3 nuts into the worm.
- Install the 28BYJ using M4 screws and tighten motor shaft in the worm using 2x M3 screws
- Wire stepper according to configure_pins.hpp and run motor using the altitude control in the CAL menu to move Altitude Track into place.


- Assembly pivot frame using M3 10mm screws and M3 nuts
- Insert 6001 bearing into pivot frame
- Assemble slide frame and motor mount using M3 12mm screws.
- Attach slide frame and pivot frames together using M3 screws (8, 10, or 12mm should work).
- Insert the bottom of the altitude track in the 6001 bearing on the pivot frame.
- Remove flange from 16T pulley. Install on 28BYJ stepper.
- Install stepper on motor mount.
- Wire stepper according to configure_pins.hpp and run motor using the azimuth control in the CAL menu to pull the belt through the motor mount.
- Install the M14 belt ring parts on each front M14 leg with the belt tightening screw holes facing forward away from the OAT.
- Install M3 nuts in each M14 belt ring to tighten the belt later.
- Screw the M14 dome caps to each front leg.
- Optional: Sand down the dome caps prior to installation using ~200 grit sandpaper to have a completely smooth surface at the bottom where it touches the slide plate.
- Feed the belt through each M14 belt ring with some slack on both ends.
- Install a GT2 belt tension spring within the opening of each M14 belt ring.
- Tighten the belt screw on one of the M14 belt rings. Pull the loose belt end while simultaneously pulling the motor block away from the tightened belt screw (both tension springs should be stretched at this point)
- Tighten the remaining belt screw.
Once assembled and wired to a 6V power source, the system can be tested. Although the 28BYJ steppers are rated for 5V, they can be overvolted for more torque. The OAT firmware is designed to power down the steppers when not actively moving to prevent overheating from the higher voltage. Since (ideally) they only move for a few seconds each session, overheating is not expected to be an issue.

The AutoPA system uses Python scripts to control the OAT and camera via an INDI server such as Astroberry.
Requirements:
- INDI server running and connected to the OAT and camera
- Python3 installed (Note: Included in Astroberry by default)
- pyindi-client (Note: Included in Astroberry by default, you can check with
pip3 list | grep pyindi-client
)
- ASTAP (Note: Included in Astroberry by default)
- Astropy installed (apt-get install astropy-utils python3-astropy python3-pytest-astropy)
- Astropy config installed at
~/.astropy/config/astropy.cfg
In order for the alt/az system to work, it must be calibrated. This is done using either polaralign_manualcalibration.py
or polaralign_autocalibration.py
. Each axis (alt or az) must be calibrated separately.
This program calculates the alt/az difference between two sets of RA/DEC input values. The RA/DEC values must be obtained elsewhere via plate solving two images.
- Take a photo and record the time
- Adjust the altitude or azimuth axis by a specific amount of arcminutes via the calibration menu on the LCD screen or using the
joystick.py
program .
- Take another photo and record the time
- Plate solve each photo using any familiar method or by uploading here: https://nova.astrometry.net/upload
- Run script using the correct lat/long/elevation then input the requested information
- The output will be the actual alt/az movement in arcminutes.
- Compare the output values to what was originally input on the LCD to determine the calibration factor.
This program will:
- Capture an image in the current direction of the camera and plate solve
- Rotate the axis being calibrated by a predefined (or configurable) angular value
- Capture a second image and plate solve
- Compare the two images to determine the actual amount rotated
- Output a factor of
actual : expected
movement.
- It is recommended to run the calibration routine on each axis three times and take the average of the three before editing the arcminutes/step.
Once each axis is calibrated the autopolaralign.py program can be used.
The following input parameters are required: autopolaralign.py [latitude] [longitude] [elevation] --telescope=[Name of OAT in INDI] --ccd=[Name of camera in INDI]
Starting with a default target of RA/DEC 0 deg, 85 deg (configurable in command options), the OAT will slew to target and start the following routine:
- Capture image and solve.
- Slew +30 degrees, capture another image and solve.
- Slew +30 degrees, capture another image and solve.
- Calculate the current center of RA rotation in RA/DEC coordinates.
- Convert that location into altitude azimuth coordinates.
- Send command to the OAT to adjust each altitude and azimuth axis to correct.
Note: there are optional input parameters that can speed up the process of solving (e.g. focal length and pixel size). All options can be viewed by running autopolaralign.py -h
or autopolaralign.py --help
Issue |
Reason |
Program hangs |
Incorrect name used for INDI devices. The program waits until the specified named device connects to the INDI server. If the wrong name is used, it will keep waiting. |