Ультразвуковой датчик расстояния hc-sr04. датчики. ардуино
Содержание:
- Область применения ультразвуковых датчиков
- Работа ультразвукового уровнемера
- Принцип работы ультразвукового датчика расстояния
- Исходный код программы
- Особенности датчиков расстояния и перемещения
- Режимы работы ультразвукового датчика
- Работа схемы
- Общие сведения
- Как подключить ультразвуковой датчик к Ардуино
- 3Скетч Arduino для ультразвукового дальномера
- Общая информация об ультразвуковых датчиках
- Краткие выводы
Область применения ультразвуковых датчиков
Эти приборы используются не только для измерений, но и в качестве датчиков обнаружения, то есть, для обнаружения присутствия предметов в поле ультразвука. Таким образом, они могут иметь очень широкое применение в различных отраслях промышленности.
Элементы этого типа обычно используются в качестве датчиков движения, которые зажигают или гасят свет под воздействием движения в поле ультразвука. Точно так же действуют барьеры, применяемые в гаражных залах или на общественных парковках.
В промышленном производстве с их помощью можно контролировать, например, уровень наполнения резервуаров и количество продуктов, находящихся на производственных лентах. Традиционно ультразвуковые датчики также используются для контроля производства печатных плат, которые являются чрезвычайно важным компонентом как простых, так и сложных современных электронных устройств.
Большое количество преимуществ и универсальность этого устройства, делают потенциальный диапазон применения УЗ-датчиков практически неограниченным. Их потенциал в настоящее время не используется в полной мере, но, вероятно, по мере развития технологий он будет увеличиваться.
Работа ультразвукового уровнемера
Ультразвуковой датчик уровня устанавливается на верхнюю часть резервуара и передает импульс вниз. Этот импульс, движущийся со скоростью звука, отражается обратно в передатчик от поверхности жидкости. Передатчик измеряет временную задержку между переданным и принятым эхо-сигналом, а бортовой процессор устройства вычисляет расстояние до поверхности жидкости.
Ультразвуковой датчик уровня выполняет расчеты для преобразования расстояния прохождения волны в меру уровня в резервуаре. Промежуток времени между запуском звуковой очереди и получением обратного эха, прямо пропорционален расстоянию между датчиком и жидкостью в сосуде.
Частотный диапазон ультразвукового уровнемера находится в диапазоне 15–200 кГц. Низкочастотные приборы используются для более сложных применений, таких как большие расстояния и измерения уровня твердого тела, а высокочастотные — для более коротких измерений уровня жидкости.
Для практического применения ультразвукового датчика уровня, необходимо учитывать ряд факторов.
Вот несколько ключевых моментов:
- Скорость звука через среду (обычно воздух), изменяется в зависимости от температуры. Преобразователь может иметь датчик температуры для компенсации изменений рабочей температуры, которые изменяют скорость звука и, следовательно, расчет расстояния, определяющий точное измерение уровня.
- Наличие пены/пыли на поверхности жидкости может выступать в качестве звукопоглощающего материала. В некоторых случаях поглощение может быть достаточным, чтобы исключить использование ультразвукового метода. Для повышения производительности в тех случаях, когда пена/пыль или другие факторы влияют на перемещение волны к поверхности жидкости и от нее, некоторые модели могут иметь направляющую луча, прикрепленную к преобразователю.
- Экстремальная турбулентность жидкости может вызвать колебания в показаниях прибора. Использование регулировки демпфирования в ультразвуковом датчике уровня или задержки отклика, может помочь преодолеть эту проблему. Трансивер обеспечивает демпфирование для управления максимальной скоростью изменения отображаемого уровня материала и флуктуацией выходного сигнала. Демпфирование замедляет скорость отклика дисплея, особенно когда жидкие поверхности находятся в состоянии перемешивания.
Принцип работы ультразвукового датчика расстояния
Ультразвуковой-датчик расстояния измеряет дистанцию, которая отделяет его от препятствия перед ним, с помощью звуковых волн, неслышимых для людей (с частотой более 18 кГц). Датчик издает звук, а затем прослушивает его возвращение, вызванное отскоком от препятствия. Время, затрачиваемое звуком на возвращение, дает информацию об его расстоянии от устройства.
Ультразвуковой датчик расстояния имеет два взаимосвязанных устройства: передатчик и приемник. Передатчик генерирует высокочастотные звуковые волны, а приемник прослушивает эхо, возникающее в результате отражения этих волн от препятствия. Датчик измеряет время, прошедшее с момента генерации сигнала, до получения его отражения. Затем время преобразуется в стандартные единицы расстояния, такие как метры и сантиметры. Длительность импульса пропорциональна расстоянию, пройденному звуком, а диапазон частот звука зависит от конкретного датчика. Например, промышленные ультразвуковые датчики используют частоту от 25 до 500 кГц.
Частота работы устройства обратно пропорциональна заданному диапазону расстояний. Звуковая волна с частотой 50 кГц может обнаруживать объект на расстоянии 10 м и более, а волна с частотой 200 кГц ограничивает максимальное расстояние обнаруживаемых объектов до 1 м., следовательно, волны с более низкими частотами могут использоваться для обнаружения объектов, расположенных на больших расстояниях, а волны с более высокими частотами могут использоваться для обнаружения объектов, расположенных ближе. Типичный дешевый ультразвуковой датчик работает в диапазоне от 30 до 50 кГц.
Исходный код программы
В этом проекте мы использовали библиотеку NewPing.h для ультразвукового датчика, разработанную Tim Eckel. Хотя с ультразвуковым датчиком можно вполне успешно работать и без этой библиотеки, но в виде исключения мы в этом проекте решили использовать ее потому что она имеет много полезных функций для работы с ультразвуковым датчиком и значительно сокращает код программы.
Сначала желательно протестировать работу ультразвукового датчика с помощью примеров из данной библиотеки и лишь затем загружать в плату Arduino код программы для нашего проекта сигнализации.
Переключающий контакт (Trigger pin) датчика подключен к контакту 12 платы Arduino, а Echo pin – к контакту 11 платы Arduino. MAX_DISTANCE обозначает максимальную дистанцию, на котором датчик может обнаруживать препятствие. Оно составляет 500 см (5 м).
Установим скорость последовательного порта (в бодах/с), с которой будут передаваться данные от ультразвукового датчика к плате Arduino.
Контакт 10 конфигурируется для работы на вывод данных и к нему подключен зуммер. Другой контакт зуммера подключен к контакту GND платы Arduino.
В функции void echoCheck() команда sonar.ping_result / US_ROUNDTRIP_CM используется для расчета расстояния от датчика до препятствия. Переменная flag используется чтобы дать сигнал включения зуммера когда препятствие находится на расстоянии менее 50 см от датчика. Вы можете изменить это расстояние на то, которое вам необходимо (будет зависеть от размеров вашей двери).
Работа с ультразвуковым датчиком с помощью библиотеки NewPing.h снабжена подробными комментариями от авторов этой библиотеки. Изучая примеры этой библиотеки вы можете узнать много полезного о работе с ультразвуковым датчиком.
Изначально ультразвуковой датчик предназначен для измерения расстояний, но в этом проекте мы его применили, как вы можете видеть – в качестве охранной системы (сигнализации на дверь). Но его также можно применить и в других нестандартных проектах, например, для измерения уровня воды в баке.
Далее приведен полный текст программы.
Особенности датчиков расстояния и перемещения
Принцип работы ультразвуковых датчиков расстояния и перемещение практически ничем не отличается от выше рассмотренного прибора. Небольшая разница заключается лишь в том, что на выходе присутствует аналоговый сигнал, а не дискретный.
Датчики такого типа используются с целью преобразования линейных показателей расстояния до обнаруженного объекта в электрические сигналы, которые соответствуют стандарту 4-20 мА либо 0-10 Вольт. Точность измерения является не менее 0,5 мм при расстоянии меньше одного метра, а также примерно 1 мм, если расстояние составляет более одного метра.
Датчики с аналоговым выходом и настройкой верхней границы измерений требуют указания верхнего предела измерения расстояния. Это выполняется благодаря шлиц потенциометру, который выведен на корпусе прибора.
Ультразвуковые датчики расстояния и перемещения, имеющие аналоговый выход и свойство запоминания диапазона работ, предусматривает такую особенность, как фиксирование настроек нижнего и верхнего пределов измерений.
Это объясняется наличием некоторой энергозависимой памяти и применением метода программирования оборудования. Для того, чтобы настроить диапазон функционирования, перед датчиком необходимо поместить объект возле первой границы измерения, затем следует нажать кнопку для запоминания и переместить предмет на другую границу, после чего опять нажать на эту кнопку.
Режимы работы ультразвукового датчика
УЗ-прибор может работать в различных режимах. Количество доступных режимов зависит от производителя и программного обеспечения, используемого для управления работой прибора. Но, как правило, у всех устройств они примерно одинаковы.
В режиме непрерывной работы, звуковые волны отправляются циклически, через равные промежутки времени. При обнаружении объекта датчик передает показания на микроконтроллер. В режиме генерации одного импульса, датчик посылает один импульс и делает считывание. Некоторые датчики могут одновременно обнаруживать несколько объектов при работе в этом режиме (при этом каждое считывание записывается в структуру данных).
Стандартно, УЗ-датчики работают в активном режиме — генерируют звук, а затем ждут его отражения. Датчик, работающий в пассивном режиме, не генерирует звук, он прослушивает импульсы, излучаемые другими УЗ-устройствами.
Работа схемы
Схема устройства представлена на следующем рисунке.
На схеме можно видеть, что переключающий контакт (Trigger pin) ультразвукового датчика подсоединен к контакту 12 платы Arduino, а контакт эхо (Echo pin) датчика подсоединен к контакту 11 платы Arduino. Контакт Vcc датчика подсоединен к контакту 5V Arduino, а контакт GND датчика подсоединен к контакту GND Arduino. Один контакт зуммера подключен к контакту GND Arduino, а другой его контакт – к контакту 8 платы Arduino.
Принцип работы рассматриваемого нами устройства очень прост – когда кто-нибудь попадает в радиус действия ультразвукового датчика плата Arduino рассчитывает расстояние до этого объекта и если измеренное расстояние находится в определенном диапазоне, Arduino передает сигнал высокого уровня на зуммер и зуммер начинает подавать сигнал тревоги. Структурная схема проекта представлена на следующем рисунке.
Вы можете проверить работу схемы при помощи помещения какого-нибудь предмета перед ультразвуковым датчиком, более подробно все эти процессы можно посмотреть в видео в конце статьи.
Общие сведения
Ультразвуковой датчик HC-SR04 использует точно такую же технологию, что и летучие мыши (ультразвук). Если не вдаваться в подробности, то описать принцип работы можно, датчик посылает звуковые импульсы частотой 40 кГц и прослушивает эхо. В отличии от других датчиков, HC-SR04 не реагирует на солнечный свет или черные предметы, но может давать ложные показания от ткани или тонких предметов.
На передней части HC-SR04 расположено два ультрозвуковых датчика, первый с надписью T (Transmiter) — это передатчик ультрозвуковых волн (TCT40-16T), а второй с надписью R (Receive) — это приемник отраженных ультрозвуковых волн (TCT40-16R), по центру расположен выводной кварцевый генератор на 27 МГц.
С другой стороны датчика HC-SR04, расположена электрическая обвязка, в которой выделяется три основных микросхема и электрическая обвязка. Для взаимодействия с контроллером Arduino установлен четырех выводной разъем, назначение контактов можно посмотреть ниже.
Назначение контактов:
► VCC: «+» питание модуля
► Trig : вход триггера
► Echo: выход, эхо.
► GND: «-» питание модуля
Как подключить ультразвуковой датчик к Ардуино
Для занятия нам понадобятся следующие детали:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- УЗ дальномер HC-SR04;
- 1 светодиод и резистор 220 Ом;
- провода «папа-папа» и «папа-мама».
Схема подключения ультразвукового датчика к Arduino Uno
Схема подключения указана на рисунке выше. Отметим, что ультразвуковой дальномер HC-SR04 имеет диапазон измерения от 2 см до 400 см, работает при температурах от 0° до 60° С. Точность измерения составляет ± 1 см, рабочее напряжение датчика до 5,5 В. Для начала мы используем простой скетч, без использования библиотеки Ultrasonic. После подключения к Arduino дальномера HC-SR04 загрузите следующий скетч:
Скетч для подключения датчика hc-sr04 к Arduino
int trigPin = 8; // назначаем имя для Pin8 int echoPin = 9; // назначаем имя для Pin9 void setup() { Serial.begin (9600); // подключаем монитор порта pinMode(trigPin, OUTPUT); // назначаем trigPin (Pin8), как выход pinMode(echoPin, INPUT); // назначаем echoPin (Pin9), как вход } void loop() { int duration, cm; // назначаем переменную "cm" и "duration" для показаний датчика digitalWrite(trigPin, LOW); // изначально датчик не посылает сигнал delayMicroseconds(2); // ставим задержку в 2 ммикросекунд digitalWrite(trigPin, HIGH); // посылаем сигнал delayMicroseconds(10); // ставим задержку в 10 микросекунд digitalWrite(trigPin, LOW); // выключаем сигнал duration = pulseIn(echoPin, HIGH); // включаем прием сигнала cm = duration / 58; // вычисляем расстояние в сантиметрах Serial.print(cm); // выводим расстояние в сантиметрах Serial.println(" cm"); delay(1000); // ставим паузу в 1 секунду }
Пояснения к коду:
- для подключения выходов Trig и Echo на датчике можно использовать любые цифровые входы на Ардуино;
- чтобы получить значение датчика в миллиметрах следует использовать следующую формулу для расчета: .
3Скетч Arduino для ультразвукового дальномера
Напишем скетч для нашего дальномера:
const int trigPin = 6; // вывод триггера датчика HC-SR04 const int echoPin = 5; // вывод приёмника датчика HC-SR04 #include <LiquidCrystal.h> // подключаем стандартную библиотеку LiquidCrystal lcd(12, 11, 10, 9, 8, 7); //инициализация ЖКИ void setup() { pinMode(trigPin, OUTPUT); // триггер - выходной пин pinMode(echoPin, INPUT); // эхо - входной digitalWrite(trigPin, LOW); lcd.begin(16, 2); //задаём кол-во строк и символов в строке lcd.setCursor(10, 0); // выравниваем надпись по правому краю lcd.print("Dist:"); lcd.setCursor(14, 1); lcd.print("cm"); } void loop() { long distance = getDistance(); // получаем дистанцию с датчика lcd.setCursor(10, 1); lcd.print(" "); // очищаем ЖКИ от предыдущего значения lcd.setCursor(10, 1); lcd.print((String)distance); // выводим новую дистанцию delay(100); } // Определение дистанции до объекта в см long getDistance() { long distacne_cm = getEchoTiming() * 1.7 * 0.01; return distacne_cm; } // Определение времени задержки long getEchoTiming() { digitalWrite(trigPin, HIGH); // генерируем импульс запуска delayMicroseconds(10); digitalWrite(trigPin, LOW); // определение на пине echoPin длительности уровня HIGH, мкс: long duration = pulseIn(echoPin, HIGH); return duration; }
Тут всё просто. Сначала инициализируем ЖКИ на выводах 12, 11, 10, 9, 8 и 7 с помощью библиотеки LiquidCrystal из состава Arduino IDE. Далее привяжем выводы «триггер» и «эхо» дальномера к выводам 6 и 5 платы Arduino. Каждые 100 мс будем запрашивать с детектора расстояние с помощью функции getDistance() и выводить на ЖК-дисплей.
У меня на LCD дисплее имеется дефект, и его левая половина почти не работает. Поэтому я вывожу надписи выровненными по правому краю.
После того как записали скетч в память Arduino, можем собирать прибор. Предлагаемая мной компоновка внутренностей показана на рисунке. Дисплей и датчик я закрепил с помощью термоклея. Он держит достаточно прочно, но при этом даёт возможность снять соединённые детали, если понадобится. Желательно всё разместить так, чтобы можно было подключиться к USB порту Arduino и поправить «прошивку» при необходимости. Например, изменить выводимый текст или поправить коэффициенты для расчёта дистанции. Может понадобиться менять контрастность ЖК дисплея, так что также желательно иметь в доступности регулятор потенциометра.
Вариант готового прибора показан на фотографии. Он достаточно компактен и удобен в использовании.
Вариант компоновки ультразвукового дальномера | Внешний вид готового ультразвукового дальномера |
Но следует иметь в виду несколько важных замечаний при его использовании:
- Ультразвук лучше отражается от гладких поверхностей, чем от поглощающих (например, мягкого ковра). Поэтому следует выбирать место расположения дальномера при измерении так, чтобы напротив дальномера располагалась гладкая отражающая поверхность (например, стена).
- Показания прибора могут существенно отличаться в зависимости от угла направления на цель. Поэтому лучше всего провести несколько измерений, немного изменяя угол направления на цель, и взять среднее значение от всех измерений.
Общая информация об ультразвуковых датчиках
Прежде чем разбирать принцип работы конкретных устройств, стоит рассмотреть все аспекты работы ультразвукового датчика.
Принцип работы
Работа ультразвукового датчика заключается в том, что передатчик посылает ультразвуковую волну с частотой от нескольких десятков до нескольких сотен герц, направленную к определенному объекту. Когда волна встречает объект, она отражается от него и возвращается, попадая в приёмник. По времени, в течение которого волна преодолела путь, можно определить расстояние от объекта. В зависимости от типа устройства, это расстояние может варьироваться от нескольких сантиметров до 10 метров.
Генерируемое отражение принимается и преобразуется в электрический сигнал пьезоэлектрическим преобразователем. Прибор измеряет задержку между излучаемым ультразвуковым импульсом и полученным отражением, вычисляя расстояние до объекта, используя значение скорости звука. При комнатной температуре скорость распространения звука в воздухе составляет около 344 м/с.
Самоочищение ультразвукового датчика
В настоящее время, благодаря использованию передовых технологий, ультразвуковое устройство может действовать как датчик приближения, и как аналоговый измеритель расстояния. Большим преимуществом таких детекторов является то, что на их работу не влияют внешние условия окружающей среды, такие как туман, пыль, загрязнение воздуха. Кроме того, датчики также работают с прозрачными объектами, которые создают сильные отражения. Уникальная способность УЗ-устройства, заключается в том, что у них есть функция самоочищения, которой нет ни у каких других датчиков. Это связано с тем, что при передаче ультразвуковых волн, прибор сам настраивается на вибрацию (под воздействием высокочастотных звуков) и таким образом очищается от пыли и других загрязнений.
Диапазон измерения
Точность работы в первую очередь обусловлена диапазоном измерения. Прибор определяет интервал, при этом учитывая все значения, для измерения которых данное устройство предназначено. Основной принцип заключается в том, что измерения всегда более точны в среднем диапазоне, и менее точны ближе к предельным значениям. Диапазон измерения может быть соответствующим образом адаптирован к вашим потребностям. Современные устройства, как правило, имеют несколько различных диапазонов. Они указаны в спецификации продукта. Таким образом, вы можете выбрать нужный датчик для требуемых замеров.
Факторы, влияющие на диапазон измерения
Диапазон измерения УЗ-датчика зависит от свойств поверхности и угла установки объекта. Наибольший диапазон измерения можно получить для объектов с плоскими поверхностями, расположенными под прямым углом к оси датчика. Очень маленькие объекты или предметы, отражающие звук, частично сокращают дальность обнаружения. Объекты с гладкими поверхностями должны быть расположены как можно ближе к датчику, под углом 90°. Поверхности с неровной текстурой обеспечивают больший допуск к отклонению угла объектов.
Следует также учитывать воздействие окружающей среды. Наибольшее влияние на точность ультразвуковых датчиков оказывает температура воздуха. Относительная влажность и барометрическое давление также должны быть учтены.
Материалы, которые может обнаружить ультразвуковой датчик
УЗ-устройства обнаруживают практически все промышленные материалы из дерева, металла или пластика, независимо от их формы и цвета. Объекты могут быть твердыми, жидкими или порошкообразными. Единственным требованием является беспрепятственное отражение звуковых волн в сторону датчика. Однако некоторые объекты могут уменьшить рабочий диапазон устройства. Это объекты с большими, гладкими и наклонными поверхностями, либо с пористой текстурой, например, войлок, шерсть или строительная пена.
Краткие выводы
Ультразвуковые датчики расстояния достаточно универсальны и точны, что позволяет их использовать для большинства любительских проектов. В статье рассмотрен крайне популярный датчик HC SR04, который легко подключается к плате ардуино (для этого следует сразу предусмотреть два свободных пина, но есть вариант подключения и с одним пином). Для работы с датчиком существуют несколько бесплатных библиотек (в статье рассмотрена лишь одна из них, NewPing), но можно обойтись и без них – алгоритм взаимодействия с внутренним контроллером датчика достаточно прост, мы показали его в этой статье.
Исходя из собственного опыта, можно утверждать, что датчик HC-SR04 показывает точность в пределах одного сантиметра на расстояниях от 10 см до 2 м. На более коротких и дальних дистанциях возможно появление сильных помех, что сильно зависит от окружающих предметов и способа использования. Но в большинстве случаев HC-SR04 отлично справлялся со своей работой.