Рубрики
Схемы на Arduino

Измерение расстояний с помощью Arduino и ультразвукового датчика

Ультразвуковые датчики в настоящее время находят широкое применение для измерений расстояния, измерения уровня воды и других подобных задач. С их помощью можно эффективно и точно измерять небольшие расстояния. В этом проекте мы будем использовать ультразвуковой датчик для определения расстояния от датчика до препятствия. Принцип измерения расстояния с помощью ультразвукового датчика основан на эффекте эхо (ECHO). Когда звуковая волна излучается в окружающее пространство то, если она встречает на своем пути препятствие, она отражается от него и возвращается обратно к источнику в виде эхо. Все, что нам нужно сделать в этом случае, это определить время, за которое звуковая волна достигнет препятствия и вернется обратно. Поскольку скорость звука нам известна, то после небольших вычислений мы сможем на основе этого измеренного времени определить расстояние до препятствия.

Также на нашем сайте можно прочитать статью об измерении расстояний с помощью микроконтроллера AVR.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress) или Pro Mini.
  2. Ультразвуковой датчик HC-SR04 (купить на AliExpress).
  3. ЖК дисплей 16×2 (купить на AliExpress).
  4. Шкала (линейка).
  5. Батарейка на 9 В.
  6. Макетная плата.
  7. Соединительные провода.

Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158

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

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

  1. Вначале с формируется сигнал высокого уровня длительностью 10 мкс, который запускает в работу ультразвуковой датчик.
  2. Затем модуль автоматически посылает 8 импульсов с частотой 40 кГц, а затем проверяет приняты они или нет.
  3. Если эти излученные сигналы принимаются, то вычисляется время между временем передачи этих импульсов и их приемом.

Расстояние затем можно рассчитать по следующей формуле:

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 и ультразвукового датчика представлена на следующем рисунке.

На представленной схеме контакты модуля с ультразвуковым датчиком с названиями “trigger” и “echo” напрямую подсоединены к контактам 18(A4) и 19(A5) платы Arduino. Жидкокристаллический (ЖК) дисплей 16×2 подсоединен к Arduino в 4-битном режиме. Управляющие контакты RS, RW и En напрямую подсоединены к контактам 2, GND и 3 Arduino. Контакты для передачи данных D4-D7 подсоединены к контактам 4, 5, 6, 7 Arduino.

Сначала нам необходимо запустить ультразвуковой датчик в работу, подав на его вход сигнал длительностью 10 мкс. Затем мы должны подождать когда будет осуществлен прием сигналов эхо (то есть отраженных от препятствия). Arduino считывает время между запуском модуля в работу и приемом эхо. Мы знаем что скорость звука в воздухе составляет примерно 340 м/с, поэтому мы можем рассчитать расстояние до препятствия по следующей формуле:

Distance= (travel time/2) * speed of sound

где speed of sound (скорость звука) составляет примерно 340 м/с.

Затем на ЖК дисплее 16×2 производится отображение измеренного расстояния.

Исходный код программы

В представленном участке кода мы производим измерение времени с помощью функции pulseIn(pin). Затем после выполнения необходимых вычислений мы показываем результат на ЖК дисплее 16×2.

Далее приведен полный текст программы.

Видео, демонстрирующее работу схемы

Также можете посмотреть еще одно подробное обучающее видео (на английском языке) об измерении расстояний с помощью Arduino и ультразвукового датчика.

5 ответов к “Измерение расстояний с помощью Arduino и ультразвукового датчика”

Не совсем понял какую штуку вы имеете ввиду. Вы ее увидели где то на картинке или в видео?

может ли этот датчик уловить эхо от нескольких предметов, если на один сканирующий импульс попытаться сделать несколько pulseIn подряд?

Насколько я знаю, с помощью данного ультразвукового датчика это сделать невозможно — он измеряет расстояние до ближайшего предмета, от которого он может уловить (принять) отраженную волну, на его выходе просто не будет этих импульсов от нескольких предметов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *