Датчики расстояния являются неотъемлемой частью любого робота. Ультразвуковой дальномер модуль HC-SR04 для Arduino— это помещенные на одну плату приемник и передатчик ультразвукового сигнала. Принцип действия HC-SR04 основан на хорошо известном явлении эхолокации. Излучатель формирует акустический сигнал, который отразившись от преграды, возвращается к датчику и регистрируется приемником. Зная скорость распространения ультразвука в воздухе и время запаздывания между излученным и принятым сигналом, легко рассчитать расстояние до акустической преграды. В отличие от инфракрасных дальномеров на ультразвуковой датчик HC-SR04 не влияют источники света или цвет препятствия. Могут возникнуть затруднения при определении расстояния до пушистых или тонких объектов. Кроме приемника и передатчика на плате находится необходимая обвязка. Модуль имеет 4 вывода стандарта 2,54 мм:
  • VCC — питание +5 В;
  • Trig (T) — вывод входного сигнала;
  • Echo (R) — вывод выходного сигнала;
  • GND — земля.

Ультразвуковой дальномер HC-SR04
Ультразвуковой дальномер HC-SR04

Последовательность действий по измерению расстояния следующая:
  • подаем импульс продолжительностью 10 мкс на вывод Trig;
  • на плате модуля входной импульс преобразуется в 8 импульсов частотой 40 кГц и посылается через излучатель T;
  • дойдя до препятствия, посланные импульсы отражаются и принимаются приемником R, в результате получаем выходной сигнал на выводе Echo.
  • На стороне контроллера переводим полученный сигнал в расстояние по формуле:
  • ширина импульса (мкс) / 58 = дистанция (см);
  • ширина импульса (мкс) / 148 = дистанция (дюйм).

Датчик HC-SR04 имеет два контакта для подключения к микроконтроллеру: TRIG и ECHO. Для начала процесса измерения необходимо на вход TRIG подать сигнал высокого уровня длительностью 10 мкс. Датчик излучит в пространство серию ультразвуковых импульсов. После приема отраженного сигнала, датчик формирует на выводе ECHO импульс высокого уровня, длительность которого пропорционально расстоянию до преграды (150 мкс - 25 мс). После одного цикла работы датчика, волны продолжают распространяться по помещению и отражаться. Если в этот момент снова активизировать измерение, вполне вероятно, что сенсор датчика зафиксирует отраженные волны от предыдущей серии импульсов и результат измерения будет не верным.

Временная диаграмма HC-SR04
Временная диаграмма HC-SR04

Для пересчета в длины импульса в расстояние используется формула:

S=F/58

где: 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
Схема подключения дальномера HC-SR04

Запустим Arduino IDE. Создадим новый скетч и внесем в него следующее содержимое:
// константы для выводов

#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

Применение ультразвукового дальномера HC-SR04
Применение ультразвукового дальномера HC-SR04

 

Что делать если

Платформа не вращается
  • Проверьте наличие и полярность подаваемого на сервопривод внешнего питания 5 В).
  • Проверьте соединение "земли" Arduino и "земли" внешнего питания.
При приближении на заданное расстояние не срабатывает динамик
  • Проверьте подсоединение модуля HC SR-04.
  • Проверьте правильность показаний модуля HC SR-04 в мониторе последовательного порта.
  • Проверьте правильность подсоединения динамика.

Рекомендуемые товары

Комментарии 0