norr@manorshi.com         +86-519-89185720
1
Центр новостей

Как использовать ультразвуковой датчик с Arduino?

Просмотры: 164     Автор: Grace Время публикации: 26 июля 2021 г. Происхождение: Сайт

кнопка поделиться Facebook
кнопка поделиться в твиттере
кнопка совместного использования линии
кнопка поделиться в чате
кнопка поделиться в linkedin
кнопка «Поделиться» в Pinterest
кнопка поделиться WhatsApp
кнопка поделиться какао
кнопка поделиться снэпчатом
кнопка поделиться телеграммой
поделиться этой кнопкой обмена

Как использовать ультразвуковой датчик с Arduino: Руководство HC-SR04

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

Модуль излучает ультразвуковые волны частотой 40 кГц через передатчик. Когда звуковая волна встречает объект, она отражается обратно к приемнику. Измеряя время эха и используя скорость звука, Arduino может рассчитать расстояние между датчиком и объектом.

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

HC-SR04 Основные технические параметры

Параметр Ценить
Типичное рабочее напряжение 5 В постоянного тока
Статический рабочий ток Менее 5 мА в некоторых версиях модуля
Рабочая частота Ультразвуковая волна 40 кГц
Расстояние обнаружения Общий диапазон: от 2 см до 400 см; некоторые версии с регулировкой усиления могут поддерживать большую дальность действия.
Угол обнаружения Обычно в пределах 15 градусов; некоторые версии с более высоким коэффициентом усиления могут достигать около 30 градусов.
Точность Примерно до 0,3 см при подходящих условиях испытаний.
Слепая зона Минимальное расстояние измерения около 2 см

HC-SR04 Описание контактов

Ультразвуковой модуль HC-SR04 имеет четыре контакта: VCC, TRIG, ECHO и GND. Arduino отправляет короткий триггерный импульс на вывод TRIG, затем считывает обратный импульс с вывода ECHO.

Контактный разъем HC-SR04 Подключение Ардуино Функция
ВКК Питание ультразвукового модуля.
ТРИГ Цифровой контакт 9 Триггерный вход. Arduino подает импульс длительностью 10 мкс, чтобы начать измерение.
ЭХО Цифровой контакт 10 Эхо-выход. Arduino считывает ширину импульса для расчета расстояния.
Земля Земля Заземляющее соединение.

Распиновка ультразвукового датчика HC-SR04 VCC TRIG ECHO GND

Принцип работы ультразвукового датчика HC-SR04

HC-SR04 работает по принципу измерения времени пролета. Arduino отправляет триггерный сигнал высокого уровня длительностью не менее 10 микросекунд на вывод TRIG. Затем модуль автоматически посылает восемь ультразвуковых импульсов частотой 40 кГц и ожидает отраженного эха.

При обнаружении отраженного ультразвукового сигнала вывод ECHO выдает импульс высокого уровня. Длительность этого импульса равна времени прохождения ультразвуковой волны туда и обратно.

Расстояние = время высокого уровня эха × скорость звука / 2

В коде Arduino общая упрощенная формула:

Расстояние в см = продолжительность × 0,0343/2

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

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

Процесс синхронизации прост: Arduino на короткое время удерживает TRIG на низком уровне, отправляет высокий импульс длительностью 10 мкс, а затем возвращает TRIG на низкий уровень. HC-SR04 посылает ультразвуковой импульс и устанавливает высокий уровень ECHO до тех пор, пока отраженный сигнал не вернется или пока не истечет время измерения.

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

Основы программирования Arduino: функция PulseIn

Функция Arduino PulseIn() используется для измерения того, как долго цифровой вывод остается ВЫСОКИМ или НИЗКИМ. Для HC-SR04 Arduino использует PulseIn(echoPin, HIGH) для считывания ширины импульса высокого уровня с вывода ECHO.

Синтаксис Значение
импульсВход(контакт, значение) Считывает длительность импульса ВЫСОКОГО или НИЗКОГО уровня.
PulseIn(контакт, значение, тайм-аут) Считывает импульс со значением таймаута в микросекундах.

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

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

Как подключить ультразвуковой датчик HC-SR04 к Arduino

Проводка проста. Подключите VCC к 5 В, GND к GND, TRIG к цифровому выходному контакту Arduino и ECHO к цифровому входному контакту Arduino. В следующем примере используется Arduino Uno, TRIG на контакте 9 и ECHO на контакте 10.

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

Код Arduino ультразвукового датчика HC-SR04

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

