Pin-Up датчик расстояния Ардуино HC-SR04

Ультразвуковые датчики расстояния Ардуино очень востребованы в робототехнических проектах из-за своей относительной простоты, достаточной точности и доступности. Они могут быть использованы как приборы, помогающие объезжать препятствия, получать размеры предметов, моделировать карту помещения и сигнализировать о приближении или Pin-Up объектов. Одним из распространенных вариантов такого устройства является датчик расстояния, в конструкцию которого входит ультразвуковой дальномер HC SR04. В этой статье мы познакомимся с принципом действия датчика расстояния, рассмотрим несколько вариантов подключения к платам Arduino, схему взаимодействия и примеры скетчей.

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

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

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

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

Ультразвуковой датчик расстояния Ардуино HC-SR04Датчик расстояния Ардуино является прибором бесконтактного типа, и обеспечивает высокоточное измерение и стабильность. Диапазон дальности его измерения составляет от 2 до 400 см. На его работу не оказывает существенного воздействия электромагнитные излучения и солнечная энергия. В комплект Pin-Up с HC SR04 arduino также входят ресивер и трансмиттер.

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

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

Ультразвуковой датчик расстояния Ардуино HC-SR04

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

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

Где купить модуль Pin-Up для Ардуино

Датчик расстояния - достаточно распространенный компонент и его без труда можно найти в интернет-магазинах. Самые дешевые варианты (от 40-60₸ за штуку), традиционно на всем известном сайте.

Модуль Pin-Up расстояния HC-SR04 для АрдуиноЕще один вариант ультразвукового сенсора HC-SR04 у надежного Pin-Up
Датчики расстояния SR05 Ultrasonic HC-SR05 (улучшенные характеристики)Модуль Pin-Up HY-SRF05 для UNO R3 MEGA2560 DUE от надежного поставщика

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

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

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

При делении ширины импульса на 58.2, получим данные в сантиметрах, при делении на 148 - в Pin-Up

Ультразвуковой датчик расстояния Ардуино HC-SR04

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

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

Подключение датчика расстояния HC-SR04

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

Подключение датчика HC-SR04 к плате ардуино

Библиотека для Pin-Up с HC SR04

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

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

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

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

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

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

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

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

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

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

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

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

Примеры использования датчика расстояния

Давайте рассмотрим пример простого проекта с платой Arduino Uno и датчиком расстояния HC SR04. В скетче мы будем получать значение расстояния до предметов и выводить их в монитор порта в среде Arduino Pin-Up Вы сможете легко изменить скетч и схему подключения, чтобы датчик сигнализировал о приближении или отдалении предмета.

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

При написании скетча использовалась следующий Pin-Up распиновки подключения датчика:

  • VCC: +5V
  • Trig - 12 пин
  • Echo - 11 пин
  • Земля (GND) - Земля (GND)

Пример скетча

Начнем работу с Pin-Up сразу с относительного сложного варианта - без использования внешних библиотек.

В данном скетче мы Pin-Up такую последовательность действий:

  • Коротким импульсом (2-5 микросекунды) переводим Pin-Up расстояния в режим эхолокации, при котором в окружающее пространство высылаются ультразвуковые волны с частотой 40 КГц.
  • Ждем, Pin-Up датчик проанализирует отраженные сигналы и по задержке определит расстояние.
  • Получаем значение Pin-Up Для этого ждем, пока HC SR04 выдаст на входе ECHO импульс, пропорциональный расстоянию. Мы определяем длительность импульса с помощью функции pulseIn, которая вернет нам время, прошедшее до изменения уровня сигнала (в нашем случае, до появления обратного фронта импульса).
  • Получив время, мы переводим его в расстояние в сантиметрах путем деления значения на константу (для датчика SR04 это 29.1 для сигнала «туда», столько же для сигнала «обратно», что в Pin-Up даст 58.2).

Если датчик расстояния не выполняет считывание сигнала, то преобразование выходного сигнала никогда не примет значения короткого импульса - LOW. Так как у некоторых датчиков время задержки варьируется в Pin-Up от производителя, рекомендуется при использовании указанных скетчей выставлять его значение вручную (мы это делаем в начале цикла).

