Проект 23: Ультразвуковий датчик відстані HC-SR04. Принцип роботи, підключення, приклад
В цьому експерименті ми розглянемо ультразвуковий датчик для вимірювання відстані і створимо проект виведення показань датчика на екран РКІ WH1602.
Необхідні компоненти:
- контролер Arduino UNO R3;
- плата для прототипування;
- ультразвуковий датчик відстані HC-SR04;
- пьезоізлучатель;
- резистор 100 Ом;
- сервопривід;
- дроти тато-тато.
- зовнішній блок живлення +5 В.
Ультразвуковий далекомір HC-SR04 (рис. 23.1) - це вміщені на одну плату приймач і передавач ультразвукового сигналу. Випромінювач генерує сигнал, який, відбившись від перешкоди, потрапляє на приймач. Вимірявши час, за який сигнал проходить до об'єкта і назад, можна оцінити відстань. Крім самих приймача і передавача, на платі знаходиться ще і необхідна обв'язка, щоб зробити роботу з цим датчиком простий і зручною.

Характеристики ультразвукового далекоміра HC-SR04:
- вимірюваний діапазон - від 2 до 500 см;
- точність - 0,3 см;
- кут огляду -
- напруга живлення - 5 В.
Датчик має 4 виведення стандарту 2,54 мм:
- VCC - живлення +5 В;
- Trig (T) - вивід вхідного сигналу;
- Echo (R) - вивід вихідного сигналу;
- GND - земля.
Послідовність дій для отримання даних така:
- подаємо імпульс тривалістю 10 мкс на вивід Trig;
- всередині далекоміра вхідний імпульс перетворюється в 8 імпульсів частотою 40 кГц і надсилається вперед через випромінювач T;
- дійшовши до перешкоди, послані імпульси відбиваються і приймаються приймачем R, в результаті отримуємо вихідний сигнал на виводі Echo ;
- безпосередньо на стороні контролера переводимо отриманий сигнал в відстань за формулою:
- ширина імпульсу (мкс) / 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); // зміна напрямку руху
}
}
Порядок підключення:
- Закріплюємо датчик відстані HC-SR04 на сервопріводе.
- Підключаємо датчик HC-SR04, Пьезозуммер і сервопривід до плати Arduino за схемою на рис. 23.2.
- Завантажуємо в плату Arduino скетч з лістингу 23.1.
- Спостерігаємо за циклічним переміщенням сервоприводу, при попаданні об'єкта в поле зору датчика HC-SR04 Пьезозуммер видає сигнал, сервопривід зупиняється, при зникненні об'єкта з поля зору датчика сервопривід відновлює рух.