Входное напряжение 5 В постоянного тока, подаётся на выводы Vcc и GND датчика.
Если подать положительный импульс на вход датчика TRIG длительностью 10 мкс, то датчик отправит звуковую волну (8 импульсов на частоте 40 кГц - ультразвук) и установит уровень логической «1» на выходе ECHO. Звуковая волна отразится от препятствия и вернётся на приёмник датчика, после чего он сбросит уровень на выходе ECHO в логический «0» (то же самое датчик сделает, если звуковая волна не вернётся в течении 38 мс.) В результате время наличия логической «1» на выходе ECHO равно времени прохождения ультразвуковой волны от датчика до препятствия и обратно. Зная скорость распространения звуковой волны в воздухе и время наличия логической «1» на выводе ECHO, можно рассчитать расстояние до препятствия.
Расстояние вычисляется умножением скорости на время (в данном случае скорости распространения звуковой волны V , на время ожидания эха Echo ). Но так звуковая волна проходит расстояние от датчика до объекта и обратно, а нам нужно только до объекта, то результат делим на 2:
L = V * Echo / 2
Скорость звука в воздухе , в отличии от скорости света, величина не постоянная и сильно зависит от температуры:
V 2 = γ R T / M
Подставив в формулу известные значения γ , R , M , получим:
V ≈ 20,042 √T
Осталось объединить формулы вычисления V и L , и перевести L из м в см, Echo из с в мкс, T из °К в °C, получим:
L ≈ Echo √(t+273,15) / 1000
iarduino_HC_SR04 и iarduino_HC_SR04_int , синтаксис обеих библиотек одинаков. Они сами рассчитывают все значения и возвращают только расстояние в см. Температура по умолчанию установлена в 23°C, но её можно указывать. Работа с библиотеками и их функции описаны ниже.
Для работы с датчиком, нами разработаны две библиотеки iarduino_HC_SR04 и iarduino_HC_SR04_int , синтаксис обеих библиотек одинаков.
Подробнее про установку библиотеки читайте в нашей .
Из примера видно, что если во время измерений не учитывать температуру воздуха, то можно получить результаты с высокой погрешностью.
Дальномер — это устройство для измерения расстояния до некоторого предмета. Дальномер помогает роботам в разных ситуациях. Простой колесный робот может использовать этот прибор для обнаружения препятствий. Летающий дрон использует дальномер для баражирования над землей на заданной высоте. С помощью дальномера можно даже построить карту помещения, применив специальный алгоритм SLAM.
HC-SR04 | GND | VCC | Trig | Echo |
Arduino Uno | GND | +5V | 3 | 2 |
Добрый день, уважаемые программисты. Сегодня мы переходим к третьему уроку. Мы научимся подключать ультразвуковой дальномер HC-SR04 к Arduino . Разберем принцип работы дальномера , его характеристики и программирование этого устройства.
Ну что, приступим! Начнем мы с характеристики дальномера.
Большим превосходством такого ультразвукового датчика над инфракрасными является то, что на ультразвуковые датчики не влияют источники света или цвет препятствие. Могут возникнуть проблемы с измерением расстояния до тонких или пушистых объектов. Хотелось бы сказать, что скорость звука в воздухе зависит от температуры. Следовательно, погрешность измерения будет меняться от повышения или понижения температуры.
Датчик имеет 4 вывода:
Вам представлена схема подключения ультразвукового датчика к Ардуино. Как вы можете заметить, она очень проста и очень интересна. Но следует не забывать о правильном подключении. Мой совет: никогда не торопитесь подключать прибор потому, что вы больше затратите времени на поиск ошибки в подключении.
Следующим этапом является изучение скетча программы
#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);
}
После того как вы вставили этот код, загрузите его в программу и включите "монитор порта". Там вы увидите расстояние от датчика до препятствия, поэкспериментируйте с изменением расстояния объекта.
Вот что должно у вас получиться!
Новые статьи
В этом эксперименте мы рассмотрим ультразвуковой датчик для измерения расстояния и создадим проект вывода показаний датчика на экран ЖКИ WH1602.
Необходимые компоненты:
Ультразвуковой дальномер HC-SR04 (рис. 23.1) - это помещенные на одну плату приемник и передатчик ультразвукового сигнала. Излучатель генерирует сигнал, который, отразившись от препятствия, попадает на приемник. Измерив время, за которое сигнал проходит до объекта и обратно, можно оценить расстояние. Кроме самих приемника и передатчика, на плате находится еще и необходимая обвязка, чтобы сделать работу с этим датчиком простой и удобной.
Характеристики ультразвукового дальномера HC-SR04:
Измеряемый диапазон - от 2 до 500 см;
. точность - 0,3 см;
. угол обзора - < 15°;
. напряжение питания - 5 В.
Датчик имеет 4 вывода стандарта 2,54 мм:
VCC - питание +5 В;
. Trig (T) - вывод входного сигнала;
. Echo (R) - вывод выходного сигнала;
. GND - земля.
Последовательность действий для получения данных такова:
Подаем импульс продолжительностью 10 мкс на вывод Trig;
. внутри дальномера входной импульс преобразуется в 8 импульсов частотой 40 кГц и посылается вперед через излучатель T;
. дойдя до препятствия, посланные импульсы отражаются и принимаются приемником R, в результате получаем выходной сигнал на выводе Echo;
. непосредственно на стороне контроллера переводим полученный сигнал в расстояние по формуле:
Ширина импульса (мкс) / 58 = дистанция (см);
-- ширина импульса (мкс) / 148 = дистанция (дюйм).
В нашем эксперименте мы создадим звуковую сигнализацию, которая будет включаться при приближении к плате Arduino на расстояние меньше 1 м. Датчик размещен на кронштейне вращающейся сервы и контролирует пространство с углом обзора 180°. Если датчик обнаруживает объект в радиусе 1 м, подается звуковой сигнал на пьзоизлучатель, вращение сервы прекращается. Схема соединения элементов представлена на рис. 23.2.
Рис. 23.2. Схема соединения элементов для звуковой сигнализации
При написании скетча будем использовать библиотеку Servo для работы с сервоприводом и библиотеку Ultrasonic.
Для работы Arduino с датчиком HC-SR04 имеется готовая библиотека - Ultrasonic.
Конструктор Ultrasonic принимает два параметра: номера пинов, к которым подключены выводы Trig и Echo, соответственно:
Ultrasonic ultrasonic(12,13);
Содержимое скетча показано в листинге 23.1.
#include
Порядок подключения:
1. Закрепляем датчик расстояния HC-SR04 на сервоприводе.
2. Подключаем датчик HC-SR04, пьезозуммер и сервопривод к плате Arduino по схеме на рис. 23.2.
3. Загружаем в плату Arduino скетч из листинга 23.1.
4. Наблюдаем за циклическим перемещением сервопривода, при попадании объекта в поле зрения датчика HC-SR04 пьезозуммер издает сигнал, сервопривод останавливается, при исчезновении объекта из поля зрения датчика сервопривод возобновляет движение.
Листинги программ
Всех приветствую.
В этом мини обзорчике, мы посамодельничаем с ультразвуковым модулем измерения расстояния…
Сразу извиняюсь, упаковок и распаковок не будет. Сам не люблю их в других обзорах, свои портить не буду. Разве что какой заказ прибудет в экстраординарной упаковке или супер непотребном виде…
Возникла идея автоматически включать свет при посещении сортира и так же выключать при покидании оного. Был заказан pir-выключатель для этих целей, а так же pir-датчик отдельно, на всякий…
Выключатель был установлен в однозначно посещаемом всеми членами семьи помещении и…
И оказалось, что плясать лезгинку, при выполнении процедур характерных для посещения сортира, никто не в состоянии, а замирание в привычной позе характерно для всех. Тут и подстерегала бяка. Только задумался о добром и вечном, свет хлоп и выключился, что довольно досадно.
Перепробованы все способы регулировок выключателя, но желаемого результата достичь не удалось.
Не удалось обмануть себя и физику, подменив необходимый датчик присутствия, на датчик обнаружения.
Так что выключатель и неиспользованный pir-датчик были отправлены на длительное хранение до лучших времен, а их место занял…
Комбинированный радар для воротных систем , пока никуда не пристроенный.
Микроволновый блок естественно был отключен, зачем нам подставлять макушку под микроволны. Осталась только ИК матрица.
Штука довольна специфическая. Минимальная зона у него размером с помещение. Свет включает и выключает при посещении на ура. Но есть один недостаток. Датчик очень педантичен и любит, чтобы все стояло на своих местах. Передвинул рулончик бумажки или опустил/поднял стульчак, требуется перенастройка. Да и ценник у него не сортирный.
Так что поиск решения был продолжен.
На просторах интернета набрел на сайт и с темой о простом автоматическом выключателе света на ультразвуковом датчике.
Тема показалась интересной, тем более изобретать велосипед с прошивкой не надо, автор постарался за нас, за что ему спасибо.
Схема есть, прошивки есть. Осталось сделать печатку и получить на выходе полноценный датчик присутствия. Или не получить… посмотрим…
Датчик был заказан на banggood"e. Нравится мне этот магазин стабильностью сроков доставки. Безтреком 28-30 дней и заказ у меня.
Приехал безтреком в срок. Упаковка для посылок без трека у banggood"а стандартная, мусорный мешок и все…
Датчик был упакован в антистатик, что подозреваю и спасло его от почтовых неприятностей. :0)
К сожалению мусорный мешок выбросил по пути домой, а антистатик уже дома, так что показать кроме датчика вам нечего, да и сам датчик уже потрепался (ножки выпрямил) в процессе изготовления устройства.
ТТХ датчика:
- 45*20*23 мм. ДхШхГ (Г - с выпрямленными ножками)
- вес - 8,28 грамм
- напряжение питания - DC 5V
- ток потребления - 15mA
- минимальное рабочее расстояние - 2 см.
- максимальное рабочее расстояние - 4 метра
- угол зоны обнаружения - 15 градусов
Кратко.
Датчик работает по принципу эха. Один пьезик датчика излучает пакет импульсов с частотой 40 кГц, сигнал отражается от поверхности перед датчиком, отраженный сигнал принимает другой пьезик, блок обработки обрабатывает полученные данные и на выходе выдает импульс длинной пропорциональной расстоянию прохождения УЗ сигнала.
Т.е. на выходе мы имеем импульс, длительность которого нам и важна.
В изготавливаемом нами автоматическом включателе/выключателе мы сравниваем длительность импульса занесенного в память микроконтроллера, с длительностью нового отраженного импульса. Если длительность нового импульса меньше того что в памяти, микроконтроллер решает, что в зоне обнаружение есть объект и нужно включить нагрузку… Если длинна импульса больше, то ничего не делаем или выключаем нагрузку, если она включена.
Далее:
Сам датчик.
Маркировка на микросхемах стерта.
Быстренько перерисовываем готовую схему в Diptrace, там же рисуем печатку, изготавливаем платку для опытов.
Процесс изготовления спрятал под спойлер, по тому как думаю многих уже притомил процессами.
Один раз я уже показывал, как делаю платки. В этот же раз наделал фоток, жалко выкидывать.
Больше народ процессами мучить не буду, если есть вопросы по платам, пишите пожалуйста в личку.
ссылка на скачивание того, что я собрал по теме, плюс схема и печатка платки в Diptrace.
Несколько фоток.
Подготавливаем платку и шаблон. Фоторезист нанесен.
Засвечиваем, промываем, травим.
Травим, смываем фоторезист.
Наносим маску, засвечиваем шаблон.
Режем платку, сверлим.