Подключение ультразвукового датчика к Ардуино: дальномер HC-SR04

Вопросы и ответы

Описание дальномера

Ультразвуковой датчик HC SR04 точно измеряет расстояния бесконтактным методом на расстояниях от 0,02 до 4 м. Прибор не чувствителен к солнечному свету, электромагнитному излучению. Кроме того, в отличие от инфракрасных дальномеров, сильная тепловая подсветка в любой части инфракрасного диапазона не создает препятствий для работы. В комплект поставки входят:

  • модуль измерения HC SR04;
  • модуль управления Arduino;
  • ресивер (ресивер);
  • передатчик

Дальномер Arduino HC SR04 — недорогое устройство, предназначенное для образовательных целей и хобби. Однако его электрические и эксплуатационные характеристики достаточны для практического использования в быту, в строительстве в качестве бесконтактной рулетки. Стоимость устройства варьируется от 150 до 450 рублей.

Принцип действия

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

Модуль имеет два так называемых «глаза» (T и R, которые соединены друг с другом на выводах Trig и Echo). Сначала на триггерный вывод подается импульс, который преобразуется в 8 импульсов с частотой 40 кГц и отправляется исследуемому объекту через «глаз» T. Затем сигнал отражается объектом и принимается « глаз »R и подключен к контакту Echo.

Все очень просто: сигнал идет вперед от одного «глаза», отражается от объекта, второй «глаз» улавливает его, измеряется суммарная передача звукового сигнала и рассчитывается расстояние.

Подключение ультразвукового датчика к Ардуино на макетной плате

вы можете использовать схему ультразвукового датчика Arduino, созданную в TinkerCad Circuits, или схему, показанную на изображении ниже, чтобы создать собственное сенсорное устройство.

При использовании 4-контактного ультразвукового датчика нормально замкнутый (NC) контакт заземляется. Вы можете разместить ультразвуковой датчик, как показано на изображении на макетной плате, и использовать перемычки, чтобы завершить подключение к Arduino.

Ниже представлена ​​схема, которую я создал с помощью 4-проводной перемычки для подключения ультразвукового датчика и Arduino.

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

Ультразвуковой датчик Arduino

Красный
GND Чернить
Нет соединения Белый
RE7 Желтый

Вы успешно подключили ультразвуковой датчик к Arduino, и теперь вы готовы загрузить эскиз в Arduino.

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

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

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

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

  • VCC: + 5 В
  • Триггер — 12 пин
  • Эко — контакт 11
  • Земля (GND) — Земля (GND)

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

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

В этом скетче мы выполняем следующую последовательность действий:

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

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

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

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

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

Ультразвуковой дальномер HC-SR04

В этом руководстве мы будем работать с датчиком HC-SR04 и контроллером Arduino Uno. Этот популярный дальномер может измерять расстояния от 1-2 см до 4-6 метров. При этом точность измерения составляет 0,5 — 1 см.

Существует несколько версий одного и того же HC-SR04. Кто-то работает лучше, кто-то хуже. Вы можете отличить их от рисунка на доске на обратной стороне. Вот одна из версий:

DSC00600_

Программа

Далее попробуем приказать датчику посылать ультразвуковой зондирующий импульс и зафиксировать его возврат. Посмотрим, как выглядит временная диаграмма HC-SR04.

HC-SR04_sequence_chart

На схеме показано, что для начала измерения нам необходимо сформировать положительный импульс длительностью 10 мкс на выводе Trig. После этого датчик излучает серию из 8 импульсов и поднимает уровень на выводе Echo, переходя в экономичный режим ожидания. Как только дальномер обнаруживает, что звук вернулся, он завершает положительный импульс на эхо-сигнале.

Оказывается, нам просто нужно сделать две вещи: создать импульс на Trig, чтобы начать измерение и измерение длины импульса на Echo, а затем рассчитать расстояние, используя простую формулу. Мы делаем это.

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

s = продолжительность * v = продолжительность * 340 м / с

Переводим скорость звука из м / с в см / мкс:

s = продолжительность * 0,034 см / мкс

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

с = продолжительность * 1/29 = продолжительность / 29

Теперь вспомним, что звук прошел два обязательных расстояния: до цели и обратно. Разделим все на 2:

с = продолжительность / 58

Теперь мы знаем, откуда взялось число 58 в программе!

Загрузите программу в Arduino Uno и откройте монитор последовательного порта. Теперь попробуем навести датчик на разные объекты и наблюдать рассчитанное расстояние на мониторе.

