Hc-sr04 — ультразвуковой датчик, схема подключения к arduino

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

Зачем

Все just-for-fun. Конечная схема является тривиальной и не несет новых технических решений. Автор не является профессиональным конструктором электроники и некоторые решения могут не отвечать принятым стандартам.

Больше оправданий

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

Несмотря на это, автор находит разработку схем на дискретных элементах интересным занятием-пазлом, что-то на уровне лампового звука.

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

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

Задача

Хотим получать устройство, представляющее расстояние в сантиметрах в десятичной системе счисления. Минимальное значение – 1 см, максимальное – 254 см. Для отображения используем 7-сегментный индикатор с 3 знакоместами, для измерения расстояния – модуль ультразвукового датчика HC-SR04 или аналог.

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

Собираем

HC-SR04 – очень популярный, дешевый и неточный ультразвуковой датчик. Кратко о интерфейсе. Датчик имеет две сигнальные линии TRIG (вход) и ECHO (выход).

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

На вход TRIG подаем импульс запуска измерения и через некоторое время получаем положительный импульс на выходе ECHO. Длительность импульса ECHO умноженная на некоторую константу K равна измеренному расстоянию.

Вся задача сводится к измерению длительности импульса в единицах времени K, для чего нам понадобится 8-битный счетчик, который будем тактировать частотой 1/K Гц. Выход счетчика будет отражать расстояние в сантиметрах (в двоичном представлении).

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

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

Выводами СЕ (разрешение счета) и OE (включение выходов) мы управлять не будем. На вход тактирования счетчика CPC подан сигнал CLK0 задающего генератора (~= 58мкс или 17240 Гц).

Нам нужно сбросить счетчик по фронту ECHO и сохранить состояние счетчика в выходной регистр по спаду. Сбросом занимается вывод MRC, а записью в выходной регистр – вывод CPR.

Сброс происходит по низкому уровню, как нам и нужно, а вот запись – по фронту (не по спаду, как хотелось бы). Придется добавить инвертор.

Для уменьшения количества корпусов в качестве инвертора возьмем 74HC00 (4 элемента И-НЕ), далее нам еще понадобятся элементы И-НЕ.

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

Тут сталкиваемся с первой небольшой проблемой. После спада ECHO сигнал на вывод MRC придет чуть быстрее, чем на CPR, так как инвертор вносит некоторую задержку. Состояние счетчика будет сохраняться сразу после сброса, то есть сохранится ноль. Обычно для дополнительной задержки сигала ставят буферы, но мы не будем разбрасываться элементами и внесем задержку с помощью RC цепочки.

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

Выбранный счетчик может считать только до 255, но от датчика может прийти сигнал большей длительности: когда измеренное расстояние более 255 см или если измерение не удалось (в этом случаи датчик намеренно выдает очень длинный импульс).

В таких ситуациях наш счетчик просто переполнится (возможно, не один раз) и затем будет остановлен на каком-то случайном значении.

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

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

По достижению счетчиком значения 255 RCO переходит в низкое состояние отключая тактирование счетчика, что «замораживает» его значение до сброса (следующего измерения). Еще мы тут «случайно» инвертировали сигнал тактирования (с целью не добавлять новый корпус и использовать оставшиеся элементы И-НЕ), в данном случаи это не приведет к проблемам.

Теперь нужно сформировать сигнал TRIG, запускающий измерения. Его период должен быть на несколько порядков больше CLK0(>60мс). Для этого можно использовать отдельный низкочастотный генератор или поставить делитель на сигнал тактирования. Снова стремясь уменьшить количество элементов, пойдем вторым путем.

Возьмём CD4060 – делитель с коэффициентом деления до 214 с двумя встроенными инверторами (на которых мы соберем задающий RC генератор).

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

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

Для запуска измерения подадим сигнал с Q13 (~4 Гц) на TRIG. Частота у него подходящая, а коэффициент заполнения (50%) – нет. Нам не нужен сигнал высокого уровня длительностью в 125мс, нам нужно всего около 0.02-1 мкс. Решим эту проблему еще одной RC цепочкой в режиме high-pass фильтра.

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

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

