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

Схема принципиальная УЗ датчика

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

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

В этом режиме датчик потребляет 2,5 мА при напряжении 5 В и 3,25 мА при 3,3 В.

При снятой перемычке логика работы US-100 ничем не отличается от таковой у HC-SR04 . Как показал опыт автора в данном случае нельзя подключать датчик к 0 и 1 портам Arduino.

В этом режиме датчик потребляет 2,4 мА при 5 В и 1,8 мА при 3,3 В.

Датчик US-100 корректно измеряет расстояние до твердой поверхности. При облучении ультразвуком ворсистой поверхности, рассматриваемый датчик завышает расстояние до препятствия, а в непосредственной близости выдает, что расстояние превышает радиус действия датчика. В целом датчик существенно превосходит HC-SR04 по точности измерения расстояния, кроме этого US-100 может передавать данные по последовательному интерфейсу, имеет более широкий диапазон напряжений питания. Все это по субъективному мнению автора оправдывает заметно более высокую стоимость US-100 по сравнению с HC-SR04.

Инструменты

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

  1. Паяльник. Хорошим выбором станут приборы с регулируемой мощностью, их можно приспособить к любой ситуации.
  2. Проводники. Естественно, датчик необходимо будет подсоединять к МК, и для этого не всегда подходят стандартные пины.
  3. Переходник под usb-порт. Если на вашем микроконтроллере нет встроенного порта, побеспокойтесь о том, чтобы его можно было подключить к ПК другим способом. Ведь вам необходимо будет подгружать дополнительные библиотеки и новую прошивку в ваш проект.
  4. Припой, канифоль и прочие мелочи, в том числе изолированное рабочее пространство.
  5. Сам чип и МК, а также, при необходимости, корпус будущего устройства. Наиболее опытные инженеры предпочитают распечатывать оболочку для своих проектов на 3Д принтере, однако, если вы живёте в крупном городе, не обязательно тратиться. Можете поискать компании, дающие в аренду принтеры.

Стоит понимать, что дальномер Arduino относится к приборам бесконтактного типа и способен обеспечивать точные измерения. Но всё же не стоит забывать, что профессиональные устройства используют совершенно другие технологии и проходят длительную калибровку под все материалы, а соответственно, в любом случае, окажутся лучше. Также у нашего проекта будет ограниченный диапазон измерения расстояний, от 0.03 до 4 метров, что подойдёт не во всех случаях.

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

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

Но если вы захотите в итоге собрать законченное устройство – вам пригодится всё что мы указали выше.

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

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

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

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

Как пользоваться

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

Загрузка и установка

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

  1. Запускаем исполняемый компонент из главной паки.

  1. Выбираем путь распаковки файлов на компьютере и жмем по «Next».

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

  1. Для завершения процесса кликаем по «Finish».

Программное обеспечение в вашем полном распоряжении, осталось лишь разобраться, как им пользоваться.

Инструкция по работе

Благодаря русскоязычному интерфейсу, разобраться с работой в программе будет несложно

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

После этого можно выбрать гравировку и перейти к ее нанесению.

Лазерный гравер с ЧПУ на Arduino

Продолжаем дорабатывать простой станок с ЧПУ на Arduino. Теперь делаем из него лазерный гравер. Механическая часть в плане доработок отсутвует. Потребуется прикрепить радиатор лазера к платформе. Некоторая доработка потребуется для прошивки платы Ардуино, а также для программы управления станком.

TTL-модуляция, подключение драйвера лазера к Ардуино

Внимание! Если для лазерной гравировки вы используете драйверы, построенные по схеме двойной мост, например L298N, то TTL+ надо подключать к АНАЛОГОВОМУ пину 2. На Ардуино UNO и Nano не хватает цифровых пинов

Длина волны и мощность лазера для гравировки

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

