The project achieves complete concept, design and development of a programmable path grid navigator robot. The project deals with the design and development of the mechanical, hardware, embedded software and the user interface (for path feeding) aspects of the robot. The developed robot is a fully functional wireless robot in which the path to be traced is programmed with the help of an interactive user interface in Matlab environment, and there after the robot can trace the path to the accuracy of 0.75 millimeter on a surface after being detached from the computer.
Eventually we all want to know just where our robot is, so we can choose an absolute direction. Usually this type of device is quite expensive. However to our rescue comes [url=http://dinsmoregroup.com/dico/]Dinsmore[/url] with low-cost electronic compass module. It outputs the four cardinal points and combinations thereof that will give eight directions. I decided that combining this with tilt sensors (the Dinsmore compass will only work if not tilted more than 12 degrees) would be a cool project. I am using a PIC 12C508 to do the dirty work and return an 8 bit number with the directional and tilt data all included. Here is the schemo that I am working with, I haven’t yet found tilt sensors that I like so only the compass part has been implemented. Download from below the PIC source code for the 12C508 that will return the direction as a number from 0 to 7 in a single byte number at 2400 baud when the trigger line is cycled from a 1 to a 0 and back to a 1. Here is a Parallax Basic Stamp II program written to test the compass (download below as well). It has the compass connected to Port 2 and an LED connected to Port 0.
The compass works by sensing the active low reactions of the Hall Effect sensors and arranging them arbitrarily on the “map”. The “<<” on my PC boards is the direction of the front of the robot, when THIS part of the board is facing North, the compass will return a 0; 1 through 7 are returned as you go around the compass to the East, South, West, etc. in 45 degree increments. So, your main controller can just multiply the number returned by 45 to get the compass points in degrees. The PIC takes two readings 1/3 of a second apart, if these readings differ it means that the compass hasn’t settled yet. It will set bit 6 of the returned byte to show this along with the number of the last reading taken. For instance, if you are transitioning from North to North East, it will return 0x41, if you have settled on North East, it will return 0x01.
The nice part about this design is that a single line is used to start the reading and then read back the results! Very convenient, in my opinion. Below is the schematic, the PC board layout and a picture of how it looks.
Copyright 2006 [url=http://users.frii.com/dlc/robotics/botlinks.htm]DLC[/url]
This project is inspired by the DPRG IRPROX project. They have a pretty good PCB layout and idea. I would like to thank them for posting their project for all of us to see and learn from, I wouldn’t have started PIC programming without them, or at least not nearly as quickly come up to speed! The pinout on my board allows either a five-wire or a four-wire connection to be made the former uses a disable line if desired. You can also put in a resistor or use a trimpot to adjust range. The trimpot locations are very generic, most pots will fit. Be careful not to adjust pot to 0 ohms!
The IR proximity detector works very well, even in a brightly lit “noisy” environment. Instead of modulating the IR LED for 600us and then looking for a detection, I now look for a detection after every on/off cycle of an IR LED and count the number of hits that I get. I also look during the ‘off’ cycle when none of the IR LEDs are on and count the number of false hits that I get there. If I get more good hits than false hits then I say its a true detection. I then increment a counter as a sort of timer, when it passes a certain threshold, I notify a hit. At this time I check to make sure that a minimum number of good hits has been attained. At the same time I keep track via another time-out counter of noise hits. When this counter passes a certain threshold it then removes any detection that has been set. I fiddled a lot with the various threshold values for minimum number of good hits, time-out values and divisors for updating the false hit counts, and finally settled on the ones that currently used. I’m calling it a success and moving on to other projects! The source code for the, uhm, DLC IR proximity detector can be downloaded below as well as the PDF documentation for this kit.
I am now selling the complete kit, it was brought up to me that the exorbitant shipping costs from some distributors makes a full kit a real value added. So, here it is. The board, PIC, LEDs IR components and resistors as well as instructions are for sale. . I will make this in either 38KHz or 56.7KHz models. [url=mailto:firstname.lastname@example.org]Contact me[/url] if you areinterested. Bulk buys of 10 or more or robotics clubs get discounts!
Copyright 2006 [url=http://users.frii.com/dlc/robotics/botlinks.htm]DLC[/url]Parts:This kit uses either the Panasonic 4612 or 4614 IR demodulator.
Sometimes you want a simple solution to a problem and you don’t mind if your main controller has to do the work. This IRPD requires the main robot processor to choose which side to look at, and requires it to “debounce” the results for reliably operation. But, it still works really well without any complex program code.
We all have need of that last line of defense when the SONAR glitches, the IRPD doesn’t and our bot is on a collision course with a table leg. That last defense against re-kitting is a bumper. I have made a few from microswitches, miniswitches and other things – usually they work, sometimes they need too much force to work and “ugh” collision. This example is another type of sensor that doesn’t use a switch, its parts are super cheap and it works just great. Its a “whisker” bumper.
Let me show you some pictures and describe what is going on, a picture is worth a thousand words in this kind of game.
This is the top of the PC board with mounting holes drilled. Note centering of the two Berg headers and the whiskers so they go directly between the leads. This side of the board is NON conductive! It is about 1.5cm between the point where the wire goes through the board and the Berg headers. I pulled the plastic separator off to install the whiskers then put is back on loosely, mostly for looks I guess.
I have carved out two places for the contacts and then shorted the two of them together with a wire. You could have two different inputs here if that is needed. The wires each have a ‘Z’ bend in them where they are soldered to the large conductive surface, this gives better support than just running the wires through.
The top image shows the whole thing with all the bends and wires. If you have trouble soldering the whiskers to the board, gouge out a smaller area in the board to solder them to and buff the wires with some sand paper so the solder will stick well.
It doesn’t take much to make these and all of the parts are really cheap. They look cool, work reliably and are cheap – What more could you want?
Copyright 2006 [url=http://users.frii.com/dlc/robotics/botlinks.htm]DLC[/url]Parts:Small piece of single sided un-etched PC board (I use 3.5cm X 2cm)
Two lengths of 1mm piano wire bent into your appropriate shape (hopefully both the same!)
Two 2-pin “Berg” headers
A little bit of wire