A Look at the Little Green Machine II
March 2006

Fig. 1: The Little Green Machine II.
Introduction
The Little Green Machine II was entered into the Trinity Fire Fighting Contest in
2006. It failed to qualify for the competition. Anyways, from this project I learned a
lot and I thought I would show off the robot a little. This note shows how it was
constructed and what it looked like, it will also compare LGM2 with the original
LGM.
As you can see in Figure 1, the robot was pretty simplistic in mechanical design.
It uses two DC gear motors for differential drive. Although these motors provided
the much needed power that the hobby servos in the original LGM did not, they were
far too fast and built up too much inertia. For LGM3, I am planning on using
slightly smaller motors and wheels. The wheels are
RC tires, about 3.5" in diameter and 1.75" wide. The main frame is an 8" by 8"
piece of 1/4" thick green PVC. The robot has one omni-directional caster which
is mounted at the rear of the robot. Figure 2 has a table showing a comparision
of LGM2 and the original LGM.
| |
LGM |
LGM2 |
| MOTORS |
HS-311 SERVOS |
DC GEAR MOTORS |
| WHEELS |
5.5" O-RING ON PVC |
3.5" DIA RC TIRES |
| FRAME |
11" ROUND DISK |
8"x8" PVC DECK |
Fig. 2: Little Green Machine II vs. the original
From the front and side views (Fig. 3) you can see most of the sensors. There are
two GP2D12 sensors mounted on the bottom of the top deck facing to the right
side, one mounted there facing to the left side, and one facing forwards. They
are all set in 3" from the edge. The little mounts that the IR rangers are
held on with are small pieces of L-angle aluminum, drilled and painted. The
GP2D12s all are hooked up to analog inputs on the PSoC microcontroller.
The UVTron is visible in the first view of the Little Green Machine (Fig. 1),
it is the small beige rectangular PCB in front of the breadboard. I modified the
UVTron by adding a 1uF capacitor at position CX which increased the length of
output pulse from 10mS to 1S. This means when in the presence of UV light (the
candle) the UVTron puts out a constant high voltage. The pyroelectric sensor
is the white cone next to the fan. The pyroelectric sensor has an analog output
but since I used a
window comparator
with great success on the original LGM
I chose to continue using it. This circuit allows me to hook up the
pyroelectric sensor to a digital input and simply poll it rather than have
to do AtoD conversions.

Fig. 3: Front and side view of Little Green Machine II.
The PSoC microcontroller was plugged into the breadboard you see at the back of
the robot in figure 4. The breadboard also carries the 8x1 character LCD and the
7404 used to create the direction signals for the motor driver. The protoboards
in front of the breadboard are for power regulation and distribution. The lower
board provides servo-like headers for all the sensors as well as the window
comparator for the pyroelectric sensor. The upper protoboard is the 9VDC to 5VDC
DC-DC converter based on the MAX744A switch mode DC-DC converter IC. The upper
protoboard also carries the fan driver circuit. (NOTE: as this was designed almost
3-years ago the 744A is now listed as being obsolete, someday I'll design a new
power supply).
The two blue LEDs are the processor power ON led and the motor power ON led.
The red switch next to the motor on led is the start switch.
Not visible in these pictures is the power distribution bar,
power switches, and motor driver PCB under the robot.

Fig. 4: Little Green Machine II's electronics.
The Little Green Machine II uses a simple program to run through the maze and
put out the fire. The low level motion controller
(motor.h) has functions such as:
void
goForward(char inches)
void goBackward(char inches)
void turnLeft(char degrees)
void turnRight(char degrees)
These are handled at the hardware and interrupt levels and basically stop the
motors when the encoders read back that the distance traveled is at its goal.
Wall following (fightfire.h) is achieved by a PD loop which computes how far off the value
of the side GP2D12 is from desired and adjusts the left motor speed accordingly.
Update 2007: It wasn't until several months after the competition that I picked
up a book by Joseph L. Jones: Robot Programming and realized what my problem all along
with LGM2 was. My wall following sensors were directly above the wheels, which meant
that geometrically they always gave bad date.
The higher level logic is all in fightfire.h and
is built upon just those few motor control functions and some wall following and doorway
detection. One of the things you might notice if you look at the code is that there
are a lot of loops in which the robot goes forward 15 inches and then checks its forward
IR sensor. I made the compromise of being a little slower to overcome the failure
of the forward IR to accurately read distance while running when the distance is over
about 8".
The sensor drivers are all fairly self-explanatory (they are well coded also). The
zip file of the source code only contains the header files for the sensors and motors
and the main.c file. This was done because I
have limited space on the server. If you want the complete set of files, which is
only really useful to those using a PSoC as thier microcontroller (which appears
to be all of about 5 people on the planet), just drop me an email
at mfergs7 at gmail dot com.
REFERENCE MATERIAL:
COMPLETE SCHEMATICS (PDF)
MECHANICAL DRAWING (PDF)
CODE (ZIP)
|
|