Introduction: Fast and Cheap Mechanism Prototyping

Mechanics assembly can be challenging when using parts from recycling. Depending on your sources, you don't have the right pulley or belt sets, interfacing to fine pitches gear often lead to disaster.

I am one of those which want to achieve their goal with the best efficiency in the product, following the smartest way to match low costs. From printer recycling I get many motors (DC and steppers) with gears and timing pulley pressure mounted.

The goal of this instructable is to share the way I found to make fast integration of timing pulley mounted steppers.

The inputs:
steppers motors from recycling, mounted for time belt with pulley of different diameters.

The outputs:

Making the next prototype for a mechanical drummer arm. This project is a part of a performance project Chimeres Orchestra I work on with some people, in cooperation with the fablab in my neighborhood: LFO (Lieu de Fabrication Ouvert)

To my mind, this instructable introduces some technics, I haven't seen yet precisely described:

  • timing belt pulleys making and interfacing with commercial pulleys
  • transmitting high torque using wood plate assembly
  • efficiency juggling with 2D vectors file formats
  • using cheap laser to achieve precise results (and without upgrading to DSP kits)

Step 1: Bill of Material

Raw materials:

  • stepper motors: Those shown here are from an old color laser printer.
  • timing belt, MXL pitch, 22 - 24 cm round.
  • 3mm plywood
  • 9mm x 5mm dia cylindrical nylon spacer
  • 3mm hardened steel rod, in france we call it 'piano wire'
  • some screws: This design is metric based, I use M3 threads and screws.
  • some wood glue for finalization
  • PE sheet or something like to cut spacers


  • Laser cutter.
    If your local FabLab has one, no problem, else you can order online at ponoko or somewhere else.
    I bought one some times ago for about 700USD, one of those cheap laser cutter (K40, got it new on eBay by a UK based seller): Really poor construction with proprietary electronics and software, however good enough to precisely engrave and cut up to 4mm, even if I still have not upgraded hardware drivers to interface with openCNC.
  • bender for 3mm steel rod, can be achieved without it, I got one small for 20€, one bigger for 100€
  • grinder (or metal file and hackshaw)
  • screwdriver
  • small hammer or big pebble
  • some clamps

Electronics and driver:

I won't expand a lot about it, there are many documents about it. The stepper need an appropriate driving of its phases to run, this is achieved using a power board (drivers) and a command board.

I use there a stepper driver I got on eBay, the interfacing board is based around pic18F4550 I designed a few years ago. It provides a serial or MIDI over usb interface to some C code, so I can tune the behaviour of the motor with acceleration ramps and limit switch. Stepper shield exist for Arduino and can be painless used.

How long for this instructable:

it is 10:14 AM, I plan to achieve it, including documenting the process for the instructable fast enough to participate to the Epilog contest. This is the challenge today. Once design ready, whole cutting will by achieved in 1 hour, the assembly will take 30 minutes.

14h00 update: time to eat, cutting almost done.

23h48 this instructable is finished, images an video uploaded, about the time announced, you can count about 1 hour of different problems and solutions, and about 1/2 hour back to the CAD to correct design.

Step 2: Prepare the Place...

Starting a batch is always the good time to defragment the environment: each tool at its place, each working zone is cleared.

I have limited space, and this way I avoid to come from the laser with the fresh cuts, and no place to put it down... For delimited works, I affect the places with actions: drying zone, dirt zone for detach small wood waste, large and clean zone for assembly.

Edit: wih the feedback of this one-day challenge, if you organize before, it works really naturally: you place the parts were they needs to be, tool are accessible and you don't loose time!

Step 3: Laser Cutting With K40


Using this laser cutter, I used to follow thoses step to achieve correct cutting:

  1. Design the parts
  2. Apply assembly adjustments
  3. Convert to appropriate format
  4. Run the program on the laser cutter

The software MoshiDraw can import dxf files and render it correctly despite the horrible GUI.

