Lawnbot 2.0

Over the past few years, I’ve seen several renditions of remote control lawn mowers.  I LOVE THIS IDEA.  Yeah, I love the idea enough to use all caps.  Let me tell you why…

In high-school, I worked at a Subway.  This means that every day for months on end, I ate at Subway.  Eating at one place that frequently for that long will make a person quite sick of that food for a long time.  To this day, I still can’t eat there.  I don’t have any problem with Subway as a whole; I think they make a great product.  I’m just still sick of it after twenty years.  Similarly, I used to mow lawns in junior high and high school.  In an average week, I’d mow four yards.  Fast forward two decades and I still hate the idea of lawn mowers.  It just reminds me of wasting perfectly good summer days pushing a heavy object up a hill, smelling like gasoline, and not getting compensated fairly for the work I did.

Seeing articles of people who have circumvented the torment of mowing a lawn by leveraging technology, I couldn’t help but think, “This is the greatest idea ever.  Move aside fire and sliced bread.”  I began to plan my own implementation of a remote control lawn mower in a similar fashion to what I had seen before.  The style of implementation uses an existing lawnmower, but removes the wheels from the cutting deck and adds the cutting deck to a remote control platform.  For examples of this, see http://www.instructables.com/id/Arduino-RC-Lawnmower/ and http://www.robert-smith.net/my-projects/how-to-build-a-rc-lawn-mower/.

While there are benefits to this approach, I began to deviate.  I asked myself, “Why does it need to use a gas engine?”  At this point, I decided that maybe I’d make mine electric.  Then I asked, “Why does it need to use a lawnmower blade?”  If a string trimmer can cut grass, perhaps a heavy metal blade is overkill.  I lastly asked, “If it doesn’t have a gas engine or a blade, what does it have in common with a lawnmower deck?”  The answer is, “Nothing.”

During this time, I also thought about what I didn’t like about the existing style.  Mainly, this was that the wheels were too far out from the cutting deck.  Lawn mowers are difficult enough to turn when the wheels are bolted onto the deck itself.  When the deck gets bolted onto a longer frame, that puts the wheels much further out from  the deck, creating a longer wheel base.  Long wheel bases might be great for adding stability to cars, but it sounds terrible in terms of steering a lawnmower.  The extra depth also creates a longer depth of area between where the unit butts up against something and where it can cut.  If you drive it up to a fence, there is a certain distance between where it hits the fence and the blade.  Several inches along this fence will never get cut since the blade can’t reach it.

At this point, I felt liberated from the original platform.  I hate the phrase “paradigm shift”, but that is what happened.  I began to think of what needed to happen on a high level without considering form.  I put the cutting head in a place where it can get up to what I’m trying to cut.  This allowed me to decouple it from the rc robot base.  I eventually came up with a robot base with tank treads that has a mount onto which the cutting head is attached.

Diagram of the lawn bot

Diagram of the lawn bot

 The base unit is simply a plywood box.  It is 18″ wide x 24″ long x 12″ tall.  The wheels and tank treads are the more interesting part of the build.  I’ll cover that in a later post.

The cutting head is made up of three gears.  These gears are patterned off of Matthias Wandel’s gear generator.  The center gear is a 32-tooth gear and the two outer gears are both an 8-tooth gears.  As the center gear turns, the two outer gears turn at four times the speed.  Attached to the bottom of the small gears are hubs for string trimmer line.  The diameter of the string trimmer cutting path of each cutting head is 12″.  Having two side by side gives an overall cutting width of 24″, which is pretty good for a lawn mower.  See the full-size printable patter for these gears here.

Now the real fun begins.  How do we get all this stuff to move?  I need three points of rotation: cutting head, left wheel track, and right wheel track.  Let’s start with the cutting head. 

Since the cutting head is based on the principle of a string trimmer, the goal RPM is roughly that of a regular trimmer.  These run about 3,000 RPM.  Since the spool gears are 1/4th the size of the drive gear, the drive gear should run at 1/4th the final output rotation, which is roughly 750 RPM.  In this case, we need an electric motor that can spin at 750 RPM and handle enough torque to spin the cutting heads (considering they have been geared up for speed).  A basic cordless drill not only operates off of a batter that can be contained within the base unit, it also spins at roughly 800 RPM.  If the drive gear of the cutting head has an output shaft of 3/8″ or less, the drill can chuck directly up onto that.  Instead of having the battery in the drill, the battery is house in the base unit.  A solid state relay sits between the battery and the drill and is actuated by a microcontroller.  The trigger on the drill is held in with a zip tie.  When the microcontroller sends the 5 volt control signal to the solid state relay, the power from the battery is sent to the drill.  The drill turns the drive gear at 800 RPM.  The drive gear turns the outer gears at 3200 RPM, which spin the trimmer string to cut the grass.

