A Tripod-Mountable Motorized 2-Axis GoPro/Smartphone Slider for $20

by JohnThinger in Circuits > Cameras

2323 Views, 36 Favorites, 0 Comments

A Tripod-Mountable Motorized 2-Axis GoPro/Smartphone Slider for $20

A Portable GoPro Slider for $20

Ever wanted to do those clips where the camera pans smoothly around an object? Well, using a gimbal or manual camera dolly can give some impressing results, but they require either a real calm hand or a well-prepared surface to roll on. In addition, the movement might by limited to one linear direction – the camera travels along the object, but it does not keep the object in the center of interest all the time.

So, in many cases a multi-axis slider with electronic motion control is need for moving and rotating the camera synchronously. There are many professional, expensive devices for this purpose, and there are already a lot of great DIY approaches out there, based on different budgets and skills.

The configuration presented here aims at providing a really cheap, yet usable and easy-to-make construction which can be placed on a single tripod and powered by standard 5V/USB power banks. The solution is light and portable – making it optimal for outdoor use. The components of the entire setup cost around $20 – including the motors and electronics! And: It differs from many other solutions in its user interface, because you can precisely set the start and end positions of the camera movement.

Supplies

  • 2x Square Aluminum Tube 1 m x 15 mm x 15 mm (hollow, smooth finish)
  • 1x 1,4" Nut (UNC, for tripod mount)
  • 1x 2GT Timing Belt (2 m, open, any rubber or plastic will do)
  • 1x 2GT Timing (Driving) Pulley (20 teeth, 5 mm boring for 6 mm belt width)
  • 1x 2GT Idler (Driven) Pulley (20 Teeth, 5 mm boring for 6 mm belt width)
  • 1x Arduino-based Stepper Control with two 28BYJ-48 Stepper Motors, see description here
  • 1x M3x8 Grub Screw (or regular M3x8 screw), 4x M3x8...10 Screw, 5x M3 Nut
  • 8x M4x10 Screw, 4x M4x16 Screw, 2x M4x40 Screw, 14x M4 Nut
  • 7x M5x30 Screw, 7x M5 Nut

Optional:

  • 2x "Tight Fit" Plastic Double Spur Gear (30 + 10 teeth, module 0.5, 2 mm bore, usually called "30102A")
  • 1x "Lose" Plastic Double Spur Gear (30 + 10 teeth, module 0.5, 2 mm bore, usually called "30102B")
  • 1x Steel Shaft (length: ~10 cm, diameter: 2 mm or 3 mm, depending on the gearbox design, see below)
  • 2x Small Rubber Band
  • 1x 3D Printer with Approx. 250g Filament (PLA, PETG or ABS)

Assemble the Motor Control Box

Boxa.jpg

The process of assembling and programming the control device is described in a separate tutorial. The components of the entire "box" should cost less than $10, including the motors. The design is based on very cheap 28BYJ-48 motors and their ULN2003 "driver" boards.

The Arduino code given within the instructable mentioned above sets calls the both connected motors "M1" and "M2". It handles both motors as rotary drives, so everything is measured in degrees ("deg").

The code provided here does more or less exactly the same as before, but - as a small enhancement - it renames the both motors to "F" (for feed drive) and "R" (for rotary drive). Based on this definition it shows the linear position of the slider in mm instead of deg, and the speed drive is given in mm/min instead of deg/min, so the feed drive position and speed relate directly to the slide. This is only a small improvement, but it is very useful for estimating the travel distance (and speed) of the slider.

The calculations from degrees to linear units are based on the assumption that you are using the pulleys that are proposed in the part list (2GT with 20 teeth). If you change to other pulleys, please modify the scale factor at the beginning of the code. For 2GT pulleys, MM_PER_ROT must be 2 x number_of_teeth. If you like to have imperial units (i.e. inch) instead, just divide this value by 2.54, search for all appearances of the sub-string "mm" and substitute it by "in." or "inch".

