Проект 23: Ультразвуковий датчик відстані HC-SR04. Принцип роботи, підключення, приклад

В цьому експерименті ми розглянемо ультразвуковий датчик для вимірювання відстані і створимо проект виведення показань датчика на екран РКІ WH1602.

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

Ультразвуковий далекомір HC-SR04 (рис. 23.1) - це вміщені на одну плату приймач і передавач ультразвукового сигналу. Випромінювач генерує сигнал, який, відбившись від перешкоди, потрапляє на приймач. Вимірявши час, за який сигнал проходить до об'єкта і назад, можна оцінити відстань. Крім самих приймача і передавача, на платі знаходиться ще і необхідна обв'язка, щоб зробити роботу з цим датчиком простий і зручною.

 


Характеристики ультразвукового далекоміра HC-SR04:

Датчик має 4 виведення стандарту 2,54 мм:

Послідовність дій для отримання даних така:

- ширина імпульсу (мкс) / 58 = дистанція (см); - ширина імпульсу (мкс) / 148 = дистанція (дюйм).

У нашому експерименті ми створимо звукову сигналізацію, яка буде включатися при наближенні до плати Arduino на відстань менше 1 м. Датчик розміщений на кронштейні обертається серви і контролює простір з кутом огляду 180 °. Якщо датчик виявляє об'єкт в радіусі 1 м, подається звуковий сигнал на пьзоізлучатель, обертання серви припиняється. Схема з'єднання елементів представлена на рис. 23.2.


Рис. 23.2. Схема з'єднання елементів для звукової сигналізації

При написанні скетчу будемо використовувати бібліотеку Servo для роботи з сервоприводом і бібліотеку Ultrasonic.Для роботи Arduino з датчиком HC-SR04 є готова бібліотека - Ultrasonic.Конструктор Ultrasonic приймає два параметри: номера пинов, до яких підключені виводи Trig і Echo, відповідно:

Ultrasonic ultrasonic (12,13);

Вміст скетчу показано в лістингу 23.1.


#include // підключення бібліотеки Servo
Servo servo1;
const int pinServo = 8; // пін для підключення сервоприводу
int pos = 0; // змінна для зберігання позиції сервоприводу
int dir = 1; // напрям переміщення сервоприводу
// виводи для підключення HC-SR04 Trig - 12, Echo - 13
Ultrasonic ultrasonic (12, 13);
float dist_cm; // змінна для дистанції, см
// підключити динамік до pin 9
int speakerPin = 9;
void setup ()
{
// підключити змінну servo1 до виводу pinServo1
servo1.attach (pinServo1);
pinMode (speakerPin, OUTPUT);
}
void loop ()
{
servo1.write (pos); // поворот сервоприводів на отриманий кут
delay (15); // пауза для очікування повороту сервоприводів
float dist_cm = ultrasonic.Ranging (CM);
if (dist_cm 20)
tone (speakerPin,); // включити Пьезозуммер
else
{
tone (speakerPin, 0); // відключити Пьезозуммер
pos = pos + dir; // зміна змінної положення сервоприводу
if (pos == 0 || pos == 180)
dir = dir * (- 1); // зміна напрямку руху
}
}

Порядок підключення:

  1. Закріплюємо датчик відстані HC-SR04 на сервопріводе.
  2. Підключаємо датчик HC-SR04, Пьезозуммер і сервопривід до плати Arduino за схемою на рис. 23.2.
  3. Завантажуємо в плату Arduino скетч з лістингу 23.1.
  4. Спостерігаємо за циклічним переміщенням сервоприводу, при попаданні об'єкта в поле зору датчика HC-SR04 Пьезозуммер видає сигнал, сервопривід зупиняється, при зникненні об'єкта з поля зору датчика сервопривід відновлює рух.