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

Настройка чувствительности

Как известно, вокруг нас имеется множество источников инфракрасного излучения, включая лампы освещения и солнце. Фоточувствительный элемент датчика регистрирует это фоновое излучение, и может дать ложный сигнал срабатывания. Другими словами, датчик препятствия может сработать, когда никакого препятствия и нет вовсе. Чтобы решить эту проблему, на датчике имеется возможность настроить чувствительность таким образом, чтобы воспринимать только свет достаточной силы. Обычно это реализуется с помощью компаратора — электронного устройства, позволяющего сравнивать два уровня напряжения. Одно напряжение подается на компаратор с фотодиода, а другое с делителя напряжения на основе потенциометра. Второе напряжение будем называть пороговым. Теперь датчик даст положительный сигнал только тогда, когда напряжение на фотодиоде станет больше, чем настроенное нами. Для настройки порогового напряжения нам понадобится шлицевая отвертка (она же — плоская). В этой процедуре нам также поможет зеленый светодиод состояния, который загорается когда датчик регистрирует достаточный уровень инфракрасного света. Алгоритм настройки сводится к трем шагам:

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

Для проверки поднесем к датчику ладонь, и на определенном расстоянии загорится зеленый светодиод. Уберем руку — светодиод погаснет. Расстояние на котором датчик регистрирует препятствие зависит от уровня фоновой засветки, от настройки чувствительности и от правильного расположения фотодиода и светодиода на датчике. Они должны быть расположены строго параллельно  друг другу. Теперь, когда датчик настроен должным образом, приступим к составлению программы.

Физические свойства фоторезисторов

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

Фоторезисторы отличаются размерами и техническими характеристиками, которые для каждого из них довольно условны. Даже выпущенные в одной партии, они могут иметь разные показатели, отличающиеся наполовину и выше. Таким образом, каждый элемент используется в индивидуальных условиях и определенном уровне освещенности. Свет и темноту они различают очень хорошо, а большего от них и не требуется. Кроме того, фоторезисторы способны распознавать минимальную и максимальную степень освещения.
Технические характеристики данных элементов в целом совпадают. Изделия отличаются только размерами, которые для круглой формы составляют от 5 до 12 мм в диаметре. Сопротивление изменяется в диапазоне от 10 кОм в светлое время суток до 200 кОм с наступлением темноты. Фоторезисторы отличаются диапазоном чувствительности и способны определять длину волн от 400 нм фиолетового цвета до 600 нм оранжевого цвета. Для работы подходят любые источники питания с напряжением до 100 вольт при силе тока до 1 мА.

Датчик расстояния в проектах Arduino

Способность ультразвукового датчика определять расстояние до объекта основано на принципе сонара – посылая пучок ультразвука, и получая его отражение с задержкой, устройство определяет наличие объектов и расстояние до них. Ультразвуковые сигналы, генерируемые приемником, отражаясь от препятствия, возвращаются к нему через определенный промежуток времени. Именно этот временной интервал становится характеристикой помогающей определить расстояние до объекта.

Внимание! Так как в основу принципа действия положен ультразвук, то такой датчик не подходит для определения расстояния до звукопоглощающих объектов. Оптимальными для измерения являются предметы с ровной гладкой поверхностью

Описание датчика HC SR04

Ультразвуковой дальномер HC SR04 имеет такие технические параметры:

  • Питающее напряжение 5В;
  • Рабочий параметр силы т ока – 15 мА;
  • Сила тока в пассивном состоянии < 2 мА;
  • Обзорный угол – 15°;
  • Сенсорное разрешение – 0,3 см;
  • Измерительный угол – 30°;
  • Ширина импульса – 10-6 с.

Датчик оснащен четырьмя выводами (стандарт 2, 54 мм):

  • Контакт питания положительного типа – +5В;
  • Trig (Т) – выход сигнала входа;
  • Echo (R) – вывод сигнала выхода;
  • GND – вывод «Земля».

Схема взаимодействия с Arduino

Для получения данных, необходимо выполнить такую последовательность действий:

  • Подать на выход Trig импульс длительностью 10 микросек;
  • В ультразвуковом дальномере hc sr04 подключенном к arduino произойдет преобразование сигнала в 8 импульсов с частотой 40 кГц, которые через излучатель будут посланы вперед;
  • Когда импульсы дойдут до препятствия, они отразятся от него и будут приняты приемником R, что обеспечит наличие входного сигнала на выходе Echo;
  • На стороне контроллера полученный сигнал при помощи формул следует перевести в расстояние.

