Ping — ультразвуковой дальномер
Подключаем ультразвуковой датчик расстояния Ping к Arduino и измеряем дистанцию до объектов от 3 до 400 см с помощью функции pulseIn().
Ультразвуковой дальномер SEN136B5B от Seeedstudio — простой и надёжный способ измерять расстояние до ближайшего объекта. Диапазон измерений — от 3 до 400 см. Принцип работы похож на эхолокацию летучей мыши: датчик посылает короткий импульс ультразвука и ждёт, пока он отразится от препятствия и вернётся обратно. Отсюда и название — «Ping».
Arduino отправляет короткий триггерный импульс на датчик, а затем с помощью функции pulseIn() измеряет длительность ответного импульса на том же пине. Это время равно промежутку, за который ультразвук прошёл путь до объекта и обратно. Зная скорость звука, несложно пересчитать время в расстояние.
Как это работает
Алгоритм работы с датчиком Ping выглядит так:
- Подать на сигнальный пин короткий импульс
HIGHдлительностью около 5 мкс — это запускает измерение. - Перевести пин в режим
INPUTи вызвать pulseIn() — функция вернёт длительность ответного импульса в микросекундах. - Разделить полученное время на 2 (путь туда и обратно), затем пересчитать в сантиметры или дюймы, используя скорость звука (~29 мкс/см в воздухе).
Необходимые компоненты
- Arduino Board
- Ultrasonic Range Finder
- соединительные провода
Схема подключения
Подключение датчика очень простое: вывод +5V модуля SEN136B5B идёт к пину 5V на плате, вывод GND — к пину GND, а сигнальный вывод SIG — к цифровому пину 7.
Обратите внимание: один и тот же пин (7) используется и для отправки триггерного импульса, и для приёма ответа. Это особенность датчика Ping — у него единственный сигнальный провод.

Схема подключения ультразвукового датчика расстояния Ping к Arduino UNO на макетной плате
Принципиальная схема

Принципиальная схема: ультразвуковой модуль измерения расстояния подключён к Arduino UNO. Вывод SIG датчика — к пину 7, +5V — к питанию платы, GND — к общей земле.
Код
Практические замечания
- Минимальное расстояние — около 3 см. Если объект ближе, датчик может не успеть переключиться с передачи на приём и вернёт некорректное значение.
- Поглощающие поверхности (ткань, поролон, вата) плохо отражают ультразвук — дальномер может «не видеть» такие объекты или занижать расстояние.
- Угол обзора датчика Ping составляет примерно 15°. Объекты за пределами этого конуса не будут обнаружены.
- Не направляйте датчик на очень маленькие или тонкие предметы — отражённый сигнал может быть слишком слабым.
- Если в скетче используется
Serial.println()для вывода значений, откройте монитор порта (скорость 9600) и понаблюдайте за показаниями в реальном времени — это самый быстрый способ проверить работу датчика.
Типичные ошибки
- Нет показаний или всегда 0 — проверьте, правильно ли подключён пин
SIG. ПерепутатьGNDиSIGочень легко, если смотреть на датчик под неудобным углом. - Показания «прыгают» — возможна нестабильность питания. Добавьте конденсатор 100 мкФ между
5VиGNDрядом с датчиком. - Значения не меняются — убедитесь, что пин переключается между
OUTPUT(для триггера) иINPUT(для чтения) в нужный момент.
Дополнительные материалы
Больше базовых уроков вы найдёте в разделе built-in examples.
Подробное описание всех функций языка Arduino доступно в language reference.
Последнее обновление: 29.07.2015, SM