Запустив схему в таком виде с подключенными к выходу счетчика светодиодами мы уже сможем порадоваться значениям измеренного расстояния… в бинарном виде. Не сильно user-friendly, согласитесь, нужно срочно переводить в десятичную систему счисления. Сделать это можно несколькими способами, все они ужасны (требуют много корпусов), поэтому начинаем читерить (=.

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

Да, да, будет ПЗУ (параллельная EEPROM, в данном случаи). Тут многие могут возразить: «Как же так, без микроконтроллера, а программировать все равно нужно?! Заголовок – клик-бейт!» Что еще будет, когда придется показать, как прошивалась ПЗУ без покупки программатора.

«Программатор»hc-sr04 - ультразвуковой датчик, схема подключения к arduino

В качестве программатора берем ардуину и кучку проводов. Прищурив глаза будем смотреть на ПЗУ как на гигантский декодер адреса и 8192 диода в одном корпусе.

Описание процесса программирования ПЗУ выходит за рамки статьи. Скажу лишь, что с ардуино сделать это довольно просто. Самое неудобное – необходимость формирования двух источников напряжения 14В (для стирания) и 12В (для записи). Скетч «программатора» приведен с файлами проекта в конце статьи.

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

При формировании содержимого ПЗУ, преобразование числа 255 было заменено на вывод трех прочерков «—«, что означает неудачное измерение.

Входов у ПЗУ много, а вот выходов хватит только на одну цифру 7-сегментного индикатора, потому будем использовать динамическую индикацию.

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

Для активации цифры индикатора (в зависимости от кода на A8 и A9) понадобится 2-битный дешифратор с инвертированными выходами (т.к. нам нужно управлять общими катодами индикатора). Сделать дешифратор можно так (четвертый код мы не используем).

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

Теперь осталось подключить наш дешифратор и ПЗУ к делителю частоты, который будет заниматься формированием сигналов для A8, A9 и IN0, IN1, тем самым последовательно перебирая десятичные цифры.

На входы A0-7 подано значение 0b10110000 = 176, CLK4-5 подключены к выходам делителя Q4, Q5.gif по кадрамCLK4-5 = 0b00CLK4-5 = 0b01CLK4-5 = 0b10CLK4-5 = 0b11

Цифры будут переключаться с частотой ~1кГц, поэтому не страшно, что они переключаются не по порядку, глазу это будет не заметно.

Однако, выходы делителя рассчитаны на нагрузку около 1мА, чего недостаточно для управления индикатором (на схеме выше сигнал CLK5 с делителя напрямую подключен к индикатору). Нас тут спас бы еще один инвертор (или буфер) перед CLK5, но мы уже использовали все 4 элемента И-НЕ из 74HC00.

Не добавлять же ради одного элемента еще один корпус. Используем вместо этого свободный выход D7 ПЗУ, запрограммировав его так, чтобы на D7 всегда была инверсия A9. (Можно было бы и без инверсии, просто так сложилось.) Нагрузочная способность выхода ПЗУ достаточна для управления индикатором.

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

Правильно собранное устройство настройки не требу —

Калибровка

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

Сделать это можно так: размещаем датчик напротив ровной стены на известном расстоянии (чем больше, тем лучше точность калибровки). Расстояние выбираем как N+0.5 см, где N – целое.

Далее ищем положение резистора, при котором значение на индикаторе самопроизвольно переключается между N и N+1. (Например, между 127 и 128, если выбранное расстояние – 127.5 см.)

Итог

  • Теоретическая точность измерений +/- 1см, не считая погрешность датчика. На самом деле все еще хуже, т.к. частота генератора плавает.
  • Потребление ~14мА, предполагается питание от «кроны». Даже плохой батарейки должно хватить на 6-8 часов.
  • Схема может измерять не только расстояние, но и другие физические величины. Нужен только преобразователь, который линейно переводит измеряемую величину в длительность сигнала.

Фото

Схема была отлажена на бредборде.

  • Потом решил заказать плату, для эстетического удовольствия.
  • Знаете, как называется, когда берешь первую непроверенную плату и впаиваешь в нее ПЗУ без каретки?
  • Это смелость.

Смелость и слабоумие, конечно.

В процессе переноса схемы с бредборда была допущена ошибка: перепутаны общие катоды двух крайних индикаторов (число 123 отображается как 321). Благо, это было исправлено через перепрошивку ПЗУ. Так что даже не пришлось резать и подпаивать проводки.

Ссылки

Схема/плата в Ki-CAD 5.1 и скетч для Arduino mega 2560, которым прошивалась ПЗУ

— На этом все, спасибо за внимание!

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

  • Магазины Китая
  • BANGGOOD.COM
  • Радиотовары
  • Сделано руками

hc-sr04 - ультразвуковой датчик, схема подключения к arduino Всех приветствую. В этом мини обзорчике, мы посамодельничаем с ультразвуковым модулем измерения расстояния… Сразу извиняюсь, упаковок и распаковок не будет. Сам не люблю их в других обзорах, свои портить не буду. Разве что какой заказ прибудет в экстраординарной упаковке или супер непотребном виде… Возникла идея автоматически включать свет при посещении сортира и так же выключать при покидании оного. Был заказан pir-выключатель для этих целей, а так же pir-датчик отдельно, на всякий… hc-sr04 - ультразвуковой датчик, схема подключения к arduino hc-sr04 - ультразвуковой датчик, схема подключения к arduino Выключатель был установлен в однозначно посещаемом всеми членами семьи помещении и… И оказалось, что плясать лезгинку, при выполнении процедур характерных для посещения сортира, никто не в состоянии, а замирание в привычной позе характерно для всех. Тут и подстерегала бяка. Только задумался о добром и вечном, свет хлоп и выключился, что довольно досадно. Перепробованы все способы регулировок выключателя, но желаемого результата достичь не удалось. Не удалось обмануть себя и физику, подменив необходимый датчик присутствия, на датчик обнаружения. Так что выключатель и неиспользованный pir-датчик были отправлены на длительное хранение до лучших времен, а их место занял…

Комбинированный радар для воротных систем CONDOR, пока никуда не пристроенный.

hc-sr04 - ультразвуковой датчик, схема подключения к arduino Микроволновый блок естественно был отключен, зачем нам подставлять макушку под микроволны. Осталась только ИК матрица. Штука довольна специфическая. Минимальная зона у него размером с помещение. Свет включает и выключает при посещении на ура. Но есть один недостаток. Датчик очень педантичен и любит, чтобы все стояло на своих местах. Передвинул рулончик бумажки или опустил/поднял стульчак, требуется перенастройка. Да и ценник у него не сортирный. Так что поиск решения был продолжен.

На просторах интернета набрел на сайт Электрик и форум с темой о простом автоматическом выключателе света на ультразвуковом датчике.

Тема показалась интересной, тем более изобретать велосипед с прошивкой не надо, автор постарался за нас, за что ему спасибо. Схема есть, прошивки есть. Осталось сделать печатку и получить на выходе полноценный датчик присутствия. Или не получить… посмотрим… Датчик был заказан на banggood'e. Нравится мне этот магазин стабильностью сроков доставки. Безтреком 28-30 дней и заказ у меня. Приехал безтреком в срок. Упаковка для посылок без трека у banggood'а стандартная, мусорный мешок и все… Датчик был упакован в антистатик, что подозреваю и спасло его от почтовых неприятностей. :0) К сожалению мусорный мешок выбросил по пути домой, а антистатик уже дома, так что показать кроме датчика вам нечего, да и сам датчик уже потрепался (ножки выпрямил) в процессе изготовления устройства. ТТХ датчика: — 45*20*23 мм. ДхШхГ (Г — с выпрямленными ножками) — вес — 8,28 грамм — напряжение питания — DC 5V — ток потребления — 15mA — минимальное рабочее расстояние — 2 см. — максимальное рабочее расстояние — 4 метра — угол зоны обнаружения — 15 градусов Кратко. Датчик работает по принципу эха. Один пьезик датчика излучает пакет импульсов с частотой 40 кГц, сигнал отражается от поверхности перед датчиком, отраженный сигнал принимает другой пьезик, блок обработки обрабатывает полученные данные и на выходе выдает импульс длинной пропорциональной расстоянию прохождения УЗ сигнала. Т.е. на выходе мы имеем импульс, длительность которого нам и важна. В изготавливаемом нами автоматическом включателе/выключателе мы сравниваем длительность импульса занесенного в память микроконтроллера, с длительностью нового отраженного импульса. Если длительность нового импульса меньше того что в памяти, микроконтроллер решает, что в зоне обнаружение есть объект и нужно включить нагрузку… Если длинна импульса больше, то ничего не делаем или выключаем нагрузку, если она включена. Далее: Сам датчик. hc-sr04 - ультразвуковой датчик, схема подключения к arduino Маркировка на микросхемах стерта. hc-sr04 - ультразвуковой датчик, схема подключения к arduino

