Tim Brom's Homepage


Earlier stages of marvin
Marvin with drive motors complete
Stepper motor driver board
Marvin's wheel
Top of line following module
Bottom of line following module
Me after winning contest!

Marvin, an autonomous robot

This website is for, about and starring Marvin, a small (roughly 20cm in length, width and height) autonomous robot that I created for a high school skills day contest at Southwest Technical College.

Throughout this site I will probably at times refer to Marvin as a living, breathing entity. If this bothers you please seek therapy.

First let me explain what an 'autonomous' robot is. An autonomous robot is a robot that requires no human interaction, as opposed to a radio-controlled vehicle that requires a human operator. Autonomous robots use sensors ranging from as simple as a switch that closes when the robot bumps something to as complex as full-scale radar or sonar systems. They normally use an onboard computer that is programmed to process the information it collects from the sensors, and to react accordingly.

Marvin is controlled by a Savage Innovations OOPic II programmable integrated circuit, which in English is the 'brains' of the robot. The pulses for driving the stepper motors, the control for the line-following module and IR proximity sensors and anything else I may wish to add all originates here.

Marvin is powered by two stepper motors I salvaged from HP printers. I work at a small computer store and whenever we get a dead DeskJet to throw away it's salvaging time. Each printer has a large stepper motor, a small stepper and a conventional DC motor, in addition to cool switches and buttons, rollers, gears, a belt, you name it. Heck I even used printer rollers for the wheels. A dead printer is a treasure hoard of parts.

This will be the second year I have entered Marvin in this contest. I went last year and did fairly well, but I hadn't had enough time before the contest to perfect him, so I could have done better. Last year's version was much simpler, it had an erector set frame and a servo drive train. Since accuracy is important in this contest I decided that the stepper motors would be ideal, as they are more accurate than a servo that has been hacked for continuous rotation.

The things I really wanted to improve this year were the accuracy and the overall toughness of the robot. Last year's version was definitely a 'handle with care', so I wanted to create this one to be able to take at least a little abuse.

So the first thing I had to get working was the stepper motors. I could drive a servo straight from the OOPic chip, but if I tried that with a stepper motor the OOPic would go up in some very expensive smoke. So I had to make some stepper motor drivers. Thanks to a wonderful book on robots, entitled The Robot Builders Bonanza this was relatively painless. Stepper motors differ from conventional DC motors in that, instead of applying a continuous voltage you apply voltage in pulses. Each pulse turns the motor a set distance, ranging from 0.9° to 90° (Marvin's turn 7.5° per pulse). This makes for some very accurate control.

I will post the circuit for the stepper motor drivers sometime in the near future, (today is March 1, 2003). I might also give a more detailed description of how to use the stepper motors.

The next step was getting power to the driver board. I am currently using a 9.6v NiCad rechargeable RC car battery, however I am not real happy with the battery life. I am currently waiting to hear back from the company on what the amp-hour rating is (haven't these people thought of maybe putting some specs on their website?), from there I may decide to go with six or eight C or AA alkaline batteries. Or maybe buy another few 9.6v NiCads. Each motor consumes about 400mA in operation, and the robot is way to small for a lead-acid battery. UPDATE: Marvin's drive train now draws about 1.75 amps, so the Ni-Cad is definitely out. I have some 6v 3.8 amp-hour 1.75 lb lead acid batteries on their way from Florida via e-bay, I hope that those will work. Update 2: Those lead-acid batteries work great! They're a bit heavy, and the motors get pretty hot after ten or fifteen minutes of operation, but they crank out enough juice to keep that thing going for an hour or so. Much better than the Ni-Cad.

The last thing I did was get wheels for Marvin. I used the rollers off of a printer (did you know they come off the rod if you pull hard enough? and then you have a really cool rod that you can use for hitting your siblings withor some other such useful use). I then took a worn-out dryer belt (I don't throw anything away) and used it to build up the wheels since they weren't big enough (the motors were dragging on the ground) and then I topped them off with a small vacuum cleaner belt (new, True Value, $3). Traction isn't quite what I would like it to be, but I have a few ideas to try to improve that. I reamed the axle hole out with an 11/32" drill bit and then the wheels fit perfectly on the gear that was already attached to the motor shafts.

So now I am going to spend the next few days improving the drive system. Then it's off to tackle the line-following module and then IR sensors, I've thought about adding voice synthesization, a couple of those printers have LCD displays I may be able to hack, who knows what I will add.

Marvin needed a line following module. Last year my boss (a former electrical engineer) gave me some help on this, and he suggested using an LM339 comparator instead of the RC time circuit I had been using. I have to tell you, the binary output from the comparator is so much easier to work with than the ADC conversion I was having to do with the RC circuit. Anyhow, the circuit can be found here.

I won the competition! There were four robots total, including the guy who won last year. I was sort of hoping for a larger turnout, but I still had a ton of fun. My robot was again the only custom job, this year everyone else had a boe-bot. I'll post some more specifics later. It'll be nice to get my life back, this robot was taking almost all of my free time for the last few weeks.