A Simple Optical Push Button System
For an electronics device there was a need for some simple interactive steering elements to be mounted somehow into a front panel. In other words: Push buttons.
Using some standard mechanical buttons seemed too normal, too conventional, just not sexy enough. Once while lying in the bath tub there came up a lightening idea:
Many applications are using a light guide in order to feed light from an LED to the front panel for signaling some state, some condition, whatsoever. When this light guide is being touched at the exposed end wall, some of the light should be reflected back into the light guide, hence traveling back to the LED. Directly beneath the LED a photo sensor could be positioned. This sensor is able to detect the reflected light.
This basic principle has been checked immediately by using a piece of translucent acrylic adjusting rod from a venetian blind as a light guide. This has been held atop some LED. And, indeed, when the finger was put on the other end of the acrylic rod the area around the LED became lighted significantly - as expected. So there was a basic hands-on proof for the theory and the rest was just work.
A detailed description can be found in a fundamental paper about the optical button concept that can be downloaded from here or from the general publications section. This paper does also discuss other optical button solutions.
Nonetheless a few short facts here.
There needs to be a way to differentiate among light reaching the photo sensor from the environment (ambient light) and from the LED. This is achieved by pulsing the LED at a certain frequency. This is merely a standard procedure. Of course, in case of such an optical button the frequency needs to be larger than what our human eye is able to detect.
The signal delivered by the sensor will carry the same frequency in case the button has been "pressed" and enough light is reflected by the surface of the finger into the sensor. The signal from the sensor needs to be slightly preprocessed in order to get a clean digital signal for the following digital processing.
Digital processing basically refers to the comparison of the frequency of the sensor signal with the frequency the LED is driven with. Furthermore this includes some debouncing as it is known to be required for buttons in general.
Usually ambient light is a big issue in such optical systems. For instance they must not fail even when they are operated under heavy external lighting conditions (e.g. direct sun light). However, this optical button concept is inherently dealing with this problem in a very elegant way: As it is normally only the light guide's end wall that is being exposed to the environment, any ambient light becomes automatically blocked when the button is operated with a finger. It just needs to be ensured that the button does not become unintentionally triggered under any ambient light conditions. This is not difficult to achieve.
First Reference Implementation:
The selected sensor is a tiny Avago ADPS-9002 type and the LEDs are Kingbright KPTD/APTD series low current types featuring a so-called dome lens. A Mentor light guide 1216.1003 with a diameter of 3mm is used that can be conveniently hooked up to the PCB. Alternatively, a 5mm type can be used as well. The light guide is centered across the LED/sensor combination.
The analog circuitry for preprocessing the sensor signal contains some
provisions so that the button can be used even though ambient
light might reach the sensor to some extend when the button is being
operated. However, in a final application the whole electronics would be
housed in some casing or behind a front panel where no ambient light can
make its way to the sensor.
All the digital hardware has been placed into an FPGA (Lattice XP series). The LEDs are operated at approx. 200Hz.
For comments or questions you can contact me by email.