#define MM_PER_ROT    40      // 40 mm/rot when using a 2GT 20 teeth pulley - 36 mm/rot when using a 18 teeth pulley.

Print the Parts

Folie1.PNG
DSC03967_b.jpg
Alternative_Design_01.png
Folie2.PNG
Alternative_Design_02.png

Print the parts attached to this step (print each part once except for the "Belt Fixture" which you need twice). If you do not own a printer, you can use a 3D printing service alternatively.

Please note: The "head" provided in this step will result in some jerky motion in many cases. The reason is the low number of steps the rotating head will perform while the linear motor typically goes for a larger number of steps, so you will see the "jumps" of the rotating motor in the video. This may be ok, if you do time-lapses or if you do short linear movements, or if you can compensate the "jumps" by using the HyperSmooth mode of the GoPro or by a stabilization function of your video cutting software. As an example, the sequence at 08:00 in the introduction video is a 10x speed-up of the original material with additional support of the stabilization algorithms of Shotcut. In case you need smoother footage, please do not print and assemble the head proposed here, but use one of the heads provided in step 9.

I have printed all parts with PLA, a layer height of 0.3 mm, and 20% infill. Some of the smaller parts are easier to print with a brim, only the "Slide (Base)" and "Slide (Head)" need supports.

Make sure to print the "Slide (Base)" with the "channel" going upside down. As these are the faces that finally slide along the aluminum profile, they should not be printed using support structures.

If you plan to use the device mostly indoors, any filament (or resin) will do. If you want to use it outdoors, please make sure that your filament (or resin) is resistant against hot temperatures and/or sunlight. I.e. print with ABS or PETG instead of PLA if temperatures are getting too high.

Some of the parts – namely the side brackets and the tripod mount plate – can be substituted by simple plates cut from wood or sheet metal. You will find the dimension for this alternative design in the attached drawings.

In the next sections, the capitalized words refer to the file name of the STL files of the printed parts.

Assembly 1/5 – the Drill Holes

Bohren_01a.jpg
Bohren_02.jpg

As a first step of the assembly, we must drill some holes in the aluminum profiles.

Use a 5 mm drill and always wear safety glasses when drilling any kind of metal!

Holes must be made for the Base Socket and the Left and Right Side Brackets:

  • Put the Base Socket on one of the aluminum profiles and shift it until it is placed in the middle. The length of the Base Socket is 100 mm, so you should measure 450 mm from each end of the Base Socket to the corresponding end of the profile. If the Base Socket is placed in the middle, mark the holes from both sides with a pen. Remove the printed part and make the holes. It is best to drill from both sides, so the screws will go straight through the profile.
  • Push the Left and Right Side Brackets on the profiles. Make sure that the profiles are completely inserted. Now, either mark the holes and remove the brackets for drilling or drill just through the holes in the bracket.

That's all for drilling. Remove the brackets again, and let's start with the "true" assembly.

Assembly 2/5 – the Slide

Slide - Base.jpg

Push the Slide (Base) on the aluminum profile that does not have the holes for the tripod mount. The slide will travel on this profile. If there is too much space between profile and slide, the slide will move wobbly. This is why the slide has very low tolerances, i.e. the opening of the slide is 15.4 mm x 15.4 mm while the profile is 15.0 mm x 15.0 mm, so with a standard 3D print nozzle of 0.4 mm there will be only one "line" of space in each direction. Thus, the first time you press the slide on the profile, it will probably not move well or even not move at all. Now, some "manual force" is needed: Move the slide forwards and backwards rapidly. After some time (30 seconds ... 2 minutes) the inside of the slide should get warm - and hence its surface will smooth itself. If necessary, repeat the process a few times. In the end, the slide should travel by gravity if you hold the profile upside down.

After these gravity tests, keep the slide somewhere on the profile and continue with the next step.

