Skip to main content

TCRT5000 Датчик линии

TCRT5000: Датчик линии

TCRT5000 — это отражающая оптическая пара, состоящая из инфракрасного светодиода и фототранзистора. Это “глаза” любого Line Follower робота.

TCRT5000 Module

1. Sensing: Физика процесса

  • Излучатель: ИК-светодиод (синий корпус) постоянно светит вниз.
  • Приемник: Фототранзистор (черный корпус) открывается тем сильнее, чем больше ИК-света на него попадает.
  • Взаимодействие:
    • Белый фон: Хорошо отражает ИК-лучи -> Транзистор открыт -> Напряжение на выходе низкое (или высокое, зависит от схемы).
    • Черная линия: Поглощает ИК-лучи -> Транзистор закрыт -> Напряжение меняется.

Модули vs Голый компонент

Чаще всего новички используют готовые модули (на синей плате).

  • Компаратор (LM393): Превращает плавный аналоговый сигнал в четкий цифровой (0 или 1).
  • Потенциометр: Позволяет настроить чувствительность (порог срабатывания).
  • Индикаторы: Светодиоды питания и срабатывания.

2. Подключение (Модуль)

PinНазначениеArduino
VCCПитание5V
GNDЗемляGND
D0 (Digital)Цифровой выходЛюбой цифровой (напр. D2)
A0 (Analog)Аналоговый выходЛюбой аналоговый (напр. A0)

Совет: Для езды по линии лучше использовать Аналоговый выход (A0), если позволяет контроллер. Это дает возможность использовать PID-регулятор для плавного движения, а не дергаться влево-вправо (Bang-Bang control).

3. Thinking: Программная реализация

Простой цифровой режим (Bang-Bang)

Робот видит линию — поворачивает, теряет — поворачивает обратно.

#define SENSOR_PIN 2

void setup() {
  pinMode(SENSOR_PIN, INPUT);
  Serial.begin(9600);
}

void loop() {
  int state = digitalRead(SENSOR_PIN);
  
  if (state == HIGH) { // Допустим, HIGH - это черная линия
    Serial.println("Line Detected!");
  } else {
    Serial.println("No Line");
  }
  delay(100);
}

Аналоговый режим (для PID)

Считываем градацию “серого”. Это позволяет понять, насколько мы ушли с центра линии.

#define SENSOR_PIN A0

void setup() {
  Serial.begin(9600);
}

void loop() {
  int value = analogRead(SENSOR_PIN);
  
  // value обычно от 0 до 1023
  // Например: < 100 - белый, > 900 - черный
  // Промежуточные значения - край линии
  
  Serial.print("Reflection: ");
  Serial.println(value);
  delay(50);
}

Массив датчиков (QTR-8)

Для серьезных соревнований используют линейку из 5-8 датчиков (например, Pololu QTR-8A или QTR-8RC). Это позволяет точно вычислять ошибку положения линии.

$$ Position = \frac{0 \cdot V_0 + 1000 \cdot V_1 + 2000 \cdot V_2 + ... + 7000 \cdot V_7}{V_0 + V_1 + ... + V_7} $$

4. Acting: Применение

  1. Line Follower: Классическая задача — проехать трассу за минимальное время.
  2. Сумо-роботы: Датчики ставятся по углам, чтобы не выехать за пределы белого круга (Dohyo).
  3. Энкодеры: Если наклеить черно-белый диск на колесо, TCRT5000 может считать обороты (как мы делали в разделе Encoders).
  4. Датчик наличия: Определение наличия детали в захвате манипулятора.

Проблемы и решения

  • Внешняя засветка: Солнечный свет содержит много ИК. Датчики могут “слепнуть”. Решение: делать “юбку” вокруг датчиков или использовать модулируемый сигнал (сложнее).
  • Высота: Датчик работает только на расстоянии 2-10 мм. Если робот подпрыгнет, он потеряет линию.
  • Глянец: Глянцевая черная изолента может отражать свет как зеркало (бликовать), и датчик подумает, что это белое. Используйте матовую изоленту или калибруйте датчики.