Читайте также:  Датчик скорости ВАЗ 2110: где находится, признаки неисправности

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

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

Здесь ссылка на скачивание того, что я собрал по теме, плюс схема и печатка платки в Diptrace.

Несколько фоток. Подготавливаем платку и шаблон. Фоторезист нанесен. hc-sr04 - ультразвуковой датчик, схема подключения к arduino Засвечиваем, промываем, травим. hc-sr04 - ультразвуковой датчик, схема подключения к arduino Травим, смываем фоторезист. hc-sr04 - ультразвуковой датчик, схема подключения к arduino Наносим маску, засвечиваем шаблон. hc-sr04 - ультразвуковой датчик, схема подключения к arduino Режем платку, сверлим. Сама платка. Собрана схема на ATtiny13. Зачем для тестов такая красивая? Просто она делалась попутно с другой платой, под эл. нагрузку. Почему так бестолково расположены радиоэлементы? По тому что тестовая. Чтобы проверить, рабочее ли устройство в сборе. Не было смысла разводить и компоновать. Припаиваем датчик к платке. Программируем. В результате получаем готовый бескорпусной датчик присутствия с питанием пять вольт, кушающее 30mA, способное обнаруживать посторонние предметы в заранее запрограммированной зоне обнаружения с углом в 15 градусов и расстоянием от 2 сантиметров, до 3,5 метров. При обнаружении включать светодиод. Принцип работы прост. Направляем датчик, куда нам нужно. Нажимаем кнопку. Настроечный светодиод (у меня он красненький) начинает мигать. Мигает он в 3-х режимах: 10% светодиод включен— объект вне зоны действия, нагрузка выключена. 90% светодиод включен— объект в зоне действия, нагрузка включена. 50% светодиод включен— зона обнаружения свободна, идет отсчет 60 или 10 секунд, или одна секунда, в зависимости от прошивки, до выключения, лампа включена. Дальше у вас есть 10 секунд чтобы уйти из зоны обнаружения. Можно ограничить зону. Для этого нужно в момент запоминания настроек встать на границе зоны, тем самым зона будет ограничена. Паспортные минимальные 2 сантиметра я подтверждаю. Если ограничить зону как на фото, то при просовывании пальца между коробкой и датчиком светодиод загорается, убираем палец, гаснет. Если подвинуть коробку на полсантиметра ближе, то свтодиод загорается, устройство настраиваться отказывается. Максимальные 4 метра подтвердить не удалось. Максимальное расстояние которое удалось подтвердить, где устройство уверенно фиксирует человека равно 3.5 метра. На з-х метрах уверенно фиксирует мою руку с коробкой 15х15 сантиметров. Включает нагрузку и не отключает, пока коробку не уберешь. Выводы. — Получившийся датчик присутствия мне понравился. — Простейшая и удобная настройка. — Реально работает. — Дешево и сердито. В общем, вот такое получилось годное устройство на ультразвуковом модуле измерения расстояния HY-SRF05. В недалеком будущем я приспособлю его по месту, только коробку подберу. Теперь можно будет замирать в нужной позе не боясь отключения света.

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

