A tale of two controllers

When I ordered the mechanics of the hexapod from
Lynxmotion I knew I wanted a fairly powerful
microcontroller that could handle at least 18 servos. The
servopod(tm) from New Micros
Inc
looked very interesting - it can control up to
26 servos, has 22 GPIO lines, 2 x 8-channel 12-bit A/D converters.

\(JPG\)

ServoPod(tm)

Photo (c) New Micros Inc

Another intriguing aspect of the ServoPod was the fact that it’s native
language is a dialect of Forth designed to handle parallelism. It’d been a
long time since I’d written anything in Forth (not since my 8-bit home
computer days in the mid to late 1980s in fact) and I hadn’t planned to start
again but IsoMax sounded like it could be a good way to handle tasks such as
getting the robot to move and still be able to sense it’s environment without
requiring a processor capable of running multiple threads or rolling my own
pseudo threaded controller code.

However, when the ServoPod arrived there was disappointment in store.
Lynxmotion had recommened their SSC-32 controller to me but I wanted the I/O
capabilties of the ServoPod and so I went against their advice. Firstly, the
documentation was very incomplete and at least half the sections didn’t appear
to have any content. Instead it seemed to be expected to use the forums to
work out how to use the thing for any real tasks. When I came to revisit the
project after over a year’s hiatus the documentation had improved but the
information revealed only served to deepen my dissatisfaction. For example:

- Why, for a device called “ServoPod” was it necessary to run in “slow”
mode in order to control servos reliably? One reason for buying the controller
was to have a reasonably powerful processor so why have throw that advantage
away in order to control servos? Surely, given the name of the controller it
would have been optimised for controlling servos without having to run at half
speed? To be fair there were hints outside the documentation that it might be
possible to control servos at full speed, but I didn’t see a definitive
answer.
- Why was there not a decent tutorial on actually connecting and
controlling a servo in the manual without having to trawl through the forums?
- There were comments (in the forums I think) about having to attach
separate power supplies to actually power the servos, but again there was a
lack of documentation.

I’m sure I could have progressed further but I didn’t have a lot of spare time
and I just wasn’t feeling in the mood to mess about with something that had
already disappointed me. I decided instead to try the
SSC-32

\(JPG\)

SSC-32 Servo controller

Photo (c) Lynxmotion

The SSC-32 is a dedicated servo controller and so it doesn’t have the I/O
options of the ServoPod (it only has 4 inputs), but it does have some nice
features:
- ability to control up to 32 servos
- each bank of 16 servos can either share a single power supply or have
one each in addition to a separate supply for the logic (this is also true of
the ServoPod)
- dead easy to control via a serial port
- ability to handle group moves

If possible I’d rather have a single powerful processor running most of the
code so having a relatively dumb controller that just controls the servos is
not such a bad prospect. I still need to sort out something to handle input,
but I might end up using the Servopod for that. I’ve also just got my hands on
an arduino so that’s a possible
candidate, but I’ll likely use that for experimenting with other stuff.