TCRT5000 Датчик линии
TCRT5000: Датчик линии
TCRT5000 — это отражающая оптическая пара, состоящая из инфракрасного светодиода и фототранзистора. Это “глаза” любого Line Follower робота.
![]()
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: Применение
- Line Follower: Классическая задача — проехать трассу за минимальное время.
- Сумо-роботы: Датчики ставятся по углам, чтобы не выехать за пределы белого круга (Dohyo).
- Энкодеры: Если наклеить черно-белый диск на колесо, TCRT5000 может считать обороты (как мы делали в разделе Encoders).
- Датчик наличия: Определение наличия детали в захвате манипулятора.
Проблемы и решения
- Внешняя засветка: Солнечный свет содержит много ИК. Датчики могут “слепнуть”. Решение: делать “юбку” вокруг датчиков или использовать модулируемый сигнал (сложнее).
- Высота: Датчик работает только на расстоянии 2-10 мм. Если робот подпрыгнет, он потеряет линию.
- Глянец: Глянцевая черная изолента может отражать свет как зеркало (бликовать), и датчик подумает, что это белое. Используйте матовую изоленту или калибруйте датчики.