Depending on the material and the accuracy of the 3D print, the proposed run-in procedure might not lead to satisfying result. If the slide does not travel freely by pure gravity forces, the motor will probably not be able to move it smoothly. In this case, try one of the attached models with a 15.6 mm x 15.6 mm opening or 15.8 mm x 15.8 mm opening. These modified versions could introduce some wobble, but they should slide gently in any case.

Assembly 3/5 – Side Brackets and Tripod Mount

Tripod.jpg

Now, we assemble the frame parts:

  • Push the Left and Right Side Brackets on the profiles as shown in the pictures. Use four M5x30 screws and four M5 nuts to fasten them.
  • Place the Base Socket on the lower square profile. Use two M5x30 screws and two M5 nuts to fasten them.

Depending on your tripod, the Tripod Mount Plate offers two connecting options:

  1. As a standard, most tripods feature a 1/4" screw. If this is fixed to the tripod, hold the Tripod Mount Plate over it and fasten it using a 1/4" UNC nut as shown in the pictures.
  2. If in contrast, this standard screw screw can be replaced, the Tripod Mount Plate may be fixed by a metric M4x15...30 or M5x15...30 screw. In this case some washers may be helpful for stabilizing the plate.

Finally, use four M4x16 screws (with optional washers) and four M4 nuts for securing the Base Socket to the Tripod Mount Plate.

Your slider is now fixed to the tripod! Next, let's make it move.

Assembly 4/5 – Feed Drive, Pulleys, Belt and Control Box

Assembly_Belt.jpg

In this step, we will add the elements that drive the slide.

Left Side Bracket:

  • Take one 28BYJ-48 motor and push the idler pulley on its shaft. Fix it using the grub screw that should be provided with the pulley.
  • Attach the motor using two M3x10 screws and two M3 nuts like shown in the pictures. (The four remaining holes can be used for attaching a NEMA 17 motor instead which will be described as an advanced option at the end of the instructable).

Right Side Bracket (Original Design):

  • Thread the belt into the Belt Tensioner so the teeth are lying on the pulley.
  • Insert the idler pulley in the Belt Tensioner and push a M5x30 screw through it.
  • Push the end of this screw through the slot of the bracket and fix it with an M5 nut.
  • Now push two M4x40 screws from the side of the bracket through the Belt Tensioner and add two M4 nuts to the screws, but do not fasten them. Optionally, put some washers to these screws because the tension forces could break the 3D print.

Right Side Bracket (Alternative Design):

  • Just fix the idler pulley and two (optional) M5 washers with a M5x30 screw and a M5 nut. Wrap the belt around it.

Finishing the Belt:

  • Pull the belt towards from the Belt Tensioner the slide. Use two M4x10 screws, one Belt Fixture and two M4 nuts for attaching the belt to one side of the Slide (Base).
  • Pull the other end of the belt towards the motor, wrap it around the motor pulley and drag it to the other side of the Slide (Base). Pull the belt so it gets some tension, then attach it to the Slide with the other Belt Fixture, two M4x10 screws, and two M4 nuts.
You are now able to adjust the belt tension by tightening the screws on the side of the Belt Tensioner.
Always make sure that the belt is fairly taut, but do not overdo it. If there is too much tension, the motor will be not move smoothly. So if this problem occurs, release the Belt Tensioner a bit.
If you have followed the "alternative design" you will not have the Belt Tensioner, so try to get the belt taut by pulling it manually before fastening the screws on the Belt Fixture.

Control Box:

  • Plug in one of the cables to the feed motor on the Left Side Bracket. Power-up the device to perform first tests and to figure out which cable belongs to which driver. Both drivers/cables will work, but it is best to see the feed motor as a motor 1 (when using the original software from the previous instructable) or as "F" when using the software from step 1 of this instructable.

Assembly 5/5 – "Head" and Camera