При делении ширины импульса на 58.2, получим данные в сантиметрах, при делении на 148 – в дюймах.

Подключение HC SR04 к Arduino

Выполнить подключение ультразвукового датчика расстояния к плате Arduino достаточно просто. Схема подключения показана на рисунке.

Контакт земли подключаем к выводу GND на плате Arduino, выход питания соединяем с 5V. Выходы Trig и Echo подсоединяем к arduino на цифровые пины. Вариант подключения с помощью макетной платы:

Библиотека для работы с HC SR04

Для облегчения работы с датчиком расстояния HC SR04 на arduino можно использовать библиотеку NewPing. Она не имеет проблем с пинговыми доступами и добавляет некоторые новые функции.

К особенностям библиотеки можно отнести:

  • Возможность работы с различными ультразвуковыми датчиками;
  • Может работать с датчиком расстояния всего через один пин;
  • Отсутствие отставания на 1 секунду при отсутствии пинга эха;
  • Для простой коррекции ошибок есть встроенный цифровой фильтр;
  • Максимально точный расчет расстояния.

Скачать бибилотеку NewPing можно здесь

Точность измерения расстояния датчиком HC SR04

Точность датчика зависит от нескольких факторов:

  • температуры и влажности воздуха;
  • расстояния до объекта;
  • расположения относительно датчика (согласно диаграммы излучения);
  • качества исполнения элементов модуля датчика.

В основу принципа действия любого ультразвукового датчика заложено явление отражения акустических волн, распространяющихся в воздухе. Но как известно из курса физики, скорость распространения звука в воздухе зависит от свойств этого самого воздуха (в первую очередь от температуры). Датчик же, испуская волны и замеряя время до их возврата, не догадывается, в какой именно среде они будут распространяться и берет для расчетов некоторую среднюю величину. В реальных условиях из-за фактора температуры воздуха HC-SR04 может ошибаться от 1 до 3-5 см.

Фактор расстояния до объекта важен, т.к. растет вероятность отражения от соседних предметов, к тому же и сам сигнал затухает с расстоянием.

Также для повышения точности надо правильно направить датчик: сделать так, чтобы предмет был в рамках конуса диаграммы направленности. Проще говоря,  “глазки” HC-SR04 должны смотреть прямо на предмет.

Для уменьшения ошибок и погрешности измерений обычно выполняются следующие действия:

  • усредняются значения (несколько раз замеряем, убираем всплески, потом находим среднее);
  • с помощью датчиков (например, DHT11 или DHT22) определяется температура и вносятся поправочные коэффициенты;
  • датчик устанавливается на серводвигатель, с помощью которого мы “поворачиваем голову”, перемещая диаграмму направленности влево или вправо.

PIR датчик

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

В PIR датчике присутствуют два важных элемента: пироэлектрический кристалл, который может обнаруживать тепловые сигнатуры от живого организма (человека/животных), и линзы Френеля, которые расширяют диапазон действия датчика. Также в PIR датчике доступно несколько вариантов опций, показанных на следующем рисунке.

Два потенциометра (оранжевый цвет) используются для управления чувствительностью и срабатывания по времени датчика. Основной контакт датчика (Dout) располагается между его контактами Vcc и Gnd. Датчик работает от напряжения 3.3 В, но также может работать и от напряжения 5 В. В левом верхнем углу датчик имеет переключатель режимов своей работы. Всего доступно два режима работы: “H” режим и “I” режим.

В “H” режиме на выходном контакте датчика Dout будет появляться напряжение высокого уровня (3.3V) когда в диапазоне действия датчика будет появляться человек. Спустя некоторое время, устанавливаемое с помощью потенциометра, напряжение на этом контакте становится низкого уровня. То есть в этом режиме напряжение высокого уровня на контакте Dout будет независимо от того присутствует ли еще человек в зоне действия датчика или покинул ее. Этот режим мы будем использовать в нашем проекте – в большинстве случаев он предпочтительней при работе с этим датчиком. Еще его называют режимом “с перезапуском”.

