Report by Guy Lee, last update 2/24/06
I bought this infrared sensor from HVM Technologies Inc., $1.50 each. See the datasheet here. Initially I chose another infrared sensor for test, PIR Motion Sensor, which was to detect any motion in front of the sensor but it turened out not so sensitive. So that I looked at this QRD1114 IR Sensor for substitute. In this test, I used both as digital and analog input to see what difference it has and how sensitive it is.
- Phototransistor output
- Non-contact surface sensing
- Unfocused for sensing diffused sufaces
- Compact package (size 4.6 x 6.1 x 4.4 mm)
- Daylight filter onsensor
What Can QRD 1114 IR Sensor Do
1. Object / Surface detection
Object or surfaces must be within 0.5cm. This circuit will not distinguish between white and black objects but it will let you know when you are at the edge of a surface.
2. Color Differences ( White / Black )
If you want to detect the difference between white or black surfaces, in the circuit the Input pin on the Micro should be an analog to digital converter or some other device that can utilize variable voltage levels. A black surface will give a voltage some where between 0V and 5V and white surfaces will give a voltage of 5V. Determining the voltage level for your black and white surfaces will require experimentation.
*Pins 2 and 4 are typically shorter than pins 1 and 3. See the reference circuit here.
Below shows the relationship between normalized collector current and distance.
I have tested object/surface detection and stiil try to figure out Black/White difference detection. Here is the schematic of how I hooked up QRD1114 IR Sensor to PIC18F452. Portd.1 is used for digital input from QRD1114 IR Sensor's signal while portb.7 is for output to light a LED.
1. Trigger with finger - See the video here, 900k, avi.
2. Trigger with a piece of paper - See video here, 800k, avi.
DEFINE OSC 20 output portb.7 input portd.1 main: if portd.1=0 then high portb.7 else low portb.7 endif goto main
Here I use PWM to let LED light gradually. The lighness depends on the variable "adcVar", which is in direct-ratio (code 1) or inverse-ratio (code 2) to the distance between reflecting surface and the sensor. In code one, when the reflecting surface is out of the range (0.5cm), the sensor will read adcVar in the maximum (It should be 1023 in theory but it's 1016 in fact. Also, the minimum is 30 instead of 0.
[PWM PicBasic code 1]
DEFINE OSC 20 DEFINE ADC_BITS 10 ' Set number of bits in result DEFINE ADC_CLOCK 3 ' Set clock source (3=rc) DEFINE ADC_SAMPLEUS 50 ' Set sampling time in uS TRISA = %11111111 ' Set PORTA to all input ADCON1 = %10000010 ' Set PORTA analog and right justify output portb.7 adcVar VAR word dutyCycle var byte main: ADCIN 0, adcVar serout2 portc.6, 16468, [DEC adcVar, 13] dutyCycle = adcVar/5 pwm portb.7,dutyCycle,10 goto main
[PWM PicBasic code 2]
DEFINE OSC 20 DEFINE ADC_BITS 10 ' Set number of bits in result DEFINE ADC_CLOCK 3 ' Set clock source (3=rc) DEFINE ADC_SAMPLEUS 50 ' Set sampling time in uS TRISA = %11111111 ' Set PORTA to all input ADCON1 = %10000010 ' Set PORTA analog and right justify output portb.7 adcVar VAR word dutyCycle var byte main: ADCIN 0, adcVar serout2 portc.6, 16468, [DEC adcVar, 13] dutyCycle = (1023-adcVar)/5 pwm portb.7,dutyCycle,10 goto main
Here are images that present the inverse-ratio between the distance and the lightness.
See video here (1mb, avi).
- The range is from 30-1016 instead of 0-1023. Why?
- How to set up Color difference (White/Black) detection circuit ?
- Is infrared sensor THAT dangerous to eyes?
- linear or radial?