Arduino Uno IR Infrared Sensor: Precision Proximity Detection System

Professional TCRT5000 reflective IR sensor module integration with Arduino Uno provides 2-30cm non-contact object detection through 950nm IR LED emission and matched phototransistor reception. Analog output voltage inversely proportional to target distance enables precise ranging and material discrimination.

Emitter photodiode modulated 38kHz carrier penetrates ambient light interference while receiver AGC maintains 0.1-4V dynamic range. Onboard LM393 comparator with potentiometer sets digital threshold 10-90% of ambient baseline.

Complete Components Specification

  • Arduino UNO R3 microcontroller development board
  • TCRT5000 IR Reflective Sensor Module (950nm)
  • Male-to-male jumper wires (minimum 4 pieces)
  • Solderless breadboard for prototyping
  • White/reflective test targets (2-30cm range)
  • 220Ω status LED resistor

Precision Optoelectronic Hardware Configuration

IR Sensor VCC (+): Arduino 5V power rail

IR Sensor GND (-): Arduino GND rail

IR Sensor OUT (Analog): Arduino Analog Pin A0 (0-5V distance signal)

IR Sensor DO (Digital): Arduino Digital Pin 2 (threshold trigger)

Onboard potentiometer clockwise increases detection threshold reducing range (30cm→2cm). Sensor cone 15°×35° FOV optimal 5-15cm operation.

Program: Arduino Uno IR Sensor - Distance Measurement & Object Detection
// Arduino Uno TCRT5000 IR Sensor - Professional Proximity Detection
// A0: Analog distance (high voltage = close), Pin 2: Digital threshold
const int irPin = A0;
const int digitalPin = 2;
const int statusLed = 13;

// Distance calibration (adjust for your setup)
const int ambientLevel = 100;    // No object baseline
const int closeThreshold = 400;   // Close object
const int farThreshold = 200;     // Far object

void setup() {
  Serial.begin(9600);
  pinMode(digitalPin, INPUT);
  pinMode(statusLed, OUTPUT);
  
  digitalWrite(statusLed, LOW);
  Serial.println("IR Proximity Sensor Initialized");
  Serial.println("Raw ADC | Distance | Status");
}

void loop() {
  int irValue = analogRead(irPin);
  int digitalState = digitalRead(digitalPin);
  
  String distanceStatus;
  if(irValue > closeThreshold) {
    distanceStatus = "VERY CLOSE (<5cm)";
    digitalWrite(statusLed, HIGH);
  } else if(irValue > farThreshold) {
    distanceStatus = "CLOSE (5-15cm)";
    digitalWrite(statusLed, HIGH);
  } else {
    distanceStatus = "FAR (>15cm/NO OBJECT)";
    digitalWrite(statusLed, LOW);
  }
  
  Serial.print("ADC: ");
  Serial.print(irValue);
  Serial.print(" | ");
  Serial.print(distanceStatus);
  Serial.print(" | Digital: ");
  Serial.println(digitalState);
  
  delay(100);
}

Arduino IDE Production Development Workflow

Create new production sketch implementing complete analog monitoring. Upload establishing stable 5V sensor power and serial feedback loop.

Serial Monitor (9600 baud) displays real-time ADC values, distance classification, and digital state. Calibrate thresholds matching installation environment.

Advanced Multi-Threshold Object Classification

Program: Arduino Uno IR Sensor - Object Type Discrimination
// Material Discrimination - Reflective vs Absorptive Targets
const int whiteTarget = 600;    // High reflectivity
const int blackTarget = 250;    // Low reflectivity
const int metalTarget = 500;    // Medium + specular

void loop() {
  int irValue = analogRead(irPin);
  String objectType;
  
  if(irValue > whiteTarget) {
    objectType = "WHITE/REFLECTIVE";
  } else if(irValue > metalTarget) {
    objectType = "METAL/SPECULAR";
  } else if(irValue > blackTarget) {
    objectType = "DARK/MATTE";
  } else {
    objectType = "NO OBJECT";
  }
  
  Serial.print("Target: ");
  Serial.print(objectType);
  Serial.print(" | Signal: ");
  Serial.println(irValue);
}

IR Reflective Sensing Operating Principles

950nm IR LED modulated 38kHz carrier received by matched phototransistor. Inverse square law: Voltage ∝ 1/distance² modulated by target albedo (0.1-0.9). Ambient compensation through AGC circuit.

Industrial Automation & Robotics Applications

Line-following robot edge detection (contrast sensing)

Automated material sorting (reflectivity classification)

Proximity limit switches (non-contact positioning)

Program: Arduino Uno IR Sensor - Conveyor Line Following Control
// Industrial Line Following - Dual IR Sensor Array
const int leftIR = A0;
const int rightIR = A1;
const int motorLeft = 9;
const int motorRight = 10;

void loop() {
  int leftValue = analogRead(leftIR);
  int rightValue = analogRead(rightIR);
  
  if(leftValue > 400 && rightValue > 400) {
    // On line - full speed
    analogWrite(motorLeft, 200);
    analogWrite(motorRight, 200);
  } else if(leftValue > 400) {
    // Veer right
    analogWrite(motorLeft, 150);
    analogWrite(motorRight, 250);
  } else if(rightValue > 400) {
    // Veer left
    analogWrite(motorLeft, 250);
    analogWrite(motorRight, 150);
  } else {
    // Lost line - stop
    analogWrite(motorLeft, 0);
    analogWrite(motorRight, 0);
  }
}
Program: Arduino Uno IR Sensor - Anti-Collision Robot Safety
// Robot Obstacle Avoidance with Speed Reduction
const int obstaclePin = A0;
const int motorPin = 9;

void loop() {
  int distance = analogRead(obstaclePin);
  
  if(distance > 500) {
    analogWrite(motorPin, 255);  // Full speed
  } else if(distance > 300) {
    analogWrite(motorPin, 150);  // Slow approach
  } else {
    analogWrite(motorPin, 0);    // Stop
    Serial.println("*** OBSTACLE DETECTED - STOPPING ***");
  }
}

TCRT5000 Optoelectronic Specifications

950nm peak emission; 10° emission angle; 120° reception FOV; 1.35V forward voltage; 60mA drive current; 0.1-4V output range; 38kHz modulation; -25 to 85°C operation.

Production Deployment Calibration

  • Ambient baseline 80-150 ADC (no target)
  • Close range >500 ADC (white target 2cm)
  • Potentiometer CW decreases sensitivity/range
  • Test multiple target materials/colors
  • Shield emitter-detector from direct sunlight

Environmental Compensation Protocol

Periodic ambient recalibration compensates LED aging and dust accumulation. Multi-sensor triangulation improves directionality and accuracy.