- VCC — питание +5 В;
- Trig (T) — вывод входного сигнала;
- Echo (R) — вывод выходного сигнала;
- GND — земля.
Ультразвуковой дальномер HC-SR04
- подаем импульс продолжительностью 10 мкс на вывод Trig;
- на плате модуля входной импульс преобразуется в 8 импульсов частотой 40 кГц и посылается через излучатель T;
- дойдя до препятствия, посланные импульсы отражаются и принимаются приемником R, в результате получаем выходной сигнал на выводе Echo.
- На стороне контроллера переводим полученный сигнал в расстояние по формуле:
- ширина импульса (мкс) / 58 = дистанция (см);
- ширина импульса (мкс) / 148 = дистанция (дюйм).
Датчик HC-SR04 имеет два контакта для подключения к микроконтроллеру: TRIG и ECHO. Для начала процесса измерения необходимо на вход TRIG подать сигнал высокого уровня длительностью 10 мкс. Датчик излучит в пространство серию ультразвуковых импульсов. После приема отраженного сигнала, датчик формирует на выводе ECHO импульс высокого уровня, длительность которого пропорционально расстоянию до преграды (150 мкс - 25 мс). После одного цикла работы датчика, волны продолжают распространяться по помещению и отражаться. Если в этот момент снова активизировать измерение, вполне вероятно, что сенсор датчика зафиксирует отраженные волны от предыдущей серии импульсов и результат измерения будет не верным.
Временная диаграмма HC-SR04
Для пересчета в длины импульса в расстояние используется формула:
где: S - дистанция в сантиметрах, F — длительность импульса ECHO в микросекундах.
Технические характеристики ультразвукового дальномера HC-SR04
- измеряемый диапазон — от 2 до 500 см
- точность — 0,3 см
- эффективный рабочий угол — < 15 °
- угол измерений: 30 градусов
- напряжение питания — 5 В
- Сила тока покоя: < 2 мА
- Рабочая сила тока: 15 мА;: < 15°
- ширина импульса триггера: 10 микросекунд
- размеры: 45 мм x 20 мм x 15 мм
Пример использования
Типичными областями применения ультразвуковых дальномеров являются парковочные датчики, контроллеры уровня, устройства мониторинга местности. Очень часто используют данные модули в любительской робототехнике. Рассмотрим подключение модуля HC SR-04 к Ардуино. Создадим проект звуковой сигнализации при обнаружении объекта, находящегося на расстоянии меньше 1 м от нашего датчика. Модуль HC SR-04 находится на вращающейся в горизонтальной плоскости платформе (вращение платформы помощью сервопривода) и измеряет расстояние до преграды. При обнаружении объекта, находящегося на расстоянии менее 1 м от модуля, платформа останавливается и подает звуковой сигнал на динамик до тех пор, пока объект не удалится на большее расстояние. затопления помещения. При погружении датчика в воду, сигнализация издает три вида звуковых сигналов (небольшое затопление, средний уровень, критический уровень), соответствующий трем уровням воды. Для воспроизведения звуковых можно к цифровому выводу подключить пьезоизлучатель - электроакустическое устройства воспроизведения звука. Но при этом звук получается очень тихий. Чтобы получить громкость более приличного уровня, к цифровому выводу Arduino динамик, но не напрямую, а через транзистор. Для проекта нам понадобятся следующие детали:- плата Arduino
- ультразвуковой модуль HC SR-04
- сервопривод
- платформа для крепления сервопривода и модуля HC SR-04
- динамик 8 Ом
- резистор 500 Ом
- транзистор КТ503е
- источник внешнего питания 5В (для питания сервопривода)
- соединительные провода
Схема подключения дальномера HC-SR04
// константы для выводов
#define PIN_TRIG 12
#define PIN_ECHO 13
#define PIN_SERVO 9
#define PIN_SPEAKER 8
// расстояние обнаружения см
#define DIST_DETECT 100
// частота звукового сигнала
#define FREQ 546
// подключение библиотеки для HC SR04
#include "Ultrasonic.h"
// создание объекта Ultrasonic
// Trig - 12, Echo - 13
Ultrasonic ultrasonic(PIN_TRIG, PIN_ECHO);
// переменная для хранения измеренного расстояния
float dist_cm=0;
// подключение библиотеки для серво
#include <Servo.h>
// создание объекта Servo
Servo myservo;
// переменная для хранения позиции сервопривода
int pos = 0;
// переменная направления перемещения сервопривода
int dir=1;
void setup() {
// запуск последовательного порта
Serial.begin(9600);
// запуск серво на выходе PIN_SERVO
myservo.attach(PIN_SERVO);
}
void loop() {
// вычисление следующей позиции сервопривода
pos=pos+dir;
// установить сервопривод в позицию pos
myservo.write(pos);
// при достижении крайних позиций изменить
// направление dir
if(pos==180)
dir=-1;
else if(pos==0)
dir=1;
else ;
// получить данные с дальномера
dist_cm = ultrasonic.Ranging(CM);
Serial.println(dist_cm);
// обнаружение объекта в зоне
if(dist_cm>0 && dist_cm<DIST_DETECT) {
// звуковой сигнал
tone(PIN_SPEAKER,FREQ);
}
// пока в зоне обнаружения
while(dist_cm>0 && dist_cm<DIST_DETECT){
dist_cm = ultrasonic.Ranging(CM);
Serial.println(dist_cm);
}
// отключить звуковой сигнал
noTone(PIN_SPEAKER);
// пауза перед сменой позиции сервопривода
delay(50);
}
Сервопривод вращает платформу с датчиком от 0 до 180 градусов и обратно. На каждом шаге проверяем показания модуля расстояния HS SR04. Если объект нарушает границу (значение DIST_DETECT равное 100 см) на динамик подается звуковой сигнал tone(PIN_SPEAKER,FREQ); Далее ждем пока объект не выйдет из зоны. Затем отключаем динамик и продолжаем вращение платформы. Для контроля текущие показания расстояния выводятся в последовательный порт.
Показания дальномера HC-SR04
Применение ультразвукового дальномера HC-SR04
Что делать если
Платформа не вращается- Проверьте наличие и полярность подаваемого на сервопривод внешнего питания 5 В).
- Проверьте соединение "земли" Arduino и "земли" внешнего питания.
- Проверьте подсоединение модуля HC SR-04.
- Проверьте правильность показаний модуля HC SR-04 в мониторе последовательного порта.
- Проверьте правильность подсоединения динамика.