Ультразвуковой дальномер HC-SR04: различия между версиями
Root (обсуждение | вклад) (Начальная версия описания) |
|||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
[[Файл:HC-SR04.jpg|мини|Внешний вид HC-SR04]] | [[Файл:HC-SR04.jpg|мини|Внешний вид HC-SR04|302x302пкс]] | ||
'''HC-SR04''' - цифровой ультразвуковой дальномер, основанный на принципе эхолокации. Модуль посылает ультразвуковой сигнал и принимает его отражение от объекта. Измерив время между отправкой и получением импульса, возможно вычислить расстояние до препятствия. | '''HC-SR04''' - цифровой ультразвуковой дальномер, основанный на принципе эхолокации. Модуль посылает ультразвуковой сигнал и принимает его отражение от объекта. Измерив время между отправкой и получением импульса, возможно вычислить расстояние до препятствия. | ||
Датчик расстояния является прибором бесконтактного типа, и обеспечивает высокоточное измерение и стабильность. Диапазон дальности его измерения составляет от 2 до 400 см. На его работу не оказывает существенного воздействия электромагнитные излучения и солнечная энергия. В комплект модуля с HC SR04 arduino также входят ресивер и трансмиттер. | |||
== Характеристики == | |||
* Входное напряжение: 5 В | |||
* Потребляемый ток в режиме ожидания: до 2 мА | |||
* Потребляемый ток в режиме измерений: до 15 мА | |||
* Частота ультразвука: 40 кГц | |||
* Измеряемая дальность: 3 … 400 см | |||
* Точность измерения: от 0,3 см | |||
* Угол измерения: до 15° | |||
* Рабочая температура: -30 … 80 °С | |||
* Габариты: 45x20x15 мм | |||
== Принцип работы == | |||
Если подать положительный импульс на вход датчика TRIG длительностью 10 мкс, то датчик отправит звуковую волну (8 импульсов на частоте 40 кГц - ультразвук) и установит уровень логической «1» на выходе ECHO. Звуковая волна отразится от препятствия и вернётся на приёмник датчика, после чего он сбросит уровень на выходе ECHO в логический «0» (то же самое датчик сделает, если звуковая волна не вернётся в течении 38 мс.) В результате время наличия логической «1» на выходе ECHO равно времени прохождения ультразвуковой волны от датчика до препятствия и обратно. Зная скорость распространения звуковой волны в воздухе и время наличия логической «1» на выводе ECHO, можно рассчитать расстояние до препятствия. | |||
[[Файл:Datchik-prepyatstvij-infrakrastnyj12.png|мини|429x429пкс]] | |||
'''Расстояние''' вычисляется умножением скорости на время (в данном случае скорости распространения звуковой волны '''V''', на время ожидания эха '''Echo'''). Но так звуковая волна проходит расстояние от датчика до объекта и обратно, а нам нужно только до объекта, то результат делим на 2: | |||
'''L = V * Echo / 2''' | |||
* '''L''' – расстояние (м); | |||
* '''V''' – скорость звука в воздухе (м/с); | |||
* '''Echo''' – время ожидания эха (с). | |||
== Контакты датчика == | |||
[[Файл:Imageд.png|мини|287x287пкс]] | |||
Датчик оснащен четырьмя выводами (стандарт 2, 54 мм): | |||
* Контакт питания положительного типа – +5В; | |||
* Trig (Т) – выход сигнала входа; | |||
* Echo (R) – вывод сигнала выхода; | |||
* GND – вывод «Земля». | |||
При подключении стоит учитывать, что данные выводы микроконтроллера должны поддерживать возможность работы с +5 В уровнями. В документации такой вывод помечается как FT. | |||
== Подключение HC SR04 к Arduino == | |||
Контакт земли подключаем к выводу GND на плате Arduino, выход питания соединяем с 5V. Выходы Trig и Echo подсоединяем к arduino на цифровые пины. Вариант подключения с помощью макетной платы: | |||
[[Файл:Imageвнек.png|мини|316x316пкс|Внешний вид подключения]] | |||
=== Программа === | |||
Подключение HC-SR04 к Arduino может быть выполнено посредством использования одного пина. Такой вариант пригодится, если вы работаете с большим проектом и вам не хватает свободных пинов. Для подключения вам нужно просто установить между контактами TRIG и ECHO резистор номиналом 2.2K и подключить к ардуино контакт TRIG. | |||
<syntaxhighlight lang="c"> | |||
#include <NewPing.h> | |||
#define PIN_PING 12 // Пин с Arduino соединен с пинами trigger и echo на датчике расстояния | |||
#define MAX_DISTANCE 200 // Максимальное расстояние, которое мы способны контролировать (400-500см). | |||
NewPing sonar(PIN_PING, PIN_PING, MAX_DISTANCE); // Регулировка пинов и максимального расстояния | |||
void setup() { | |||
Serial.begin(9600); // Открывается протокол с данными и частотой передачи 115200 бит/сек. | |||
} | |||
void loop() { | |||
delay(50); // Задержка в 50 мс между генерируемыми волнами. 29 мс – минимально допустимое значение | |||
unsigned int distanceSm = sonar.ping(); // Создание сигнала, получение параметра его продолжительности в мкс (uS). | |||
Serial.print("Ping: "); | |||
Serial.print(distanceSm / US_ROUNDTRIP_CM); // Пересчет параметра времени в величину расстояния и вывод результата (0 соответствует выходу за допустимый предел) | |||
Serial.println("cm"); | |||
} | |||
</syntaxhighlight> |
Текущая версия от 16:39, 23 июня 2021
HC-SR04 - цифровой ультразвуковой дальномер, основанный на принципе эхолокации. Модуль посылает ультразвуковой сигнал и принимает его отражение от объекта. Измерив время между отправкой и получением импульса, возможно вычислить расстояние до препятствия.
Датчик расстояния является прибором бесконтактного типа, и обеспечивает высокоточное измерение и стабильность. Диапазон дальности его измерения составляет от 2 до 400 см. На его работу не оказывает существенного воздействия электромагнитные излучения и солнечная энергия. В комплект модуля с HC SR04 arduino также входят ресивер и трансмиттер.
Характеристики
- Входное напряжение: 5 В
- Потребляемый ток в режиме ожидания: до 2 мА
- Потребляемый ток в режиме измерений: до 15 мА
- Частота ультразвука: 40 кГц
- Измеряемая дальность: 3 … 400 см
- Точность измерения: от 0,3 см
- Угол измерения: до 15°
- Рабочая температура: -30 … 80 °С
- Габариты: 45x20x15 мм
Принцип работы
Если подать положительный импульс на вход датчика TRIG длительностью 10 мкс, то датчик отправит звуковую волну (8 импульсов на частоте 40 кГц - ультразвук) и установит уровень логической «1» на выходе ECHO. Звуковая волна отразится от препятствия и вернётся на приёмник датчика, после чего он сбросит уровень на выходе ECHO в логический «0» (то же самое датчик сделает, если звуковая волна не вернётся в течении 38 мс.) В результате время наличия логической «1» на выходе ECHO равно времени прохождения ультразвуковой волны от датчика до препятствия и обратно. Зная скорость распространения звуковой волны в воздухе и время наличия логической «1» на выводе ECHO, можно рассчитать расстояние до препятствия.
Расстояние вычисляется умножением скорости на время (в данном случае скорости распространения звуковой волны V, на время ожидания эха Echo). Но так звуковая волна проходит расстояние от датчика до объекта и обратно, а нам нужно только до объекта, то результат делим на 2:
L = V * Echo / 2
- L – расстояние (м);
- V – скорость звука в воздухе (м/с);
- Echo – время ожидания эха (с).
Контакты датчика
Датчик оснащен четырьмя выводами (стандарт 2, 54 мм):
- Контакт питания положительного типа – +5В;
- Trig (Т) – выход сигнала входа;
- Echo (R) – вывод сигнала выхода;
- GND – вывод «Земля».
При подключении стоит учитывать, что данные выводы микроконтроллера должны поддерживать возможность работы с +5 В уровнями. В документации такой вывод помечается как FT.
Подключение HC SR04 к Arduino
Контакт земли подключаем к выводу GND на плате Arduino, выход питания соединяем с 5V. Выходы Trig и Echo подсоединяем к arduino на цифровые пины. Вариант подключения с помощью макетной платы:
Программа
Подключение HC-SR04 к Arduino может быть выполнено посредством использования одного пина. Такой вариант пригодится, если вы работаете с большим проектом и вам не хватает свободных пинов. Для подключения вам нужно просто установить между контактами TRIG и ECHO резистор номиналом 2.2K и подключить к ардуино контакт TRIG.
#include <NewPing.h> #define PIN_PING 12 // Пин с Arduino соединен с пинами trigger и echo на датчике расстояния #define MAX_DISTANCE 200 // Максимальное расстояние, которое мы способны контролировать (400-500см). NewPing sonar(PIN_PING, PIN_PING, MAX_DISTANCE); // Регулировка пинов и максимального расстояния void setup() { Serial.begin(9600); // Открывается протокол с данными и частотой передачи 115200 бит/сек. } void loop() { delay(50); // Задержка в 50 мс между генерируемыми волнами. 29 мс – минимально допустимое значение unsigned int distanceSm = sonar.ping(); // Создание сигнала, получение параметра его продолжительности в мкс (uS). Serial.print("Ping: "); Serial.print(distanceSm / US_ROUNDTRIP_CM); // Пересчет параметра времени в величину расстояния и вывод результата (0 соответствует выходу за допустимый предел) Serial.println("cm"); }