Планирую купить +41 Добавить в избранное Обзор понравился +41 +81

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

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

Самым распространенным датчиком для измерения расстояния в диапазоне от 2 см до 400 см во всевозможных Arduino проектах является ультразвуковой локатор HC-SR04. Этот датчик был приобретен на Ru.aliexpress.com

hc-sr04 - ультразвуковой датчик, схема подключения к arduinoультразвуковой локатор HC-SR04 на Али

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

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

  • Напряжение: 5 В (DC)
  • Рабочий ток: менее 2 mA.
  • Выход сигнал: высокий уровень 5 В, низкий уровень 0 В.
  • Угол: не более 15 градусов.
  • Расстояние обнаружения: 2 — 450 см.
  • Высокая точность: до 0.3 см
  • Вход триггера сигнала: 10 мкс TTL импульс

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

Размер датчика 20 х 40 х 15 мм, масса 8,3 г.

hc-sr04 - ультразвуковой датчик, схема подключения к arduino
hc-sr04 - ультразвуковой датчик, схема подключения к arduinoультразвуковой датчик HC-SR04

Устройство излучает серию ультразвуковых импульсов на частоте 40 кГц [1-3]. Угол зрения датчика составляет около 15 градусов. Для инициализации цикла измерения надо в течении 10 мкс на вход датчика Trig подать высокий логический уровень.

Читайте также:  Датчик детонации: как проверить, где находится, за что отвечает

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

Если препятствие не обнаружено, то длительность импульса составляет 38 мс.

Полезное:  Датчики магнитных полей

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

Для использования датчика вместе с аппаратной платформой Arduino существует специальная библиотека Ultrasonic [4], которая берет на себя все рутинные операции по управлению датчиком и сразу возвращает расстояние в сантиметрах.

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