As a last step of the assembly, we will add the "head" (Slide (Head)) with the rotary axis and the camera mount (GoPro Mount).

  • Insert the second 28BYJ-48 motor inside the Slide (Head). Fix it using two M3x8 screws and two M3 nuts.
  • Put a M3 nut in the slot on the bottom of the GoPro Mount, then push it on the motor shaft. Add a M3 grub screw from the side going in the aforementioned nut. Use the grub screw to firmly attach the GoPro Mount to the motor.
  • Place the pre-assembled head on the Slide (Base) and fix it using four M4x10 screws and four M4 nuts.
  • Complete the assembly by connecting the motor cable to the control box.
Make sure that the top of the Slide (Head) and the bottom of the GoPro Mount are both having a smooth surface. If there is some roughness from the 3D printing process, sand both parts so the mount can easily rotate.

You're done! Now you can power-on the control box (again) and start sliding.

A Short Operation Manual

Menues.jpg

The way of operating the device was already described here. However, here is a short summary:

  • After power-on, the system will show the "Execute" menu. This is used to move the camera between two defined positions (middle button: go to start position; right button: go to end position). As you have not taught any start and end positions after power-on, start over to the next menu by pressing the left button.
  • In the second menu ("M1 Start" or "F Start") you can use the middle and right buttons to move the linear axis back and forth. If you have found the desired start position for this motor, press the left button for toggling the menus.
  • In the third menu ("M2 Start" or "R Start") you are asked to set the start position of the rotary axis in the same way as the start position of the linear axis before. If you are happy with the setting, press the left button once more.
  • In the fourth and fifth menus ("M1/F End" and "M2/R End") you have to drive both axes to their desired end positions. Press the left button for toggling menus when you are satisfied.
  • In the last (sixth) menu, you can lower or increase the slider speed by pressing (and holding) the middle or right button. The display will show the speed and the time the slider will need from the defined start to the defined end position. Press the left button again when the speed is set.
  • Now you are in the first menu again. As said above, the middle and right button will now execute the motion to the start and end positions, respectively.
If you are coming across the start and end teaching menus and you do not want to change the already taught positions, simply press the left (red) button to go to the next menu. The taught positions will remain untouched as long as you do not press the middle or right button in these menus.

You will notice that the slider is not very fast - but it can be very slow instead! This is a good thing as the speed setting menu shows how long a move between the configured start and end position will take. Hence, you can schedule time lapses which is not possible with many other DIY sliders.

Optional Improvements: Heads! Heads! Heads!

Heads.png
IMG_1797.jpeg

The 28BYJ-48 has integrated gears, so it is doing 2,038 steps per rotation (not a "perfect" 2,048, because the ratio is a bit odd). We are using the "half-stepping" mode, so it's even more precise. The resulting 4,076 (half) steps would give a resolution of 0,08 degrees per half-step which should be sufficient for our application, as we are talking about shooting GoPro clips, not high-end-camera movies. Furthermore, the HyperSmooth feature of the newer GoPro models removes vibrations quite well. However, in some situations, you still might see small "jumps" of the rotary axis. With the original design, this seems to be just logical!

Typically, the slider will rotate the camera head somewhere between 45...180 degrees during one "move", so the rotating motor will make 509...2,038 steps. At the same time, one complete revolution (4,076 steps) of the feed drive will move the camera only by 40 mm (= 4 cm, using the 2GT-20-teeth pulleys). If we go for, say, 40 cm while rotating by 180 degrees, we end up with 2,038 steps of the rotary motor and 40,760 steps of the feed motor. As a result, the rotating motor only moves every twentieth move of the feed motor. Although all these steps are very small, you will consequently notice these "jumps" if the slider moves slowly and the frame-rate of the camera is high enough to capture multiple frames on one position of the rotating axis.

So, what's the remedy? Right! More rotational steps! Or, mechanically speaking: more gears. We need an (additional) gearing with a ratio of around 1:10.