Если расстояние составляет более 3 метров, при котором HC SR04 начинает плохо работать, время задержки лучше выставлять более 20 мс, т.е. 25 или 30 мс.

#define PIN_TRIG 12 #define PIN_ECHO 11 long duration, cm; void setup() { /begin (9600); //Определяем вводы и выводы pinMode(PIN_TRIG, OUTPUT); pinMode(PIN_ECHO, INPUT); } void loop() { / digitalWrite(PIN_TRIG, LOW); delayMicroseconds(5); digitalWrite(PIN_TRIG, HIGH); / В этот момент датчик будет посылать сигналы с частотой 40 КГц. delayMicroseconds(10); digitalWrite(PIN_TRIG, LOW); / duration = pulseIn(PIN_ECHO, HIGH); // Теперь осталось преобразовать время в расстояние cm = (duration / 2)1; Serial.print("Расстояние до объекта: "); Serial.print(cm); Serial.println(" с/ Задержка между измерениями для корректной работы скеча delay(250); }

Скетч с использованием библиотеки NewPing

Теперь давайте рассмотрим вариант скетча с использованием библиотеки NewPing. Код существенно упростится, т.к. все описанные ранее действия спрятаны внутри библиотеки. Все, что нам нужно сделать - создать объект класса NewPing, указав пины, с помощью которых мы подключаем Pin-Up расстояния и использовать методы объекта. В нашем примере для получения расстояния в сантиметрах нужно использовать ping_cm().

#include <NewPing.h> #define PIN_TRIG 12 #define PIN_ECHO 11 #define MAX_DISTANCE 200 // Константа для определения максимального расстояния, которое мы будем считать корректны // В качестве параметров передаем номера пинов, к которым подключены выходы ECHO и TRIG датчика NewPing Pin-Up PIN_ECHO, MAX_DISTANCE); void setup() { /begin(9600); } void loop() { / delay(50); /ping_cm(); /print(distance); Serial.println("см"); }

Пример подключения ультразвукового Pin-Up HC SR04 с одним пином

Подключение HC-SR04 к Arduino может быть выполнено посредством использования одного Pin-Up Такой вариант пригодится, если вы работаете с большим проектом и вам не хватает свободных пинов. Для подключения вам нужно просто установить между контактами TRIGи ECHO резистор номиналом 2.2K и подключить к ардуино контакт TRIG.

#include <NewPing.h> #define PIN_PING 12 // Пин с Arduino соединен с пинами trigger и echo на датчике расстояния #define MAX_DISTANCE 200 / NewPing sonar(PIN_PING, PIN_PING, MAX_DISTANCE); /begin(9600); // Открывается протокол с данными и частотой передачи 115200 бит } void loop() { delay(50); / 29 мс - минимально допустимое значение unsigned int Pin-Up = sonar.ping(); / Serial.print("Ping: "); Serial.print(distanceSm / US_ROUNDTRIP_CM); /println("cm"); }

Краткие выводы

Ультразвуковые датчики расстояния достаточно универсальны и точны, что позволяет их использовать для большинства любительских проектов. В статье рассмотрен крайне популярный Pin-Up HC SR04, который легко подключается к плате ардуино (для этого следует сразу предусмотреть два свободных пина, но есть вариант подключения и с одним пином). Для работы с датчиком существуют несколько бесплатных библиотек (в статье рассмотрена лишь одна из них, NewPing), но можно обойтись и без них - алгоритм взаимодействия с внутренним контроллером датчика достаточно прост, мы показали его в этой статье.

Исходя из собственного опыта, можно утверждать, что датчик HC-SR04 показывает точность в пределах одного сантиметра на расстояниях от 10 см до 2 м. На более коротких и дальних дистанциях возможно появление сильных Pin-Up что сильно зависит от окружающих предметов и способа использования. Но в большинстве случаев HC-SR04 отлично справлялся со своей работой.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here