ИК-датчик препятствий YL-63 (FC-51): подключение и робот в лабиринте

Разбираем инфракрасный датчик препятствий YL-63: принцип работы, характеристики, подключение к Arduino и применение на роботе, проходящем лабиринт.
Назначение и принцип работы
YL-63, он же FC-51, — цифровой инфракрасный датчик препятствий. Его используют там, где достаточно знать, есть перед датчиком объект или нет, а точное расстояние до него не требуется. Типичная область применения — робототехника: колёсные и гусеничные роботы с его помощью обнаруживают преграды на пути.
На плате установлены инфракрасный излучатель и фотоприёмник. Излучатель посылает ИК-волны, они отражаются от препятствия и попадают на фотоприёмник. Объект обнаруживается на любом расстоянии от нуля до заданной предельной границы. Сигнал обрабатывает компаратор LM393, который и формирует логический уровень на выходе.
Граница срабатывания зависит от настройки и задаётся потенциометром на модуле. Светодиодов два: зелёный показывает наличие питания, красный загорается при обнаружении препятствия.
Характеристики
| Модель | YL-63 (FC-51) |
| Напряжение питания | 3,3–5 В |
| Тип датчика | диффузионный |
| Компаратор | LM393 |
| Расстояние обнаружения | 2–30 см |
| Эффективный угол обнаружения | 35° |
| Регулировка чувствительности | потенциометр |
| Индикация | светодиоды питания и срабатывания |
| Размеры | 43×16×7 мм |
Подключение к Arduino
У модуля три вывода: VCC — питание, GND — земля, OUT — цифровой выход. Для первого знакомства выход датчика подключают к цифровому контакту 5 платы Arduino.

Проверочный скетч простой: контакт 5 настраивается как вход, запускается последовательный порт на скорости 9600, а в цикле состояние выхода читается через digitalRead. Когда объект попадает в зону обнаружения, в монитор порта выводится строка «BARRIER!!!», когда зона свободна — «not barrier». После каждого сообщения программа ждёт смены состояния, чтобы не засыпать порт одинаковыми строками. Понаблюдав за выводом, можно покрутить потенциометр и подобрать нужный порог срабатывания.
Робот, который выходит из лабиринта
Более наглядный пример — установка датчиков на самоходную платформу на базе Arduino и обход лабиринта.

Алгоритм основан на известном правиле: если всё время держаться одной стороны лабиринта, левой или правой, выход будет найден.

На передний бампер ставят три датчика: два направлены вперёд, один — вправо. Два передних нужны потому, что один датчик не перекрывает всю зону перед роботом, а пара определяет преграды спереди заметно надёжнее. Выходы датчиков подключены к контактам Arduino 2 и 12 (передние) и 13 (правый).

Как работает скетч обхода
Моторами управляют через контакты 3, 4, 11 для левой стороны и 7, 8, 10 для правой; скорость задаётся через analogWrite значениями от 0 до 255. В каждом проходе цикла программа читает три датчика и выбирает одно из трёх действий:
- ни один датчик не сработал — правые колёса замедляются (скорости 255 и 15), робот едет вперёд с подворотом вправо, то есть ищет стену;
- сработал любой из передних датчиков — на все колёса подаётся полная мощность, и робот поворачивает налево: левые колёса вращаются назад, правые вперёд;
- сработал только правый датчик — замедляются левые колёса (15 и 255), робот движется вперёд, слегка отворачивая влево от стены.
Время поворота задаётся константой time_90, равной 390 мс: это длительность разворота на 90 градусов. При срабатывании переднего датчика робот поворачивает в течение пятой части этого времени, после чего датчики опрашиваются снова. В результате платформа движется вдоль правой стены, постоянно подправляя курс.
Типичные неполадки
Если зелёный светодиод не горит, нужно проверить правильность подключения датчика. Если препятствие не определяется на нужном расстоянии, порог срабатывания подбирают потенциометром.