Ультразвуковые датчики в настоящее время находят широкое применение для измерений расстояния, измерения уровня воды и других подобных задач. С их помощью можно эффективно и точно измерять небольшие расстояния. В этом проекте мы будем использовать ультразвуковой датчик для определения расстояния от датчика до препятствия. Принцип измерения расстояния с помощью ультразвукового датчика основан на эффекте эхо (ECHO). Когда звуковая волна излучается в окружающее пространство то, если она встречает на своем пути препятствие, она отражается от него и возвращается обратно к источнику в виде эхо. Все, что нам нужно сделать в этом случае, это определить время, за которое звуковая волна достигнет препятствия и вернется обратно. Поскольку скорость звука нам известна, то после небольших вычислений мы сможем на основе этого измеренного времени определить расстояние до препятствия.
Также на нашем сайте можно прочитать статью об измерении расстояний с помощью микроконтроллера AVR.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress) или Pro Mini.
- Ультразвуковой датчик HC-SR04 (купить на AliExpress).
- ЖК дисплей 16×2 (купить на AliExpress).
- Шкала (линейка).
- Батарейка на 9 В.
- Макетная плата.
- Соединительные провода.
Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158
Принцип работы ультразвукового датчика HC-SR04
Ультразвуковой датчик HC-SR04 в нашем проекте используется для измерения расстояний в диапазоне 2-400 см с точностью 3 мм. Датчик состоит из ультразвукового передатчика, ультразвукового приемника и схемы управления. Основные принципы работы ультразвукового датчика состоят в следующем:
- Вначале с формируется сигнал высокого уровня длительностью 10 мкс, который запускает в работу ультразвуковой датчик.
- Затем модуль автоматически посылает 8 импульсов с частотой 40 кГц, а затем проверяет приняты они или нет.
- Если эти излученные сигналы принимаются, то вычисляется время между временем передачи этих импульсов и их приемом.
Расстояние затем можно рассчитать по следующей формуле:
Distance= (Time x Speed of Sound in Air (340 m/s))/2
где Time – измеренное датчиком время;
Speed of Sound in Air – скорость звука в воздухе, равная 340 м/с.
Временные диаграммы
Как уже указывалось, измерение расстояний осуществляется на основе эхо. Вначале передается импульс длительностью 10 мкс чтобы запустить модуль в работу. После этого модуль автоматически передает 8 импульсов с частотой 40 кГц (то есть ультразвуковая частота) и проверяет эхо – то есть не вернулись ли эти импульсы обратно, отразившись от препятствия. Если импульсы вернулись обратно, то расстояние до препятствия можно рассчитать по следующей формуле:
Distance= (time x speed)/2
В этой формуле мы разделили произведение скорости и времени на 2 потому что измеренное время равно сумме времен распространения звуковой волны до препятствия и обратно. То есть время, чтобы звук достиг препятствия, равно половине времени, измеренного датчиком.
Временные диаграммы работы модуля приведены на следующем рисунке:
Работа схемы
Схема устройства для измерения расстояний с помощью Arduino и ультразвукового датчика представлена на следующем рисунке.
Сначала нам необходимо запустить ультразвуковой датчик в работу, подав на его вход сигнал длительностью 10 мкс. Затем мы должны подождать когда будет осуществлен прием сигналов эхо (то есть отраженных от препятствия). Arduino считывает время между запуском модуля в работу и приемом эхо. Мы знаем что скорость звука в воздухе составляет примерно 340 м/с, поэтому мы можем рассчитать расстояние до препятствия по следующей формуле:
Distance= (travel time/2) * speed of sound
где speed of sound (скорость звука) составляет примерно 340 м/с.
Затем на ЖК дисплее 16×2 производится отображение измеренного расстояния.
Исходный код программы
В представленном участке кода мы производим измерение времени с помощью функции pulseIn(pin). Затем после выполнения необходимых вычислений мы показываем результат на ЖК дисплее 16×2.
Далее приведен полный текст программы.
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 33 34 35 36 37 38 39 40 41 42 43 |
#include <LiquidCrystal.h> //подключаем библиотеку для работы с ЖК дисплеем #define trigger 18 #define echo 19 LiquidCrystal lcd(2,3,4,5,6,7); // контакты, к которым подключен ЖК дисплей float time=0,distance=0; void setup() { lcd.begin(16,2); pinMode(trigger,OUTPUT); //на вывод данных pinMode(echo,INPUT); // на ввод данных lcd.print(" Ultra sonic"); lcd.setCursor(0,1); lcd.print("Distance Meter"); delay(2000); lcd.clear(); lcd.print(" Circuit Digest"); delay(2000); } void loop() { lcd.clear(); digitalWrite(trigger,LOW); delayMicroseconds(2); digitalWrite(trigger,HIGH); delayMicroseconds(10); // импульс длительностью 10 мкс чтобы запустить ультразвуковой датчик в работу digitalWrite(trigger,LOW); delayMicroseconds(2); time=pulseIn(echo,HIGH); // считываем время (третий график на временных диаграммах в тексте статьи distance=time*340/20000; // пересчитываем время в расстояние lcd.clear(); lcd.print("Distance:"); lcd.print(distance); lcd.print("cm"); lcd.setCursor(0,1); lcd.print("Distance:"); lcd.print(distance/100); // выводим значение расстояния на экран ЖК дисплея lcd.print("m"); delay(1000); } |
Видео, демонстрирующее работу схемы
Также можете посмотреть еще одно подробное обучающее видео (на английском языке) об измерении расстояний с помощью Arduino и ультразвукового датчика.
5 ответов к “Измерение расстояний с помощью Arduino и ультразвукового датчика”
У меня вопрос. Я не понимаю, для чего нужна чёрная штука, которая между платой Arduino и ЖК экраном? Какую роль она выполняет?
Не совсем понял какую штуку вы имеете ввиду. Вы ее увидели где то на картинке или в видео?
Потенциометр.Регулировка контрастности жк-экрана.
может ли этот датчик уловить эхо от нескольких предметов, если на один сканирующий импульс попытаться сделать несколько pulseIn подряд?
Насколько я знаю, с помощью данного ультразвукового датчика это сделать невозможно — он измеряет расстояние до ближайшего предмета, от которого он может уловить (принять) отраженную волну, на его выходе просто не будет этих импульсов от нескольких предметов