Once the servo controller code was feature complete I switched to looking at the hardware side of things and thinking about the next stage, the servo sequencing.
From a hardware point of view I had several things to work on. Firstly I needed to get the servo controller and I/O multiplexor chips off of a breadboard and onto something a little more permanent. Since I still find building things with perfboard a little hard I decided to build the controller itself on one board and build separate daughter boards for the I/O multiplexing.
I decided to treat myself to an early christmas present and bought a 60W temperature controlled soldering station (a ZD-916 which I got from Maplin). All I can say is WOW. Suddenly I can solder neatly rather than making a smeary mess. The difference between this and my cheapo 12W soldering iron is just unbelievable. It just makes the whole process SO much easier. Where in the past when soldering something with a large heat sink or onto a large pad would be painful as both items would never seem to get up to temperature now I hear the iron click on as I touch the items to be soldered and the heat stays constant and it just works… Highly recommended.
Here is a schematic for a 24 channel version of the ATTiny2313 servo controller. You can expand the number of channels up to the full 64 by adding additional CD74HCT238Es where each additional MUX chip is connected to the next available pin on port b.
ATTiny2313-24ChannelServoController.png The schematic, in Eagle format, is here: ATTiny2313-24ChannelServoController.sch and a potential board layout is here: ATTiny2313-24ChannelServoController.brd These were produced with Eagle and I don’t think I could have worked out how to use Eagle without reading Build Your Own Printed Circuit Board by Al Williams.
I’ve been experimenting with the servo controller that I developed for the ATtiny2313 here and the demultiplexing chips that I mentioned here. The result is a 64 channel servo controller that seems to work pretty well. Right now I haven’t breadboarded all 64 channels, I have two of the CD74HCT238E chips connected to the ATtiny but I/O pins and he firmware would drive 8 of them if they were connected to give 64 channels.
My progress has been slow over the past couple of weeks because a) I’ve been rather busy with other things and b) an order of components has gone missing in the post. The order contains some 4mhz crystals and therefore my server controller firmware testing has been on hold as I’d like to remove the potential clock instability as a potential cause of the controller jitters before continuing my debugging.
I’ve been testing the new leg with one power supply for the servos and one for the electronics and all is working well. I expect that all would be working well if I were using a single power supply for both, as long as I was using the new one I soldered up and not the old one…
I decided that since I would be using a 5v power supply for most of the bits of this project that I’d grab and old mains transformer and wire up a 5v regulator and run from the mains rather than batteries.
This week I managed to scrape together some time to play with some of the non prototype bits and pieces that I purchased for this project. First off was breadboarding a MAX232 chip so that I could talk via my PCs serial port to my ATtiny2313 microcontroller. The MAX232 does the required level shifting and talks RS232 signals on one side and TTL signals on the other. The result is that it makes it possible to connect a microcontroller’s internal UART to a PC.
My package from Cool Components arrived this morning. My choice of prototyping equipment was quickly validated when I plugged together the Arduino and the Pololu servo controller board, plugged in the servos and servo power supply, connected the lot to the pc via a usb cable and had three servos twitching back and forth under the control of the Arduino is no time. The idea is that I can now begin fabricating a leg, connect up the servos and then experiment with leg movement without needing to get the soldering iron out.
First some basics: servo motors are what I’ll be using to provide movement for the robot. Each leg will consist of at least three servo motors (1 at the knee and two at the hip). As you’ll see from the wikipedia link above, servo motors are generally controlled by pulse width modulation. In order to control multiple servos you need to generate a continuous PWM control signal for each servo.
So far most of my more interesting components have been purchased from Cool Components mainly because they’re UK based and they stocked stuff I was interested in. I found them via SparkFun which is a treasure trove of fun; unfortunately I can’t find UK distributors for much of the stuff they have available and at present I’m trying to avoid buying bits and pieces for this project from the US as the shipping is often more expensive than the order.