Использование библиотеки NewPing

Необходимые уточнения

Если HC-SR04 не считывает эхо-сигнал, выходной сигнал никогда не преобразуется в НИЗКИЙ. Датчики Devantec и Parallax обеспечивают задержку 36 миллисекунд и 28 миллисекунд соответственно. Если вы используете скетч выше, программа зависнет на 1 секунду. Поэтому рекомендуется указать параметр задержки.

Датчик HC-SR04 плохо работает при измерении расстояний более 10 футов. Время возврата импульса составляет примерно 20 миллисекунд, поэтому в этих случаях рекомендуется установить время задержки больше 20, например 25 или 30 миллисекунд.

ультразвуковой датчик расстояния HC-SR04 можно подключить только к одному выводу Arduino. Для этого вам необходимо установить резистор 2,2 кОм между выводами Trigger и Echo и подключить к Arduino только вывод Trigger.

Необходимые компоненты для подключения ультразвукового дальномера

  • Arduino (в нашем случае — UNO)
  • Макетная плата (макет для удобного подключения устройств к Arduino)
  • Провода
  • Ультразвуковой датчик HC-SR04

Принцип работы датчика

Ультразвуковой датчик — это устройство, которое использует ультразвуковые волны для измерения расстояния до объекта. Ультразвуковые датчики, представляющие собой тандемы микрофона и динамика, отправляют и принимают высокочастотные звуковые волны для определения расстояния или близости к объекту. Звуковые волны очень высокой частоты отражаются от объекта.

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

Принцип действияультразвукового дальномера HC-SR04

Действие ультразвукового дальномера HC-SR04 основано на принципе эхолокации. Он излучает звуковые импульсы в космос и принимает отраженный сигнал от препятствия. Расстояние до объекта определяется временем распространения звуковой волны до препятствия и обратно.

Звуковая волна активируется путем подачи положительного импульса длительностью не менее 10 микросекунд на ножку TRIG дальномера. Как только импульс заканчивается, дальномер излучает серию звуковых импульсов с частотой 40 кГц в пространство впереди. При этом на ножке ECHO дальномера появляется логическая единица. Как только датчик обнаруживает отраженный сигнал, на выводе ECHO появляется логический ноль. Длительность логической единицы в секции ECHO («Echo Delay» на рисунке) определяет расстояние до препятствия.

Принцип работы ультразвукового дальномера HC-SR04
Принцип работы ультразвукового дальномера HC-SR04

Диапазон измерения дальности дальномера HC-SR04 — до 4 метров с разрешением 0,3 см. Угол обзора — 30 °, эффективный угол — 15 °. Ток потребления в дежурном режиме составляет 2 мА, в рабочем — 15 мА.

Получение дистанции до объекта с датчика HC-SR04

Теперь мы напишем скетч, который определяет расстояние до препятствия и отправляет его в последовательный порт. Сначала мы устанавливаем номера контактов TRIG и ECHO: это контакты 12 и 11. Затем мы объявляем триггер как выход, а эхо как вход. Мы инициализируем последовательный порт на 9600 бод. При каждом повторении цикла () мы считываем расстояние и выводим его до двери.

