Меню

Hw 201 датчик препятствия

2 Схемы

Принципиальные электросхемы, подключение устройств и распиновка разъёмов

Инфракрасный датчик препятствия

Устройство представляет собой простой цифровой датчик препятствия, ориентирующийся по отраженному инфракрасному излучению. Этот датчик был приобретен на Алиэкспресс. Принцип действия схож со схемой, которую недавно рассматривали на страницах сайта 2 Схемы.ру

Инфракрасный датчик препятствия купленный на Али

Конструкция и параметры

Конструктивно датчик представляет собой печатную плату 31 x 14 мм, на плате имеется одно крепежное отверстие.

Инфракрасный датчик препятствия – плата печатная

Масса датчик 2,7 г. Для питания и передачи информации на датчике имеется трех контактный разъем, выводы которого промаркированы.

Трехконтактный разъем подключения датчика

  • Устройство питается постоянным напряжением в диапазоне от 3,3 до 5 В, ток потребления составляет 25 мА при напряжении питания 3,3 В и 40 мА при напряжении 5 В.

На датчике размещен инфракрасные светодиод и фотоприемник. Наличие препятствия определяется по интенсивности отраженного инфракрасного излучения. Подстроечным резистором на плате датчика можно установить требуемую чувствительность устройства. По заявлениям производителя датчик реагирует на препятствия в диапазоне от 2 до 30 см, угол зрения датчика 35 градусов. У автора получилось настроить датчик на препятствия в диапазоне 3-8 см, хотя возможно проблема в том, что испытывался только один датчик, к тому же угол зрения датчика, действительно весьма широк. Не следует также забывать, что различные поверхности отражают инфракрасное излучение по разному, более «блестящая», в данном диапазоне, поверхность будет обнаружена с большего расстояния, чем темная. В любом случае, этот датчик является «оружием ближнего боя».

ИК датчик препятствия – размер платы

Когда в поле зрения датчика появляется препятствие, на его информационном выходе устанавливается сигнал логического нуля. Если в поле зрения препятствия нет, то на выходе сигнал логической единицы. На плате датчика имеются два светодиода, один – индикатор питания, а другой – индикатор срабатывания датчика, который загорается при появлении в зоне видимости препятствия.

Подключение к Ардуино

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

ИК датчик препятствия с Ардуино

Для примера взаимодействия датчика с платформой Arduino, можно взять программу, которая зажигает светодиод, подключенный к 13 цифровому порту, по нажатию кнопки, подключенной к 12 цифровому порту платы Arduino UNO. Программа взята с сайта robocraft.ru

int ledPin = 13; // сетодиод
int btnPin = 12; // кнопка
int val=0;

void setup()
<
pinMode(ledPin, OUTPUT); // это выход – светодиод
pinMode(btnPin, INPUT); // а это вход – кнопка
Serial.begin(9600); // будем записывать в COM-порт
>

void loop()
<
val = digitalRead(btnPin); // узнаём состояние кнопки
if(val==HIGH) // кнопка нажата
<
digitalWrite(ledPin, HIGH); // зажигаем светодиод
Serial.println(“H”);
>
else // кнопка не нажата
<
digitalWrite(ledPin, LOW); // гасим светодиод
Serial.println(“L”);
>
delay(100);
>

Датчик при этом подключается вместо кнопки. После загрузки программы в память микроконтроллера, можно поэкспериментировать с разными режимами работы датчика.

Вывод о покупке

В целом неплохой дешевый датчик для систем сенсорного управления и ориентирования роботов. В последнем случае может, вероятно, быть альтернативой или дополнением, концевым выключателям, которые срабатывают при контакте робота с препятствием. Своих денег стоит. Denev

Источник

Как подключить инфракрасный сенсор к Arduino

Для проекта нам понадобятся:

  • Arduino UNO или иная совместимая плата;
  • инфракрасный датчик препятствий;
  • инфракрасный приёмник;
  • соединительные провода (рекомендую вот такой набор);
  • макетная плата (breadboard);
  • персональный компьютер со средой разработки Arduino IDE.

1 Описание и принцип действия ИК датчика препятствий

Длины волн разных типов электромагнитного излучения

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

Модуль с ИК излучателем и ИК приёмником

Когда перед сенсором нет препятствия, на выходе OUT модуля напряжение логической единицы. Когда сенсор детектирует отражённое от препятствия ИК излучение, на выходе модуля напряжение становится равным нулю, и загорается зелёный светодиод модуля.