And now for the wheels.  The base unit will be a tank-tread style vehicle.  This means there is a wheel that is covered by a tank tread.  The diameter of the wheel plus the tank tread above and below is a total of 8″.  At this diameter, one rotation of the drive wheel will move the unit 25.12″.  My goal speed is about 8″ per second, or 480″ per minute.  480 inches per minute / 25.12″ circumference=19 RPM.  This is pretty slow.  I like the idea of using a cheap rechargeable drill for each side, like I did with the cutting head, but going from 800 RPM to about 20 means a 40:1 gear reduction or a severe cut in voltage.  Assuming the drill motor is linear in its relationship between RPM and voltage and the drill is rated for 12 volts, this would mean 0.3 volts if we only went by voltage.  Since that would be difficult to create efficiently, a combination of voltage drop and gearing is necessary.  I’d much prefer using gears anyways since that will also increase the torque to the wheels.  I haven’t designed the gearbox yet, but watch for a later post.

Since this is a track-type vehicle, the left wheels turn together and the right wheels turn together.  In this case, only one of the two in each pair need to be powered.  For example, the shaft for the front left wheel is connected to a motor and the shaft for the rear right wheel is connected to another motor.  Both could be in the front, both could be in the back, it doesn’t really matter as long as one is driven on each side.  To turn the vehicle, each motor needs to be able to reverse.  As one side goes forward and the other in reverse, the vehicle turns.  An H-bridge will be used to control each motor.  An H-bridge is a type of electronic circuit that controls the speed and direction of a motor based on the output of a micro controller.  Much like the solid state relay in the cutting head, the H-bridge will sit between the battery and the drills that are used as the motors.  This will allow me to control the speed and direction of the rotation on each side of the unit.

Watch for updates.  I will also shed details on the controls in a later post.

3D Scanner

I love Sparkfun.  I’m on their site at least once a day.  I love looking at all of their new products and getting ideas for projects I’d like to try.  I love Sparkfun so much that I even made the pilgrimage from St. Paul, MN to Boulder, CO in September, 2011 just so I could stand in their warehouse and imagine what it would be like to have 24 uninterrupted hours with all of the supplies at hand.

One product that Sparkfun recently started carrying is a motorized slide potentiometer, or slide pot.  This component is similar to the slide pots inside of mixing boards in recording studios.  Not only can a person manually side the pot up and down to create resistance (think of a dimmer switch on a light bulb), but it is also motorized, allowing a micro controller to move the slider to a specific point as well.  The idea is that a preset point or set of points could be stored and a micro controller could override the manual setting with an automated one.

That’s spiffy enough as it is, but let’s look at it from the reverse.  The motor is moving the slider along a linear path.  Basically, that is a linear actuator.  The difference between a normal linear actuator and this is that this product has the built-in pot, which sends an analog signal back to whatever is controlling the motor to say where along the linear path it exists.  Since these are 10k linear pots, we can say that if the micro controller receives 7k of resistance, it is 70% of the way across the slide.  If we want the slider to be at 40%, the micro controller can send the signal to the motor to move it down the slide until it reaches 40% and it stops at that point.

At this point, we can control where an object is along a one axis over the course of the length of the slide pot.  One axis is pretty cool, but let’s take it up a notch and add a second axis.  If a second pot where mounted to the slider of the first pot perpendicularly, this would give us two axis of movement.  The original would move across an x-axis and the second would move across the y-axis.  As the x-axis slider actuates, the y-axis slider is moved across the x-axis.  The slide of the y-axis slider creates the y-axis movement.

Now we have control over a mount whose position can be controlled over two axis.  What is cooler that this?  Lasers.  That’s right, we are adding lasers tot he mix.  Hot damn.

While Sparkfun can be the source of most things awesome, there are some sites that sill need to be reviewed for the awesome things that Sparkfun might not carry.  For example, Parallax has some pretty exciting components as well.  The slice of heaven I found yesterday was the laser range finder.  This sensor shoots a laser at an object and reads the distance to the point where the laser hits it.  Oh, 21st century, how much do I love you.

According to the laser range finder documentation, it works best when the distance it is reading is between 6 and 48 inches, but it can read distances up to 8 feet.  Yep, this will do nicely.  By adding the laser module to the existing x/y articulation platform, perpendicular to the x/y plane, we can now measure the distance from the module to a three-dimensional object (z-axis) among all points on an x/y grid.

The procedure would look like this:  The micro controller would utilize four digital output pins, two for each slide pot.  As one pin goes high for a specific slider and the other goes low, the slider will move in one direction.  If the first goes low and the second goes high, it will move in the opposite direction.  If both are low, it will stop.  The slider pot also receives 5 volts from the micro processor and returns the analog voltage to an analog input for reading.  This is done on both sliders as well.  The laser range finder uses a serial output, which is read by the micro controller.

The micro controller reads the x and y axis from the analog inputs and sets both sliders to 0 as necessary.  The micro controller then reads the serial input from the range finder.  Knowing that it set both x and y to zero and learning the distance of z, all measurements for that x/y/z point are now available and written out to something (micro sd card, usb out, etc).  The micro controller then moves the x-axis slider one unit (the distance of the unit depends on the resolution of the slider motor) and a new x/y/z point is created.  Since y hasn’t moved, it would have the same value, but x would definitely be different, and z may have a different value based on the object being measured.  Once the x axis is maxed out, it is brought back to zero and y is incremented one unit.  When both x and y are maxed, all points have been mapped.  The array of x/y/z coordinates can then be piped into a 3D rendering program or 3D chart application for display on the computer, thus producing a 3d scanner.