Personal Robotics
by Mike Keesling
Understanding, Designing, and Constructing Robots and Robotic Systems
Personal Robotics
All About the Isopod™
F
o
r
E
l
e
c
t
r
o
n
i
c
s
Isopod: Any of numerous crustaceans of the order Isopoda,
characterized by a flattened
body bearing seven pairs of legs
and including the sow bug
( www.dictionary.com).
Well, that's the dictionary definition, but what it means to me, is a
small, flat microcontroller system on
a board, with many groups of functions, a board suitable for controlling
many actuators, and reading many
sensors.
In the last two years, the IsoPod
has grown in popularity, and even
graced the top 100 products of the
year in EDN magazine in 2002. It has
grown into a family of related products with more functions or smaller
dimensions to accommodate the
task at hand whatever it is.
When you buy an IsoPod, you
are not just buying a microcontroller
board; you are actually buying a digital signal processor, voltage regulators, communications transceivers,
and a full-featured programming language called IsoMax™. All this comes
on a 1.27" by 3.05" board that looks
more like a studded breakfast bar
than a microcontroller. Based on the
56800 series of digital signal processors and running at 80 MHz, you will
find that fully tasking it will be quite
a challenge.
NUTS & VOLTS
E
v
e
r
y
t
h
i
n
g
The feature set of the IsoPod is
impressive, to say the least. To fully
understand its power, you have to
consider that all of its features are
hardware based. What this means, is
that you have access to a lot of "set
it and forget it" functionality. The
advantage to this is that there is little
or no processor overhead required to
get a lot of stuff done. This frees you
16
to write the software that imbues
your project with the behavior you
are interested in, without having to
code the functionality.
As an example, you can program just about any microcontroller
to drive a multitude of R/C servos,
but how much overhead does this
require? With the IsoPod, 26 R/C servos can be driven without intervention on the part of the software, Yes,
that is correct, 0% overhead on the
processor.
Unfortunately, there is a price for
all this functionality. The IsoPod is literally bristling with connections.
When you connect to it, you really
have to be careful to avoid connecting the wrong signals or permanent
damage can result, especially to the
analog inputs which will in no way
tolerate over-voltage. In addition,
there is a weird sort of right angle
connector on one end, but this has
been phased out in the other members of the IsoPod family.
The PWM module is very complete. With two banks of six PWM
pins, PWMA, and PWMB, you can
instantly control 12 R/C servos, and
a variety of different configurations
of H-bridges for driving a variety of
different motors. Each bank has its
own frequency setting, so you could
have six R/C servos connected to
PWMA, and six DC motors off of
PWMB.
The PWM pins in each bank can
be configured as pairs, complete
with dead-time insertion and polarity
control, or as individual pins. You are
limited to all pairs or all individuals in
each bank, but because of the reasons for using one or the other, this
would rarely be an issue. One limitation is the minimum frequency they
can generate. Without slowing down
the processor to half speed, you are
limited to 76 Hz. This can cause
problems with some R/C servos, but
so far, my experience has been okay.
In any case, if it is a problem, there
are the timer registers that can also
generate PWM, and can easily go as
slow as necessary to drive R/C servos.
The timer module is hands down
the most versatile part of the IsoPod.
Consisting of four banks of timers
(TA-TD), it can generate PWM, read
quadrature encoders, decode
step/direction signals, count pulses,
or measure pulse lengths. For
instance, I have an application that
has the timer unit configured to read
six quadrature encoders into 32 bit
counters, and perform high-resolu-tion pulse measuring on each
encoder, to provide ultra-high resolution velocity information. I have yet
to scrape the surface of its functionality. Covering an address space of
128 bytes, it is quite a bit to get
acquainted with.
The GPIO module is fairly
straightforward, with two full banks
FEBRUARY 2004