В режиме “I” напряжение высокого уровня (3.3V) на выходном контакте датчика Dout будет только тогда, когда человек находится в зоне действия датчика. Как только человек покинет ее, то спустя некоторое время, регулируемое с помощью потенциометра, на контакте Dout будет напряжение низкого уровня. То есть если вы будете ходить около датчика, то он будет постоянно срабатывать и выключаться. Этот режим еще называется режимом “без перезапуска”.

Примечание: местоположение контактов и потенциометров могут отличаться в зависимости от производителя PIR датчика.

Фоторезистор ардуино и датчик освещенности

фоторезистор

Самый популярный и доступный вариант датчика на рынке – это модели массового выпуска китайских компаний, клоны изделий производителя VT. Там не всегда можно разораться, кто и что именно производит тот или иной поставщик, но для начала работы с фоторезисторами вполне подойдет самый простой вариант.

Начинающему ардуинщику можно посоветовать купить готовый фотомодуль, который выглядит вот так:

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

Российскому радиолюбителю можно посоветовать обратить на российский датчик ФР. Встречающиеся в продаже ФР1-3, ФР1-4 и т.п. — выпускались ещё в союзовские времена. Но, несмотря на это, ФР1-3 – более точная деталь. Из этого следует и разница в цене За ФР просят не более 400 рублей. ФР1-3 будет стоить больше тысячи рублей за штуку.

Маркировка фоторезистора

Современная маркировка моделей, выпускаемых в России, довольно простая. Первые две буквы — ФотоРезистор, цифры после чёрточки обозначают номер разработки. ФР -765 — фоторезистор, разработка 765. Обычно маркируется прямо на корпусе детали

У датчика VT в схеме маркировке указаны диапазон сопротивлений. Например:

  • VT83N1 — 12-100кОм (12K – освещенный, 100K – в темноте)
  • VT93N2 — 48-500кОм (48K – освещенный, 100K – в темноте).

Иногда для уточнения информации о моделях продавец предоставляет специальный документ от производителя. Кроме параметров работы там же указывается точность детали. У всех моделей диапазон чувствительности расположен в видимой части спектра. Собирая датчик света нужно понимать, что точность срабатывания — понятие условное. Даже у моделей одного производителя, одной партии, одной закупки отличаться она может на 50% и более.

На заводе детали настраиваются на длину волны от красного до зелёного света. Большинство при этом «видит» и инфракрасное излучение. Особо точные детали могут улавливать даже ультрафиолет.

Достоинства и недостатки датчика

Основным недостатком фоторезисторов является чувствительность к спектру. В зависимости от типа падающего света сопротивление может меняется на несколько порядков. К минусам также относится низкая скорость реакции на изменение освещённости. Если свет мигает — датчик не успевает отреагировать. Если же частота изменения довольно велика — резистор вообще перестанет «видеть», что освещённость меняется.

К плюсам можно отнести простоту и доступность. Прямое изменение сопротивления в зависимости от попадающего на неё света позволяет упростить электрическую схему подключения. Сам фоторезистор очень дешев, входит в состав многочисленных наборов и конструкторов ардуино, поэтому доступен практически любому начинающему ардуинщику.

Что такое Ардуино

Фирма Arduino Software выпускает различные модели микропроцессоров и других электронных устройств. Однако, если в разговоре упоминается об Ардуино, в виду чаще всего имеется микрокомпьютер Arduino Uno. Это небольшая плата, на которой установлен процессор и электронные компоненты. По своим функциональным возможностям это устройство близко к материнским платам компьютеров, хоть и с урезанными возможностями.

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

Где используются

Микропроцессоры Ардуино уже успели стать незаменимыми во множестве систем и комплексов:

  • управление различными датчиками;
  • мультитестеры;
  • квадрокоптеры;
  • светофоры;
  • системы умного дома;
  • робототехнические системы;
  • вентиляционные комплексы;
  • охранные системы;
  • метеорологические системы и так далее.

Этот список нельзя назвать исчерпывающим, поскольку новые устройства под управлением Ардуино появляются практически ежедневно.

Инфракрасный датчик движения Ардуино можно использовать не только в управляющих, технологических или охранных комплексах. Датчики движения встречаются в устройствах декоративного, развивающего или информационного характера:

  • игрушки;
  • оснащение предметов или аттракционов в квест-румах;
  • интерактивные арт-инсталляции и так далее.