Помимо инфракрасного свето- и фотодиода важная часть модуля – это компаратор LM393 (скачать техническое описание на LM393 можно в конце статьи). С помощью компаратора сенсор сравнивает интенсивность отражённого излучения с некоторым заданным порогом и устанавливает «1» или «0» на выходе. Потенциометр позволяет задать порог срабатывания ИК датчика (и, соответственно, дистанцию до препятствия).

2 Подключение ИК датчика препятствийк Arduino

Подключение ИК модуля к Arduino предельно простое: VCC и GND модуля подключаем к +5V и GND Arduino, а выход OUT сенсора – к любому цифровому или аналоговому выводу Arduino. Я подключу его к аналоговому входу A7.

Читайте также:  Датчик температуры наружной дтс 32225

Модуль с инфракрасным датчиком подключён к Arduino Nano

3 Скетч Arduino для инфракрасного датчика препятствий

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

ИК датчик может состоять из одного только инфракрасного приёмника, как в этом случае:

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

К Arduino модуль с ИК приёмником подключается тоже очень просто:

Пин модуля Пин Arduino Назначение
DAT Любой цифровой Признак наличия ИК излучения на входе приёмника
VCC +5V Питание
GND GND Земля

Подключение ИК приёмника к Arduino

Напишем скетч, в котором будем просто показывать с помощью встроенного светодиода, что на входе приёмника присутствует ИК излучение. В данном модуле аналогично с ранее рассмотренным на выходе DAT уровень «0», когда ИК излучение попадает на приёмник, и «1» когда ИК излучения нет.

Если загрузить этот скетч в Arduino, направить на ИК приёмник ИК пульт и нажимать на нём разные кнопки, то мы увидим, что светодиод нашего индикатора быстро мигает. Разные кнопки – по-разному мигает.

Чтение команд ИК пульта с Arduino

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

Осциллограф отображает часть команды ИК пульта

На осциллограмме видна серия «пачек» импульсов примерно одинаковой длительности. Каждая «пачка» состоит из 24-х импульсов.

Осциллограф отображает часть команды ИК пульта

Подключение выхода с ИК приёмника и выхода ИК пульта к осциллографу

Вот так выглядит посылка пульта целиком. Здесь жёлтая линия – аналоговый сигнал пульта ДУ, голубая – цифровой сигнал с выхода ИК приёмника. Видно, что продолжительность передачи составляет примерно 120 мс. Очевидно, время будет несколько варьироваться исходя из того, какие биты присутствуют в пакете.

Осциллограмма пакета с ИК пульта ДУ

При большем приближении видно, что высокочастотное заполнение, которое имеется в аналоговом сигнале, в цифровом сигнале с ИК приёмника отсутствует. Приёмник прекрасно справляется со своей задачей и показывает чистый цифровой сигнал. Видна последовательность коротких и длинных прямоугольных импульсов. Длительность коротких импульсов примерно 1,2 мс, длинных – в 2 раза больше.

Биты пакета ИК пульта, масштаб: 1 клетка – 200 мкс Биты пакета ИК пульта, масштаб: 1 клетка – 1 мс Начало пакета ИК пульта, масштаб: 1 клетка – 5 мс, только цифровой сигнал

Мы уже видели подобный сигнал, когда разбирали сигнал комнатной метеостанции. Возможно, здесь применяется тот же способ кодирования информации: короткие импульсы – это логический ноль, длинные – логическая единица. На следующем видео можно посмотреть пакет целиком:

Если зарисовать этот пакет, то получится как-то так:

Один из пакетов ИК пульта

Дальнейшие исследования показали, что все пакеты данного пульта ДУ состоят из двух пачек импульсов. Причём первая всегда содержит 35 бит, вторая – 32.

Есть несколько вариантов, как поступить для получения цифровых данных пакета:

  1. опрашивать пакет через равные промежутки времени (т.н. «стробирование»), а затем принимать решение, это логический «0» или «1»;
  2. ловить фронты импульсов (детектор фронта), затем определять их длительность и также принимать решение, какой это бит.

Напомню, что будем считать короткие импульсы логическим нулём, длинные – логической единицей.

