DIY Motorise Filter-Wheel

Earlier this year I bought a manual filter-wheel for my Telescope. I wanted something fairly cheap with the ability to select different filters (e.g. Lum, Ha, Yellow, Red).

But I soon came to realise the one big draw back with manual filter-wheel, which is that when you select a different filter the scope moves a little bit with the result that your object of interest is no longer where it was before. 

Looking around to replace my filter-wheel for a motorised version I quickly came to realise that this was not going to be cheap as most motorised filter-wheels (especially ones that can carry 2" filters) are 2-3 times more expensive than my manual one.

This is how this project came to exist. Doing some research on the web I quickly found that I was not alone and that motorising a filter-wheel does not need to be expensive. It does require a desire for frustration, to use your hands and learn a bit of coding.



To motorise your filter-wheel you will need a few things.

  1. A bit of scrap metal to mount the motor to your filter-wheel. I used a piece of metal sheet from an old computer power-supply.
  2. A motor. For my project I got NEMA 1Amp 12V stepper motor (
  3. An Arduino One R3 microcontroller board. (
  4. Pololu DRV8825 Motor Controller (
  5. An USB Cable to connect the Adruino board to your computer. 
  6. A Lego wheel - Tire + Wheel 24 x 14 mm (as you can see in the photo). 
  7. One Breadboard (
  8. Set of development jumper cables (
  9. One small Really Useful Box or any other box that can house the Arduino, Breadboard and Motor Controler.
  10. 12V 1Amp Power Supply. I used one from one of those really rubbish DSL Routers (Technicolor TG582n) I had laying around. But any 12V 1Amp with the correct connector will do.

Total cost on parts: £35.00.
The filter wheel costed me £100.00. 

The links shown above are just there to help you trying to fin the correct items. I bought most of my items directly from ebay.

I am not providing instructions on how to mount the motor to your filter-wheel as there are many different makes and models of motors and filter-wheels and they all require something slightly different.  But in the image gallery below you will find some photos of what I did.


Connecting it all up

Above a drawing of how I connected it all up using the Arduino Uno, Motor Controller, Motor, jumper wires & breadboard.
The breadboard is used to for the Motor Controller and to connect everything up.


Arduino, Motor Controller & Motor Connected

Above it all assembled. the black tape used is to ensure that the metal connectors of my jumper wires do not touch each other.

The software

The software comes in 2 parts.

  1. The Arduino Code: This code is loaded on to the Arduino board and directly controls the spinning of the motor, the number of times and which direction.
  2. The ASCOM driver: This is the software that sits between your Astronomy software (e.g. Sequence Generator Pro) and your Arduino controlled filter-wheel.


The Arduino Code

ASCOM is an attempt to standardize the software communication between your Astronomy software and your astronomy equipment. For details look here:

This driver was developed in Microsoft C# as I used to do a lot of software development using this programming language.

The zip file with the solution can be found here 

Microsoft has made available a free "community" edition of Visual Studio which I used to write and compile the code. You can get your version from here

In here the 2 most important changes you might need to make are in the IFilterWheel Implementation section.

  1.  The line private int[] fwOffsets = new int[5] { 0, 0, 0, 0, 0}; change the 5 and number of ,0 to the number of filters you can fit in your filter-wheel.
  2. The line private string[] fwNames = new string[5] {"LP", "Ha", "Yellow", "Red", "Clear" }; change the number 5 the number of filters you can fit in your filter-wheel and provide a sample of filter names to match the number of filter you can have in your filter-wheel.

All my code is based on the ASCOM SDK which can be found here


This is where the fun starts. As mentioned above the Arduino code dictates the number of times to motor needs to turn to move from 1 filter to the next.

As your filter-wheel might have a different dimension and you use a different size wheel on your motor, it means that you need different settings for the number of turns for your motor to move between the filters.
But as soon as you know the numbers of turns between filter 1 and filter 2, you also know the number of turns between filter 1 and filter x (I assume this is obvious).

You can find my Arduino Code here.

Most likely you will only need to update 2 parameters in the code make it work for your setup.

  1. The MOTOR_ROTATIONS parameter. For me this is set to 275.
  2. The NRFILTERS parameter. As I have 5 filter positions I have this set to 5.

This is code that works but is most likely not the most efficient way of doing it.


VIDEO Of it all working

image gallery


You did not believe I dreamed this all up by myself, did you.

No, I did not, I borrowed with pride from masters who have gone before me. So credit is where credit is due:

  1. Kevin Sipprell for his project here and provided me with some hints on tips.
  2. Andy Waddington via the BudgetAstro facebook page for providing me with insight on his setup an pointing me to the IKLYSP redit page.
  3. IKLYSP who posted this on Redit:
  4. ASCOM standards for the production of the standards and their SDK with Samples.
  5. And last but not least Mark Whalebone for just being Mark. :-D

If I missed anybody in the credits, it is not on purpose.