Единственным ограничением является необходимость составления специальных программ для микропроцессора. Они закачиваются в него с обычного компьютера через интерфейс USB, для чего надо предварительно написать код. Это доступно только программистам, владеющим языком С++. Однако, в сети немало готовых программ для Ардуино, которые можно использовать для решения разных задач.

Пример программы

Простейший скетч для датчика движения Ардуино выглядит следующим образом:

Текст скетча можно скачать здесь: здесь

Это самая простая программа, которая плохо подходит для выполнения практических задач. Чаще всего ее используют для тестирования датчиков и проверки их работоспособности. Основным недостатком этого скетча является отсутствие возможности определить количество и размер регистрируемых объектов, что будет приводить к ложным срабатываниям. Для практического использования составляют более сложные скетчи, которые включают увеличенное количество команд (строк кода).

Пример работы

Рассмотрим ситуацию использования датчика на примере микроконтроллера Ардуино Уно и сенсора HC-SR501. Его характеристики:

  • рабочее напряжение постоянного тока — 4.5–20 В;
  • ток покоя — ≈ 50 мкА;
  • выходное напряжение — 3.3 В;
  • диапазон температур — от −15 до +70 градусов Цельсия;
  • габариты — 32×24 мм;
  • угол детектирования — 110 градусов;
  • дистанция срабатывания — до 7 метров.

В указанном сенсоре установлены два пироэлектрических датчика IRA-E700.

Сверху они прикрыты сегментированной полусферой. Каждый сегмент — фокусирующая тепло на определенный участок ПИР-датчика линза.

Внешний вид устройства:

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

Настройка

ИК-модуль HC-SR501 весьма прост в настройке и дешев. У него есть перемычка для конфигурирования режима и пара подстроечных резисторов. Общая чувствительность настраивается первым потенциометром: чем она выше, тем шире зона «видимости» гаджета».

Другой потенциометр управляет временем срабатывания устройства: если обнаружено перемещение, на выходе создается положительный электрический импульс определенной длины (от 5 до 300 секунд).

Следующий управляющий элемент — перемычка. От нее зависит режим работы.

  • в позиции L время отсчитывается от первого срабатывания. То есть, к примеру, если человек зайдет в помещение, система среагирует и включит свет на указанное настройкой потенциометра время. Когда оно истечет, выходной сигнал возвращается к начальному показателю, и комплекс перейдет в режим ожидания следующей активации;
  • в позиции H обратный отсчет будет начинаться после каждого детектирования события движения, а любое перемещение станет обнулять таймер. В этом положении перемычка стоит по умолчанию.

Соединение датчика с контроллером

Подключение датчика движения к Ардуино следует выполнять по указанной схеме:

Пин OUT соединяется с пином 2 Уно, а VCC подсоединено к контакту +5 В. Принципиальная схема конструкции:

Программная часть

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

В нем при обнаружении гаджетом движения на последовательный порт отправляется 1, а в ином случае уходит значение 0. Это простейшая программа, с помощью которой можно протестировать собранный датчик.

Модифицируем устройство добавлением реле, которое станет включать свет. Принципиальная схема подключения:

Макет:

Программа для реализации данного функционала:

Теперь, если собрать компоненты по схеме, загрузить скетч в Ардуино и соединить систему с электросетью дома, по сигналу сенсора перемещения контроллер заставит сработать реле, а то, в свою очередь, включит свет.

Подключение многофункционального датчика

Плата устройства имеет 5 контактов:

  • VCC – питание 3,3 В,
  • GND — общий провод,
  • INT — вывод для сигнала прерывания,
  • SDA и SCL — контакты интерфейса I2C .

В простейшем случае использовать датчик можно с неподключенным контактом INT.

Модуль потребляет ток 160-140 мкА при напряжении 3,3 В.

Для работы с данным устройством написана специальная библиотека SparkFun_APDS-9960_Sensor_Arduino_Library-master . К ней прилагается ряд примеров, иллюстрирующих работу устройства в разных режимах. Программа ColorSensor позволяет отличать цвет поверхности. В качестве подопытных поверхностей были использованы папки трех цветов.

Экспериментально установлено, что для надежного распознавания цветов расстояние между поверхностью и датчиком должно составлять 1,5-2 см.

Красная папка

Зеленая папка

Синяя папка

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