The path optimizing tools are not efficient, the dxf has to be path optimized.
Optimizing is something important, because

  1. it reduces the flight time (the movement done to go from a line to the next)
  2. it reduces the shaking when the mirror moves. This allows to just put the material without fixing it. Too much shaking and the cut is ruined.
  3. it improves the lifetime of the device: less mechanical stress, less usure in the pulleys, and less usure of the laser.
    Note: by experiment, at every start up the beam uses up to 12mA, for long lines it consumes only a mean of 10mA, with lower electric shocks at the laser side.

Working area

The working area is limited by the laser: 20x30cm, but for witdh > 25cm it sometimes occurs bugs in the software that lead the hardware to fail, so I work with 20x25cm area.

Laser improvements

The built-in bed was really unusable, it did disassembly first.

When engraving on materials with different thickness, you have to put the surface in the focal plan. I found there a motorised bed for height control. It is driven by the flying boards on the picture... This is pretty useful, but reduces again the working area.

In all cases, one may dispense with the right height shims.


Chosing softwares for 2D designs is painful when you don't own autocad license, because you have to junggle between formats.

I also produce dxf using free tools set:

  • QCad for manipulating dxf
  • dxf2gcode for path optimizing, with a modification to export in dxf format
  • inkscape when vectoriszation or when spline needed
  • openscad for scripting and polylines generation

Then I feed it into Moshidraw, that still provide zero positionning speed control and pass number...

Step 4: The Plan

First thing is to define the goal, the specification time

What I want to make

Here I need a box with NEMA17 foot print, that I can interface with a 4-legs mechanism.

This kind of mechanism is composed by a quadrilangle that transform a linear rotation movement into hyperbolics and sometimes irrealistics trajectories. The setting I used allows the rotation of a quarter turn to produce a percussive trajectory.

The mechanism is moved by a motor, a stepper is the best choice there because you can achieve precise positionning and medium torque. The motor axis is linked using a timing belt to the lead axis.

Second thing to proceed is the design time

How I make it

Ok, by laser cutting, there a few subparts:

  • the link to the timing belt
  • the axis that links to the 4-legs mech
  • the 4 legs mechanism himself
  • the tools holder at the end of the mechanism, that clamps the percussive tool (here a drum stick)
  • the bed that holds everything

Step 5: Designing Time-belt Pulley

Pulley generating

Timebelt pulley are first generated with openscad script.

The 2D generation script pulley.scad is loaded with openscad, parameters such as profile or teeth number can be changed.

There need then to be rendered and saved to dxf format.

Tools adaptation

The laser beam is 0.1mm diameter witdh, up to 0.25mm when it reaches 3mm after the focus plan.

MoshiDraw software doesn't have correct tool correction with multi-pass management, you have to deal with it.

Depending the role of the parts, I apply 0.2mm correction for robust adjustments, 0.1 for exact fitting.

Passes number

Note that this value depend on the power you use, I tune the intensity to 12mA for 3mm plywood, with 3 passes (one is enough to cut, but since wood fiber have two ways in plywood, and sometimes glue induces defaults, I prefer take 3 passes and detach easily the parts).

Back to QCad, I apply the appropriates corrections.

Step 6: Designing the Rest

QCad has now an interface very intuitive.

As for the last step, I included the corrections for the different assembly.

Optimisation using dxf2gcode

Dxf2gcode is written in Python and is published under the GNU license. Just downloaded, it converted form dxf to G-code.

I only inserted an export to dxf file after the optimising pass, using the scripts dxfImport from Christian Kohloeffel (GNU Public License). In this maneer, I get test4.dxf file generated with the dxf lines well ordered.

The mix of these two modules is attached, using the same license.

Unfortunatelly, I am not expert in python, it just handles LINE and ARC, there are problems with arc orientation when using with splines. If anyone wants have a look, I think it could be a great advancement!

Checking results in QCad

Sometimes the arcs need to be inversed. I edit test4.dxf and save to the final dxf.

Same work for each design.

Here the final files, #5 and #7 are corrections, #6 is for plastic sheet

Step 7: MoshiDraw(r) Using

This stage is the cloud masking the sun.

MoshiDraw software is proprietary, it can only be used with a 'protective USB dongle' and it's a 'piece of shit' (sorry for that, these words are not from me, but reflect a real estate). Ununderstandable functions, bad labelling, memory bugs, bad optimisation, can lead to hardware bugs, sometimes reinterpret vector file, using it can lead to hair pulling.

