Ультразвуковий датчик відстані та Arduino
Стаття присвячена ультразвуковому датчику відстані HC-SR04.
Пояснюється принцип його дії, технічні характеристики, наведено приклад його підключення до Arduino та програми для прошивки мікроконтролера.
Опис HC-SR04
Ультразвуковий датчик відстані - модуль HC-SR04 використовує акустичне випромінювання визначення відстані до об'єкта. Цей безконтактний датчик забезпечує високу точність та стабільність вимірювань. Діапазон вимірів становить: від 2 см до 400 см. На показання датчика практично не впливають сонячне випромінювання та електромагнітні шуми. Модуль продається в комплекті з трансмітером та ресівером.
Технічні характеристики HC-SR04
- Напруга живлення: +5В - постійний струм;
- Сила струму спокою:
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Налаштування пінів та максимальної відстані.
unsigned int uS = sonar.ping_cm();
Використання бібліотеки NewPing
Нижче наведено приклад програми з використанням бібліотеки NewPing.
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Налаштування пінів та максимальної відстані.
unsigned int uS = sonar.ping_cm();
Необхідні уточнення
Якщо HC-SR04 не зчитує сигнал відлуння, вихідний сигнал ніколи не перетворюється на LOW. Датчики Devantec та Parallax забезпечують час затримки 36 мілісекунд 28 мілісекунд відповідно. Якщо ви використовуєте наведений вище скетч, програма «зависне» на 1 секунду. Тому бажано вказувати параметр затримки.
Датчик HC-SR04 погано працює при вимірі відстанейбільше 10 футів. Час повернення імпульсу становить близько 20 мілісекунд, так що рекомендується в таких випадках виставляти час затримки більше 20, наприклад, 25 або 30 мілісекунд.
Можна підключити ультразвуковий датчик відстані HC-SR04 лише до одного піну Arduino. Для цього необхідно між пінами Тригера та Відлуння встановити резистор на 2.2 кОм і підключити до Arduino тільки пін Тригера.
Підключення ультразвукового датчика відстані Arduino з використанням 1 піна!
Схема підключення та скетч для ультразвукового датчика відстані SRF06 наведено нижче.

// Скетч з бібліотекою NewPing, яка може використовуватися і для датчика HC-SR04 та для
//наведеного тут SRF06 і дозволяє підключати ультразвукові датчики
// За допомогою одного піна на Arduino. Можна додатково підключити конденсатор на 0.1 мкФ до пін Ехо та Тригер на датчику.
// До Arduino підключається пін Тригер
#define PING_PIN 12 // Пін з Arduino підключений до пін trigger і echo на ультразвуковому датчику відстані
#define MAX_DISTANCE 200 // Максимальна відстань, яку ми контролюємо (в сантиметрах). Максимальна відстань таких датчиків знаходиться в діапазоні 400-500см.
NewPing sonar(PING_PIN, PING_PIN, MAX_DISTANCE); // Налаштування пінів та максимальної відстані
Serial.begin(115200); // Відкриття серійного протоколу з частотою передачі 115200 біт/сек.
delay(50); // Затримка 50 мілісекунд між генерацією хвиль. 29 мілісекунд – мінімально допустима затримка.