Аналогичный результат дает и черная шероховатая поверхность бокса CD-диска, разумеется в этом случае общая яркость отраженного сигнала гораздо меньше.

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

Красная рукоятка отвертки

Синяя рукоятка отвертки

Зеленый кистевой эспандер

Хотя для случая локальных предметов разница в сигнале по разным цветовым каналам меньше, тем не менее, во всех случая цвет с расстояния в 1,5 – 2 см распознается уверенно. Программа AmbientLightInterrupt также замеряет общую освещенность и освещенность по трем цветовым каналам, но с использованием прерывания.

Программа ProximitySensor позволяет измерять расстояние до препятствия в диапазоне от 5 до 40 см, результат измерения представляется числом от 0 до 255.

Программа ProximityInterrupt реагирует на приближение препятствия, на расстояние 20 см и меньше, программа использует прерывание.

Программа GestureTest позволяет распознавать простые жесты. При этом данная программа наиболее надежно распознает жесты «LEFT» и «RIGHT». При использовании датчика для распознавания жестов следует двигать рукой плавно, без резких движений.

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

Исходный код программы (скетча)

Arduino

/* Obstacle Avoiding Robot Using Ultrasonic Sensor and Arduino NANO
* Circuit Digest(www.circuitdigest.com)
*/
int trigPin = 9; // trig pin датчика HC-SR04
int echoPin = 10; // Echo pin датчика HC-SR04
int revleft4 = 4; //REVerse motion (движение назад) для левого двигателя
int fwdleft5 = 5; //ForWarD motion (движение вперед) для левого двигателя
int revright6 = 6; //REVerse motion (движение назад) для правого двигателя
int fwdright7 = 7; //ForWarD motion движение вперед) для правого двигателя
long duration, distance;
void setup() {

delay(random(500,2000)); // задержка на случайное время
Serial.begin(9600); //для целей отладки, потом можно закомментировать
pinMode(revleft4, OUTPUT); // set Motor pins as output
pinMode(fwdleft5, OUTPUT);
pinMode(revright6, OUTPUT);
pinMode(fwdright7, OUTPUT);

pinMode(trigPin, OUTPUT); // set trig pin as output
pinMode(echoPin, INPUT); //echo pin в режим ввода данных
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // передаем серию импульсов длительностью 10 мкс
delayMicroseconds(10);
duration = pulseIn(echoPin, HIGH); // принимаем отраженные импульсы
distance = duration / 58.2; // рассчитываем расстояние в см
delay(10);
// If you dont get proper movements of your robot then alter the pin numbers (если что то работает не так, попробуйте сменить используемые контакты)
if (distance > 19)
{
digitalWrite(fwdright7, HIGH); // движение вперед
digitalWrite(revright6, LOW);
digitalWrite(fwdleft5, HIGH);
digitalWrite(revleft4, LOW);
}
if (distance < 18)
{
digitalWrite(fwdright7, LOW); //Stop (остановка)
digitalWrite(revright6, LOW);
digitalWrite(fwdleft5, LOW);
digitalWrite(revleft4, LOW);
delay(500);
digitalWrite(fwdright7, LOW); //движение назад
digitalWrite(revright6, HIGH);
digitalWrite(fwdleft5, LOW);
digitalWrite(revleft4, HIGH);
delay(500);
digitalWrite(fwdright7, LOW); //Stop (остановка)
digitalWrite(revright6, LOW);
digitalWrite(fwdleft5, LOW);
digitalWrite(revleft4, LOW);
delay(100);
digitalWrite(fwdright7, HIGH);
digitalWrite(revright6, LOW);
digitalWrite(revleft4, LOW);
digitalWrite(fwdleft5, LOW);
delay(500);
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

/* Obstacle Avoiding Robot Using Ultrasonic Sensor and Arduino NANO
*  Circuit Digest(www.circuitdigest.com)
*/

inttrigPin=9;// trig pin датчика HC-SR04

intechoPin=10;// Echo pin датчика HC-SR04

intrevleft4=4;//REVerse motion (движение назад) для левого двигателя

intfwdleft5=5;//ForWarD motion (движение вперед) для левого двигателя

intrevright6=6;//REVerse motion (движение назад) для правого двигателя

intfwdright7=7;//ForWarD motion движение вперед) для правого двигателя

longduration,distance;

voidsetup(){

delay(random(500,2000));// задержка на случайное время

Serial.begin(9600);//для целей отладки, потом можно закомментировать

pinMode(revleft4,OUTPUT);// set Motor pins as output

pinMode(fwdleft5,OUTPUT);

pinMode(revright6,OUTPUT);

pinMode(fwdright7,OUTPUT);

pinMode(trigPin,OUTPUT);// set trig pin as output

pinMode(echoPin,INPUT);//echo pin в режим ввода данных

}

voidloop(){

digitalWrite(trigPin,LOW);

delayMicroseconds(2);

digitalWrite(trigPin,HIGH);// передаем серию импульсов длительностью 10 мкс

delayMicroseconds(10);

duration=pulseIn(echoPin,HIGH);// принимаем отраженные импульсы

distance=duration58.2;// рассчитываем расстояние в см

delay(10);

// If you dont get proper movements of your robot then alter the pin numbers (если что то работает не так, попробуйте сменить используемые контакты)

if(distance>19)

{

digitalWrite(fwdright7,HIGH);// движение вперед

digitalWrite(revright6,LOW);

digitalWrite(fwdleft5,HIGH);

digitalWrite(revleft4,LOW);

}

if(distance<18)

{

digitalWrite(fwdright7,LOW);//Stop (остановка)                

digitalWrite(revright6,LOW);

digitalWrite(fwdleft5,LOW);

digitalWrite(revleft4,LOW);

delay(500);

digitalWrite(fwdright7,LOW);//движение назад        

digitalWrite(revright6,HIGH);

digitalWrite(fwdleft5,LOW);

digitalWrite(revleft4,HIGH);

delay(500);

digitalWrite(fwdright7,LOW);//Stop (остановка)              

digitalWrite(revright6,LOW);

digitalWrite(fwdleft5,LOW);

digitalWrite(revleft4,LOW);

delay(100);

digitalWrite(fwdright7,HIGH);

digitalWrite(revright6,LOW);

digitalWrite(revleft4,LOW);

digitalWrite(fwdleft5,LOW);

delay(500);

}

}

Недостатки

В силу отработанности аппаратной платформы, хорошо документированных схем, простоты разработки ПО и дешевизны PIR-датчики на Ардуино не обладают особыми недостатками в рамках возлагаемых на них задач. Возможности их применения ограничиваются естественными пределами ИК-технологии, периферийным оборудованием и заложенными в прошивку контроллера функциями.

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

Принципиальная схема сервопривода на NE555

Эта схема также основана на NE555, но его типичное применение было изменено. В типичной нестабильной конфигурации сумма сопротивлений R1 + R2 отвечает за продолжительность высокого состояния, и только R2 является низким состоянием. При изменении высокого состояния мы также меняем время низкого состояния. Это определенное неудобство, когда низкий статус всегда должен быть одинаковым.

Измененная схема NE555 в нестабильной конфигурации

При добавлении одного диода 1N4148, роли этих резисторов разделяются: зарядный ток конденсатора C2 протекает через R1 и диод D1. Диод открывается, потому что сопротивление резистора R2 намного больше, чем R1 (на него будет подаваться большее напряжение). После того, как внутренний транзистор вывода 7 будет закорочен на массу, диод закроется и C2 разрядится только через R2.

Элементы, необходимые для выполнения данной сборки схемы:

  • 1 × сервопривод,
  • 1 × микросхема NE555,
  • Резистор 1 × 56 кОм,
  • Резистор 1 × 1 кОм,
  • Потенциометр 1 × 5 кОм,
  • 1 × 1000 мкФ конденсатор,
  • 1 × 220 мкФ конденсатор,
  • Конденсатор 3 × 100 нФ,
  • 1 × 470 нФ конденсатор,
  • 1 × 1N4148 диод,
  • Батарея 4 × AA,
  • 1 × блок для 4 батареек АА,
  • 1 × макетная плата,
  • Комплект соединительных проводов.

Принципиальная схема выглядит следующим образом:

Схема сервопривода на базе NE555 — генератор сигналов

Как и раньше — здесь мы также разделили схему на два отдельных блока. На этот раз второй блок очень простой (он только подключает сервопривод к источнику питания и к сигналу, описываемому как SERVO, то есть к третьему выводу NE555.

Схема сервопривода на базе NE555 — сервопривод с блоком питания

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

Пример реализации схемы сервопривода на NE555

Шаг 1

Расположите правильно на плате NE555 (обращая внимание на углубление)

Шаг 2. Ставим конденсаторы С1 (100 нФ) и С2 (220 мкФ). Подключаем первый вывод NE555 к земле.

Шаг 1: Подключение к NE555 Шаг 2: Соединения с NE555

Шаг 3. Соединяем второц вывод схемы с шестой, а четвертую — с плюсовой шиной питания.

Шаг 4. Собираем элементы возле ножки №6. Конкретно это конденсатор С4 емкостью 470 нФ. Дополнительно там видны резистор R2 (56 кОм) и диод 1N4148.

Обязательно обратите внимание на направление проводимости диода!

Шаг 3: Подключите C4, R2 и диод 1N4148 Шаг 4: Подключите резистор и потенциометр

Шаг 5. Подсоедините ножку №8 к положительной шине питания. Подключаем резистор R1 (1 кОм) и затем подключаем к нему потенциометр. Мы хотим получить регулируемый резистор, поэтому используем средний вывод и один из крайних выводов (любой). Подключаем средний вывод к плюсовой шине питания. Добавляем конденсатор С3, подключив пятый вывод NE555 к земле.

Шаг 6. Подключаем линии питания, которые находятся с одной и другой стороны платы. Добавляем конденсаторы С5 (100 нФ) и С6 (1000 мкФ). Они стабилизируют питание схемы, когда двигатель потребляет больше тока.

Шаг 5: Последующие подключения Шаг 6: Подключение сервопривода и конденсаторов

В конце правильно подключаем сервопривод — для этого используем 3 провода:

Готовая система с подключенным сервоприводом

После подключения сервопривода, мы можем подключить источник питания (6 В) и протестировать схему. Каждое изменение настройки потенциометра должно приводить к изменению положения сервопривода. Все благодаря тому, что изменение сопротивления потенциометра изменяет рабочий цикл сигнала ШИМ.

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

Характеристики HC SR04

После общего представления о датчиках расстояния стоит остановиться на конкретных характеристиках HC SR04 непосредственно созданного для подключения к Arduino.

Как видно по изображению — сонар сделан в виде меленькой платы с четырьмя контактами и двумя активными ультразвуковыми модулями. Последние попеременно могут работать, как излучателем сигнала, так и его приемником. Что касается шин, — две из них питание(VCC) с землей(GND), а остальные — Trig (T) и Echo(R). Последние названые — соответственно триггер подачи сигнала(T) и индикатор получения ответа(R) подключаемые от HC SR04 к Arduino.

Технические характеристики устройства:

  • Напряжение питания: 3.3–5 В/15 мА.
  • Потребление в пассивном состоянии: < 2 мА.
  • Угол расхождения ультразвука от излучателя: 15°.
  • Угол получения ответа: 30°.
  • Минимальный размер объекта наблюдения: 3 мм.
  • Длина импульса: 10–6Е с.

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

Здесь все очень просто:

  1. Arduino производит инициализацию сонара HC SR04 отправкой сигнала LOW в течение определенного времени на шину триггера (T). Кроме перезапуска режима работы датчика, в зависимости от длины импульса устанавливается точность измерения. Рекомендуемое время — 5 мс.
  2. Следом, на триггер отсылается импульс HIGH, длительностью 10 мс.
  3. Сонар генерирует на ультразвуковом излучателе 8 сигналов частотой в 40 мГц.
  4. В случае получения детектором отраженного от предмета или препятствия эха, на шине ECHO (R) генерируется импульс по длительности соответствующий расстоянию до объекта.

Конечно, само расстояние вычисляется в зависимости от полученного значения и выводится по формуле. Для выяснения сантиметров до объекта, длину импульса R нужно разделить на константу 58.2. Если требуются дюймы, берут — 148.

Заключение

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

Находят они применение и в системах сигнализации и видеонаблюдения: по сигналу включается оповещение или запись события. Гибкость Arduino позволяет реализовать даже очень сложные проекты, например, включения сенсора в экосистему «умного дома». Хотя существуют и более продвинутые лазерные, ультразвуковые и тепловизионные варианты, ИК-детекторы в данной сфере остаются самым доступным и простым решением.