Saturday, February 10, 2018

DIY Electric Focuser For Celestron 127 SLT Maksutov/Cassegrain

It's been really cloudy. For eight weeks. So I've been working on scope projects - at some point, one day, I'll be able to see the night sky again. :-)

One of the tradeoffs with the mid-price Celestron 127SLT is that it shakes rather badly when you touch it, and takes several seconds to settle down. I'm focusing using a Bahtinov mask and Sharpcap's Bahtinov aid, which gives a numeric indication of the accuracy of your focus. It can be a slow process to focus it since you tweak, wait, and tweak again.

I decided that a remotely controlled electric focuser would allow me to do a much finer focus than I could achieve by hand, since it would not require touching the scope.

This design doesn't require removal of the focuser knob - only the rubber sleeve that covers it. This sleeve slips off by hand.

If you do pursue a different design that requires removal of the focuser knob, be warned that you must not tip the telescope down toward the table with the focuser knob removed - the knob is all that prevents the main mirror from falling forward and smacking into the corrector lens, which requires a teardown and cleaning to fix. This design does not risk that situation.

It took some head scratching to figure out how to mount the motor to the optical tube assembly (OTA). It finally dawned on me that I could remove the dovetail mount, and install a bracket under it. Aluminum stock which is 1" wide fits nicely in the gap that the dovetail leaves between it and the OTA. I then made a simple motor mount out of 1.5" x 1.5" right angle aluminum stock.

I cut some slots in the motor mount so that the stepper motor could be moved back and forth a bit, to set tension on the belt. I don't have a mill, so just drilled some holes next to each other and then filed the slot to open it up.

The focuser knob is 15 mm, and the stepper motor shaft was 5 mm. I used the following parts:

Aluminum 50 tooth MXL pulley with 15 mm bore
Aluminum 30 tooth MXL pulley with 5 mm bore

Based on some belt length calculators I found online, I first tried an 8" MXL closed loop belt, which worked, but had the motor run out to the end of it's range of adjustment. I wanted the motor closer to the OTA, so I found a 7.6" MXL belt from McMaster-Carr, part number 7887k78.

The 15 mm bore pulley was a perfect fit. The 5 mm bore pulley needed to be bored out to 5.2 mm to fit the shaft.

Here's a test run, with the original 8" belt.

The stepper motor can be controlled any number of ways, depending on what you want to do. There are a number of ASCOM compliant stepper controllers driven by microprocessors. My goal was to make my scope remotely controllable across a network, so I used a Raspberry Pi Zero W and an EasyDriver , along with a 5V regulator.

For a simple web browser interface, I used information from this excellent Flask tutorial to make a very simple web app to allow coarse, medium, and fine motor control. Source code will be in a separate article once it is a bit more polished.

Everything was buttoned up in a box with strain reliefs - it runs off the same 12V jump start battery I use to power the scope. Initial tests have been very positive - I can't wait for some clear skies to test it! It focuses very smoothly with no shaking - you can see clearly through the scope during the entire focusing process. Additionally, with the stepper motor, you can move the focuser in much smaller increments than by hand.

Friday, February 9, 2018

Switching Between Client Mode and Access Point Mode on Raspberry Pi

I'm working on a project to network my telescope. I have a Raspberry Pi Zero that is controlling a power focuser, and will eventually control scope motion by sending serial commands to the hand controller.

If I'm at home, I'd like to connect to my home network. If I'm away from home, I want it to act as an access point (AP) so that I can control the scope. This would also be really useful on a network controlled robot.

This was tested on a Pi Zero W, and should work on a Pi 3 as well. It assumes the Pi is currently configured to automatically connect to your home network. Pi's that use different USB wireless NICS will need a modification to the hostapd configuration file to reflect the driver name in use.

I'm using hostapd and the ISC DHCPD server, so first:

sudo apt-get install hostapd isc-dhcp-server

My /etc/hostapd/hostapd.conf file looks like this:

# WifI interface and driver to be used

# WiFi settings

# Use WPA authentication and a pre-shared key

# Network Name
# Network password

I appended the following network definition to /etc/dhcp/dhcpd.conf to define the range of addresses that it will hand out to clients when acting as an AP:

subnet netmask {
 option broadcast-address;
 option routers;
 default-lease-time 600;
 max-lease-time 7200;
 option domain-name "local";
 option domain-name-servers,;

The following script, when executed, will disconnect from any AP that the Pi is associated with and fire up the access point, setting a static IP for the Pi in the process:

sudo killall wpa_supplicant
sudo ifconfig wlan0 down
sudo ifconfig wlan0 netmask up
sudo service isc-dhcp-server start
sudo hostapd /etc/hostapd/hostapd.conf &

Then we just need to determine if we are connected or not when the Pi boots up.

First, I added an entry in /etc/rc.local to call this script, which checks to see if I'm connected to my home AP after a brief delay:

sleep 10
OUTPUT=$(iwconfig wlan0 | grep -c MyHomeSSID)

if [ "$OUTPUT" = "0" ]
        echo "Not associated to home AP, starting local AP"
        logger "Home AP not found, starting local AP"
        sudo /home/pi/startAP
        echo "Associated to home AP, no action taken"
        logger "Home AP found, not starting local AP"