Previous | Index | Next
Jay's "GP-Bot" Robot Project - The Beginning (Page 1)
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.
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...
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!
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..
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.
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!
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:
Finding a Power Wheels "Jeep"
Testing the Motors - What a ride!
The Platform
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.
Photo taken 20000628
The Motor Controller
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
'-----------------------------pwm1mc6mtr.bs2-----------------------------
' 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
'------------------------Initialize----------------------------------------
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)
main:
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
'***************************Sub-Routines**********************************
'Bring motor speed gradually from a stop to full speed
min_to_max:
for x = min_speed to max_speed 'gradually increase speed
pwm pwm_out_port,x,cycles
pause pause_time 'wait specified time
next
for x = 1 to max_speed_time 'stay at max. speed for awhile
pwm pwm_out_port,max_speed,cycles
next
return
'-------------------------------------------------------------------------
'Bring motor speed gradually to a stop from full speed
max_to_min:
for x = max_speed to min_speed 'gradually decrease speed
pwm pwm_out_port,x,cycles
pause pause_time 'wait specified time
next
return
'------------------------------------------------------------------------
set_forward_direction:
high fwd_port 'enable forward
low rev_port 'reverse not enabled
return
'-------------------------------------------------------------------------
set_reverse_direction:
low fwd_port 'forward not enabled
high rev_port 'enable reverse
return