The article by Phil Edwards in the July issue of the
Newsletter, describing the methods he has developed for producing plans for
scale models, prompted several inquiries from readers who wanted to know more
about the workings of his Caterpillar 235 excavator model.
When put through its paces, this computer controlled model
never fails to draw a fascinated crowd. Not only is it able to perform all of
the functions of the prototype through manipulation of the joysticks in its cab,
but it can be "taught" to perform a precise routine entirely on its
own.
From all external appearances, Phil's "digger"
looks every bit like any other fine Meccano model. Internally, however, it is
something else entirely: an incredible maze of sophisticated circuitry which,
though a little dated by today's standards, was truly the cutting edge when Phil
designed it. We asked Phil to tell us more about it. Here's his response:
By Phillip Edwards
As I mentioned in my article, I built it back in the 80’s.
I started the design in 1984, the year I left University in England. I finally
had it finished the year I emigrated to LA in 1989.
It weighs about 100lb and is a little under 5’ long when
the digging arm is outstretched. All controls are via the cab, where I have
miniature joysticks mimicking the original cab layout. I have the operator’s
guide to the original machine and all controls are as close as I can make to
exactly correct. All of the actuator speeds are variable from a crawl to the
correct scale speed. This is done by using 7 motors.
The tracks are driven by 2 computer tape drive motors and
powered from my own design electronic speed control system that senses the motor’s
back EMF and pulses the motor accordingly. Although I use 12V motors, I power
the model with a home built 30V, 10Amp power supply (running from the power
line). The use of 30V allows me some voltage drop through all of the cabling and
also allows for sub-optimal power feeds in large exhibition halls. This is a
particular problem in the UK at the larger model shows, where there may be many
hundred models all powered off the power line. The motor control circuits for
the carbody (track assembly) are driven through a parallel cabling assembly
coming from the off-model computer system.
As I started on the conceptual design of the computer system
in 1982, I used a British home computer designed using the 6502 processor. When
I purchased the computer, it loaded it’s programs from audio tape. This dates
it doesn’t it ! Once a company came out with a dual disk drive for it, I
purchased that as I thought I had a real computer at last. I then realized that
I needed to write the code to run a model in machine code, to get the speed of
operation that I required from a 1MHz clocked 8 bit processor with all of 64K of
RAM. I therefore wrote my own assembler as there was not such a thing written
for the computer at that time. There was one written in a form of BASIC, but it
was way to slow and only ran from the tape drive. The disk controller I/O
clashed with the memory locations used for the assembler program, so I was
forced to write my own. As you can see, the computer as it now exists is
practically a custom design for controlling models.
In the upper section of the model there are 5 motors. 1 for
swing (rotation of the superstructure); 3 for the digging rams and 1 final one
for a noise simulator. This little motor operates a series of 3 lifters, so
designed to sound like a diesel engine. The motor speed is controlled by the
computer, so it revs up and down to fully simulate the real machine’s sounds.
It serves no other practical use, other than to cover up the noise of all the
other 6 motors ! Let us say that it gives some continuity to the fact that the
model is supposed to be a scale model of a real machine, other than a toy robot.
The swing motor is a lovely little computer tape drive motor
that I found in the UK in the late 70’s. Very quiet and powerful when driven
from my electronic controller circuitry. I use another of these to drive the
bucket rotation ram and then the two largest motors are used for the boom and
stick operations. (The boom attaches to the to superstructure; the stick
attaches the bucket to the boom !) The boom is not operated by it’s rams; they
are dummy. I have a rack and pinion system running inside the rear of the
superstructure that moves the boom up and down. At full speed it takes 5 seconds
to raise the boom and the force on this rack assembly when the stick is right
out (i.e. the bucket is furthest from the cab) is around 200lb (measured !)
These 2 motors are British truck windshield wiper motors, easily capable of
drawing 10Amp at 30V if they need to. I limit the drive current to around 8Amp
per motor, so when all motors are running my power supply is feeding around 200W
to the model. The motors draw around 4Amp when running under minimal loading.
The voltage starts to drop when I hit the 10Amp point as this is the limit of
the transformer design, but I can live with a 10V drop in power, down to 20V; at
which point the power supply is feeding well in excess of 350W to the model.
To handle all of this power, each motor’s controller is
built to withstand 20Amp peak and 10Amp continuous feed. All of the motor
control circuits are given 4 bit speed digital data (16 speeds) and a direction
to rotate. There is also a feedback circuit within the controller boards to
sense the back EMF and all of these signals go into a custom programmed ROM chip
to figure out which of the 4 motor drive transistors to turn on. These
transistors are configured in the form of a ‘H’. The end result of all of
this is that the motors go at the required speed, irrespective of loading.
I should mention here how I run the model in it’s robot
mode. 50 times a second, the digitized joystick positions are relayed to the
computer system, down a bi-directional serial data bus. This data is used to
determine the motor speeds. This speed and direction information is then
serialized and sent back to the model and the motors thus rotate at their
required speeds. 20mS later, the whole thing happens again. As I have very
precise control over the motor’s speeds, and as I tell each motor what to do
every 20mS (precision timed), I do not need to know the model’s position. I
have a little switch in the cab to send the model into what I call a ‘home’
position. This is where the model rotates to a defined angle ( set up using a
sensor on the main power/signaling commutator inside the turntable assembly ).
Mechanically, each ram is controlled by a double acting wire
cable arrangement. I used bicycle brake cables running inside a British net
curtain railing (much like the outer jacketing for brake cables, but slimmer).
One end of one cable is attached to the end of the ram (inside the outer
actuator housing) and this runs back into the main part of the model and is
wound onto a winding drum. Another cable pulls in the opposite direction and
opens the ram. The cable exits the outer housing running under a ½" pulley
attached to the outer housing of the ram. This then goes into it’s own outer
cabling and finds it’s way back to another winding drum. By contra rotating
the drums (i.e. winding one in while letting the other out), the ram moves. Both
the rams and winding drums were made on my lathe as there are no Meccano parts
suitable for the task. This overall system is remarkably efficient despite all
of the friction in moving the cables within their outer jackets and allows
phenomenal power to be transferred to the rams.
Each of the rams also goes to one extreme of travel and
operates a limits switch that both shuts down the motor directly and also
signals to the computer system. Once at this defined position all I have to do
is store in memory the joystick positions in a giant lookup table and drive the
model through it’s learning process. Once taught, (up to 3 minutes worth of
data) I can then re run the data and feed it to the model from memory rather
than using the data processed from the joysticks. This way, the model will
repeat the taught sequence; extremely accurately. Using the basic mathematical
formula: distance = velocity x time ; the fact that I record the speed
information at a precise repetition frequency, the distance traveled is also
precise; providing that the speed of operation is maintained to be exact. This
is why I went to such lengths to drive the motors in such a manor.
Overall, there are some 50 or so integrated circuits used
external to the computer system, placed on 11 pcbs around the model and a mass
of wiring harnesses using ribbon cable. It took me around 2 years to get all of
the electronics hardware working and another 2 years to write the 5000 lines of
assembler code to operate the model. If I hit a major
circuit/electronics/electrical problem now, after 10 years, I will have my work
cut out to get the model running again !! Occasionally ICs need to be re seated
in their sockets to get good contacts, but on the whole the model behaves itself
remarkably well.
Using more modern electronics I could easily scrap the computer and use a
little microcontroller programmed in ‘C’ or something similar. I have no
intention of doing this as the model continues to work perfectly, so I see no
reason to redesign what works OK.
Last Updated: September 28, 2000