BEACON SENSING
The beacon sensors were used both for orienting the robot with server beacons and distinguishing between server and exchange beacon frequencies.
After experimenting with circuits that would perform all of the filtering in hardware using multiple filters connected by unity gain buffers to increase the cut-off response, we decided that an easier solution would be to do the filtering in software using hardware interrupts. We modeled our beacon sensing circuit after the circuit used by the michelebotmann team two years ago as it seemed to work well for them and the beacon signal frequencies that we were capturing were similar to theirs. The circuit included a transresisitive portion that converted the irradiance into a voltage, a high pass filter a 28khz low pass filter for removing noise from the circuit itself, a 10hz high pass signal centered at 2.5V to remove any DC offset, and a Schmitt trigger with hysteresis for determining whether or not the signal was above the 2.5V center.
Initially, it didn't seem like the circuit was giving a response at a far enough range so we experimented with replacing the 5.6K resistor across the LM6144 with a much larger one at 20K, effectively railing the LM6144 at short distances and giving a much higher sensitivity. This ended up creating much too noisy of a signal so we returned to the original design which worked fine for the maximum range required to perform.
Initially, it didn't seem like the circuit was giving a response at a far enough range so we experimented with replacing the 5.6K resistor across the LM6144 with a much larger one at 20K, effectively railing the LM6144 at short distances and giving a much higher sensitivity. This ended up creating much too noisy of a signal so we returned to the original design which worked fine for the maximum range required to perform.
Once we placed the sensor on our robot, we used some basic tests to determine the sensitivities at different ranges. We would have the motors spin the robot until a server beacon was detected and then stop. We found that our sensor allowed for sufficiently accurate alignment at the starting position, about 54" from the server beacon. When the test was performed at shorter ranges, however, the alignment was slightly off as the high sensitivity would cause the sensor to register the presence of the server beacon much before the beacon was directly in front of the sensor.
The solution was to use two IR sensors on the WinkleBot, a 'long range' sensor designed to work at the starting position range and a 'short range' sensor designed to work when the bot was closer to the server. Both were LTR-3208E phototransistors, with the short range sensor being covered to limit it's focus to a beacon directly ahead. We experimented with different covers for the short range sensor and found that using shrink wrap allowed us to detect the sensor precisely enough for alignment. When we added the short range sensor, both of the hardware interrupt pins were taken so we had to implement short range beacon sensing without using hardware interrupts.