Introduction: 4 Axis Motion Controller on a Budget - Part 2

About: I am photographer with interest into electronics and DIY tools.

I did another Instructable about making a 4 axis motion controller from old 3d printer parts, you can follow it here:

And this Instructable are about the improvements I made to the motion controller.

  • WiFi Support instead of Bluetooth, this way is compatible with Android and iOS.
  • List of Common Parts, most of the parts are easy to get if you have a local 3D printer Store.
  • Minimal 3D printed parts, only a few parts are 3D printed, so you won't need hours and hours of 3D printing.
  • Timelapse feature added, using an optocoupler and a shutter cable suitable for your camera.
  • PCB design for the controller, this allows you to have a clean controller.
  • More advanced features in the near future.


The supplies are the same as the last time, but if you are new here you can get them in the next links (Affiliate links - this help to develop the new features)

Note: Most of this parts are listed in sets you can try to buy only 1 piece but the price is almost the same as the set.

Step 1: Build Guide

Follow the Step of the images to complete the building of the Motion Controller you can also download the guide in PDF format from my page.

All the files (Guides, Code, STL Files, and Firmware) is here:

  1. Attach the motor mounting plates into each motor for the pan and tilt axis, you will need M3x10 Screws. You can use bigger motor like NEMA23 if you have a bigger setup but remember to use the correct Driver for the motor.
  2. Drill 2 new holes on each motor plate to mount the 8mm pillow bearing, you can use a bearing with bigger diameter if you want an sturdier setup, even up to 20mm.
  3. Once all the plates are assembled align the higher plates on the same side, this is important or your setup will be crooked.
  4. Cut the 8mm steel rod in the right length for your setup. (You can use a 20mm steel rod if you bought thicker bearings a couples).
  5. Use a 1/4"-20 Tap to create the threads of the 8mm shaft coupling, this will let you use regular camera screws to attach it to a quick release plate. Place the shaft coupling and secure it with an #4 Allen key.
  6. Place the GT2 60Teeth pulley into the rod and the GT2 20Teeth pulley into the motor shaft. You can 3D print the 180Teeth pulley to get smoother movements. (You can fin the STL File in the link above)
  7. Tension the plates with the rod inserted and put your GT2 belt in place. Tension the motor plates and secure the screws.
  8. Repeat the same process for the Tilt Axis.
  9. Use the right angle plates to join both axis.
  10. Attach the long quick release plate to attach the pan an tilt head to the slider.
  11. Attach the L plate to attach the quick release system to mount the camera.
  12. To create the slider motor you will need the long motor plate.
  13. Use M3x25 screw to place the pulley that hold the GT2 belt in place. and secure the motor and the pulleys.
  14. Done!.

Step 2: New Connections

From the first version some connections have changed to make them easier, also I designed a PCB to avoid using to much jumper cables. You can find the Gerber Files in the link on Step1 so you can order it or make them.

As I am using a Big Tree Tech SKR v1.4 Turbo Board it is not necessary use a logic level board, because the ESP32 and the BTT Board both work with 3v. I included an TRRS Jack to attach and detach the controller easier. You can connect the cables directly.

Note: Remember to connect all the parts before powering the motion controller. Connect a part when the power is on can damage a driver or the controller.

In the BTT Board or any 3D printer board you can find the TFT communication port, this port will help us to control the board and the drivers. Find the Pinout of your board, but many boards will follow the same order. We only need 4 pins of the 5 of this port.

We will reprogram the board using the firmware from the previous Instructable, the firmware for the BTT SKR V1.4 Turbo is in the files on Step1, if you have a different board you can leave a comment below.

This firmware let us use the heater 0 pinout of the board as a shutter button. To keep the camera protected you will need an optocoupler this board isolates the main board and the camera shutter cable.

Note: The Output part of the optocoupler board have 2 small 3KOhm resistors these have to be replaced with a short-circuit. This is because the shutter cable are activated by a contact action, and 3KOhm it isn't contact.

Step 3: Using the Controller

The controller have:

  • Joystick have 5 buttons, up, down, left, right, and middle.
  • Right and Left button.

The Joystick middle button let you move between rows. Each row will let you move an axis with the joystick buttons.

  • First row, up and down move the Tilt axis. Left and Right move the Pan axis.
  • Second row, up and down move the Focus Motor(E0). Left and Right move the Slider motor.
  • Third row, up and down change the JOG (unit of movement). Left and Right change the speed.

The Right button let you enter the Menu.

The Left button let you exit the Menu, and stop a timelapse routine.

Inside the menu you can navigate using the up and down buttons of the joystick.

The Left and right buttons of the joystick let you increase or decrease the values.

The middle button will activate an action.

The menu actions are:

  • Set A, press middle button to set position A.
  • Set B, press middle button to set position B.
  • Move A, press middle button to move to position A.
  • Move B, press middle button to move to position B.
  • Move A-B, press middle button to move to position A then B.
  • Move A-B-A, press middle button to move to position A then B then A.
  • Reset Ends, will reset the end points, some 3d printed boards lock when a end point switch is triggered.
  • Power Off Motors, will power off the motors if you want to save battery. But remember that if you move the camera this will not remember the position.
  • Photos, is the number of photos of the timelapse routine.
  • Interval, is the seconds between photos for timelapse routine.
  • Shutter Speed, is in milliseconds, this is the time that the controller will wait, this is helpful for long exposure photos in timelapse.
  • Run Timelapse, press de middle button to start a timelapse routine.
  • Beep, is the buzzer sound before a movement, this is helpful for remote control. 1 is ON, 0 is OFF.
  • Pre-Delay, is a delay in seconds before a movement, is similar to a timer of a camera.
  • Units, this are the steps per unit, if you are familiar to 3D printer this parameters help us to calibrate the movement. the default parameters are OK for a 60Teeth-20Teeth pulley combination if you are using another gear ratio you can calculate the steps per unit using an online calculator.
  • Update Units and Update Accel, will send the new units into the main board to test them.
  • Once the units are right for your custom gear ratio you can press Save Presets.

Step 4: Next Part of This Project

The next part of this project will update the firmware to support loop motion and more positions.

I will use an external module to use it as a face tracking device. Similar to the Edelkrone Vision Module.

I will update another option for 360º product photography and a 5axis control for Zoom or Rotation.

I will test a zip line mechanism using a 3D printer extrusion gear to pull the zip line cord.

I will add an smart timelapse feature for some compatible cameras.

Consider to subscribe to my Youtube Channel and Support me on my Buymeacoffee Page.

Repair and Reuse Contest

Participated in the
Repair and Reuse Contest