Let's Make Robots!

Dean's development chassis

move autonomously, avoid obstacles

I decided I wanted to work with the Arduino processor, so this is my attempt to recreate the "start here" robot with an Arduino brain. I also intend this 'bot to serve as a development chassis for further experimentation. Eventually, I want it to home on IR beacons and recharge itself. And then whatever I think of next! It has three Maxbotics LV-EZ1's in a fixed mount. It has two rechargeable NiMH battery packs, one for the processor, one for the motors. There are separate on/off switches for the processor and the motors. I also put heat sinks on the L293D's just to be safe. 

The Maxbotics seem to work on a sliding scale. When I introduce a "fudge factor" to get them to read 6" at 6", by the time I move it to 8", it's reading about 9.5"!! I'm trying to figure out a formula to compensate for that, but we'll see. 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

This is a nice start here robot. Maybe you know that LMR is looking for a new start here robot. This could be one of the candidates. Maybe we should make a challenge about it: "Find the next start here robot".

About the Maxbotix sensors. I'm using them very often. When you attach them to an analog input, you should follow this advice, to minimize distortion. The sensor output voltage is 9.8mv/inch.

So, I was getting frustrated with trying to convert the sonar readings to inches. As I mentioned above, the results I was getting in inches seemed to work on some kind of sliding scale and I'm no math wizard so I couldn't figure out a formula to accurately return inches. For on thing, these Maxbotics apparently return range in one inch increments, so there's a built-in limit to the accuracy. Also, they don't read under 6"....6" and less returns the same reading. But then I realized that the reading they return are very linear. At 6" they return "11," at 7" they return "13," at 8" it's "15." So it occurred to me that I don't need to know the reading in inches. All I need to know is that when the range reading gets to "11," I'm too close! That will simplify my code, too. 

The formula to convert the analogue value to inch should be very simple:

distance_inch = (ad_value + 1) / 2;

Yes, under 6'' you will always get the same value.

Yes, that is simple, isn't it? Good thing I'm not using math to make a living.....