- Как подключить ультразвуковой датчик к Arduino?
- Компоненты
- Принцип работы датчика
- Подключение ультразвукового датчика к Arduino с помощью TinkerCad Circuits
- Подключение ультразвукового датчика к Ардуино на макетной плате
- Скетч
- Ультразвуковой датчик расстояния и Arduino
- Описание HC-SR04
- Технические характеристики HC-SR04
- Использование библиотеки NewPing
- Необходимые уточнения
- Подключение ультразвукового датчика расстояния к Arduino с использованием 1 пина!
- Ардуино: ультразвуковой дальномер HC-SR04
- Принцип действия
- Ультразвуковой дальномер HC-SR04
- Подключение HC-SR04
- Принципиальная схема устройства
- Внешний вид макета
- Программа
- Задания
- Заключение
Как подключить ультразвуковой датчик к Arduino?
Узнайте, как создать электронную рулетку с помощью ультразвукового датчика HC-SR04 и платы Arduino Uno.
Компоненты
Чтобы подключить ультразвуковой датчик и сделать электронную рулетку нам понадобятся из оборудования:
Вы когда-нибудь видели проект робота в виде устройства, которое имеет пару больших мультяшных глаз, и задавались вопросом, зачем они нужны?
Скорее всего, вы видели ультразвуковой датчик. В этом уроке вы узнаете об ультразвуковом датчике HC-SR04, в том числе о том, как подключить его к Arduino, чтобы создать электронную рулетку.
Принцип работы датчика
Ультразвуковой датчик — это устройство, которое использует ультразвуковые волны для измерения расстояния до объекта. Ультразвуковые датчики, представляющие собой тандемы микрофона и динамика, посылают и принимают сверхвысокочастотные звуковые волны для определения расстояния до объекта или насколько он близко. Сверхвысокочастотные звуковые волны отражаются от объекта.
Рисунок ниже показывает сверхвысокочастотные звуковые волны ультразвукового датчика, отражающиеся от поверхности объекта.
Подключение ультразвукового датчика к Arduino с помощью TinkerCad Circuits
С вашим основным пониманием того, как ультразвуковой датчик работает, теперь вы готовы к подключению устройства к Arduino. Чтобы изучить работу ультразвукового датчика, вы можете построить виртуальную функциональную схему с помощью TinkerCad Circuits.
TinkerCad Circuits является бесплатным онлайн-симулятором схем, который позволяет моделировать различные электрические и электронные схемы, прежде чем соединять их на реальной макетной плате. Вы даже можете протестировать проекты Arduino (в том числе код) с TinkerCad Circuits. Вы можете получить ценные знания в области электроники с помощью экспериментов до принятия решения о создании физической схемы.
На рисунке ниже показан проект функционального ультразвукового датчика Arduino, построенного с помощью TinkerCad Circuits.
Используйте схему ниже в качестве ориентира, если у вас есть макетная плата для экспериментов с ультразвуковым датчиком.
Подключение ультразвукового датчика к Ардуино на макетной плате
Вы можете использовать схему ультразвукового датчика Arduino, созданную в TinkerCad Circuits, или электрическую схему, показанную на рисунке ниже, чтобы создать свое сенсорное устройство.
При использовании 4-контактного ультразвукового датчика нормально закрытый штырь (NC) соединен с землей. Вы можете разместить ультразвуковой датчик, как показано на рисунке, на макетной плате и с помощью перемычек закончить проводку к Arduino.
Ниже схема, которую я создал с помощью 4-проводной перемычки, чтобы соединить ультразвуковой датчик и Arduino.
Четырехпроводной перемычка имеет цветовую кодировку. В таблице ниже показаны соединения проводов между Arduino и ультразвуковым датчиком.
| Arduino | Ультразвуковой датчик |
|---|---|
| 5V | Красный |
| GND | Черный |
| Не подсоединен | Белый |
| D7 | Желтый |
Вы успешно подключили ультразвуковой датчик к Arduino и теперь готовы загрузить скетч в Arduino.
Скетч
Последняя часть проекта — загрузка кода ультразвукового датчика в Arduino. Подключите Arduino к настольному компьютеру или ноутбуку с помощью USB-кабеля. В Arduino IDE, введите код, представленный ниже. Вы также можете загрузить код на жесткий диск вашего настольного компьютера или ноутбука. В IDE, вы можете загрузить код, нажав на горизонтальную стрелку.
Этот эскиз считывает ультразвуковой дальномер PING))) и возвращает расстояние до ближайшего объекта, находящегося в радиусе действия. Для этого он посылает импульс на датчик, чтобы инициировать считывание, а затем прослушивает, чтобы импульс вернулся. Длина возвращаемого импульса пропорциональна расстоянию до объекта от датчика.
- +V подключение PING))) подключено к +5V
- GND-соединение PING))) подключено к заземлению.
- SIG-соединение PING))) подключено к цифровому контакту 7
В IDE сразу видно изменение данных о расстоянии. На рисунке показаны данные примера сессии измерения расстояния.
Поместите небольшую линейку между ультразвуковым датчиком и объектом, от которого вы измеряете расстояние. Насколько точны ваши показания по сравнению с фактическим измеренным расстоянием?
Измерения должны быть очень близки к идентичным, что означает, что вы успешно создали электронную рулетку. С помощью электронной рулетки вы можете замерять расстояние до различных объектов.
Этот код проекта был изначально создан Дэвидом А Меллисом (David A Mellis), модифицирован Томом Игое (Tom Igoe), а позже модифицирован Доном Уилчером (Don Wilcher). Этот пример кода является публичным.
Источник
Ультразвуковой датчик расстояния и Arduino
Статья посвящена ультразвуковому датчику расстояния HC–SR04.
Объясняется принцип его действия, технические характеристики, приведен пример его подключения к Arduino и программы для прошивки микроконтроллера.
Описание HC-SR04
Ультразвуковой датчик расстояния — модуль HC-SR04 использует акустическое излучение для определения расстояния до объекта. Этот бесконтактный датчик обеспечивает высокую точность и стабильность измерений. Диапазон измерений составляет: от 2 см до 400 см. На показания датчика практически не влияют солнечное излучение и электромагнитные шумы. Модуль продается в комплекте с трансмиттером и ресивером.
Технические характеристики HC-SR04
- Напряжение питания: +5В – постоянный ток;
- Сила тока покоя:
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Настройка пинов и максимального расстояния.
unsigned int uS = sonar.ping_cm();
Использование библиотеки NewPing
Ниже приведен пример программы с использованием библиотеки NewPing.
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Настройка пинов и максимального расстояния.
unsigned int uS = sonar.ping_cm();
Необходимые уточнения
Если HC-SR04 не считывает сигнал эхо, выходной сигнал никогда не преобразуется в LOW. Датчики Devantec и Parallax обеспечивают время задержки 36 миллисекунд 28 миллисекунд соответственно. Если вы используете скетч, приведенный выше, программа «зависнет» на 1 секунду. Поэтому желательно указывать параметр задержки.
Датчик HC-SR04 плохо работает при измерении расстояний более 10 футов. Время возврата импульса составляет около 20 миллисекунд, так что рекомендуется в таких случаях выставлять время задержки более 20, напрмер, 25 или 30 миллисекунд.
Можно подключить ультразвуковой датчик расстояния HC-SR04 лишь к одному пину Arduino. Для этого необходимо между пинами Триггера и Эхо установить резистор на 2.2 кОм и подключить к Arduino только пин Триггера.
Подключение ультразвукового датчика расстояния к Arduino с использованием 1 пина!
Схема подключения и скетч для ультразвукового датчика расстояния SRF06 приведены ниже.
// Скетч с библиотекой NewPing, которая может использоваться и для датчика HC-SR04 и для
//приведенного здесь SRF06 и позволяет подключать ульразвуковые датчики
// с помощью одного пина на Arduino. Можно дополнительно подключить конденсатор на 0.1 мкФ к пинам Эхо и Триггер на датчике.
// К Arduino подключается пин Триггер
#define PING_PIN 12 // Пин с Arduino подключен к пинам trigger и echo на ультразвуковом датчике расстояния
#define MAX_DISTANCE 200 // Максимальное расстояние, которое мы контролируем (в сантиметрах). Максимальное расстояние подобных датчиков находится в диапазоне 400-500см.
NewPing sonar(PING_PIN, PING_PIN, MAX_DISTANCE); // Настройка пинов и максимального расстояния
Serial.begin(115200); // Открытие серийного протокола с частотой передачи данных 115200 бит/сек.
delay(50); // Задержка в 50 миллисекунд между генерацией волн. 29 миллисекунд – минимально допустимая задержка.
Источник
Ардуино: ультразвуковой дальномер HC-SR04
Дальномер — это устройство для измерения расстояния до некоторого предмета. Дальномер помогает роботам в разных ситуациях. Простой колесный робот может использовать этот прибор для обнаружения препятствий. Летающий дрон использует дальномер для баражирования над землей на заданной высоте. С помощью дальномера можно даже построить карту помещения, применив специальный алгоритм SLAM.
Принцип действия
На этот раз мы разберем работу одного из самых популярных датчиков — ультразвукового (УЗ) дальномера. Существует много разных модификаций подобных устройств, но все они работают по принципу измерения времени прохождения отраженного звука. То есть датчик отправляет звуковой сигнал в заданном направлении, затем ловит отраженное эхо и вычисляет время полета звука от датчика до препятствия и обратно.
Из школьного курса физики мы знаем, что скорость звука в некоторой среде величина постоянная, но зависящая от плотности среды. Зная скорость звука в воздухе и время полета звука до цели, мы можем рассчитать пройденное звуком расстояние по формуле:
где v — скорость звука в м/с, а t — время в секундах. Скорость звука в воздухе, кстати, равна 340.29 м/с.
Чтобы справиться со своей задачей, дальномер имеет две важные конструктивные особенности. Во-первых, чтобы звук хорошо отражался от препятствий, датчик испускает ультразвук с частотой 40 кГц. Для этого в датчике имеется пьезокерамический излучатель, который способен генерировать звук такой высокой частоты. Во-вторых, излучатель устроен таким образом, что звук распространяется не во все стороны (как это бывает у обычных динамиков), а в узком направлении. На рисунке представлена диаграмма направленности типичного УЗ дальномера.
Как видно на диаграмме, угол обзора самого простого УЗ дальномера составляет примерно 50-60 градусов. Для типичного варианта использования, когда датчик детектирует препятствия перед собой, такой угол обзора вполне пригоден. Ультразвук сможет обнаружить даже ножку стула, тогда как лазерный дальномер, к примеру, может её не заметить.
Если же мы решим сканировать окружающее пространство, вращая дальномер по кругу как радар, УЗ дальномер даст нам очень неточную и шумную картину. Для таких целей лучше использовать как раз лазерный дальномер.
Также следует отметить два серьезных недостатка УЗ дальномера. Первый заключается в том, что поверхности имеющие пористую структуру хорошо поглощают ультразвук, и датчик не может измерить расстояние до них. Например, если мы задумаем измерить расстояние от мультикоптера до поверхности поля с высокой травой, то скорее всего получим очень нечеткие данные. Такие же проблемы нас ждут при измерении дистанции до стены покрытой поролоном.
Второй недостаток связан со скоростью звуковой волны. Эта скорость недостаточно высока, чтобы сделать процесс измерения более частым. Допустим, перед роботом есть препятствие на удалении 4 метра. Чтобы звук слетал туда и обратно, потребуется целых 24 мс. Следует 7 раз отмерить, прежде чем ставить УЗ дальномер на летающих роботов.
Ультразвуковой дальномер HC-SR04
В этом уроке мы будем работать с датчиком HC-SR04 и контроллером Ардуино Уно. Этот популярный дальномер умеет измерять расстояние от 1-2 см до 4-6 метров. При этом, точность измерения составляет 0.5 — 1 см.
Встречаются разные версии одного и того же HC-SR04. Одни работают лучше, другие хуже. Отличить их можно по рисунку платы на обратной стороне. Вот одна из версий:
Подключение HC-SR04
Датчик HC-SR04 имеет четыре вывода. Кроме земли (Gnd) и питания (Vcc) еще есть Trig и Echo. Оба этих вывода цифровые, так что подключаем из к любым выводам Ардуино Уно:
| HC-SR04 | GND | VCC | Trig | Echo |
| Arduino Uno | GND | +5V | 3 | 2 |
Принципиальная схема устройства
Внешний вид макета
Программа
Итак, попробуем приказать датчику отправить зондирующий ультразвуковой импульс, а затем зафиксируем его возвращение. Посмотрим как выглядит временная диаграмма работы HC-SR04.
На диаграмме видно, что для начала измерения нам необходимо сгенерировать на выводе Trig положительный импульс длиной 10 мкс. Вслед за этим, датчик выпустит серию из 8 импульсов и поднимет уровень на выводе Echo, перейдя при этом в режим ожидания отраженного сигнала. Как только дальномер почувствует, что звук вернулся, он завершит положительный импульс на Echo.
Получается, что нам нужно сделать всего две вещи: создать импульс на Trig для начала измерения, и замерить длину импульса на Echo, чтобы потом вычислить дистанцию по нехитрой формуле. Делаем.
Функция pulseIn замеряет длину положительного импульса на ноге echoPin в микросекундах. В программе мы записываем время полета звука в переменную duration. Как мы уже выяснили ранее, нам потребуется умножить время на скорость звука:
s = duration * v = duration * 340 м/с
Переводим скорость звука из м/с в см/мкс:
s = duration * 0.034 cм/мкс
Для удобства преобразуем десятичную дробь в обыкновенную:
s = duration * 1/29 = duration / 29
А теперь вспомним, что звук прошел два искомых расстояния: до цели и обратно. Поделим всё на 2:
s = duration / 58
Теперь мы знаем откуда взялось число 58 в программе!
Загружаем программу на Ардуино Уно и открываем монитор последовательного порта. Попробуем теперь наводить датчик на разные предметы и смотреть в мониторе рассчитанное расстояние.
Задания
Теперь, когда мы умеем вычислять расстояние с помощью дальномера, сделаем несколько полезных устройств.
- Строительный дальномер. Программа каждые 100мс измеряет расстояние с помощью дальномера и выводит результат на символьный ЖК дисплей. Для удобства полученное устройство можно поместить в небольшой корпус и запитать от батареек.
- Ультразвуковая трость. Напишем программу, которая будет «пищать» зуммером с различной частотой, в зависимости от измеренного расстояния. Например, если расстояние до препятствия более трех метров — зуммер издает звук раз в пол секунды. При расстоянии 1 метр — раз в 100мс. Менее 10см — пищит постоянно.
Заключение
Ультразвуковой дальномер — простой в использовании, дешевый и точный датчик, который отлично выполняет свою функцию на тысячах роботов. Как мы выяснили из урока, у датчика есть недостатки, которые следует учитывать при постройке робота. Хорошим решением может стать совместное использование ультразвукового дальномера в паре с лазерным. В таком случае, они будут нивелировать недостатки друг друга.
Источник