Просмотры: 164 Автор: Grace Время публикации: 26 июля 2021 г. Происхождение: Сайт
Ультразвуковой датчик HC-SR04 — один из самых популярных модулей измерения расстояния для проектов Arduino. Он широко используется в роботах для предотвращения препятствий, датчиках парковки, датчиках уровня, интеллектуальных мусорных баках, измерителях расстояния и других приложениях бесконтактного измерения.
Модуль излучает ультразвуковые волны частотой 40 кГц через передатчик. Когда звуковая волна встречает объект, она отражается обратно к приемнику. Измеряя время эха и используя скорость звука, Arduino может рассчитать расстояние между датчиком и объектом.
| Параметр | Ценить |
| Типичное рабочее напряжение | 5 В постоянного тока |
| Статический рабочий ток | Менее 5 мА в некоторых версиях модуля |
| Рабочая частота | Ультразвуковая волна 40 кГц |
| Расстояние обнаружения | Общий диапазон: от 2 см до 400 см; некоторые версии с регулировкой усиления могут поддерживать большую дальность действия. |
| Угол обнаружения | Обычно в пределах 15 градусов; некоторые версии с более высоким коэффициентом усиления могут достигать около 30 градусов. |
| Точность | Примерно до 0,3 см при подходящих условиях испытаний. |
| Слепая зона | Минимальное расстояние измерения около 2 см |
Ультразвуковой модуль HC-SR04 имеет четыре контакта: VCC, TRIG, ECHO и GND. Arduino отправляет короткий триггерный импульс на вывод TRIG, затем считывает обратный импульс с вывода ECHO.
| Контактный разъем HC-SR04 | Подключение Ардуино | Функция |
| ВКК | 5В | Питание ультразвукового модуля. |
| ТРИГ | Цифровой контакт 9 | Триггерный вход. Arduino подает импульс длительностью 10 мкс, чтобы начать измерение. |
| ЭХО | Цифровой контакт 10 | Эхо-выход. Arduino считывает ширину импульса для расчета расстояния. |
| Земля | Земля | Заземляющее соединение. |
HC-SR04 работает по принципу измерения времени пролета. Arduino отправляет триггерный сигнал высокого уровня длительностью не менее 10 микросекунд на вывод TRIG. Затем модуль автоматически посылает восемь ультразвуковых импульсов частотой 40 кГц и ожидает отраженного эха.
При обнаружении отраженного ультразвукового сигнала вывод ECHO выдает импульс высокого уровня. Длительность этого импульса равна времени прохождения ультразвуковой волны туда и обратно.
Расстояние = время высокого уровня эха × скорость звука / 2
В коде Arduino общая упрощенная формула:
Расстояние в см = продолжительность × 0,0343/2
Процесс синхронизации прост: Arduino на короткое время удерживает TRIG на низком уровне, отправляет высокий импульс длительностью 10 мкс, а затем возвращает TRIG на низкий уровень. HC-SR04 посылает ультразвуковой импульс и устанавливает высокий уровень ECHO до тех пор, пока отраженный сигнал не вернется или пока не истечет время измерения.
Во избежание нестабильных показаний оставляйте небольшую задержку между измерениями. Обычно используется цикл измерения около 60 мс, чтобы предыдущее ультразвуковое эхо успело исчезнуть до следующего запуска.
Функция Arduino PulseIn() используется для измерения того, как долго цифровой вывод остается ВЫСОКИМ или НИЗКИМ. Для HC-SR04 Arduino использует PulseIn(echoPin, HIGH) для считывания ширины импульса высокого уровня с вывода ECHO.
| Синтаксис | Значение |
| импульсВход(контакт, значение) | Считывает длительность импульса ВЫСОКОГО или НИЗКОГО уровня. |
| PulseIn(контакт, значение, тайм-аут) | Считывает импульс со значением таймаута в микросекундах. |
Рекомендуется использовать тайм-аут. Если эхо не возвращается, функция может прекратить ожидание и вернуть 0 вместо слишком долгой блокировки программы.
Проводка проста. Подключите VCC к 5 В, GND к GND, TRIG к цифровому выходному контакту Arduino и ECHO к цифровому входному контакту Arduino. В следующем примере используется Arduino Uno, TRIG на контакте 9 и ECHO на контакте 10.
Следующая типичная программа 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 работают правильно. Затем вы можете использовать данные о расстоянии для обнаружения препятствий, управления движением робота, автоматических дверей, напоминаний о парковке или проектов по уровню жидкости.
Держите измеряемый объект в пределах рекомендуемого диапазона расстояний и за пределами слепой зоны шириной 2 см.
Используйте плоскую и твердую поверхность объекта для лучшего отражения ультразвука.
Избегайте измерения мягких, угловатых, пористых или звукопоглощающих материалов.
Используйте стабильный источник питания 5 В и держите проводку короткой и надежной.
Добавьте тайм-аут вpulsIn(), чтобы предотвратить длительную блокировку, когда эхо не возвращается.
Усредняйте или медианный фильтр нескольких показаний, чтобы уменьшить шум.
Для большей точности компенсируйте температуру, поскольку скорость звука меняется в зависимости от температуры воздуха.
| Приложение | Как используется HC-SR04 |
| Робот для обхода препятствий | Обнаруживает близлежащие объекты и помогает роботу изменить направление. |
| Датчик парковки | Измеряет расстояние между автомобилем и препятствием. |
| Обнаружение уровня жидкости | Измеряет расстояние от датчика до поверхности жидкости бесконтактно. |
| Умный мусорный бак | Обнаруживает находящуюся рядом руку или предмет и запускает автоматическое открытие крышки. |
Чтобы использовать ультразвуковой датчик HC-SR04 с Arduino, подключите VCC к 5 В, GND к GND, TRIG к цифровому выходному контакту и ECHO к цифровому входному контакту. Отправьте триггерный импульс длительностью 10 мкс, считайте длительность эхо-сигнала с помощью PulseIn() и рассчитайте расстояние по формуле времени прохождения.
HC-SR04 недорогой, простой в использовании и подходит для многих проектов измерения расстояний Arduino. Для достижения наилучших результатов обратите внимание на поверхность объекта, угол измерения, слепую зону, стабильную мощность, управление тайм-аутом и температурные эффекты.
Arduino отправляет импульс длительностью 10 мкс на вывод TRIG. HC-SR04 излучает восемь ультразвуковых импульсов частотой 40 кГц и устанавливает высокий уровень на выводе ECHO до тех пор, пока отраженный звук не вернется. Arduino измеряет время этого импульса и рассчитывает расстояние.
Формула: расстояние = продолжительность × скорость звука / 2. В сантиметрах распространенная формула Arduino: расстояниеCm = продолжительность × 0,0343/2, где длительность измеряется в микросекундах.
Измеренное время эхо-сигнала представляет собой время прохождения туда и обратно от датчика до объекта и обратно к датчику. Деление на 2 дает расстояние в одну сторону между датчиком и объектом.
Вы можете использовать большинство цифровых выводов Arduino. Во многих примерах TRIG подключается к цифровому контакту 9, а ECHO подключается к цифровому контакту 10. Код должен соответствовать контактам, используемым в вашей проводке.
Распространенные причины включают в себя незакрепленную проводку, нестабильное питание 5 В, неправильные номера контактов TRIG или ECHO, отсутствие объекта в радиусе действия, наклонные целевые поверхности, мягкие материалы, заблокированные головки датчиков или отсутствие тайм-аута в функцииpulsIn().
Слепая зона — это минимальное расстояние, на котором модуль не может надежно производить измерения. У HC-SR04 слепая зона обычно составляет около 2см. Объекты, расположенные ближе, могут давать нестабильные показания.
Да, HC-SR04 можно использовать для простых бесконтактных измерений уровня воды, если датчик защищен от влаги и установлен над поверхностью жидкости. Для влажных, наружных или промышленных резервуаров рекомендуется использовать водонепроницаемый ультразвуковой датчик.
Используйте стабильный источник питания, держите датчик перпендикулярно объекту, избегайте мягких или наклонных поверхностей, добавляйте тайм-аут импульса, снимайте несколько показаний, используйте медианную фильтрацию и допускайте паузу около 60 мс между измерениями.