ИК датчик препятствий с определением направления

Недавно начал заниматься сборкой самоходного робота, контролируемого ИК пультом и был вынужден самостоятельно разработать зональный инфракрасный датчик, который может распознавать положение объектов или их движение перед датчиком, происходящее слева направо или наоборот.

Схема ИК датчика с определением направления

Схема основана на 2 ИК диодах, ИК датчике 36 кГц, МК Tiny13 и нескольких светодиодах. Эти светодиоды используются для регулярной индикации состояния устройства , так что вы можете легко откалибровать его , тут есть такие возможности.

Датчик может обнаружить объект в 3-х различных положениях: ВЛЕВО, СРЕДНИЙ, ВПРАВО

Можно настроить расстояние детектирования в диапазоне от 2 см до 1,5 м потенциометром, который можно увидеть на схеме и на плате. Всякий раз, когда обнаруживается какое-либо изменение в состоянии объекта в поле зрения, сигнал INTERRUPT (IRQ) генерируется на внешние устройства. Благодаря этому процессу в процедуре обработки достаточно, чтобы прочитать состояние входов L и R и знать, что происходит. Возможные ситуации:

LR (левый/правый)

  1. 0 0 , нет объекта в поле зрения
  2. 1 0 , объект находится слева
  3. 0 1 , объект находится справа
  4. 1 1 , объект находится посередине.

Лучше всего ситуация показана на анимированном изображении.

Несмотря на то, что ИК-диоды работают на несущей частоте 36 кГц, это не мешает работе пульта (тем более этот датчик будет проверять переднюю часть, а у робота второй ИК-приемник для управления сзади).

Прерывание IRQ генерируется не только тогда, когда что-то появляется в зоне видимости датчика, но и когда оно исчезает из поля зрения. Это значительно облегчает работу процессора. Можно сказать что после чтения прерывания в такой процедуре , состояние просмотра датчика , также можно сразу ввести команды для управления двигателями ведущих колес или другими вещами.

Сама программа не сложна , она состоит из генерации несущей 36 кГц с помощью Timer0 и подачи ее попеременно к обоим ИК-диодам , после чего приём и анализ того что происходит.

Также введена буферизация нескольких показаний и только сравнение несколько из тех же самых сигналов запускают сигнал прерывания , он ведь должен быть устойчивым к различным типам помех, включая другие пульты дистанционного управления например телевизора (даже когда один синий LED быстро мигает несколько раз , красный светодиод, сигнализирующий о исходящем сигнале прерывания, срабатывает только один раз). Благодаря этому датчик не будет беспокоить главный процессор нестабильными состояниями когда объект находится на краю чувствительности.

Очень удобный таймер обратного отсчёта с цифровым дисплеем LED

Алгоритм работы программы

  1. Отправляем пакет, то есть несущую на короткое время на левый ИК-диод.
  2. Ждем короткий промежуток времени несколько миллисекунд.
  3. Проверка получает ли ИК-приемник какие-либо отражения.
  4. Если датчик их видит , значит на дороге слева какой-то объект.
  5. Затем делаем те же шаги, но с правым ИК-диодом.

Для суммирования и усреднения времени выполнения всего алгоритма, исправления ошибок и небольшого обобщения , пакеты отправляются в среднем каждые несколько десятков миллисекунд с каждого ИК-диода.

Помехи вообще не проявляются, когда речь идет о каком-либо искусственном освещении, конечно если не приблизить датчик ближе 20 см к люминесцентной лампе, тогда фактически светодиоды иногда будут мигать , хотя прерывание включится только один или два раза. Основной целью создания этого датчика было свести к минимуму влияние таких факторов, и это удалось.

Схема ИК датчика без контроллера

А далее схема аналогичного датчика на TTL микросхемах, это для тех кто не любит микроконтроллеров и прошивок.

Еще одна приятная особенность этого датчика , возможность корректировать положение ИК-диодов, то есть если они установлены под прямым углом , будет самый широкий диапазон расстояний, если речь идет о видимости датчика по бокам , при увеличении минимального расстояния, с которого объект может быть обнаружен посередине, то есть в области нескольких сантиметров в центре перед датчиком ничего не обнаружено , объект должен быть слегка отодвинут. Но если слегка наклоним их внутрь, то сможем резко изменить условия работы и обнаружить даже тонкие объекты.

Если датчик не обнаруживает никаких отражений после ожидания , это означает что в пределах видимости препятствий нет и можно ехать вперед.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
mosautorent.ru
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: