Building and Programming an FPGA-Based LED Sensor/Display
Abstract
Numerous researchers have explored the possibility to use LEDs also as light sensors. One extensive paper
with lots of background information can be read
here.
However, in order for this technique to be of practical use in large displays, a fast controller with a large
amount of IO lines is necessary. As this goes beyond the capabilities of common microcontrollers, an FPGA-based
solution is our goal here.
5x7 LED-matrix
I started with a small 5x7 LED-matrix controlled by a microcontroller. The Tests with the 5x7 LED-matrix "LTP-747KR Super Red" from Lite-On Electronics worked quite fine. The discharging time was very slow in the beginning - about 30ms. Therefore a 5.1 MΩ Resistor was inserted in order to speed up the discharge. The new resulting times were about 270μs, which is good enough for the human eye to not see any flickering.
13x14 Prototype
After the small 5x7 matrix, the next step would've been a 13x14 matrix with larger LEDs. In order to find LEDs with good properties for the purpose of this project, tests with different LEDs were made. Ultra-bright LEDs with a transparent case worked best. But the tests also showed, that there is a problem with fluctuating discharge times. These fluctuations were just as high as the time difference between the touched and untouched state of the test-LEDs. Unfortunately I couldn't try to improve the system, because the time for the project ran out. You'll find my ideas for improving the system in the following list.
Possible improvements:
- better measurement device: the pin of the microcontroller is quite inaccurate at swapping the status from high to low. Therefore a more precise measurement device could lessen the fluctuation of the measured times.
- noise suppression: an algorithm for noise suppression could also be an improvement to better identify touches.
- pulsing: the time difference could be widened, if the LEDs are pulsed with high currents while the measurement is active.
Final work
LEDSensordisplay.pdf