Точное измерение расстояния ультразвуковым датчиком HC-SR04 и Arduino: пошаговое руководство
Проект измерения расстояния ультразвуковым датчиком HC-SR04 на Arduino
Ультразвуковое дальномерение применяется в робототехнике, позиционировании, контроле уровня, профилировании, автоматизации. Датчик HC-SR04 — неконтактный, диапазон 2–400 см, точность до 3 мм. Работает по принципу эхо-локации.
Принцип работы HC-SR04
- На вход Trig подается импульс 10 мкс (HIGH).
- Модуль излучает 8 циклов ультразвука 40 кГц.
- Сигнал отражается от препятствия и возвращается к приемнику.
- Выход Echo держит HIGH время, равное времени полета туда-обратно.
- Расстояние = (время HIGH × скорость звука 340 м/с) / 2.
Деление на 2 — так как время измеряется туда и обратно.
Схема подключения
- HC-SR04: VCC→5V, GND→GND, Trig→A4 (D18), Echo→A5 (D19) Arduino Uno.
- LCD 16×2: RS→D12, EN→D11, D4–D7→D5–D2, RW/VSS/K→GND, VDD/A→5V, VE→потенциометр 10к.
Компоненты
- Arduino Uno
- HC-SR04
- LCD 16×2 (HD44780)
- Потенциометр 10 кОм
- Перемычки
Спецификация HC-SR04
- Напряжение: 5 В
- Ток: 15 мА
- Частота: 40 кГц
- Угол: 15°
- Диапазон: 2–400 см
Распиновка LCD 16×2 (таблица)
| Pin | Name | Description |
|---|---|---|
| 1 | VSS | GND |
| 2 | VDD | +5V |
| 3 | VE | Контраст (потенциометр) |
| 4 | RS | Register Select (команда/данные) |
| 5 | RW | Read/Write (обычно GND = запись) |
| 6 | EN | Enable (строб) |
| 7–14 | DB0–DB7 | Данные (8 бит) или DB4–DB7 (4 бит) |
| 15 | A | Анод подсветки (+5V) |
| 16 | K | Катод подсветки (GND) |
Программа (скетч)
#include <LiquidCrystal.h>
#define trig 18
#define echo 19
const int rs=12, en=11, d4=5, d5=4, d6=3, d7=2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
float t=0, d=0;
void setup() {
lcd.begin(16,2);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
}
void loop() {
lcd.clear();
digitalWrite(trig, LOW); delayMicroseconds(2);
digitalWrite(trig, HIGH); delayMicroseconds(10);
digitalWrite(trig, LOW);
t = pulseIn(echo, HIGH); // мкс
d = t * 0.0340 / 2; // см (340 м/с = 0.034 см/мкс)
lcd.setCursor(0,0);
lcd.print("Distance: ");
lcd.print(d);
lcd.print(" cm");
delay(1000);
}
Как это работает
Загрузите скетч. Поднесите руку/предмет к датчику. На LCD будет отображаться расстояние в см. Меняйте дистанцию — показания обновляются раз в секунду. Датчик излучает пакет 40 кГц, фиксирует эхо, Arduino измеряет длительность импульса Echo и пересчитывает в расстояние.
Типичные ошибки и советы
- Минимальное расстояние 2 см — ближе не измеряет.
- Угол 15° — предмет должен быть в зоне луча.
- Мягкие/пористые поверхности плохо отражают ультразвук.
- Питание 5 В стабильное — важно для точности.
- Для улицы нужен защищенный датчик (JSN-SR04T).
Промышленные технологии
- Принцип работы датчиков расстояния и их ключевые применения
- Arduino-датчики: типы, применения и реальные проекты
- Как работают схемы на PIR-датчиках: проектирование, принцип работы и реальные применения
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Создание ультразвукового левитатора на Arduino: пошаговое руководство
- Умный вольтметр на Arduino и смартфоне — простое DIY-проект
- Умная банка на ESP8266 + Arduino: мониторинг наполненности в реальном времени
- Точное измерение частоты и коэффициента заполнения на Arduino UNO
- Сборка компактного FM-радио на Arduino Nano и RDA5807M
- Компактный радар на Arduino Nano с HC-SR04 и дисплеем 1.8"