const int trigPin = 9; const int echoPin = 10; большая продолжительность; плавающее расстояниеCm; void setup() {pinMode(trigPin, OUTPUT);   pinMode(echoPin, INPUT);   Серийный.начало(9600); } void Loop() { digitalWrite(trigPin, LOW);   задержкамикросекунды (2);   digitalWrite(trigPin, ВЫСОКИЙ);   задержкамикросекунды (10);   digitalWrite(trigPin, LOW);   продолжительность = PulseIn(echoPin, HIGH, 30000);   if (duration == 0) { Serial.println('Вне диапазона');   } Еще { distanceCm = продолжительность * 0,0343/2;     Serial.print('Расстояние:');     Serial.print(расстояниеCm);     Serial.println('см');   } Задержка (60); }

Если вы видите значения расстояния на последовательном мониторе, ультразвуковой датчик HC-SR04 и проводка Arduino работают правильно. Затем вы можете использовать данные о расстоянии для обнаружения препятствий, управления движением робота, автоматических дверей, напоминаний о парковке или проектов по уровню жидкости.

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

Как повысить точность измерений HC-SR04

  • Держите измеряемый объект в пределах рекомендуемого диапазона расстояний и за пределами слепой зоны шириной 2 см.

  • Используйте плоскую и твердую поверхность объекта для лучшего отражения ультразвука.

  • Избегайте измерения мягких, угловатых, пористых или звукопоглощающих материалов.

  • Используйте стабильный источник питания 5 В и держите проводку короткой и надежной.

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

  • Усредняйте или медианный фильтр нескольких показаний, чтобы уменьшить шум.

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

Распространенные применения проектов ультразвуковых датчиков Arduino

Приложение Как используется HC-SR04
Робот для обхода препятствий Обнаруживает близлежащие объекты и помогает роботу изменить направление.
Датчик парковки Измеряет расстояние между автомобилем и препятствием.
Обнаружение уровня жидкости Измеряет расстояние от датчика до поверхности жидкости бесконтактно.
Умный мусорный бак Обнаруживает находящуюся рядом руку или предмет и запускает автоматическое открытие крышки.

Краткое содержание

Чтобы использовать ультразвуковой датчик HC-SR04 с Arduino, подключите VCC к 5 В, GND к GND, TRIG к цифровому выходному контакту и ECHO к цифровому входному контакту. Отправьте триггерный импульс длительностью 10 мкс, считайте длительность эхо-сигнала с помощью PulseIn() и рассчитайте расстояние по формуле времени прохождения.

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

Часто задаваемые вопросы об ультразвуковом датчике Arduino HC-SR04

Как ультразвуковой датчик HC-SR04 работает с Arduino?

Arduino отправляет импульс длительностью 10 мкс на вывод TRIG. HC-SR04 излучает восемь ультразвуковых импульсов частотой 40 кГц и устанавливает высокий уровень на выводе ECHO до тех пор, пока отраженный звук не вернется. Arduino измеряет время этого импульса и рассчитывает расстояние.

Какова формула расстояния для проектов Arduino HC-SR04?

Формула: расстояние = продолжительность × скорость звука / 2. В сантиметрах распространенная формула Arduino: расстояниеCm = продолжительность × 0,0343/2, где длительность измеряется в микросекундах.

Почему мы делим результат ультразвукового датчика на 2?

Измеренное время эхо-сигнала представляет собой время прохождения туда и обратно от датчика до объекта и обратно к датчику. Деление на 2 дает расстояние в одну сторону между датчиком и объектом.

Какие контакты Arduino следует использовать для TRIG и ECHO?

Вы можете использовать большинство цифровых выводов Arduino. Во многих примерах TRIG подключается к цифровому контакту 9, а ECHO подключается к цифровому контакту 10. Код должен соответствовать контактам, используемым в вашей проводке.

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

Распространенные причины включают в себя незакрепленную проводку, нестабильное питание 5 В, неправильные номера контактов TRIG или ECHO, отсутствие объекта в радиусе действия, наклонные целевые поверхности, мягкие материалы, заблокированные головки датчиков или отсутствие тайм-аута в функцииpulsIn().

Что такое слепая зона ультразвукового датчика HC-SR04?

Слепая зона — это минимальное расстояние, на котором модуль не может надежно производить измерения. У HC-SR04 слепая зона обычно составляет около 2см. Объекты, расположенные ближе, могут давать нестабильные показания.

Может ли HC-SR04 измерять уровень воды с помощью Arduino?

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

Как сделать показания ультразвукового датчика Arduino более стабильными?

Используйте стабильный источник питания, держите датчик перпендикулярно объекту, избегайте мягких или наклонных поверхностей, добавляйте тайм-аут импульса, снимайте несколько показаний, используйте медианную фильтрацию и допускайте паузу около 60 мс между измерениями.

Содержание