Ультразвуковой дальномер HC-SR04
Товары
Ультразвуковой дальномер является датчиком пространства, позволяет измерять расстояние до объекта в диапазоне от 2 до 400 см.
Содержание
Обзор ультразвукового дальномера HC-SR04
Датчики расстояния являются неотъемлемой частью любого робота. Ультразвуковой дальномер модуль HC-SR04 для Arduino— это помещенные на одну плату приемник и передатчик ультразвукового сигнала. Принцип действия HC-SR04 основан на хорошо известном явлении эхолокации. Излучатель формирует акустический сигнал, который отразившись от преграды, возвращается к датчику и регистрируется приемником. Зная скорость распространения ультразвука в воздухе и время запаздывания между излученным и принятым сигналом, легко рассчитать расстояние до акустической преграды. В отличие от инфракрасных дальномеров на ультразвуковой датчик HC-SR04 не влияют источники света или цвет препятствия. Могут возникнуть затруднения при определении расстояния до пушистых или тонких объектов. Кроме приемника и передатчика на плате находится необходимая обвязка. Модуль имеет 4 вывода стандарта 2,54 мм:- VCC — питание +5 В;
- Trig (T) — вывод входного сигнала;
- Echo (R) — вывод выходного сигнала;
- GND — земля.
Последовательность действий по измерению расстояния следующая:
- подаем импульс продолжительностью 10 мкс на вывод Trig;
- на плате модуля входной импульс преобразуется в 8 импульсов частотой 40 кГц и посылается через излучатель T;
- дойдя до препятствия, посланные импульсы отражаются и принимаются приемником R, в результате получаем выходной сигнал на выводе Echo.
- На стороне контроллера переводим полученный сигнал в расстояние по формуле:
- ширина импульса (мкс) / 58 = дистанция (см);
- ширина импульса (мкс) / 148 = дистанция (дюйм).
Технические характеристики ультразвукового дальномера 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В (для питания сервопривода)
- соединительные провода
Запустим Arduino IDE. Создадим новый скетч и внесем в него следующее содержимое:
// 3d-diy.ru
// константы для выводов
#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); Далее ждем пока объект не выйдет из зоны. Затем отключаем динамик и продолжаем вращение платформы. Для контроля текущие показания расстояния выводятся в последовательный порт.
Часто задаваемые вопросы FAQ
1. Платформа не вращается
- Проверьте наличие и полярность подаваемого на сервопривод внешнего питания 5 В).
- Проверьте соединение "земли" Arduino и "земли" внешнего питания.
- Проверьте подсоединение модуля HC SR-04.
- Проверьте правильность показаний модуля HC SR-04 в мониторе последовательного порта.
- Проверьте правильность подсоединения динамика.