Little Green Machine II
XR-B2

XR-B2 SPECIFICATIONS

Processor: Cypress CY8C27443 PSoC.

Sensors: 4 GP2D12 for location, 1 UVtron, 1 Pyroelectric, 2 Single Line Detectors for Encoders.

Actuators: 2 DC Motors with 3.5" Wheels, 8x1 Character LCD, Small Fan.

Power: 9.6V 1600mAh Battery, MAX744-based DC-DC converter for 5V, 2 9V for fan.

Frame: 8"x8" PVC frame, Aluminum brush guard, Aluminum brackets for sensors.

Behaviors: Fire Fighting.

Overview

The Little Green Machine II was entered into the Trinity Fire Fighting Contest in 2006. It failed to qualify for the competition. 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.

From the front and side views 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, 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.

The PSoC microcontroller was plugged into the breadboard you see at the back of the robot. 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.

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.

Additional Pictures

Electronics

Side View