Иногда приходится определять расстояние до препятствия. Существуют разные способы. Здесь рассмотрим ультразвуковой «дальномер»
Принцип работы ультразвукового дальномера
Сенсор излучает короткий ультразвуковой импульс (в момент времени 0), который отражается от объекта и принимается сенсором. Расстояние рассчитывается исходя из времени до получения эха и скорости звука в воздухе.
Паять ничего не надо — «все давно уже спаяно за нас» — есть такой модуль: HC-SR04
Тут есть и излучатель (Т), и приемник (R) ультразвукового сигнала. Ну и все необходимые элементы согласования с ТТЛ.
Характеристики ультразвукового дальномера HC-SR04
- Простота в использовании и 4-контактное подключение.
- Диапазон измерения: от 2 см до 400 см.
- Точность измерения: ± 1 см (при максимальной дальности ± 3 см).
- Угол измерения: 15º.
- Ультразвуковой диапазон работы на частоте 40 кГц.
- Рабочее напряжение 4,8 В до 5,5 В.
- Диапазон рабочих температур: 0 ° С до 60 ° С.
Модуль имеет четыре вывода: питание, вход и выход. Для замера расстояния надо подать импульс на вход, а затем померить запаздывание появления импульса на выходе.
Для примера: подключаем модуль по питанию, вход модуля (Trig) к pin8; выход модуля (Echo) — к pin9.
Первый скетч построен на использовании библиотеки ultrasonic. Она позволяет сразу получить расстояние в привычных единицах длины.
#include "Ultrasonic.h" Ultrasonic ultrasonic(8, 9); void setup() { Serial.begin(9600); } void loop() { float dist_cm = ultrasonic.Ranging(CM); Serial.println(dist_cm); delay(1000); }
Библиотеку можно найти во многих местах, например, на общепринятом ресурсе Hithub
(сразу возникнет вопрос про «СМ» 🙂 — если True, то результат в сантиметрах, иначе — в дюймах)
Ничего «заумного» в библиотеке нет, так, что и без нее довольно просто написать такой же тестовый пример.
Оба примера с периодом в секунду выдают расстояние до препятствия в сантиметрах в монитор последовательного интерфейса.
По материалам курса робототехники