The Un-Digital Robotic Arm

556When you think of a robotic arm, you’re probably thinking about digital control, microcontrollers, motor drivers, and possibly a feedback loop. Anyone who was lucky enough to have an Armatron¬†knows this isn’t the case, but you’d still be surprised at how minimal a robotic arm can be.

[viswesh713] built a servo-powered robotic arm without a microcontroller, and with some interpretations, no digital control at all. Servos are controlled by PWM signals, with a 1 ms pulse rotating the shaft one way and a 2 ms pulse rotating the shaft the other way. What’s a cheap, popular chip that can easily be configured as a timer? Yep, the venerable 555.

The robotic arm is actually configured more like a Waldo with a master slave configuration. [viswesh] built a second arm with pots at the hinges, with the resistance of the pots controlling the signal output from a 556 dual timer chip. It’s extremely clever, at least until you realize this is how very early robotic actuators were controlled. Still, an impressive display of what can be done with a simple 555. Videos below.

Thanks for the tip, [Ladvien].

23 thoughts on “The Un-Digital Robotic Arm

  1. Really love the simplicity and reliability of this circuit. This is a great (and low cost) way for remote puppeteering DIY movie/halloween props.

  2. Analog is so complex and there are so many advances using a microcontroller.
    This is basically just 3 servo-testers. Could be done with a single microcontroller with at least 3 analog inputs.

  3. I’d love to see the schematic for this thing… something… anything that’d let me recreate it if I wanted to.

      1. Yeah, that circuit is how this really should have been done (sorry to burst the bubble of all the “ooo… analogue” people here).

        Full web page here:

        The circuit used in this project would be required if servos were especially picky about the frequency of the PWM signal, but they’re not (and neither are many R/C receviers that usually generate the signals). In fact I believe some Rx send PWM at 40Hz.

        That means the gap width can be fixed (and therefore the frequency slightly varying as pulses change length) without the servo showing any complaint. This allows you to use just one 555 for the job.

  4. @Dodo, others, I have a Scorbot ERIII that uses servos — a DC motor with a spindle encoder on the shaft. I wonder how hard it would be to hack that to accept PWM input so that it would appear like a standard hobby servo? Any ideas?

    1. Eric: Measure the width of the PWM pulse, translate to a count, say 0-255, use 128 as mid count, then map the count to an encoder position, and drive the motor/encoder to that count.

  5. @Karl [k-ww] I should explain that while I can build a circuit from a schematic, my electronics design skills are quite limited. What I have on the Scorbot, is a 12VDC gearmotor which has on its rear shaft an encoder wheel with what appear to be emitter/detector photo transistors (discrete components, not a newer all in one package). These get wired to a heavy duty controller, which I would do away with if I moved this to PWM.

    So to my question: wonder how hard it would be to hack that to accept PWM input so that it would appear like a standard hobby servo? Any ideas?

    1. The Scor-bot’s encoders are quadrature encoders – basically the same as the ones on a Rhino arm (both are from the same 1980s era). I myself own a Rhino XR-1 (currently in a “non-working” state).

      Likely the Scor-bot has homing limit switches for each joint, so what you would have to do is move the joints until the limit switch is reached, then move the joint in the opposite direction, counting the pulses from the encoder, until the other limit is reached. This will give you a count of “pulses” to control the position with. For instance, turn the motor on and let it rotate while counting the pulses, starting from the limit switch – and the joint should be (approximately) at the half-way rotation point.

      Now, of course, these motors will have the weight of the arm behind them (ie – mass), so you will also need some kind of lead-in, lead-out accel/decel “curve” (via PWM) as you move the motor, monitoring the count, so you don’t overshoot or undershoot (much – you’ll have to keep that in mind as well). Basically, you need to move the joints, keep track of pulses (for both directions), and position the arm joints relative to where they last were. If you happen to be counting, and hit a limit switch before it’s time – you can either just call that “done” (and reset the count), or have the robot go into a “recalibrate” mode or something.

      Servos don’t operate the same, as they use an absolute encoder (hobby servos use a potentiometer; higher-end industrial servos may use absolute digital optical encoders), whereas the quadrature encoders on the Scor-bot arm are relative coders. But because they are quadrature encoders, you can know what direction the arm is moving, even if the motor isn’t powering the joint (if it can be back-driven) – so you can keep a joint “on-station”, so to speak, as well as perform “lead-by-arm” record and playback (if you wanted to).

      In theory, you can do what you are thinking with the Scor-bot arm – but it won’t be easy, to say the least (most of the effort will be in the code).

  6. “and with some interpretations, no digital control at all.”

    There is no room for interpretation here. The difference between analog and digital is whether the system operates in discrete steps or continuous values.

    PWM is not inherently “digital” exactly because the duty cycle can take any arbitrary value within its range, so the robot is indeed fully analog for as long as the servos are internally analog as well.

    1. Yes, PWM can be analog but he is using a 555 IC chip which is essentially digital. I’d like to see someone come up with an analog only design using only analog discret parts with no IC chips.

      1. No it isn’t. The 555 is an analog circuit.

        Just because it has a flip-flop circuit doesn’t make it digital, when all the input values are analog and all the output values are analog.

  7. I had an Armatron!
    Until I took it apart.
    Thing was insanely fun (in the early ’80s)
    And insanely loud.

    1. I have three or four Armatrons; one original Tomy branded arm, the rest are Radio Shack arms. The Tomy one is probably worth some money to a collector (not that I’ll let it go; it’s from my childhood, plus I am a Tomy robot collector).

      I also have the Discovery and the Smithsonian “knock-off” arms they made later – both are Armatrons on the “inside”.

      I’m a collector of any and all articles on how people have interfaced the Armatron to computers and such over the years; back when I was a kid, I got the Radio-Electronics magazine that had the article on doing this. I still have that magazine, but you can find it online now. I have a collection of PDFs and such on my website about Armatron “hacking”.

      Other than those, and my recent acquisition of a Rhino XR-1 – I also have a few OWI-535 arms.

      Yep – I’ve got a real problem…ugh. LOL.

Leave a Reply

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

You are commenting using your 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