Для реализации первого варианта понятно, с какой частотой необходимо опрашивать ИК датчик, чтобы принимать с него корректные данные: 600 мкс. Это время в два раза меньшее, чем длительность коротких импульсов сигнала (логических нулей). Или, если рассматривать с точки зрения частоты, опрашивать приёмник нужно в 2 раза большей частотой (вспомним Найквиста и Котельникова). Напишем скетч, реализующий вариант со стробированием.

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

Поэкспериментируем с данным скетчем и ИК приёмником. Загрузим скетч в память Ардуино. Запустим последовательный монитор. Нажмём на пульте несколько раз одну и ту же кнопку и посмотрим, что мы увидим в мониторе.

Выводим принятые пакеты ИК пульта в последовательный монитор

Это похоже на пакет, который мы видели на осциллограмме, но всё-таки есть ошибки. Между одинаковыми пакетами также встречаются различия, которых быть не должно. Можно улучшить результат, если увеличить частоту стробирования, чтобы точнее определять биты пакета. Для безошибочного приёма необходимо чтобы строб попадал ближе к середине импульса. Но мы не можем гарантировать это, т.к. импульсы могут распространяться с варьирующимися задержками; Arduio выполняет код также не моментально, каждый цикл требует малого, но всё же времени, поэтому с каждым битом мы немного будем уходить от исходной позиции посередине импульса и рано или поздно «промахнёмся» (определим бит с ошибкой).

Перепишем скетч, используя метеод детекции фронтов.

Скетч для чтения пакета от ИК пульта методом детекции фронтов

Здесь мы ввели таймаут, чтобы выходить из цикла в любом случае, даже если фронт импульса не пришёл. Это гарантирует, что мы не окажемся в бесконечном цикле ожидания.

Загрузим скетч, запустим монитор, нажмём несколько раз ту же кнопку пульта.

Выводим принятые пакеты ИК пульта в последовательный монитор

Результат, как видно, более стабильный.

Источник

Как подключить инфракрасный сенсор к Arduino

Для проекта нам понадобятся:

  • Arduino UNO или иная совместимая плата;
  • инфракрасный датчик препятствий;
  • инфракрасный приёмник;
  • соединительные провода (рекомендую вот такой набор);
  • макетная плата (breadboard);
  • персональный компьютер со средой разработки Arduino IDE.

1 Описание и принцип действия ИК датчика препятствий

Длины волн разных типов электромагнитного излучения

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

Модуль с ИК излучателем и ИК приёмником

Когда перед сенсором нет препятствия, на выходе OUT модуля напряжение логической единицы. Когда сенсор детектирует отражённое от препятствия ИК излучение, на выходе модуля напряжение становится равным нулю, и загорается зелёный светодиод модуля.

Помимо инфракрасного свето- и фотодиода важная часть модуля – это компаратор LM393 (скачать техническое описание на LM393 можно в конце статьи). С помощью компаратора сенсор сравнивает интенсивность отражённого излучения с некоторым заданным порогом и устанавливает «1» или «0» на выходе. Потенциометр позволяет задать порог срабатывания ИК датчика (и, соответственно, дистанцию до препятствия).

2 Подключение ИК датчика препятствийк Arduino

Подключение ИК модуля к Arduino предельно простое: VCC и GND модуля подключаем к +5V и GND Arduino, а выход OUT сенсора – к любому цифровому или аналоговому выводу Arduino. Я подключу его к аналоговому входу A7.

Модуль с инфракрасным датчиком подключён к Arduino Nano

3 Скетч Arduino для инфракрасного датчика препятствий

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

ИК датчик может состоять из одного только инфракрасного приёмника, как в этом случае:

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

К Arduino модуль с ИК приёмником подключается тоже очень просто:

Пин модуля Пин Arduino Назначение
DAT Любой цифровой Признак наличия ИК излучения на входе приёмника
VCC +5V Питание
GND GND Земля

Подключение ИК приёмника к Arduino

Напишем скетч, в котором будем просто показывать с помощью встроенного светодиода, что на входе приёмника присутствует ИК излучение. В данном модуле аналогично с ранее рассмотренным на выходе DAT уровень «0», когда ИК излучение попадает на приёмник, и «1» когда ИК излучения нет.

Если загрузить этот скетч в Arduino, направить на ИК приёмник ИК пульт и нажимать на нём разные кнопки, то мы увидим, что светодиод нашего индикатора быстро мигает. Разные кнопки – по-разному мигает.