I did several experiments to solve this task. Keeping in mind that we want to keep costs and complexity low, I can propose the following solutions (in order of stability and quality):

  1. "Spur Gears Head": Use a series of small 10:30 teeth double-spur gears (module 0.5). These are fairly easy to get from toy shops, hobby markets or online distributors. As they are usually casted, their precision is higher than possible with an FDM 3D printer and module 0.5 is at the limits of most resin printers, too. If you buy the spur gears, take a close look at the descriptions: there are "tight" gears which must be pressed on the corresponding axle and "lose" gears which smoothly rotate (and shift) on their axle. The proposed two-stage transmission in the attached files uses a "tight" double spur gear on the motor axle which drives the "lose" double spur gear in the middle ("idler") which finally drives the "tight" double spur gear on the output axle. The length of the required metal axles is 16 mm (drive), 24 mm (idler), and 40 mm (output). Most plastic double spur gears you will find have a hole of 2 mm, so this is the nominal diameter of the required axles, too.
    While the casted "tight" gears usually stick pretty well on these axles, it is more or less impossible to fix the camera mount very firmly. Depending on the material of the mount and the precision of the used printer, a press fit will be good here, but the additional screw fixture I have designed is a more theoretical idea as a grub screw will not really have much force on the thin axle.
    Thus, this solution is a very compact and it is a precise gearbox with very limited backlash,
    but the camera tends to drift if the top surface of the gear box or the button surface of the mount are not totally smooth or the device experiences external forces, e.g. when dragging cables for charging the GoPro. So, if you need more robustness around the mount itself, go for the Herringbone Gears Head.
  2. "Herringbone Gears Head": The second attached design uses gears with much bigger teeth, making them feasible for FDM or home resin printing. Depending on the print quality, the approach will have a bit less precision and a bit more of play, but as a big advantage, you do not need to purchase and additional parts (besides small metal axles). Print the gears without supports and small layer heights (~ 0.15 mm). I used herring bone gears to keep them in place, as they cannot "travel" in vertical direction. In order to make the assembly and print easier, I have used metal axles with a diameter of 3 mm here. The lengths are 23 mm at the idler and 20 mm at the output. As the output gear directly connects to the mount, it cannot slip when dragging cables. In order to compensate the play/backlash, you may use some rubber bands as shown in the picture above.
  3. "Lego Head": Finally, the approach with probably the least perfect precision is also the most simple solution. Using a spur gear and worm, a transmission ratio of 1:12 can be easily achieved in one stage. I have used a 12 teeth Lego ("double conical") spur gear and the standard Lego worm together with two 31.4 mm Lego axles here.
Please note:
  • None of the setups makes use of any bearing, so uneven surfaces of the printed part may introduce vibrations or glitches to the motion. Hence, the upper surface of the head top plate and the bottom surface of the GoPro mount may need some sanding to be as even and smooth as possible.
  • The provided STLs only contain the printed parts. If you want to study the assembly of the entire gear boxes, please take a close look at the attached CAD pictures which contain the casted plastic and metal parts, too. Furthermore, you can load the single STLs all together in a (free) CAD or modelling software like FreeCAD or Blender.

Further Ideas and Final Words

DSC03983a.jpg

While the precision of the 28BYJ-48 motors is quite good, they are very limited in terms of torque. For the given application (driving a light slider with a 150 g camera), it is sufficient in most conditions. However, if there are any additional forces (e.g. from dirt between slide and profiles or from dragging charging cables with the camera) these motors tend to skip steps and thus the motion video will be corrupted.

As an alternative, more powerful motors – namely NEMA 17 steppers – can be easily applied. As you might have noticed, the Left Side Bracket has 6 holes for mounting the motors while the 28BYJ-48 only needs two. The other four are already provided for attaching a NEMA 17 stepper. The program of the Arduino can be easily modified for this type of motor after adding proper drivers (DRV8825 or TMC2208 or A4988) to the control. This however, needs a slight redesign of the control housing and circuit.

Another point to be addressed is mechanical concept: The "square sliding guide" we have built here with 3D printed parts will never be perfect in terms of friction and/or play. Hence, using round rods with linear ball bearings or bushings can improve the quality of the motion videos.

Nevertheless - the given design is probably the lightest, cheapest and most travel-friendly you can get.

I hope you have fun building – and using – it!