Тем более, что данная библиотека позволяет работать только с одним датчиком, а зачастую для нормальной ориентации роботу может потребоваться несколько датчиков [5].

hc-sr04 - ультразвуковой датчик, схема подключения к arduinoультразвуковой локатор с Ардуино

Датчику необходимо напряжение питания 5 В, ток потребления составляет 3 мА.

Испытания УЗ детектора

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

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

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

В целом, HC-SR04 отличный недорогой датчик, который может стать основным «зрением» робота в пределах небольшой комнаты, так же его можно применить для измерения уровня жидкости, в системах сигнализации и т.п. Специально для сайта «2 Схемы» — Denev.

  1. https://robocraft.ru/blog/electronics/772.html
  2. https://arduino-kit.ru/userfiles/image/HC-SR04%20_.pdf
  3. https://amperka.ru/product/hc-sr04-ultrasonic-sensor-distance-module

YourDuino.ru

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

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

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

Характеристики:

  • Питание: 5В постоянного тока
  • Рабочий ток: 15мА
  • Рабочая частота: 40Гц
  • Диапазон измерений: 2-400 см.
  • Эффективный угол измерений: 15 градусов
  • Датчик HC-SR04 имеет 4 вывода:
  • Vcc – Питание
  • Trig – Отправка сигнала
  • Echo – Приём сигнала
  • Gnd – “Земля”

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

Подключение к Arduino:

Для подключения датчика нам необходимы:

  • Любая Arduino-совместимая плата
  • Компьютер с установленной средой Arduino IDE.
  • USB кабель для подключения Arduino к персональному компьютеру

В примере мы будем рассматривать подключение при помощи проводов типа папа-мама.

Вывод контроллера HC-SR04
+5V Vcc
12 Trig
13 Echo
GND GND

Принципиальная схема подключения компонентов:

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

Скетч для Arduino:

Для наиболее простого считывания показаний с датчика будем использовать библиотеку* Ultrasonic.h .

Скачать её можно здесь.

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

Пример кода:

#include   Ultrasonic ultrasonic(12, 13); int distance;   void setup() { Serial.begin(9600); }   void loop() { // Pass INC as a parameter to get the distance in inches distance = ultrasonic.read();   Serial.print(«Distance in CM: «); Serial.println(distance); delay(1000); }

Подключаем к arduino четыре сонара HC-SR04

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

В данной статье подробно опишу как подключить несколько таких датчиков с помощью Arduino UNO и получить результат на компьютере с помощью языка python для дальнейшей обработки на более высоком уровне.

Объединение нескольких датчиков расстояния может понадобится для случая, когда необходимо отслеживать наличие препятствий одновременно в разных областях. Согласно спецификации эффективный угол составляет +-15 градусов.

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

Итак, на первом этапе необходимо собрать схему. У меня получилось так, где красный провод — 5 вольт, черный — земля:

hc-sr04 - ультразвуковой датчик, схема подключения к arduino

Arduino UNO и четыре ультразвуковых датчика

На втором этапе напишем код для Arduino. Нам понадобится библиотека для ультразвукового датчика. Подключается библиотека через меню Sketch->Import library…->Add library. Взять библиотеку для HC-SR04 можно здесь. Не забываем указать тип платы и верный порт — в нашем случае «COM3″

#include «Ultrasonic.h»

Ultrasonic us_4(8, 9); // Trig — first, Echo — second
Ultrasonic us_3(6, 7);
Ultrasonic us_2(4, 5);
Ultrasonic us_1(2, 3);

void setup()
{
Serial.begin(9600); // start the serial port
}

void loop()
{
float d_1 = us_1.Ranging(CM); // get distance
float d_2 = us_2.Ranging(CM); // get distance
float d_3 = us_3.Ranging(CM); // get distance
float d_4 = us_4.Ranging(CM); // get distance
Serial.print(d_1);
Serial.print(«cm, «);
Serial.print(d_2);
Serial.print(«cm, «);
Serial.print(d_3);
Serial.print(«cm, «);
Serial.print(d_4);
Serial.println(«cm.»); // print the distance

delay(500); // arbitrary wait time.
}

Уже на данном этапе можно открыть просмотр «сериал порта» в Arduino среде и посмотреть какие расстояния показывают наши датчики. Однако теперь мы попробуем использовать данные с сонаров для дальнейшей обработки на python. Для этого напишем следующий код:

import serial

ser = serial.Serial('COM3')
print ( «connected to: » + ser.portstr )

while True:
print ser.readline()

ser.close()

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

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Adblock
detector
Для любых предложений по сайту: [email protected]