I still haven't upgraded to something more useful, because

  • The 'DSP upgrade kits' are really expensive, I choose to build my own drivers to use it with OpenCNC or Mach3 or anything else
  • I had no time yet, I bought some drivers, but I already used them for other projects...
  • I can get MoshiDraw work good enough (in French verb says "un tien vaut mieux que 2 tu l'auras": when you have something working, its sometimes better to settle for it than getting lost looking for best way)

Here the steps I follow:

  1. turn on the laser cutter, the water cooling (and check it), the fan extractor, the PC running windows XP(r) and Moshidraw(r)
  2. From the interface, import dxf file, select it, ensure its color is black (right click on black if needed)
  3. Dispose a sheet of paper for the first time, to check that the design fits well. Set the power to 1/3, it is good enough for paper.
  4. Open Laser interface, position the zero by moving the red cross, select 'outline', deselect 'optimize path' to use the one from the file and click 'Ouput'. You can stop by clicking 'stop', and it stops after some more commands interpreted!
  5. After the paper sheet test passed, I set the 'pass number' to 3, not waiting from click, position the plywood, close the case and hit 'Ouput' again.

Step 8: Steel Rod Working

Back form the cutter with many shapes. First of all, you can wash it on water and brush with a toothbrush to eliminate the burned look on the edges, and the flames traces. Plywood is composed by glue, it wont be deformed. Let it dry before assembly.

The bati provide the first leg of the mechanism, the two other are built by double wood cuts.
The fourth leg of the mechanism is achieved using steel rods.
This is time to get hands out of pocket!

Using the bender or some clamps and pliers, it is needed to bend the rod for the links with pivots.

  • proceed to the first 90° bending at 4 cm of the border.
  • proceed to the second 90 bending between the first one and the short extremity
  • form the middle part as shown
  • proceed the last extermity just like for the first one.

The extremities of the rod fits to a wood glued piece of wood, as shown in the photo.

These steps here are

  • dispose a thin layer of wood glue on the back,
  • insert the nylon spacer,
  • dispose the two inners parts and clamp.
  • the back will be glued after inserting the steel rod (but not mandatory)

Step 9: Assembly the Axis

The axis is the assembly of many slices.

The assembly is rigidified using four right steel rod pieces.

Cut it, adjust it to 5cm, get the edge rounded.

It is time to use the hammer to force insert the strands in their placement. One can position the rectangular helper first or after.
The slices can be directly englued or not.

The square shape is the one that receive the pulley. Just proceed to the assembly of the fours layer using square wood strand of 12mm. Cut is adjusted, one can then insert the square easily into the pulley.

The pulley will be assembled to the axis when mounting the rest of the device.

Step 10: Assembly the Rest

It is still the bed to be mounted, around the axis and plug the square holder for the pulley.

Mount the switch mechanism to the axis, using small bended steel sheet.

Fix the motor and the belt, then assemble the steel rod arm.

Assembly the holder for percussive stick.

Step 11: Running and Concluding

Rest to find phases using an ohmeter, power with a 24V wall adaptor... and it works!

At starting, the embedded software initialises thinks to the limit push button then go to UP position.

Pushing the button starts a cycle: go to DOWN position, go to UP position, a range of 12 steps.

It react the same way to MIDI Note ON/OFF messages, starting and stopping a cycle.

Plugged to a sequencer we can now program percussive sequence with a small latency. Of course, the purpose of the performance is to build many arms of this kind to form a real metal drum instruments.

Strange behaviour of the camera with the sound: Some kind of dynamic equalizer masks the music when the stick hits the table...


I hope everything related there taught you something or at least got you have ideas...

Sorry for this german tought, english written with french accent langage, I guess it remains understandable, but feel free to give corrections to the langage.

Critics and comments and improvements are welcome, it was my first instructable, I hope the following to be done using Epilog cutter!

Special thanks to Make some noise radio for its playlists improbables.

You can support me by voting for this instructable to the Epilog contest and follow further commercial realizations on Undead Instruments web site.

Epilog Challenge VI

Participated in the
Epilog Challenge VI