Simple Robot Arm With Steppers Has Pleasingly Smooth Motion

The usual go-to when building a simple robot arm is the ever-pervasive hobby servo. However, these devices are not precise, and are typically jerky and unreliable. They have their advantages, but if strength is not needed a stepper motor would provide much better motion in the same price range.

Those are the lines along which [Bajdi] was thinking when he forked the Mearm project, and adapted it for small stepper motors. First he tried printing out the servo version on thingiverse. It worked, but the parts were not ideal for 3D printing, and he didn’t like the movement.

So he purchased some 28BYJ-48 motors. These are tiny little geared steppers that tend to show up in the odd project. He modified and simplified the files in FreeCAD. With the addition of a CNC shield and an Arduino he had every thing he needed for the upgrade. A servo is now only used for the gripper.

The robot is almost certainly weaker in its payload ability, but as you can see in the before and after videos after the break, it is dramatically smoother and more accurate.

14 thoughts on “Simple Robot Arm With Steppers Has Pleasingly Smooth Motion

  1. Done, partially, i only converted the base to the stepper and retained the servos. These motors, if you drive them at 5v, rated current and gears have an awesome torque/size, but lack speed compared to servos, it has even a resolution of 2048 steps/revolution, but it is accurate +/-2° due to backslash.
    The 28BYJ-48 is the bread and butter of my low powered moving project:)

  2. The trick is to reduce jerk. Jerk is rate of change of accelleration.

    First degree curve – constant speed
    Second degree curve – constant acceleration
    Third degree curve (typical bezier curve) – accelleration changes linearly.

    With a third-degree bezier curve, there can be jerk when you move from one curve segment to the next, or at the star and end. If you want to specify the position of two points, and have the velocity and accelleration start and end at zero, you’ll need a fourth or perhaps fifth degree curve.

    Making a spline of a series of bezier curves with minimal jerk over the entire path is … an interesting problem.

    1. Yeah – it’s going to have to be fifth degree. You want to acellerate in the first half of the move, and decellerate in the second half. If you don’t want jerk, then the acceleration will be a cubic, so the position will be quintic.

      1. It’s one degree more than avoiding sudden changes of direction. This is why railroad curves have what they call “easing”. A straight section going directly into a radius will produce jerk, even though the direction changes gradually over the length of the curve.

    2. In other areas, like 3D printing, “jerk” is considered to be a sudden change in velocity. Like 200 mm/min now, 250 mm/min a moment later. They use it a lot, mostly for changing direction / moving curves without slowing down, simply ignoring away all the non-trivial math at movement junctions.

  3. As long as the arm doses not exceed the tiny pull-out torque of the 28BYJ-48’s light loads (relative to the strength of the arm’s weakest mechanical component) shouldn’t be a problem. I’m not sure at what load the arm will need a feedback system for detecting missed steps…but it probably isn’t very much.

    1. A properly used stepper motor driven mechanism never needs feedback about missed steps. If it does miss steps, it’s simply overloaded and no matter of feedback can compensate for this. On overload, a stepper stops apruptly and doesn’t move again until load is reduced.

      1. Whilst I see what you mean, that’s too simplistic a way of looking at it.

        A load that a stepper can perfectly adequately accelerate slowly and maintain speed fine may miss steps if asked to accelerate fast…

        e.g move 50 steps over the next 3 seconds may be doable, but move 500 over the next 3 seconds may not.

        and feedback can be useful in that scenario if the only objective is to move as fast as possible, but not in a time critical way. (e.g. in the example above moving those 500 steps takes 30 seconds and we don’t care) positional accuracy may be more important than the time taken to get there.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s