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

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

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

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

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

Плата Arduino Uno или Pro Mini
Модуль с ультразвуковым датчиком
ЖК дисплей 16×2
Шкала
Макетная плата
Батарейка на 9 В
Соединительные провода

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

Внешний вид ультразвукового датчика 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 потому что измеренное время равно сумме времен распространения звуковой волны до препятствия и обратно. То есть время, чтобы звук достиг препятствия, равно половине времени, измеренного датчиком.

Временные диаграммы работы модуля приведены на следующем рисунке:

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

Работа схемы

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

Схема устройства для измерения расстояний с помощью 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.

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

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

#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 и ультразвукового датчика.

(1 голосов, оценка: 5,00 из 5)
Загрузка...
0 просмотров

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

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