This page is intended to be a central resource for the Armdroid 1 robot.
The Armdroid 1 was originally made in about 1980 by a company called Colne Robotics, based in Twickenham, England. The company is now defunct. It was intended to be an educational robot, sold to schools and colleges, and proved to be fairly popular, due to its (relatively) low price. There are a fair number of these hidden at the back of school cupboards, in lofts, etc, so I created this page to help people get them working again.
The Armdroid is a distinctive orange colour, with each section about 30cm (12") long. It is driven by six stepper motors, mounted around the base, with the power transmitted by pulley belts and string.
The first problem you are likely to have is that the transmission strings have snapped or come off. In that case have a look at the page dedicated to restringing the Armdroid.
The second problem is how to control the thing. The easiest way is through the printer port of a PC, details given below.
NOTE: If you have any extra information, sample programs, etc, please Email me.
Thanks to Andres Gazso, who scanned his copies of the manuals that originally shipped with the Armdroid 1.
This section has been copied from Phil Himsworth's web page (with permission)
... Interfacing with the armdroid
The armdroid has a 10 pin IDC socket to connect controllers (for example a PC) to it. Two of these are power supplies, one +5v and one Ground. On the arm I used these two were connected together through a resistor and LED to act as a power indicator. The other 8 control the arm, and handily fit nicely into an 8 bit parallel port. While I forget exactly which lines do what, I can tell you that:
- 1 is a synchronization bit. The arm only reads the other 7 bits and moves when this goes low.
- 3 are motor select bits. The armdroid has 5 motors, all of which can be controlled independently. The two hand motors can also be controlled together, to raise or lower the hand. These bits hold the pattern for whichever of the motors or the hand motor pair are to be moved. Only one motor can be moved at once; the hand pair is a special exception, so the pair can be treated as a single motor by the software.
- 4 are the stepper motor control lines for the motor to be moved.
... Stepper Motor Control Lines
Stepper motors work by having several different coils which can be activated independently, to make the motor not just turn one way or the other, like ordinary motors, but to move to a particular position. The coils to be activated are selected using the 4 stepper motor control bits.
To make the motor move continuously, the motor needs to be pulsed with the correct arrangement of coils activated and deactivated. I used a sequence I made up.
|...repeated for continuous movement.|
I believe there may be other arrangements which get better results, either by being smoother or more accurate, but mine was fine for testing purposes and so remained, as it seemed fine. It gets the general idea across; you can see how the pulses ripple around in a cyclic fashion, so hopefully carrying the motor around with it.
... Making the arm move
Basically the movement part of the program repeated a loop once for every step the motor was to be moved, controlling the arm using this bit:
Out portaddress, 1
Out portaddress, motor + con(n)
Control byte = CCCCMMMS, where C = stepper code, M = motor select, and S = sync bit.
Handily enough the lines were mapped so bit 0 was the sync bit, bits 1-3 were the motor select bits, and 4-7 were the stepper motor lines. The first line takes the sync bit high, so it moves when it reaches the second line, which turns it off, as well as setting the motor select and stepper lines. The motor variable was a number 2-12, ie. the motor * 2 (to shift it into the right bit positions). The stepper code was stored in the Con array, which consisted of the stepper sequence multiplied by 16, again to move the sequence into the right bits.
ie. con = Array(16, 48, 32, 96, 64, 192, 128, 144)
To move continuously, repeat the above commands while changing the stepper code each time; move a pointer in the array upwards for one direction, and downwards for the other.
Portaddress is where the byte is sent to; in this case LPT1 lives at 0x378. The commands used to read from and write to the parallel port are not part of standard visual basic; they came from InpOut32, a module for VB which allows direct access to various ports including the parallel port. It can (or at least could, I haven't checked) be obtained somewhere on http://www.lvr.com/.
All the information in this section, and the programs, are from and by Chuck Schoeffler (used with permission).
There is a simple test program, called Test-arm.exe with the source file at Test-arm.bas.
The main robot program for running the Armdroid is called Armdroid.exe. The source file for compiling in Quick Basic 4.5 is called Armdroid.bas. You can run the armdroid.bas file in DOS quickbasic but you will not be able to compile it if you change things.
To run the program be sure the delay (main menu) is set for about 500 for a 33Mhz 486 and it's going to have to be higher for a Pentium. For an PC XT 8088 or 80286 the delay will be around 10 for a 286. The motors will run smooth at the proper delay rate. At others you'll be able to notice the difference immediately.
The program still has a few bugs..ha. I only spent about 30 hours debugging so far. Here's the bug list.
The stepper motors run hot and are supposed to in order to keep their postion after stepping.
Voltage to run the Armdroid is 12-15 VDC. On the ited one I've put an LED and a Bridge so you can't make any mistakes when powering it up.
If you watch the led (on the Armdroid) when positioning the arm axis you'll notice the led flashing as you move the arm around. Thats normal, the motors are generating voltage and current.
Don't try to move the arm with the power turned on...You will be fighting the stepper motors. If you want to position the arm turn the power off. Turn the power off if you are not going to be using the Armdroid for a while.
Chuck Schoeffler, Asst. Prof. Ited Dept. Univ. of Idaho, 5-28-98.
Here are a few images of the robot.
Printed information about the Armdroid:
A chapter scanned from John Billingsley's book "DIY robotics and sensors on the Commodore computer: practical projects for control application" published in 1984. The BASIC programs there are out of date but might be useful as a starting point if you want to write your own programs to control the Armdroid.
An article that appeared in ETI magazine in Sept 1981:
It appears that this was a prototype arm. The arm that I have, and that I have read about elsewhere had significantly simpler circuitry. I think this article may refer to robots with the following PCB. I have no further information about this variant.
Pinouts on my Armdroid (I've read that these varied from model to model, so don't be surprised if you have to rearrange yours)
I made up a 10 way ribbon cable and connected it to the Armdroid. The pinout was as follows (from left to right, looking down onto the Armdroid)
|1||motor coil 1|
|2||motor coil 2|
|3||motor coil 3|
|4||motor coil 4|
|10||5V (from the internal Armdroid board)|
Power supply for the Armdroid
The original power supply that came with my Armdroid supplied 14.6V at 4A.