Each QTR-1RC and QTR-8RC reflectance sensor phototransistor output is tied to a capacitor discharge circuit as shown on the right, which allows a digital I/O line on a microcontroller to take an analog reflectance reading by measuring the discharge time of the capacitor. When you have a microcontroller’s digital I/O connected to a sensor output, the typical sequence for reading that sensor is:
The following three oscilloscope screen captures below demonstrate the result of this procedure. The sensor was positioned 1/8" above a whiteboard-like surface with a 3/4" thick piece of black electrical tape on it. The first reading was taken over the white portion of the surface, the second reading was taken at the edge of the tape, and the third was taken while fully over the black tape. The yellow oscilloscope channel is the sensor output and the blue oscilloscope channel is the output of a mega168 AVR microcontroller representing its interpretation of the sensor output. A 5 V blue signal indicates that the AVR is measuring the sensor output as “high”; a 0 V blue signal indicates that the AVR is measuring the sensor output as “low”. In an actual application, the important value is the width of the positive blue pulse. As you can see from the screen captures, the shorter the pulse, the more reflective the surface. Medium-width pulses occur from moderately reflective surfaces, or as you transition from a white surface to a black surface (or vice versa).
Please note that these data are affected by the specifics of the test. Reflectances depend on the surfaces, and each microcontroller will have its own trip-low threshold. In our specific example, you can see that at a height of 1/8" above our surface, white results in a high pulse width of 120 us and black results in a high pulse width of 2.6 ms. As the pulse width varies between 120 us and 2.6 ms, you can tell that you are approaching or leaving the line.
The screen captures below show the results of the same test conducted at a sensor height of 3/8".
Raising the sensor decreases the overall reflectance of the surface, which in turn lengthens all of the positive pulse widths. This means we need more time to measure the sensor outputs and hence we are limited to lower update rates. At this height, our white surface results in a high pulse width of 780 us and our black surface results in a high pulse width of 10 ms.
Note that at the start of each yellow pulse, there is a 10 us period where our microcontroller is driving the sensor output line high.
Lastly, the following screen capture shows an example of what the sensor output might look like as it sweeps across a black line on a white surface. A motor was used to rotate a white paper disk with a piece of black electrical tape on it in front of the sensor. The electrical noise present in the screen capture is from this motor. If you will be using these sensors in electrically noisy environments (e.g. around motors), you should filter the signal either with a low-pass filter circuit or in your microcontroller software. For example, when timing the high (blue) pulse, wait until the signal stays low for a minimum duration (e.g. 10 us) before accepting the low signal as the end of the pulse.