Last updated 20010704

Previous | Index | Next

Jay's "GP-Bot" Robot Project - The Beginning (Page 1)

Finding a Power Wheels "Jeep"

Driving home one night back in February, 1999, I spotted a Power Wheels Jeep in pieces sitting alongside a dumpster. Thinking to myself, "Self. It's time to build a bigger robot. This Jeep would make for an excellent start!". So I stopped and looked over what was there. Checking underneath I saw that the motors and gearboxes were still there. Good! The plastic tires were still intact. Good! And they still turned... Great! Knowing that Power Wheels tires tend to wear out where the axel and tire come together, this was a very good sign.

I proceeded to load the chassis, wheels, motors and wiring harness into the back seat of my van and proceeded home. I had left the "Jeep" body behind as I didn't feel I would ever use it.

Fisher Price makes the Power Wheels line of electric cars for small children. Check out their showroom to see their current product line. I've collected the "Jeep" (Feb1999) and the "Barbie"-mobile (May2001) so far and continue to keeps my eyes out for more of them. When the batteries go dead most people tend to try to sell them (cheaply) at garage sales or just toss them out in the garbage. One man's junk is another mans treasure - grin! Someday I'll have my own fleet of Power Wheels based robots.

By the way, Fisher-Price is very good about supplying replacement parts, wheels, batteries, decals, etc.

Testing the Motors - What a ride!

We needed to determine how much current the motors would draw under full, or close to full, load. To accomplish this we needed some weight, a battery, and a DC ammeter. So, at the April 26th, 2000 meeting of the YAAARC, Erik Kauppi volunteered to sit atop the "Jeep" chassis, a Gel Cell in his lap, and ride the contraption across the garage. All this while I (Jay Nugent) walked or ran alongside holding the meter and trying to take readings.

We applied the full 12 Volts and the "Jeep" took off like a bat-outta-hell across the garage, Erik aboard, hanging on tight. It accellerated alot faster than we had anticipated. We disconnected the battery about midway across the garage. Before crashing into a motorcycle parked at the far side of the garage, I was able to stop the runaway machine by shoving my foot under the wheels for a little added decelleration.

We got our readings, however. It drew a whopping 28 Amps peak driving both motors in parellel at 12 Volts. This from a dead stop with a full-grown adult sitting on it. Pretty impressive amount of power for a kids toy!

Now I have the data that I needed. The motor controller for this 'bot was gonna have to be big. At least 30 Amps and probably even more if we stall the vehicle up against a wall, and if the tires don't slip first...

The Platform

Now I needed a platform to mount over the open 3/4" square tube frame. Something easy to cut to size. Something inexpensive. Something easy to mount components to without having to drill or machine holes. Wood. Yeah! Wood would do the job!

One of my design criteria is for this bot to be easy to rearrange, to add and remove susbsystems quickly and easily. Something that any member of the Robotics club can toss together a control package, a navigation package, sensors, or whatever, bring it to one of our monthly club meetings and easily attach their project with just wood screws.

Here's what I came up with. I cut a chunk of 1/2" plywood to fit atop the frame while giving adaquate clearence for the rear wheels and clearence for the front wheels when they are turned to their maximum limits. The plywood is attached to the frame with just two 1/4-20 bolts run through existing holes in the frame about midships. The plywood was notched in two places to fit around the two vertical posts in the rear (these hold the rear axle and gearboxes to the frame). This provided easy alignment of the platform to the frame.

Behind the plywood base is a small area of exposed frame where the battery box is located. Since it stands the chance of being exposed to possible acid spills it may need to be replaced someday. Because of this I wanted the battery box to be constructed of its own wood or plastic so it won't expose the main platform to acid stains or decay. The battery box will also be removable. This helps facilitate recharging when you can't bring the bot to its recharger, though it will likely be built onto the GP-Bot someday..

Photo taken 20000628

As you can see in this photo, this platform provides abundant room to mount controls, sensors, computers, and other gadgetry as desired. In this picture we have a 12 Volt lawn tractor battery, a motor controller, and an 8x10 inch Proto-Board. All this and LOTS of room to grow!

Be aware that there are several different frame styles used by the Power Wheels line of kiddie cars. So don't just go out and build a platform like mine without measuring your frame first.

The Motor Controller

On April 27th, 2000 I spoke with Carl Kollar of Diverse Electronics in Nanticoke, PA. A really friendy and helpfull guy, I might add. Convinced that his MC6 series of motor controllers was just the ticket for my project, I ordered one to give it a try. The MC6 arrived promply on May 2nd.