Фото 12В лазерного модуля с длиной волны 405нм мощностью 300мв идрайвера с TTL-модуляцией. От драйвера наверх идут две пары проводов. Красный-чёрный — питание 12В, подключены к блоку питания, белый синий — TTL -модуляция, подключены к Arduino к пинам Dout и Gnd соответственно. На обратной стороне драйвера лазерного диода указано, каким образом необходимо подключать входы драйвера

Обратите внимание на то, что лазерный диод установлен внутри радиатора. На радиаторе стоит куллер

Лазерный модуль и драйвер я прикрепил к соответсвующей платформе.

Запуск и настройка

При первом запуске устройства происходит следующее:

  1. Подается импульс на вход Trig.
  2. В самом датчике сигнал преобразуется в 8 импульсов, у которых частота достигает 40 кГц, их он, соответственно, и посылает вперёд.
  3. Доходя до препятствия, импульсы отражаются и возвращаются на приемник, происходят моментальные расчеты в МК, и вся информация подаётся на устройство вывода. В нашем случае – это консоль ПК, но в будущем мы сделаем урок, где данные будут выводиться на LED-экранчик.

При первом запуске мы используем линейку, которая позволит сравнить точность измерений. Запустив устройство, проверьте данные, которые будут выведены в консоли.

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

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

Ну что, приступим! Начнем мы с характеристики дальномера.

Принцип действия датчиков движения

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

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

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

В представленном видео подробно рассказано о датчиках движения, их разновидностях и особенностях работы:

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

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

const int trigPin = 12; const int echoPin = 11;void setup() { pinMode(trigPin, OUTPUT); // триггер — выходной пин pinMode(echoPin, INPUT); // эхо — входной digitalWrite(trigPin, LOW); Serial.begin(9600); // инициализация послед. порта}void loop() { long distance = getDistance(); // получаем дистанцию с датчика Serial.println(distance); // выводим в последовательный порт delay(100);} // Определение дистанции до объекта в смlong getDistance() { long distacne_cm = getEchoTiming() * 1.7 * 0.01; return distacne_cm;} // Определение времени задержкиlong getEchoTiming() { digitalWrite(trigPin, HIGH); // генерируем 10 мкс импульс запуска delayMicroseconds(10); digitalWrite(trigPin, LOW); // определение на пине echoPin длительности уровня HIGH, мкс: long duration = pulseIn(echoPin, HIGH); return duration;} Функция getEchoTiming() генерирует импульс запуска. Она как раз создаёт тот 10-микросекундный импульс, который является триггером для начала излучения дальномером звукового пакета в пространство. Далее она запоминает время от начала передачи звуковой волны до прихода эха.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Датчик HC-SR04 имеет четыре вывода. Кроме земли (Gnd) и питания (Vcc) еще есть Trig и Echo. Оба этих вывода цифровые, так что подключаем из к любым выводам Ардуино Уно:

HC-SR04GNDVCCTrigEcho
Arduino UnoGND+5V32

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

«Датчик HC-SR04 имеет четыре вывода. Кроме земли (Gnd) и питания (Vcc) еще есть Trig и Echo. Оба этих вывода цифровые, так что подключаем из к любым выводам Ардуино Уно:

OLED дисплей 128×64 GND VCC Trig Echo Arduino Uno GND +5V 3 2»

-Что-то здесь не так…..не так-ли?

В точку! Исправлено:)

Просто и понятно все объяснено. Автору большое спасибо.

Автор у Вас опечатка в статье.

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

s = duration * 0.034 м/мкс

В единице измерения допущена неточность. Вы же в см/мкс переводите, а не м/мкс (как у Вас)

всё сделал, но в мониторе порта пишет следующее (x⸮x⸮⸮⸮x⸮x⸮⸮⸮x⸮x⸮⸮⸮x⸮), что делать, как быть?))

Проверьте скорость передачи в мониторе последовательного порта. Она должна совпадать со скоростью в программе. Должно быть: 9600

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

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

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

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

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

УЛЬТРАЗВУКОВОЙ ДАТЧИК Lego Mindstorm EV 3. ЗРИ В КОРЕНЬ

