October 1, 2000

Progress

Platform:

  • Basic platform design progressing slowly.

Sensors:

  • Working circuits for image capture and accelerometer.

Software:

  • Very basic programmability of the MPC555 microcontroller.  The main program is gradually taking shape..

Motors:

  • After deciding to roll my own servo controller, so far I am able to send the servo control PWM'ed signals successfully to a servo.

Brains:

  • Knowledge and experience with the MPC555 growing slowly.

Other:

  • The construction of Bing's feet will definitely be delayed by the lateness of the CNC controller.  Not too worried yet.


This week's picture.  Front and rear of a small accelerometer board that I designed and built this week.  It is based on a small prototyping board and is mostly just a Motorola ADXL202 two-axis accelerometer chip, a 4-pin header, and some electronics to tune the chip and remove noise from the power line.  Size of the board is 1" by 0.875".  Click for a larger view.


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!