Чтение команд ИК пульта с Arduino

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

Осциллограф отображает часть команды ИК пульта

На осциллограмме видна серия «пачек» импульсов примерно одинаковой длительности. Каждая «пачка» состоит из 24-х импульсов.

Осциллограф отображает часть команды ИК пульта

Подключение выхода с ИК приёмника и выхода ИК пульта к осциллографу

Вот так выглядит посылка пульта целиком. Здесь жёлтая линия – аналоговый сигнал пульта ДУ, голубая – цифровой сигнал с выхода ИК приёмника. Видно, что продолжительность передачи составляет примерно 120 мс. Очевидно, время будет несколько варьироваться исходя из того, какие биты присутствуют в пакете.

Осциллограмма пакета с ИК пульта ДУ

При большем приближении видно, что высокочастотное заполнение, которое имеется в аналоговом сигнале, в цифровом сигнале с ИК приёмника отсутствует. Приёмник прекрасно справляется со своей задачей и показывает чистый цифровой сигнал. Видна последовательность коротких и длинных прямоугольных импульсов. Длительность коротких импульсов примерно 1,2 мс, длинных – в 2 раза больше.

Биты пакета ИК пульта, масштаб: 1 клетка – 200 мкс Биты пакета ИК пульта, масштаб: 1 клетка – 1 мс Начало пакета ИК пульта, масштаб: 1 клетка – 5 мс, только цифровой сигнал

Мы уже видели подобный сигнал, когда разбирали сигнал комнатной метеостанции. Возможно, здесь применяется тот же способ кодирования информации: короткие импульсы – это логический ноль, длинные – логическая единица. На следующем видео можно посмотреть пакет целиком:

Если зарисовать этот пакет, то получится как-то так:

Один из пакетов ИК пульта

Дальнейшие исследования показали, что все пакеты данного пульта ДУ состоят из двух пачек импульсов. Причём первая всегда содержит 35 бит, вторая – 32.

Есть несколько вариантов, как поступить для получения цифровых данных пакета:

  1. опрашивать пакет через равные промежутки времени (т.н. «стробирование»), а затем принимать решение, это логический «0» или «1»;
  2. ловить фронты импульсов (детектор фронта), затем определять их длительность и также принимать решение, какой это бит.

Напомню, что будем считать короткие импульсы логическим нулём, длинные – логической единицей.

Для реализации первого варианта понятно, с какой частотой необходимо опрашивать ИК датчик, чтобы принимать с него корректные данные: 600 мкс. Это время в два раза меньшее, чем длительность коротких импульсов сигнала (логических нулей). Или, если рассматривать с точки зрения частоты, опрашивать приёмник нужно в 2 раза большей частотой (вспомним Найквиста и Котельникова). Напишем скетч, реализующий вариант со стробированием.

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

Поэкспериментируем с данным скетчем и ИК приёмником. Загрузим скетч в память Ардуино. Запустим последовательный монитор. Нажмём на пульте несколько раз одну и ту же кнопку и посмотрим, что мы увидим в мониторе.

Выводим принятые пакеты ИК пульта в последовательный монитор

Это похоже на пакет, который мы видели на осциллограмме, но всё-таки есть ошибки. Между одинаковыми пакетами также встречаются различия, которых быть не должно. Можно улучшить результат, если увеличить частоту стробирования, чтобы точнее определять биты пакета. Для безошибочного приёма необходимо чтобы строб попадал ближе к середине импульса. Но мы не можем гарантировать это, т.к. импульсы могут распространяться с варьирующимися задержками; Arduio выполняет код также не моментально, каждый цикл требует малого, но всё же времени, поэтому с каждым битом мы немного будем уходить от исходной позиции посередине импульса и рано или поздно «промахнёмся» (определим бит с ошибкой).

Перепишем скетч, используя метеод детекции фронтов.

Скетч для чтения пакета от ИК пульта методом детекции фронтов

Здесь мы ввели таймаут, чтобы выходить из цикла в любом случае, даже если фронт импульса не пришёл. Это гарантирует, что мы не окажемся в бесконечном цикле ожидания.

Загрузим скетч, запустим монитор, нажмём несколько раз ту же кнопку пульта.

Выводим принятые пакеты ИК пульта в последовательный монитор

Результат, как видно, более стабильный.

Источник

Adblock
detector