servo or stepper? (backlash issue)

Hi - this may be out of scope for this forum but I would thought I would ask.

I’ve built a prototype of a gimble-based painting machine. It takes gcode and then will (eventually) direct a solid stream spray along the gcode vector paths. The rig would be mounted at 6+ feet from the drawing surface so the drawing scale is quite large. I’ve got the code working and proof of concept but am having an issue with backlash. I am using small gearhead stepper motors similar to this one (same form factor - just slightly different specs):

The problem is that because of the gearing, there is a small amount of backlash - say <= 1 degree. This wouldn’t matter in most applications but since I am using these motors to set the gimble angles, that small amount of backlash is amplified by the distance of the gimble center from the drawing surface. As I increase the speed of the rig, the hysteresis becomes more extreme. Here are some small, grainy videos of the gimble rig with a laser pointer attached:


Images (earlier protoype):

So I am looking for ways to reduce backlash. I have tried compensating by weighting each ring on one side (preloading it) but at higher speeds I get hysteresis as the motor pushes forward and the weight moves the pointer back.

I am reluctant to switch to other types of motors - like RC servos - partly because resolution seems limited to 1024 - but also because I am using this very nice NC stepper control board that handles cordinated x/y movement:

So… does anyone have any ideas about reducing backlash - either in the rig as I have it designed now, or with some additions (more gearing, whatever), other stepper models or using RC servos (tat is the worst case since I would have to program in coordinated movement myself)

Open to any ideas - practical, speculative, crazy, whatever. The project is slipping away a bit because of this backlash problem.



What a neat project.

I would recommend first trying non-geared steppers. If you want that kind of precision at that kind of distance, it's going to cost some money and take some power.

Or what about moving the steering mechanism closer to the drawing surface. It won't be around a central gimbal point and you'll have to think more linear than rotational, but then you can use lead screws to divide the backlash by the lead screw pitch.

Thanks for the reply. I may try non-geared steppers - but I have my doubts that they would have the torque/holding power that I need. Steppers tend to be pretty heavy. I don't want to lose position/steps because of slipping. Maybe move powerful steppers rotating the outer ring - since they don't move, and some lighter steppers on the inner ring.

No idea if that will work - but it is one thing I am thinking about. Powerful steppers weigh so much -guess that is the trade off.

Not quite getting your comment about moving the the mechanism closer to the drawing surface but it does suggest a very different mechanism where short lengths of threaded rod/lead screws control a ring's axis rotation through a lever mechanism. Not the simple, obvious tech I was hoping for (and not sure about speed) but it would be more solid if I got the fabrication accurate.

Something to consider (since I am out of ideas and feel the project slipping away)


If you can't remove the backlash mechanically then why not try and measure the angle you are at and compensate for the backlash in software. Optical shaft encoders are expensive but can give you good results, you can squeeze the maximum out of them, see my page:-

However, for a cheaper alternative how about something like this I don't know about this model but usually the reading on digital callipers is available in serial form from connectors you can access inside the battery compartment.

Hi Roy, have a look a the Ardiuno controlled ‘drawbot’ for an interesting approach to this problem:

Thanks for the replies. That drawing project reminds me of Hektor:

Similar mechanical set-up.

About compensating for the backlash in code, I think that might be pretty difficult because to get right but I guess I will have to try, if I can't find a mechanical solution.

Frustrating - since I am so close to getting this working. :-[