Технические спецификации и особенности продукта:

  • Измерение расстояния в диапазоне от 1 до 250 см
  • Точность измерения до +/- 1 см
  • Передняя подсветка в виде красного кольца горит постоянно при передаче сигнала и мигает при прослушивании эфира
  • Если ультразвуковой сигнал распознан, датчик возвращает логическое значение «Истина»
  • Автоматическая идентификация производится программным обеспечением микрокомпьютера EV3

Рис. 1 Ультразвуковой датчик Lego Mindstorm EV 3 (стоимость вместе с внутренним микроконтроллером и микросхемами усиления сигнала $50, при себестоимости $5)

Рис. 2 Схема ультразвукового датчика Lego Mindstorm EV 3 (ultrasonic sensor hardware schematics) построена на микроконтроллере STM8S103F3

  • Введение в микроконтроллеры stm8
  • Микроконтроллер STM8S103F3
  • Схема центрального микроконтроллера LEGO MINDSTORMS EV3 programmable brick main hardware schematics

Рис. 3 Ультразвуковые излучатель AW8T40 и приемник AW8R40 ультразвукового датчика Lego Mindstorm EV 3

Выбор дальномера для подключения к arduino

Для определения расстояния есть несколько способов – инфракрасный датчик приближения, лазерный дальномер и ультразвуковой дальномер. Возможно, есть еще какие-то варианты, но я их сходу не нашел. Поэтому выбирал из трех вариантов. Датчик приближения был сразу забракован, поскольку он не умеет измерять, а только настраивается на определение конкретных расстояний. Лазерный датчик умеет делать измерения и довольно точно, но стоит он не мало, из-за этого выбор был остановлен на ультразвуковом датчике, который стоит в 8-10 раз дешевле лазерного, а точность измерения отличается не на много.
Очевидно, что выбор пал на более дешевый датчик HC-SR04, который стоит 50 руб и способен измерять расстояние от 2 до 400 см с точностью до 3 мм, а эффективный угол наблюдения 15 градусов.

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

С подключением датчика не должно возникнуть никаких проблем. Достаточно с помощью проводников соединить пин на питание с источником или МК, а ввод и вывод, соответственно, присоединить непосредственно к МК. Воспользуйтесь схемой ниже для сборки схемы:

У самого сенсора SR04 следующие характеристики от которых вам стоит отталкиваться:

  1. Напряжение для питания – 5В.
  2. Работает в цепях с силой тока 15 мА.
  3. Если датчик не используется, то для поддержания его в пассивном состоянии всё ещё требуется до 2 мА.
  4. Угол обзора у модуля небольшой, всего 15 градусов.
  5. Разрешение сенсора – 3 десятых см.
  6. А вот угол для измерений составляет уже приятные 30 градусов.

Также на датчике имеются четыре вывода по стандарту 2.54 мм. В них входит контакт для питания с положительным напряжением +5В, пины для ввода и вывода сигнала и заземление.

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

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

Ультразвуковой датчик HC-SR04 — Ultrasonic Ranging Module HC — SR04 — Ultrasonic Sensor Distance Measuring Module — Sonar

Ультразвуковой дальномер HC SR04 самый известный датчик для применения в Arduino, Raspberry

Pi, ESP8266 и ESP32 модулях. Позволяет измерять расстояние до объекта в диапазоне от 2 до 400 (180) см. Например, если вы хотите собрать робота, который объезжает преграды, то данный дальномер прекрасно подойдет для ваших задач. Датчик имеет небольшие габариты и простой интерфейс. Рис. 4 Внешний вид ультразвукового датчика (сонара, ультразвукового сенсора, ультразвукового модуля) HC-SR04

Скетч ультразвукового дальномера на arduino с помощью HC-SR04 и TM1637

// подключение индикатора TM1637
#include <TM1637.h>
#define CLK 3
#define DIO 2 
TM1637 tm1637(CLK,DIO);

