Как подключить ультразвуковой дальномер HC-SR04 к Arduino. Как правильно настроить и запрограммировать HC-SR04 для измерения расстояния. Какие особенности работы HC-SR04 нужно учитывать. На какие характеристики обратить внимание при выборе HC-SR04.
Что такое ультразвуковой дальномер HC-SR04
Ультразвуковой дальномер HC-SR04 — это популярный и недорогой модуль для измерения расстояния до объектов. Он работает по принципу эхолокации, испуская ультразвуковые импульсы и измеряя время возврата отраженного сигнала.
Основные характеристики HC-SR04:
- Диапазон измерения: 2-400 см
- Точность: до 3 мм
- Угол обзора: 15°
- Рабочее напряжение: 5В
- Частота ультразвука: 40 кГц
HC-SR04 очень прост в использовании с Arduino и другими микроконтроллерами, что делает его отличным выбором для различных проектов по измерению расстояния и обнаружению препятствий.
Подключение HC-SR04 к Arduino
Для подключения HC-SR04 к Arduino потребуется всего 4 провода:
![](/800/600/https/4.bp.blogspot.com/-bekgLsdIBbc/VcZZwjIz-TI/AAAAAAAAAhU/RFwIKdVeqNI/s1600/hc-sr04%2Bwiring.png)
- VCC — питание 5В
- GND — земля
- Trig — выход триггера (подключается к цифровому пину Arduino)
- Echo — вход эхо-сигнала (подключается к цифровому пину Arduino)
Схема подключения:
- VCC HC-SR04 → 5V Arduino
- GND HC-SR04 → GND Arduino
- Trig HC-SR04 → Digital Pin 12 Arduino
- Echo HC-SR04 → Digital Pin 11 Arduino
Убедитесь, что все соединения надежны, иначе это может привести к неточным измерениям или вообще отсутствию сигнала.
Программирование Arduino для работы с HC-SR04
После подключения HC-SR04 к Arduino нужно загрузить соответствующий скетч. Вот простой пример кода для измерения расстояния:
«`cpp const int trigPin = 12; const int echoPin = 11; long duration; int distance; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { // Очищаем trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Устанавливаем trigPin в HIGH на 10 микросекунд digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Считываем echoPin, возвращает время прохождения звуковой волны в микросекундах duration = pulseIn(echoPin, HIGH); // Рассчитываем расстояние distance = duration * 0.034 / 2; // Выводим расстояние в Serial Monitor Serial.print(«Distance: «); Serial.print(distance); Serial.println(» cm»); delay(1000); } «` Этот код инициализирует пины для HC-SR04, отправляет ультразвуковой импульс, измеряет время его возврата и рассчитывает расстояние. Результат выводится в Serial Monitor каждую секунду.![](/800/600/https/iarduino.kz/image/catalog/IMP/blog/sonar/sonar.jpg)
Как работает измерение расстояния с HC-SR04
Процесс измерения расстояния с помощью HC-SR04 состоит из нескольких этапов:
- Arduino посылает 10-микросекундный импульс на Trig пин HC-SR04.
- HC-SR04 отправляет 8 ультразвуковых импульсов частотой 40 кГц.
- Ультразвук отражается от объекта и возвращается к HC-SR04.
- HC-SR04 устанавливает Echo пин в HIGH на время, равное длительности прохождения ультразвука.
- Arduino измеряет длительность сигнала на Echo пине.
- Расстояние рассчитывается по формуле: расстояние = (длительность * скорость звука) / 2.
Важно помнить, что мы делим на 2, так как звук проходит расстояние до объекта и обратно.
Особенности и ограничения HC-SR04
При работе с HC-SR04 следует учитывать некоторые особенности:
- Минимальное измеряемое расстояние — около 2 см. На меньших дистанциях показания могут быть неточными.
- Максимальное расстояние — около 400 см, но на практике стабильные измерения возможны до 200-300 см.
- Угол обзора составляет около 15°, что следует учитывать при размещении датчика.
- Гладкие и твердые поверхности дают лучшее отражение, чем мягкие или неровные.
- Измерения могут быть неточными при сильном ветре или высокой влажности.
Зная эти ограничения, вы сможете более эффективно использовать HC-SR04 в своих проектах.
![](/800/600/https/st03.kakprosto.ru/images/article/2018/6/6/104727_5b1832808b15b5b1832808b195.jpeg)
Применение HC-SR04 в проектах
Ультразвуковой дальномер HC-SR04 можно использовать во множестве интересных проектов:
- Робот, объезжающий препятствия
- Система автоматической парковки
- Охранная сигнализация
- Измеритель уровня жидкости в баке
- Интерактивные арт-инсталляции
Например, для создания простого робота, объезжающего препятствия, можно использовать HC-SR04 в сочетании с двигателями и шасси. Когда датчик обнаруживает препятствие на близком расстоянии, робот может изменить направление движения.
Улучшение точности измерений HC-SR04
Для повышения точности измерений с HC-SR04 можно применить несколько приемов:
- Усреднение нескольких измерений для уменьшения влияния случайных помех.
- Фильтрация выбросов, игнорируя значения, сильно отличающиеся от предыдущих.
- Калибровка датчика с учетом температуры воздуха, влияющей на скорость звука.
- Использование прерываний для более точного измерения времени.
Вот пример кода, реализующего некоторые из этих улучшений:
«`cpp const int trigPin = 12; const int echoPin = 11; const int measurements = 5; // Количество измерений для усреднения long duration; float distance; float temperatures[] = {20, 25, 30, 35}; // Массив температур для калибровки float speedOfSound[] = {343.4, 346.1, 348.8, 351.4}; // Скорость звука при соответствующих температурах void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } float getSpeedOfSound(float temperature) { // Интерполяция скорости звука по температуре for (int i = 0; i < 3; i++) { if (temperature >= temperatures[i] && temperature < temperatures[i+1]) { return speedOfSound[i] + (speedOfSound[i+1] - speedOfSound[i]) * (temperature - temperatures[i]) / (temperatures[i+1] - temperatures[i]); } } return speedOfSound[1]; // Возвращаем среднее значение, если температура вне диапазона } float measureDistance() { float total = 0; for (int i = 0; i < measurements; i++) { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); float currentTemp = 25; // Здесь можно использовать реальное измерение температуры float speedSound = getSpeedOfSound(currentTemp); float currentDistance = duration * speedSound / (2 * 10000); // Расстояние в см if (currentDistance > 400 || currentDistance < 2) { i--; // Повторяем измерение, если результат вне диапазона continue; } total += currentDistance; delay(10); } return total / measurements; } void loop() { distance = measureDistance(); Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm"); delay(1000); } ```![](/800/600/https/www.maxphi.com/wp-content/uploads/2017/08/arduino-ultrasonic-sensor-project-circuit-diagram.png)
Альтернативы HC-SR04
Хотя HC-SR04 является отличным выбором для многих проектов, существуют и альтернативные датчики расстояния:
- Sharp GP2Y0A21YK0F — инфракрасный датчик расстояния с диапазоном 10-80 см
- VL53L0X — лазерный датчик расстояния с диапазоном до 2 м
- US-015 — улучшенная версия HC-SR04 с водонепроницаемым корпусом
- HC-SR05 — похож на HC-SR04, но с увеличенным диапазоном до 450 см
Выбор датчика зависит от конкретных требований проекта, таких как точность, диапазон измерений, условия эксплуатации и бюджет.
Заключение
Ультразвуковой дальномер HC-SR04 — это простой в использовании и недорогой модуль, который отлично подходит для различных проектов на базе Arduino. Понимание принципов его работы и особенностей позволит вам эффективно применять его в своих разработках.
Используя предложенные методы улучшения точности и учитывая ограничения датчика, вы сможете создавать надежные системы измерения расстояния для роботов, систем безопасности и многих других интересных проектов.
Ультразвуковой дальномер HCSR04
Описание
Ультразвуковой дальномер HC SR04 самый известный датчик для применения с различными контроллерами. Позволяет измерять расстояние до объекта в диапазоне от 2 до 400 (180) см. Например, если вы хотите собрать робота, который объезжает преграды, то данный дальномер прекрасно подойдет для ваших задач. Датчик имеет небольшие габариты и простой интерфейс. Характеристики: Напряжение питания: 3,3 — 5 В Потребление в режиме тишины: 2 мА Потребление при работе: 15 мА Максимальная частота опроса датчика: 20 Гц (Период опроса 50 мс) Частота ультразвука: 40 кГц Дальность обзора: 2– 4 м Разрешение (градация выходного сигнала): 0,3 см Эффективный угол наблюдения: 15° Рабочий угол наблюдения: 30° Вес: 8,28 г Размеры: 45 x 20 x 15 мм Схема подключения HC-SR04 к Arduino Подключение ультразвукового датчика расстояния HC-SR04 к Arduino достаточно просто. Схема подключения показана на рисунке.Контакт земли подключаем к выводу GND на плате Arduino, вывод питания соединяем с 5V. Trig и Echo подсоединяем к цифровым пинам платы. Arduino HC-SR04 VCC Vcc 13 Trig 12 Echo GND Gnd Пример скетча Ну а теперь после подключения ультразвуковой дальномера HC-SR04 к Arduino разберемся с программной частью. Для начала мы используем простой скетч, который поможет нам определить расстояние до объекта в сантиметрах без использования библиотек.
Характеристики
Страна производства
Китай
Название модели
model 1
Страна производитель
Цвет
Отсутсвует
Производитель
Shenzhen Electronics Co., Ltd
Отзывы
Отзывов еще никто не оставлял
Написать отзыв
Ультразвуковой дальномер HC-SR04
В вашем проекте необходим простой дальномер с большим диапазоном измеряемых расстояний? Воспользуйтесь ультразвуковым дальномером HC-SR04.
Этот дальномер может служить прекрасным датчиком для робота, благодаря которому он сможет определять расстояния до объектов, объезжать препятствия, или строить карту помещения. Его можно также использовать в качестве датчика для сигнализации, срабатывающего при приближении объектов.
Принцип действия
Ультразвуковой дальномер определяет расстояние до объектов точно так же, как это делают дельфины или летучие мыши. Он генерирует звуковые импульсы на частоте 40 кГц и слушает эхо. По времени распространения звуковой волны туда и обратно можно однозначно определить расстояние до объекта.
В отличие от инфракрасных дальномеров, на показания ультразвукового дальномера не влияют засветки от солнца или цвет объекта. Даже прозрачная поверхность будет для него препятствием. Но могут возникнуть трудности с определением расстояния до пушистых или очень тонких предметов. Поэтому высокотехнологичную котоловку выполнить на нём будет затруднительно.
В отличие от ультразвукового дальномера URM37, этот дальномер не обладает таким большим выбором интерфейсов и режимов работы. Но этот «недостаток» компенсируется простотой работы с ним. Если вы планируете использовать его с Arduino вы можете воспользоваться существующими библиотеками:
- Ultrasonic — самая популярная библиотека для HC-SR04.
- NewPing — отличается большей точностью и скоростью работы.
Подключение к Arduino
Контакты датчика можно соединить с макетной платой или Arduino проводами «мама-папа». А с Troyka Shield через провода «мама-мама».
Распиновка
- Vcc — положительный контакт питания.
- Trig — цифровой вход. Для запуска измерения необходимо подать на этот вход логическую единицу на 10 мкс. Следующее измерение рекомендуется выполнять не ранее чем через 50 мс.
- Echo — цифровой выход. После завершения измерения, на этот выход будет подана логическая единица на время, пропорциональное расстоянию до объекта.
- GND — отрицательный контакт питания.
Характеристики
- Напряжение питания: 5 В
- Потребление в режиме тишины: 2 мА
- Потребление при работе: 15 мА
- Диапазон расстояний: 2–400 см
- Эффективный угол наблюдения: 15°
- Рабочий угол наблюдения: 30°
Датчик HC-SR04 arduino измеряем расстояние до препятствий.
Ультразвуковой датчик HC-SR04
Если вы ищите ультразвуковой модуль для проектов, HC-SR04 хороший выбор. Стабильная производительность и высокая точность в диапазоне делают его популярным модулем на рынке электронных компонентов. Он может измерять расстояния в диапазоне от 2 до 500 см с точностью до 2 мм. Модуль включает в себя ультразвуковой передатчик, приемник и плату управления.
Характеристики
- Источник питания: 5V DC
- Потребляемый ток: <2 мА
- Угол обзора: <15 °
- Измеряемое расстояние: 2 см — 500 см
- Погрешность: 3 мм
- Ультразвуковая частота: 40 КГц
Принцип действия
Принцип метода измерения расстояния заключается в следующем: один из пьезоэлементов(передатчик) излучает ультразвуковой сигнал, а другой пьезоэлемент(приемник) принимает этот же отражённый сигнал от препятствия. Затем замеряется время, которое прошло с момента отправки до момента приема отраженного сигнала. Следующий импульс может быть передан, когда эхо исчезло. Этот период времени называется период цикла. Рекомендованный период цикла должен быть не менее 50 мс. Импульс длительностью 10 мкс дает команду на отправку 8-ми импульсов 40КГц ультразвукового сигнала и детектирование эхо-сигнала обратно. Измеренное расстояние пропорционально длительности импульса на выходе Echo и может быть рассчитана по формуле:
S = Tus/58 см, где
Tus — длительность эхо импульса в микросекундах;
58 — константа.
Также можно не делить , а умножать на коэффициент 0,017. Ардуино умножение выполняет быстрее.
Если никаких препятствий не обнаруживается, то выходной контакт даст сигнал на 38ms высокого уровня.
Описание выводов
1 — Vcc Питание
2 — Trig Вход подачи строба запуска
3 — Echo Вывод для получения ответного импульса
4 — GND Земля.
Схема подключения
Код без использования библиотеки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | const int trigPin = 12; const int echoPin = 11; void setup() { pinMode(trigPin, OUTPUT); // триггер - выходной пин pinMode(echoPin, INPUT); // эхо - входной 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, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); // генерируем импульс запуска delayMicroseconds(10); digitalWrite(trigPin, LOW); // определение на пине echoPin длительности уровня HIGH, мксек: long duration = pulseIn(echoPin, HIGH); return duration; } |
Функция getEchoTiming() генерирует импульс запуска. Создаем импульс 10 мкс на Trig и излучатель дальномера выдает звуковой пакет. Происходит запоминание времени от начала передачи звуковой волны до прихода эха.
Функция getDistance() рассчитывает дистанцию до объекта.
Другой вариант кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #define trigPin 12 //Sensor Echo pin connected to Arduino pin 12 #define echoPin 11 //Sensor Trip pin connected to Arduino pin 11 void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); // инициализация послед. порта } void loop() { long duration, distance; digitalWrite(trigPin, LOW); // Подаем 0 на выход микроконтроллера delayMicroseconds(2); //задержка 2 мкс digitalWrite(trigPin, HIGH); // Подаем сигнал на выход микроконтроллера delayMicroseconds(10); // Удерживаем 10 микросекунд digitalWrite(trigPin, LOW); // Затем убираем duration = pulseIn(echoPin, HIGH); //замеряем время Echo distance = duration/58.2; // пересчитываем в см. Serial.println(distance); // выводим в последовательный порт delay(100); } |
Код с использованием библиотеки Ultrasonic.h:
1 2 3 4 5 6 7 8 9 10 11 12 | #include "Ultrasonic.h" //подключаем библиотеку Ultrasonic ultrasonic(12,11); //trigPin - 12; echoPin - 11; void setup() { Serial.begin(9600); // инициализация послед. порта } void loop() { Serial.println(ultrasonic.Ranging(CM)); Serial.println("cm"); delay(100); } |
Библиотеку берем отсюда:
библиотека Ultrasonic
И самое главное:
Вы научились подключать ультразвуковой дальномер HC-SR04 и замерять дистанцию до препятствий. Теперь необходимо решить, чем может управлять данный датчик.
Рассмотрим это в следующих статьях.
Поворотный радар на основе HC-SR04 и Arduino
Давайте попробуем сделать простой радар используя Arduino, ультразвуковой датчик HC-SR04 (HC-SR05) и сервопривод. Работу скетча можно будет посмотреть в среде разработки Arduino IDE через «Инструменты -> Плоттер по последовательному соединению», либо нажав сочетание клавиш CTRL+Shift+L.
Внимание!!! Этот инструмент появился с версии Arduino IDE 1.6.6
Компоненты:
- Arduino Nano
- HC-SR04 модуль ультразвукового датчика
- Макетная плата
- Соединительные провода
- Клеевой пистолет
- Сервопривод SG90
Схема соединения:
pin Nano | pin HC-SR04 | Сервопривод SG90 |
+5 |
+5 | +5 (красный) |
GND | GND | GND (коричневый) |
D6 | Trig | |
D5 | Echo | |
D9 | SIG (желтый) |
Программный код
Нажмите, что бы увидеть код
#include "Servo.h" //Подключение библиотеки управления сервоприводом int trigPin = 6; int echoPin = 5; long duration; int distance; //переменная для вычисления расстояния Servo servo; //создаем объект типа Servo void setup() { //устанавливает режим работы портов на ардуино // - выход pinMode(trigPin, OUTPUT); // - вход pinMode(echoPin, INPUT); //Определяем скорость передачи по последовательному порту Serial.begin(9600); // Указываем порт для управления сервоприводом servo.attach(9); } void loop() { //Функция поворота сервопривода налево left(); //Функция поворота сервопривода направо right(); } void left() { for (int pos = 0; pos <= 180; pos += 1) { servo.write(pos); Serial.print(pos); Serial.print(" "); distance = echoloop(); Serial.println(distance); delay(50); } } void right() { for (int pos = 180; pos >= 0; pos -= 1) { servo.write(pos); Serial.print(pos); Serial.print(" "); distance = echoloop(); Serial.println(distance); delay(50); } } // функция для определения расстояние до объекта int echoloop() { long duration, cm; // для большей точности установим значение LOW на пине Trig digitalWrite(trigPin, LOW); delayMicroseconds(2); // Теперь установим высокий уровень на пине Trig digitalWrite(trigPin, HIGH); // Ждем 10 милисекунд delayMicroseconds(10); digitalWrite(trigPin, LOW); // Узнаем длительность высокого сигнала на пине Echo duration = pulseIn(echoPin, HIGH); //вычисляем расстояние до объекта cm = duration / 58; return cm; }
Результат
Урок
Arduino — Модуль ультразвукового датчика HC-SR04 «osoyoo.com
Ультразвуковой датчик излучает высокочастотный звуковой импульс, а затем измеряет время, необходимое для отражения эха звука. Датчик имеет 2 отверстия на передней панели. Одно отверстие передает ультразвуковые волны, другое принимает их. В этом уроке мы покажем вам, как работает ультразвуковой датчик HC-SR04 и как использовать его с доской Osoyoo Uno.
АППАРАТНОЕ ОБЕСПЕЧЕНИЕ
- Плата Osoyoo UNO (полностью совместима с Arduino UNO rev.3) х 1 900 10
- Ультразвуковой датчик HC-SR04 x 1
- Джемперы
- Кабель USB x 1
- шт x 1
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
- Arduino IDE (версия 1.6.4+)
- Электропитание: + 5 В постоянного тока
- Ток покоя:
- Рабочий ток: 15 мА
- Эффективный угол:
- Расстояние дальности: 2 см — 400 см / 1 ″ — 13 футов
- Разрешение: 0.3 см
- Угол измерения: 30 градусов
- Ширина входного импульса триггера: 10 мкс
- Размеры: 45 мм x 20 мм x 15 мм
ЧТО ТАКОЕ УЛЬТРАЗВУКОВЫЙ ДАТЧИК?
Ультразвуковой датчик — это устройство, которое может измерять расстояние до объекта с помощью звуковых волн. Он измеряет расстояние, посылая звуковую волну определенной частоты и прислушиваясь к отражению этой звуковой волны. Регистрируя время, прошедшее между генерируемой звуковой волной и отраженной звуковой волной, можно рассчитать расстояние между датчиком сонара и объектом.
ЧТО ТАКОЕ
HC-SR04?Ультразвуковой датчик HC-SR04 использует сонар для определения расстояния до объекта, как это делают летучие мыши. Он предлагает отличное бесконтактное определение дальности с высокой точностью и стабильными показаниями в простом в использовании корпусе. От 2 см до 400 см или от 1 дюйма до 13 футов. На его работу не влияет солнечный свет или черный материал, как на дальномеры Sharp (хотя акустически мягкие материалы, такие как ткань, бывает трудно обнаружить). Поставляется в комплекте с ультразвуковым передатчиком и модулем приемника.
На передней части ультразвукового дальномера находятся два металлических цилиндра. Это преобразователи. Преобразователи преобразуют механические силы в электрические сигналы. В ультразвуковом дальномере есть передающий преобразователь и приемный преобразователь. Передающий преобразователь преобразует электрический сигнал в ультразвуковой импульс, а принимающий преобразователь преобразует отраженный ультразвуковой импульс обратно в электрический сигнал. Если вы посмотрите на заднюю часть дальномера, вы увидите за передающим преобразователем микросхему с маркировкой MAX3232.Это ИС, управляющая передающим преобразователем. За приемным преобразователем находится ИС с маркировкой LM324. Это четырехъядерный операционный усилитель, который усиливает сигнал, генерируемый принимающим преобразователем, в сигнал, достаточно сильный для передачи на Arduino.
СХЕМА ВРЕМЕНИ
Показана временная диаграмма HC-SR04. Чтобы начать измерение, триггер SR04 должен получить импульс высокого (5 В) в течение не менее 10 мкс, это инициирует передачу сенсором 8 циклов ультразвукового пакета с частотой 40 кГц и ожидания отраженного ультразвукового пакета.Когда датчик обнаруживает ультразвуковой сигнал от приемника, он устанавливает для вывода Echo высокий уровень (5 В) и задержку на период (ширину), который пропорционален расстоянию. Чтобы получить расстояние, измерьте ширину (Ton) булавки Echo.
Время = Ширина импульса эха, в нас (микросекунды)
- Расстояние в сантиметрах = Время / 58
- Расстояние в дюймах = Время / 148
Или вы можете использовать скорость звука, поскольку известно, что звук распространяется по воздуху со скоростью около 344 м / с (1129 футов / с), вы можете потратить время, чтобы звуковая волна вернулась, и умножьте ее на 344 метра. (или 1129 футов), чтобы найти полное расстояние прохождения звуковой волны туда и обратно.Круговой обход означает, что звуковая волна прошла вдвое большее расстояние до объекта, прежде чем была обнаружена датчиком; он включает в себя «путешествие» от датчика сонара к объекту И «путешествие» от объекта к ультразвуковому датчику (после того, как звуковая волна отразилась от объекта). Чтобы найти расстояние до объекта, просто разделите расстояние туда и обратно пополам.
Временная переменная — это время, за которое ультразвуковой импульс покидает датчик, отскакивает от объекта и возвращается к датчику.Фактически мы делим это время пополам, поскольку нам нужно только измерить расстояние до объекта, а не расстояние до объекта и обратно до датчика. Переменная скорости — это скорость, с которой звук распространяется по воздуху.
Скорость звука в воздухе зависит от температуры и влажности. Следовательно, чтобы точно рассчитать расстояние, нам необходимо учитывать температуру и влажность окружающей среды. Формула скорости звука в воздухе с учетом температуры и влажности:
Например, при 20 ° C и влажности 50% звук распространяется со скоростью:
ПРИМЕЧАНИЕ
Важно понимать, что некоторые объекты могут не обнаруживаться ультразвуковыми датчиками.Это связано с тем, что некоторые объекты имеют такую форму или расположение, что звуковая волна отражается от объекта, но отклоняется от ультразвукового датчика. Также возможно, что объект будет слишком маленьким, чтобы отразить достаточное количество звуковой волны обратно на датчик, чтобы его можно было обнаружить. Другие объекты могут полностью поглощать звуковую волну (ткань, ковровое покрытие и т. Д.), Что означает, что датчик не может их точно обнаружить. Это важные факторы, которые следует учитывать при проектировании и программировании робота с использованием ультразвукового датчика.
ИСПОЛЬЗОВАНИЕ УЛЬТРАЗВУКОВОГО ДАТЧИКА HC-SR04 РАССТОЯНИЕ СЧИТЫВАНИЯ ОТ ПОСЛЕДОВАТЕЛЬНОГО МОНИТОРА
Мы начнем с простого ультразвукового дальномера, который измеряет выходное расстояние до монитора последовательного порта.
Соединение
Ультразвуковой дальномер HC-SR04 имеет четыре контакта: Vcc, Trig, Echo и GND. Вывод Vcc обеспечивает питание для генерации ультразвуковых импульсов. Вывод GND подключен к земле. Триггерный вывод — это то место, где Arduino отправляет сигнал для запуска ультразвукового импульса.Контакт Echo — это то место, где ультразвуковой дальномер отправляет информацию о продолжительности поездки, совершенной ультразвуковым импульсом, на доску Osoyoo Uno.
Постройте схему, как показано ниже на биграмме:
Код Программа
После завершения вышеуказанных операций подключите плату Arduino к компьютеру с помощью кабеля USB. Зеленый светодиодный индикатор питания (с надписью PWR ) должен загореться. Откройте Arduino IDE и выберите соответствующий тип платы и тип порта для вашего проекта.Затем загрузите следующий скетч на свой Arduino.
#define echoPin 2 #define trigPin 3 void setup () { Серийный . Начало (9600); pinMode (trigPin, ВЫХОД); pinMode (echoPin, ВХОД); } void loop () { длительность плавания, расстояние; digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); duration = pulseIn (echoPin, HIGH); расстояние = (продолжительность / 2) * 0.0344; if (distance> = 400 || distance 2) { Серийный .print ("Distance ="); Серийный .println («Вне допустимого диапазона»); } еще { Серийный .print ("Distance ="); Серийный . Печать (расстояние); Серийный номер .println («см»); задержка (500); } задержка (500); }
Рабочий результат
Через несколько секунд после завершения загрузки откройте Serial Monitor, переместите перегородку, как показано ниже,
Вы увидите расстояние на последовательном мониторе:
Примечание: Получение « вне диапазона» означает, что расстояние от ультразвукового датчика больше или равно 400 см или меньше или равно 2 см.
HC-SR04 пр.
HC-SR04 Проект
Ранее мы выполняли проект по инфракрасному измерению расстояния с модулем GP2D12 от Sharp. Это хорошее решение для внутренних проектов и может обнаруживать объекты до 80 см. Для обнаружения более удаленных объектов мы можем использовать ультразвуковой модуль дальности. Также HC-SR04 дешевле, чем GP2D12. В этом проекте мы собираемся использовать ультразвуковой модуль измерения дальности HC-SR04 с Arduino.
HC-SR04 использует звук вместо света, как это делает модуль GP2D12.HC-SR04 отправляет пинг, как и подводная лодка, и измеряет время между отправкой и получением чего-либо в ответ, когда объект находится перед датчиком. Потому что, используя звук для его измерений, мы можем достигать 4 метров. Размер модуля составляет около 45x20x15 мм, он имеет 4-контактное соединение. Два контакта необходимы для питания модуля напряжением 5 Вольт. Рабочий ток около 15 мА. Один вывод — это сигнал запуска, а последний используется для считывания результата измерений, вывод эхо-сигнала. Угол измерения HC-SR04 составляет 15 градусов.На расстоянии 4 метра это должен быть луч около 1 метра. На расстоянии 1 метра это 26 см, поэтому мы должны помнить об этом при использовании этой информации.
Один пинг HC0SR04 фактически состоит из 8 импульсов на частоте 40 кГц для выполнения измерения. Чтобы запустить эхо-запрос, вам необходимо подать импульс 10 мкс на вход триггера. Когда расстояние измеряется 8 импульсами, HC0SR04 посылает импульс на вывод эхо-сигнала. Вы можете рассчитать расстояние по длине эхо-импульса и скорости звука. Скорость звука — 340 м / с или 2.9 микросекунд на мм. Чтобы получить результат в миллиметрах, нам нужно разделить длину импульса на 2,9. Пинг движется к объекту и снова возвращается к датчику. Из-за этого нам нужно разделить результат на два. Между двумя эхо-запросами нам нужно сохранить цикл измерения 60 мс.
Подключение HC-SR04 к Arduino действительно простое. Просто подключите 5 вольт и землю к внешним контактам. В этом примере триггерный вывод подключен к 8, а вывод эхо-сигнала — к 9 на Arduino.
В реальной жизни это та установка, которую я использовал в своем случае. Остерегайтесь небольших изменений между фотографией и схемой. Я повернул HC-Sr04 на 180 градусов, чтобы он смотрел на край платы.
Исходная статья находится по адресу http://www.swanrobotics.com/HC-SR04_Project.
Arduino Программирование HC-SR04 с прерываниями
Как сделать ультразвуковой эхо-дальномер с Arduino и HC-SR04
Чтобы получить полную информацию о статье и проекте , подпишитесь на HDE Magazine бесплатно.
Вы когда-нибудь задумывались, как они делают датчики парковки, которые вы, кажется, найдете на всех новых автомобилях? Вы знаете, те, которые начинают пищать, когда вы приближаетесь к объекту, которого следует избегать. По мере того, как вы приближаетесь, звуковой сигнал становится все быстрее и быстрее, пока все звуковые сигналы не сливаются в один и … слишком поздно вы его ударили!
Если вы хотите иметь возможность исследовать формы сигналов, создаваемые этим и другими проектами, возьмите копию моей книги: Осциллограф звуковой карты и создайте себе очень способное испытательное оборудование.
Я собираюсь показать вам, как сделать ультразвуковой дальномер или датчик парковки, используя Arduino Uno , модуль ультразвукового дальномера HC-SR04 и какое-то простое программное обеспечение. Чтобы упростить задачу и избежать необходимости покупать дополнительные компоненты, мы будем мигать светодиодом на плате Arduino вместо включения зуммера.
Используйте прерывания, чтобы сделать код лучше и быстрее
В программном скетче, который я вам дам, используются прерывания.Не волнуйтесь, что бы вам ни говорили, ничего страшного в этом нет. Прерывания — это не волшебство, но они могут сделать ваши программы намного лучше, если вы их правильно используете.
Когда я огляделся, я обнаружил, что во всех примерах использования HC-SR04 с Arduino использовались скетчи, которые живут исключительно в основном цикле () скетча. Это нормально, если все, что вы хотите сделать, это доказать, что ультразвуковой модуль работает, но это не очень удобно, если вы ожидаете, что ваше программное обеспечение будет делать что-то умное с информацией с датчика.Помещение всего кода в основной цикл затрудняет планирование ваших измерений и приводит к значительным задержкам в доступном вам времени обработки. Я думал, что буду другим и покажу вам лучший способ использования прерываний.
Если вы хотите узнать больше об использовании прерываний на Arduino, взгляните на этот пример прерывания таймера.
Как работает HC-SR04
Модуль HC-SR04 имеет 4 контакта:
Для работы модуля требуется питание 5 В, поэтому подключите контакт заземления к одному из контактов заземления на Arduino, а VCC — к контакту 5 В на Arduino.Это было просто.
Когда HC-SR04 получает короткий импульс на входе триггера, модуль начинает измерение. Сначала он передает короткий ультразвуковой импульс, а затем прослушивает эхо. Импульс запуска должен быть не менее 10 мкс и доставляться с вывода 2 на Arduino Uno.
Когда HC-SR04 передает ультразвуковой пакет импульсов, напряжение сигнала на выводе Echo становится высоким. Он будет оставаться высоким до 25 мс в зависимости от расстояния от объекта.Если в поле зрения нет объекта, то эхо-сигнал будет оставаться высоким в течение 38 мс. Поэтому все, что вам нужно сделать, это измерить время, в течение которого эхо-сигнал является высоким. Исходя из этого, вместе со скоростью звука, вы можете рассчитать расстояние до объекта.
Вот где, на мой взгляд, большинство примеров использования этого датчика терпят неудачу. Все они полагаются на функцию синхронизации pulseIn () для измерения длительности эхо-импульса. Чтобы сделать это точно в основном цикле, он не может ничего делать до тех пор, пока импульс не завершится, что эффективно тратит до 38 мс на каждое измерение, ожидая изменения состояния вывода.Если вы делаете это 5 раз в секунду, то это 190 мс или 19% времени, потраченного впустую на ожидание изменения сигналов. Вы можете уменьшить эти накладные расходы как минимум в 10 раз, используя прерывания для обработки измерения импульсов.
Вы также можете использовать одно из прерываний таймера на Arduino, чтобы гарантировать, что запланированные измерения выполняются, когда вы хотите, чтобы они выполнялись, независимо от того, что делает код в основном цикле. Этого было бы очень трудно добиться, если бы измерения производились в основном контуре.
Купить ультразвуковой датчик HC SR04 дальномер онлайн в ИНДИИ
Ультразвуковой дальномер HC-SR04 — очень популярный датчик, который используется во многих приложениях, где требуется измерение расстояния и обнаружение объектов.
Модуль имеет две проушины спереди, которые образуют ультразвуковой передатчик и приемник. Ультразвуковой датчик HC-SR04 использует гидролокатор для определения расстояния до объекта, как это делают летучие мыши или дельфины.
Этот модуль ультразвукового датчика представляет собой передатчик, приемник и схему управления в одном корпусе !! Имеет очень удобную и компактную конструкцию. Он предлагает отличную точность диапазона и стабильные показания в удобном корпусе. На его работу не влияют солнечный свет или черный материал, как у дальномеров Sharp (хотя акустически мягкие материалы, такие как ткань, бывает трудно обнаружить).
Выводы Trigger и Echo являются выводами ввода / вывода этого модуля и, следовательно, могут быть подключены к выводам ввода / вывода микроконтроллера / Arduino.Когда приемник обнаруживает обратную волну, вывод Echo переходит в высокий уровень в течение определенного периода времени, который будет равен времени, необходимому для возврата волны обратно к датчику.
Ультразвуковой модуль измерения дальности HC-SR04 обеспечивает возможность бесконтактного измерения расстояния от 2 до 400 см, точность измерения до 3 мм.
Этот ультразвуковой датчик может быть прикреплен к вашему проекту с помощью монтажного кронштейна, поэтому купите его сейчас на Robu.in, у нас есть акриловый монтажный кронштейн очень хорошего качества для этого ультразвукового модуля HC-SR04.
Электропроводка
+ 5В ( положительный )
Триггер ( контроль )
Эхо ( прием )
GND ( отрицательный )
Чтобы узнать больше об ультразвуковом датчике, нажмите здесь
Характеристики:
- Измеряет расстояние в широком диапазоне от 2 см до 400 см
- Стабильная работа
- Точное измерение расстояния
- Высокая плотность
- Малая слепая дистанция
В коплект входит:
1 x HC-SR04-ультразвуковой дальномер
Гарантия 15 днейНа этот товар распространяется стандартная гарантия сроком 15 дней с момента доставки только в отношении производственных дефектов.Эта гарантия предоставляется клиентам Robu в отношении любых производственных дефектов. Возмещение или замена производятся в случае производственных дефектов.
Что аннулирует гарантию:
Если продукт подвергся неправильному использованию, вмешательству, статическому разряду, аварии, повреждению водой или огнем, использованию химикатов, пайке или каким-либо изменениям.
Ультразвуковой дальномерMod HC-SR04 Датчик расстояния — SainSmart.com
ОПИСАНИЕ
Ультразвуковой модуль измерения дальности HC — SR04 обеспечивает функцию бесконтактного измерения от 2 до 400 см, точность измерения может достигать 3 мм.В состав модулей входят ультразвуковые передатчики, приемник и цепь управления. Основной принцип работы:
- Использование триггера ввода-вывода для сигнала высокого уровня не менее 10 мкс,
- Модуль автоматически отправляет восемь сигналов 40 кГц и определяет, есть ли ответный импульсный сигнал.
- ЕСЛИ сигнал возвращается через высокий уровень, время высокой продолжительности выхода IO — это время от отправки ультразвукового сигнала до возврата. Расстояние испытания = (время высокого уровня × скорость звука (340 м / с) / 2
У нас также есть выбор из базового стартового комплекта, стартового комплекта Делюкс, окончательного стартового комплекта, в которых используется этот модуль.
Прямое подключение следующих проводов:
- Питание 5 В
- Импульсный вход запуска
- Эхо-импульсный выход
- 0V Земля
Если вы покупаете ультразвуковой модуль измерения дальности, HC-SR04 — хороший выбор. Его стабильная работа и высокая точность делают его популярным на рынке электроники.
По сравнению с ИК-дальномером Shap, HC-SR04 дешевле.Но у него такая же точность измерения дальности и большая дальность.
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ
- источник питания: 5 В постоянного тока
- ток покоя: <2 мА
- эффективный угол: <15 °
- дальность действия: 2 см — 500 см
- разрешение: 0,3 см
Из модуля 4 контакта: VCC, Trig, Echo, GND. Таким образом, контроллер может использовать очень простой интерфейс для определения диапазона значений. Весь процесс состоит в следующем: потяните триггерный штифт на высокий уровень для импульса более 10 мксек, модуль начнет ранжирование; Завершить ранжирование. Если вы обнаружите объект впереди, вывод эха будет на высоком уровне, и, в зависимости от различного расстояния, потребуется разная продолжительность высокого уровня.Таким образом, мы можем легко рассчитать расстояние:
Расстояние = ((Продолжительность высокого уровня) * (Соник: 340 м / с)) / 2
Наконец, посмотрите на заднюю часть модуля. Все микросхемы в модуле были отполированы, возможно, автор хочет защитить дизайн от плагиата. Но ультразвуковой модуль дальности почти такой же принцип, поэтому нетрудно предположить, что роль чипа… Я уверен, что на нем есть хотя бы один чип 74series; ). Взломать его — не сложная задача, но… он по такой низкой цене, даже дешевле, чем ваша копия.
ДОКУМЕНТ
Учебное пособие по интерфейсу HC-SR04 для ультразвукового датчика Raspberry Pi Ультразвуковые датчики, в частности ультразвуковой датчик HC-SR04, очень популярны среди любителей электроники и часто используются в различных проектах, таких как робот, избегающий препятствий, измерение расстояния, обнаружение приближения и т. Д. В этом проекте мы узнаем об ультразвуковом устройстве HC-SR04 и посмотрим, как подключить его к Raspberry Pi.
Обзор
Ультразвуковой датчик HC-SR04 продается как модуль измерения дальности, поскольку его можно точно использовать для измерения расстояний в диапазоне от 2 см до 400 см с точностью до 3 мм.
Диапазон этого ультразвукового датчика кажется очень небольшим, но его достаточно для приложений, в которых он реализован, например, для обнаружения приближения и предотвращения препятствий.
Я уже использовал этот ультразвуковой датчик в нескольких моих предыдущих проектах, например: ПОРТАТИВНЫЙ УЛЬТРАЗВУКОВОЙ ДИАМЕТР и РОБОТ ДЛЯ ИЗБЕЖАНИЯ ПРЕПЯТСТВИЙ .
Интерфейс ультразвукового датчика Raspberry Pi отличается от взаимодействия светодиодов, кнопок, ЖК-дисплея, двигателей и т. Д. С Raspberry Pi. Это связано с тем, что выходной сигнал ультразвукового датчика HC-SR04 находится на логическом уровне 5 В, тогда как Raspberry Pi работает на логическом уровне 3,3 В.
Краткое описание ультразвуковых датчиков
Если вы ссылаетесь на предыдущие проекты, основанные на модуле ультразвукового датчика, я кратко рассказал о работе модуля. Мы еще раз сделаем небольшую заметку, прежде чем продолжить работу с интерфейсом ультразвукового датчика Raspberry Pi.
Ультразвуковой датчик HC-SR04 (или любой ультразвуковой датчик в этом отношении) работает по принципу, аналогичному принципу RADAR и SONOR, то есть передает сигнал и анализирует цель, улавливая отраженные сигналы.
Как работает ультразвуковой датчик HC-SR04?
Прежде чем приступить к работе с ультразвуковым датчиком, позвольте нам увидеть детали и контакты ультразвукового датчика HC-SR04.
В основном он состоит из трех частей: ультразвукового передатчика, схемы управления и ультразвукового приемника.Что касается контактов датчика HC-SR04, он имеет только четыре контакта, а именно VCC, TRIG (триггер), ECHO (эхо) и GND.
Здесь описан основной принцип ультразвукового датчика. Ультразвуковой передатчик в датчике генерирует ультразвук с частотой 40 кГц. Затем этот сигнал распространяется по воздуху, и если на его пути появляется какое-либо препятствие, сигнал попадает в объект и отскакивает обратно.
Этот отраженный сигнал затем улавливается ультразвуковым приемником. Основываясь на времени прохождения сигнала, вы можете рассчитать расстояние до объекта, так как вы уже знаете скорость звука.
Как рассчитать расстояние?
Теперь мы увидим, как измерить расстояние до объекта с помощью ультразвукового датчика HC-SR04. Чтобы отправить ультразвуковой сигнал 40 кГц, контакт TRIG ультразвукового датчика должен находиться в ВЫСОКОМ состоянии в течение как минимум 10 мкс.
После этого ультразвуковой передатчик передает серию из 8 импульсов ультразвука с частотой 40 кГц. Сразу же цепь управления в датчике изменит состояние вывода ECHO на HIGH. Эти штифты остаются ВЫСОКИМИ до тех пор, пока ультразвук не коснется объекта и не вернется в ультразвуковой приемник.
На основании времени, в течение которого эхо-вывод остается ВЫСОКИМ, вы можете рассчитать расстояние между датчиком и объектом.
Например, если мы вычислили время, для которого ECHO ВЫСОКОЕ, как 588 мкс, то вы можете рассчитать расстояние с помощью скорости звука, которая равна 340 м / с.
Расстояние = Скорость звука / (Время / 2) = 340 м / с / (588 мкСм / 2) = 10 см.
Интерфейс ультразвукового датчика Raspberry Pi
Теперь, когда мы увидели, как работает ультразвуковой датчик HC-SR04, мы приступим к его сопряжению с Raspberry Pi.Перед подключением вы должны обратить внимание на то, что Raspberry Pi работает с логическим напряжением 3,3 В, а ультразвуковой датчик HC-SR04 работает с напряжением 5 В.
Raspberry Pi должен считывать вывод Echo для расчета времени, и, следовательно, соответствующий вывод GPIO на Raspberry Pi должен быть настроен как вход. Итак, перед подключением вывода Echo к Raspberry Pi его необходимо передать преобразователю уровня.
Более подробная информация об этом приведена в части схемотехники.
Принципиальная схемаНа следующем изображении показаны соединения между Raspberry Pi и ультразвуковым датчиком HC-SR04.Эта принципиальная схема сделана с помощью программного обеспечения Fritzing.
Необходимые компоненты
- Raspberry Pi 3 Модель B
- HC-SR04 Ультразвуковой датчик
- Резистор 680 Ом (1/4 Вт)
- Резистор 1,5 кОм (1/4 Вт)
- Соединительные провода
- Макетная мини-плата
- Блок питания
- Компьютер
Схемотехника
Подключите триггер ультразвукового датчика HC-SR04 к физическому контакту 16 i.е. GPIO23 Raspberry Pi. Используйте комбинацию резистора 680 Ом и 1,5 кОм, чтобы преобразовать вывод Echo в логическое значение 3,3 В (приблизительно) и подключить его к физическому выводу 18, то есть GPIO24 Raspberry Pi.
Наконец, обеспечьте подключения + 5V и GND к ультразвуковому датчику от контактов Raspberry Pi.
Код
Следующий скрипт Python используется в ультразвуковом датчике HC-SR04 и интерфейсе Raspberry Pi.
рабочий
Здесь реализован простой проект, в котором мы увидели, как соединить ультразвуковой датчик HC-SR04 с Raspberry Pi.Работа над проектом уже описана в разделе «Как работает ультразвуковой датчик HC-SR04».
На языке Python написана простая вычислительная программа для определения ВЫСОКОГО значения на эхо-выводе и получения эквивалентного расстояния.
Приложения
В этом проекте мы увидели, как подключить ультразвуковой датчик HC-SR04 к Raspberry Pi. Эту настройку можно использовать во многих приложениях, например:
- Объезд препятствий
- Обнаружение сближения
- Измерение расстояния
- Измеритель дальности
Датчик препятствий с использованием Arduino и HCSR04
КомпанияBuildCircuit ранее публиковала проект по модулю ультразвукового дальномера HCSR04.Вы можете ознакомиться со статьей по этой ссылке.
Теперь у нас есть еще одна статья о HCSR04. Это так же просто, как и в предыдущем проекте.
Модуль ультразвукового дальномера HCSR04: HC-SRO4 — это ультразвуковой датчик, который использует сонар для обнаружения объектов на расстоянии от 2 см до 4 метров. Этот датчик широко используется в робототехнике для создания роботов, которые движутся и должны отклоняться от препятствий или избегать их. Вы можете прочитать об этом модуле в этой статье.
Ультразвуковой дальномер можно использовать по-разному в проектах по обнаружению дальности и робототехнике.Он может определять расстояние до препятствий перед мобильным роботом, позволяя маневрировать до того, как произойдет столкновение.
Arduino и ультразвуковой дальномер предоставят вам полный контроль, позволяя планировать наиболее удобный для вашего проекта способ перемещения вашего робота.
В этом проекте используется Arduino UNO R3 и один ультразвуковой датчик HC-SRO4. Датчик HC-SRO4 легко найти и имеет хорошую цену. Вы можете купить его на buildcircuit.net.
Более того, им легко управлять через Arduino, потому что он имеет всего 4 контакта, описанных ниже.
VCC — 5 В (в диапазоне от 4,5 В до 5,5 В)
Триггер — Вход датчика (триггер)
Эхо — Выходной датчик (Эхо)
GND — Земля
Компоненты, необходимые для этого проекта:
Сборка объекта:
Работа с проектом проста. Когда вы приближаетесь к датчику объекта, светодиоды загораются в зависимости от расстояния до объекта. Зеленый светодиод загорается, если вас нет рядом, желтый — если на среднем расстоянии, красный — если близко.Светодиоды расстояния срабатывания программируются, если вы хотите изменить, просто сделайте это в исходном коде проекта.
Первым шагом является установка библиотеки HC-SRO4 для работы вашей программы. Загрузите эту библиотеку на свой компьютер, затем разархивируйте файл. После распаковки на вашем компьютере будет создана папка с именем HCSR04Ultrasonic. Скопируйте эту папку в библиотеки Arduino IDE, и она готова, теперь вы можете использовать ресурсы библиотеки в своих программах.
Теперь соедините компоненты, как показано на схеме ниже.
Подключение:
- Цифровые порты 11, 12 и 13 резисторов подключаются к Arduino, которые в свою очередь подключают ножки положительных светодиодов;
- Катодный вывод светодиода в GND (земля) Arduino;
- вывод VCC ультразвукового датчика HC-SRO4 в Arduino 5V;
- Датчик контакта TRIG Цифровой порт HC-SRO4 на Arduino 6;
- Датчик контакта ECHO HC-SRO4 — цифровой порт 7 Arduino;
- GND pin HC-sensor SRO4 в Arduino GND.
Библиотека датчика SR04 HC-щелкните, чтобы загрузить
Эскиз Arduino: СКАЧАТЬ
Другие изображения экспериментов:
Смотрите вывод (видео на youtube)
Другие сообщения по теме:
Этот проект взят с сайта fritzing.