This controller accepts either a POT input or PWM, and can drive up to a 30 Amp load at 12 volts. Just about right for my worse case scenario, and pretty affordable at only $55. It is easily driven with a PWM signal generated from a BS2 Basic Stamp (available from Parallax, Inc.). Carl even provides sample software to show you how. Ya can't get much easier than this!

MC6 Motor Controller by Diverse Electronics


 o Model MC6-12 (for 12 volt and 18 volt applications) 

 o Model MC6-24 (for 24 to 30 volt applications)  

 o 30 amps continuous 

 o PWM output, continuously variable speed from stop to full forward or reverse. 

 o Compact circuit board approx. 3.75" X 5.75" w/ 4 mounting holes. 

 o Utilizes 3 IRLZ44 power hexfets for motor control with massive individual heatsinks 

 o Control it manually. Only 2 components needed - a standard 5K linear potentiometer
   for speed and a SPDT toggle w/ center off for direction. 

 o Control it from your microprocessor by applying a PWM control signal between the
   "pot wiper" (PW) terminal and ground to control speed, and a +5V signal on
   either the forward or reverse connectors to control direction. Enable it with +5V
   on the enable terminal. 

 o No standby current drain. Leave power connected to the B+ and ground terminals
   permanently. No current is drawn until +5V is applied to the enable lead. 

 o Ramped forward and reverse speed acceleration. This means that if you suddenly apply
   a full forward or reverse control signal your robot, or other project, it will not
   attempt to do a "wheely" or otherwise start suddenly. The acceleration, forward or
   reverse will always be smooth, yet still rapid. This feature may be disabled for
   instant control. 

 o 0.250 terminals used for all connections. No special plugs or cables needed.
   Universally connect to any outside circuitry. 

 o Controllable by a DC control voltage (1 to 3 volts) or by a BS1, BS2, PIC or other
   micro via the PWMOUT command or from the parallel port of a PC without any 
   additional hardware. 

On May 8th, 2000, I tested the motors using the MC6 Motor Controller. They ran great!. The GP (Jeep) can now propel itself...

First "task" - Go forward and backward

At the May 24th, 2000 meeting of the YAAARC we connected the 12 volt lawn tractor battery, motor-controller, and a BS2 Stamp running a program that simply drives the GP forward for a couple seconds, then backward for a couple seconds. The GP platform was strong enough to let some of us take turns riding atop our new "toy"! This is a big enough robot that the entire parking lot was our test ground. So long to testing tiny robots atop the workbench...we're in the big time now!

The hookup between the MC6 Motor Controller and the BS2 Stamp looked like this:

And here is the BS2 code by Carl Kollar that we used:

'                       written by Carl A. Kollar

'Purpose:       To demonstrate the control by BS2 of the MC6 motor
'               controller described on this web site. Can be used with
'               either 12 or 24 volt models.
'Motor action:  The motor (1) Gradually increases in speed in the forward 
'               direction until it reaches full speed. (2) Gradually
'               reduces speed until it stops. (3) Gradually increases speed
'               in the reverse direction until it reaches full rev. speed
'               (4) Gradually decreases speed until it comes to a stop.
'               (5) Does it all over again.

'---------------------Define Constants & Variables-------------------------
enable_port con 0: low enable_port      'disable MC6 while initializing
pwm_out_port con 1
fwd_port con 2
rev_port con 3
duty var byte
cycles var byte: cycles = 10

min_speed var byte: min_speed = 52      'pwm value for 1.0V out
max_speed var byte: max_speed = 165     'pwm value for 3.2V out
x var byte: x = 0                       'counter variable
pause_time var word: pause_time = 15    'pause between counter increments
max_speed_time var byte: max_speed_time = 150

low fwd_port    'Put MC6 in "neutral" by making both direction ports low
low rev_port
high enable_port        'enable the controller

'----------------------------The Main Program-----------------------------
'               (All sub-routine names are self-explanatory)
        gosub set_forward_direction
        gosub min_to_max
        gosub max_to_min
        gosub set_reverse_direction
        gosub min_to_max
        gosub max_to_min
        goto main


'Bring motor speed gradually from a stop to full speed
        for x = min_speed to max_speed  'gradually increase speed
        pwm pwm_out_port,x,cycles
        pause pause_time        'wait specified time
        for x = 1 to max_speed_time     'stay at max. speed for awhile
        pwm pwm_out_port,max_speed,cycles

'Bring motor speed gradually to a stop from full speed
        for x = max_speed to min_speed  'gradually decrease speed
        pwm pwm_out_port,x,cycles
        pause pause_time        'wait specified time
        high fwd_port   'enable forward
        low rev_port    'reverse not enabled
        low fwd_port    'forward not enabled
        high rev_port   'enable reverse

Previous | Index | Next