A quiet week, but not an unproductive one. This week's picture
shows the main accomplishment: a working 2-axis accelerometer board
that will form much of Bing's sense of balance. The heart of
the board is a really nice little 2-axis 2-g accelerometer
chip: the Motorola ADXL202. The chip generates pulsed
signals whose high time is proportional to the
"acceleration" -- gravity is considered a 1g
acceleration. The circuitry was pretty easy to design and
though it is kind of small was not that difficult to solder together
(but this ADXL202 chip is a surface-mount thing so I needed a
magnifying lens to solder it comfortably).
I really like these surface-mount things. Compactness is
the name of the game and this stuff seems to work pretty well.
Here is a little picture showing the circuit, in case somebody
wants to build one. The ferrite beads are probably not
necessary I guess:

Lucky for me, my MPC555 controller is so cool. Its Time
Processing Unit (TPU) has a built-in function called
"Period/Pulse Width Accumulator" which is perfect for
measuring the PWM signal produced by this chip. It was the
first thing I had ever used the TPU for, so there was a bit of a
learning curve there, but it works beautifully. The
accelerometer sends about 1200 pulses per second; the TPU is
sampling about 5 million times per second, so the accuracy is very
good, and the main processor doesn't have to do anything.
Did I mention that I like this chip?
There is still a little software to be done eventually (to
calibrate and convert the readings into accelerations and tilts) but
other than that this thing is done.
Other items from this week:
- I abandoned the idea of using pressure sensors in Bing's
feet. Reluctantly. The ones I have are just too big
and I have great fears about the reliability of the "bag of
air" that I need to build to feed to the air pressure
sensor. It's too bad (I'll try again on another robot
another day or maybe revisit it later in Bing's construction).
- A couple of weeks ago I decided that I wanted to make my own
servo controller instead of just purchasing one. The
reasons for this are first that I wanted to get the experience
and second that I wanted to incorporate two different kinds of
feedback from the servos:
- Position feedback. Toward this end, I have torn
apart one of my servos and soldered a lead onto center pole
of the potentiometer that the servo uses internally to
decide where it is. By using an A/D converter on the
MPC555 I should be able to get accurate instantaneous
information about where the servo actually is. So far
it looks like it works.
- "Torque" feedback. I'd like to measure the
current drawn by the servo to use as an estimate of how hard
the servo is working. I am researching and designing
this mechanism presently and hope to have some more detail
soon.
- Regarding actually controlling the servo, again the TPU comes
to the rescue. The PWM signals needed to control the servo
are perfectly suited to being driven by a TPU function and this
was not difficult to get working. I now have the classic
experimental setup going for this: A potentiometer scales
the input to one of the MPC555's A/D converters. The read
value is then used to set the position of a servo -- so turning
the pot turns the servo too. Kind of fun to watch (but I'm
easily entertained).
- I worked on the design of Bing's feet and legs, but have
nothing to show yet as I keep discarding different avenues.
- Besides abandoning the pressure sensors, I have also abandoned
the contact switches I was planning to use on Bing's feet
(however, I will use strips of sheet metal or something because
I really need them). Again, size is the issue. It is
hard building a walking robot that is only a foot tall!
- Finally, I reorganized my MPC555 code to make it a little less
gnarly to modify it and to remove some of the cross-module
dependencies.
Fun stuff! Six and a half months to go!
|