// пины для HC-SR04
int echoPin = 12; 
int trigPin = 11; 

void setup() { 
  Serial.begin (9600); // для вывода в мониторе порта
  pinMode(trigPin, OUTPUT); // пин отправки сигнала
  pinMode(echoPin, INPUT);  // пин приема сигнала

  // инициализация индикатора
  tm1637.init();
  tm1637.set(BRIGHT_TYPICAL);
} 
 
void loop() { 
  int duration, mm; // переменные для хранения расстояния
  // останавливаем отправку сигнала
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2); 
  // отправляем ультрозвуковой сигнал
  digitalWrite(trigPin, HIGH); 
  // ждем 10 микроскунд
  delayMicroseconds(10); 
  // останавливаем отправку сигнала
  digitalWrite(trigPin, LOW); 
  // замеряет длину положительного импульса на пине echoPin
  duration = pulseIn(echoPin, HIGH); 
  // высчитываем расстояние до препядствия
  mm = duration / 5.8;
  // вывод данных в монитор порта
  Serial.print(mm); 
  Serial.println(" mm"); 
  // вывод данных на индикатор
  tm1637.display( mm );
  delay(100);
}

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

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

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

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

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

  • Питающее напряжение 5В;
  • Рабочий параметр силы т ока – 15 мА;
  • Сила тока в пассивном состоянии -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) определяется температура и вносятся поправочные коэффициенты;
  • датчик устанавливается на серводвигатель, с помощью которого мы “поворачиваем голову”, перемещая диаграмму направленности влево или вправо.

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

#define

Trig 8 /* Обозначаем пин подачи импульса*/

#define

Echo 9 /* Обозначаем пин приема импульса*/

void

setup() {

pinMode

(Trig, OUTPUT); /*инициируем как выход */

pinMode

(Echo, INPUT); /*инициируем как вход */

Serial.begin

(9600); /* устанавливаем скорость порта */

}

unsigned int

impulseTime=0;

unsigned int

distance_sm=0;

void

loop() {

digitalWrite

(Trig, HIGH);
/* Подаем импульс на вход trig дальномера */

delayMicroseconds

(10); /* Импульс длится 10 микросекунд */

digitalWrite

(Trig, LOW); // Отключаем подачу импульса

impulseTime=pulseIn

(Echo, HIGH);
/*Принимаем импульс и подсчитываем его длину*/

distance_sm

=impulseTime/58; /* Пересчитываем его значение в сантиметры */

Serial.println(
distance_sm); /* Выводим значение на порт программы */

delay

(200);

}

После того как вы вставили этот код, загрузите его в программу и включите “монитор порта”.
Там вы увидите расстояние от датчика до препятствия, поэкспериментируйте с изменением расстояния объекта.

Вот что должно у вас получиться!

Надеюсь у вас все получилось! Если у вас остались вопросы,
можете написать нам вмакетная плата (breadboard);
персональный компьютер со средой разработки Arduino IDE.

Как подключить ультразвуковой датчик к Ардуино

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • УЗ дальномер HC-SR04;
  • 1 светодиод и резистор 220 Ом;
  • провода «папа-папа» и «папа-мама».

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

Схема подключения указана на рисунке выше. Отметим, что ультразвуковой дальномер HC-SR04 имеет диапазон измерения от 2 см до 400 см, работает при температурах от 0° до 60° С. Точность измерения составляет ± 1 см, рабочее напряжение датчика до 5,5 В. Для начала мы используем простой скетч, без использования библиотеки Ultrasonic. После подключения к Arduino дальномера HC-SR04 загрузите следующий скетч:

Скетч для подключения датчика hc-sr04 к Arduino

int trigPin = 8; // назначаем имя для Pin8
int echoPin = 9; // назначаем имя для Pin9
 
void setup() { 
  Serial.begin (9600); // подключаем монитор порта
  pinMode(trigPin, OUTPUT); // назначаем trigPin (Pin8), как выход
  pinMode(echoPin, INPUT); // назначаем echoPin (Pin9), как вход
} 
 
