I have been working on numerous projects now that my house is mostly back together after a remodel. This post is to discuss an IR Beacon. This small circuit is to be used to generate a pulse train of IR light to be used for robot navigation. This morning I finished the board layout and set it off to OSH-Park for fab. You can see the board here: https://oshpark.com/shared_projects/gtGELK16
The board is snapped to the top of a 9V battery. This powers a small 8 pin PIC via a switch and a linear regulator. The PIC then generates the IR pulse train by controlling a logic level FET. The pulse train can be set via a three position DIP switch that the PIC can read. To keep the board as small as possible, no connector is provided for programming the PIC only small test points for pogo stick targets. This was a compromise that I hope to fix in later revisions.
The pulse train is designed to work with the cheap 38kHz IR receivers you can get on ebay or BangGood. To have them work together well, when the IR is on, it must be pulsed at 38kHz and it must only be on for a fairly short amount of time. I have set my on time to be 500 micro seconds. If you leave it on longer, the electronics in the receiver tunes it out because normal remotes use short signals.
Although the on time is limited the off time is not. Based on the code selected by the DIP switch, the off time will be changed. For code 0, the off time is 500 microseconds. This is one time the on time. For subsequent codes the off time is a multiple of the on time using the next prime number. So code 7 is the eight prime number or 17 so the off time is 17 * 500 microseconds.
Why the funny business with prime numbers? This allows the robot to be able to uniquely distinguish between multiple beacons in a room.
Now I have to wait 3 weeks for my boards to come in and I can get programming the PIC as well as the Arduino based receiver.