const int trigPin = 12; const int echoPin = 11; void setup () {pinMode (trigPin, ВЫХОД); // триггер — вывод вывода pinMode (echoPin, INPUT); // эхо — вход digitalWrite (trigPin, LOW); Последовательный запуск (9600); // порт последовательной инициализации} void loop () {long distance = getDistance (); // получаем расстояние от датчика Serial.println (distance); // вывод в последовательный порт delay (100); } //

Определяем расстояние от объекта в см long getDistance () {long distacne_cm = getEchoTiming () * 1.7 * 0.01; return distacne_cm; } // Определяем длительное время задержки getEchoTiming () {digitalWrite (trigPin, HIGH); // генерируем задержку импульса запуска 10 мкс микросекунд (10); digitalWrite (trigPin, LOW); // определяем длительность ВЫСОКОГО уровня на выводе echoPin, мкс: long duration = pulseIn (echoPin, HIGH); продолжительность возврата; }

Функция getEchoTiming () генерирует пусковой импульс. Он просто создает тот импульс длительностью 10 микросекунд, который является триггером для начала излучения звукового пакета от дальномера в космос. Затем запомните время от начала передачи звуковой волны до прихода эха.

Функция getDistance () вычисляет расстояние до объекта. Из школьного курса физики мы помним, что расстояние равно скорости, умноженной на время: S = V × t Скорость звука в воздухе составляет 340 м / с, мы знаем время в микросекундах (переменная продолжительность) . Чтобы получить продолжительность в секундах, разделите ее на 1000000. Поскольку звук проходит вдвое большее расстояние — от объекта и наоборот, — вам также необходимо разделить результат пополам. Получается, что расстояние до объекта S = 34000 см / сек × продолжительность / 1000000 сек / 2 = 1,7 см / сек / 100, что мы записали в скетче.

Микроконтроллер выполняет операцию умножения быстрее, чем операцию деления, поэтому я заменил: 100 эквивалентным × 0,01.

Технические характеристики HC SR04

Электротехнические характеристики дальномера HC SR04 следующие:

  • напряжение питания — 5 В;
  • потребление тока в рабочем режиме — 15 мА;
  • в режиме ожидания потребляет менее 2 мА;
  • угол передачи зондирующего сигнала — 15°;
  • разрешение сенсора — 0,3 см;
  • угол приема отраженных импульсов — 30°;
  • вывод информации на символьный ЖК-дисплей;
  • минимальная длительность измеряемого интервала 10 мкс.

Датчик имеет 4 контакта в стандартной версии 2,54 мм. Это:

  • питание датчика VCC, входное напряжение — 5 В;
  • Trig (Т) — выход, на который поступает команда на начало облучения;
  • Eco (R) — выход, дающий команду на завершение измерений;
  • GND — вывод заземления.

HC SR04 технические характеристики

Подключение ультразвукового датчика к Arduino с помощью TinkerCad Circuits

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

TinkerCad Circuits — это бесплатный онлайн-симулятор схем, который позволяет моделировать различные электрические и электронные схемы перед их подключением на реальной макетной плате. Вы даже можете тестировать проекты Arduino (включая код) с помощью TinkerCad Circuits. Вы можете получить ценные знания об электронике путем экспериментов, прежде чем решите создать физическую схему.

На изображении ниже показана конструкция функционального ультразвукового датчика Arduino, созданная с использованием схем TinkerCad.

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

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

Данные принимаются по команде от «Ардуино» следующим образом:

  • микроконтроллер отправляет импульс длительностью 10 мкс на вывод Trig;
  • Ультразвуковой дальномер Arduino по этому сигналу выдает серию импульсов с частотой 40 кГц;
  • излучение отразится от препятствия и будет принято датчиком, это событие приведет к появлению напряжения на выводе Echo;
  • программа «Ардуино» удаленно пересчитает задержки полученных импульсов.

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

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

в соединении HC-SR04 задействованы 4 пина:

  • питание;
  • земля;
  • обеспечивая начало и конец процесса.

Триггер и Эхо (оба являются цифровыми) могут подключаться к любому выходу Arduino ультразвукового дальномера.

Имя HC-SR04 Ардуино Уно
земля GND GND
питание VCC 5 дюймов
прием Эхо 2
коробка передач Триггер 3

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

Домашнее задание

  • Попробуйте другие библиотеки для HC-SR04
  • Попробуйте разные фильтры из урока, используя последний пример

Связанные уроки

  • Цифровые контакты
  • Генерация и считывание сигналов
  • Фильтрация сигналов

Библиотека команд

Работа Arduino с датчиком HC SR04 облегчается за счет использования библиотеки NewPing. Устраняет рутинную работу и предоставляет дополнительные функции:

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

Библиотека команд

Чтобы использовать библиотеку, вам необходимо скачать ее отдельно.

Подключение в Arduino IDE

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

После загрузки этого эскиза в дверной монитор будут отображены данные о расстоянии до объекта.

Ответы на часто задаваемые вопросы начинающих:

Почему на дверном мониторе вместо цифр появляются какие-то странные символы?

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

Последовательный запуск (9600);

— 9600 бод (или бит в секунду). В дверном мониторе его можно изменить в правом нижнем углу.

Почему в цикле длина делится на 58? Откуда это число?

Как вы знаете, скорость звука составляет 34 см / мс или 0,034 м / мкс, а расстояние равно произведению времени и скорости. Средства

с = время * 0,034 м / мкс

или

s = время * 1/29 измеренного расстояния (если преобразовать в дробь).

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

с = время * 1/58

Читайте также: Барометр на Ардуино: подключение датчика давления воды

Оцените статью
Блог про Arduino