void loop() { 
  int duration, cm; // назначаем переменную "cm" и "duration" для показаний датчика
  digitalWrite(trigPin, LOW); // изначально датчик не посылает сигнал
  delayMicroseconds(2); // ставим задержку в 2 ммикросекунд

  digitalWrite(trigPin, HIGH); // посылаем сигнал
  delayMicroseconds(10); // ставим задержку в 10 микросекунд
  digitalWrite(trigPin, LOW); // выключаем сигнал

  duration = pulseIn(echoPin, HIGH); // включаем прием сигнала

  cm = duration / 58; // вычисляем расстояние в сантиметрах

  Serial.print(cm); // выводим расстояние в сантиметрах
  Serial.println(" cm");

  delay(1000); // ставим паузу в 1 секунду
}

Пояснения к коду:

  1. для подключения выходов Trig и Echo на датчике сонара Ардуино можно использовать любые цифровые входы на микроконтроллере;
  2. чтобы получить значение датчика в миллиметрах следует использовать следующую формулу для расчета: .

Лазерный гравер на Arduino

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

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

5 Выводы по работе с сонаром HC-SR04

Итак, мы с вами подключили к Arduino ультразвуковой дальномер HC-SR04 и получили с него данные двумя разными способами: с использованием специальной библиотеки и без.

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

Приобрести ультразвуковой дальномер по хорошей цене можно

терморегулятор W1209 DC, Релейный модуль, датчик движения HC-SR501, Модуль Wi-Fi ESP8266-12E, датчик движения HC-SR501, Блок питания, Микросхема контроллера коллекторного электродвигателя, ИК-пульт дистанционного управления, Радиомодуль NRF24L01, OKI 120A2, SD Card Module, Микросхема контроллера коллекторного электродвигателя, Модем M590E GSM GPRS, Часы реального времени DS 3231/DS 1307, Mini 360 на схеме LM2596, L293D, Инфракрасные датчики расстояния, Часы реального времени, HC-SR501, блок питания Mini 360 на схеме LM2596, Контроллер L298N, HC-SR501, GSM GPRS, Модем M590E GSM GPRS, Часы реального времени DS 3231/DS 1307, Модуль Wi-Fi ESP8266-12E, Card Module, Блок питания, Mini 360, L293D, блок питания Mini 360 на схеме LM2596, Радиомодуль, ИК-пульт дистанционного управления, ИК-пульт, Ethernet shield, Микросхема контроллера коллекторного электродвигателя, Микросхема контроллера коллекторного электродвигателя, ИК-пульт дистанционного управления, SD Card Module, Радиомодуль NRF24L01, двигатель OKI, L293D, Шаговый двигатель, Блок питания, L293D, блок питания Mini 360 на схеме LM2596, Карта памяти SD, Ethernet shield, датчик движения HC-SR501, Модуль Wi-Fi ESP8266-12E, Шаговый двигатель OKI 120A2, Шаговый двигатель,

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

  • Vcc — положительный контакт питания.
  • Trig — цифровой вход. Для запуска измерения необходимо подать на этот вход импульс (логическую единицу) длительностью 10 мкс. Следующий импульс рекомендуется подавать не ранее чем через 50 мс. что связано со временем обработки первого импульса.
  • Echo — цифровой выход. После обработки отраженного сигнала, на этот выход будет подан импульс (логическая единица), длительностью пропорциональной расстоянию до объекта.
  • GND — отрицательный контакт питания (земля).
  • Левый ультразвуковой излучатель (маркирован буквой Т — transmiter) это передатчик ультразвукового сигнала, правый ультразвуковой излучатель (маркирован буквой R — resiver) это приемник отраженного от объекта ультразвукового сигнала (эха).

Заключение

Хорошим решением

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

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

Поделитесь в социальных сетях:FacebookXВКонтакте
Напишите комментарий