ИК-дальномеры Sharp GP2Y0A: принцип работы и счётчик посетителей

ИК-дальномеры Sharp GP2Y0A: принцип работы и счётчик посетителей

Как инфракрасные дальномеры Sharp превращают отражённый луч в напряжение, как пересчитать его в сантиметры и собрать на Arduino счётчик посетителей.

Как датчик определяет расстояние

Инфракрасные дальномеры Sharp серии GP2Y0A часто применяют в проектах на Arduino, где нужно измерять расстояние до объекта.

Инфракрасный датчик расстояния Sharp GP2Y0A

Внутри корпуса находится инфракрасный светодиод с линзой, формирующий узкий луч. Отразившись от объекта, луч через вторую линзу попадает на позиционно-чувствительный фотоэлемент (Position-Sensitive Detector, PSD). Проводимость PSD зависит от того, в какую его точку пришёл луч, а эта точка определяется расстоянием до объекта. Проводимость преобразуется в напряжение, которое остаётся оцифровать АЦП микроконтроллера.

Ход луча от ИК-светодиода к позиционно-чувствительному элементу

Напряжение и расстояние: нелинейная зависимость

Выходной сигнал обратно пропорционален расстоянию: чем дальше объект, тем ниже напряжение, причём убывает оно плавно.

График зависимости выходного напряжения от расстояния

У каждой модели есть рабочий диапазон, в котором показаниям можно доверять. Дальнюю границу определяют два обстоятельства: отражённый свет слабеет, а PSD перестаёт различать малые смещения луча.

В целом зависимость нелинейна, однако в пределах рабочего диапазона график обратной величины напряжения от расстояния близок к прямой. Этим пользуются для получения формулы пересчёта: точки графика заносят в программу для работы с таблицами, строят по ним новый график и автоматически рассчитывают линию тренда.

Линия тренда для датчика GP2Y0A021YK0F

Характеристики

Рабочее напряжение4,5–5,5 В
Потребляемый токтипичный 30 мА, максимальный 40 мА
Выходной сигналаналоговый
Перепад выходного напряжения в диапазоне измерения2,0 В
Время отклика38 ± 10 мс
Диапазон GP2Y0A41SK0F4–30 см
Диапазон GP2Y0A021YK0F10–80 см
Диапазон GP2Y0A02YK0F20–150 см

Проект: счётчик посетителей

Практический пример — подсчёт людей, входящих в магазин. Задача упрощена: вход и выход идут через разные неширокие двери, поэтому достаточно одного дальномера на входе. Его устанавливают так, чтобы пустой проём давал показание около 80 см, а проходящий человек — от 10 до 50 см.

Результат выводится на Nokia 5110 — монохромный графический ЖК-дисплей 84×48 точек, который поставляется на плате с контроллером PCD8544 и штыревым разъёмом. Потребление у него небольшое, и питать его можно от выхода +3,3 В платы Arduino. Список деталей:

  • плата Arduino Uno;
  • макетная плата;
  • инфракрасный датчик расстояния Sharp;
  • дисплей Nokia 5110;
  • соединительные провода.

Подключить дальномер несложно: подаётся питание, а выход Vo заводится на аналоговый вход, в примере A0. Дисплей занимает контакты 3 (SCLK), 4 (DIN), 5 (D/C), 6 (CS) и 7 (RST) и обслуживается библиотеками Adafruit_GFX и Adafruit_PCD8544.

Что делает скетч

Функция analogRead возвращает число от 0 до 1023. Чтобы получить напряжение на выходе датчика, его умножают на 0,0048828125, то есть на 5 В / 1024. Далее напряжение переводится в сантиметры; в листинге для этого записано выражение distance = 32*pow(volts, -1.10).

Отдельные отсчёты у дальномера могут расходиться даже при неподвижном объекте: сигнал имеет некоторую амплитуду колебаний, и момент чтения иногда попадает на провал. Поэтому чтение вынесено в функцию irRead(), которая берёт пять измерений с паузой 55 мс и возвращает их среднее.

Основной цикл сравнивает усреднённое значение с порогом 50. Зафиксировав появление объекта в проёме, программа запоминает время и ждёт, пока объект не уйдёт. Если проход длился дольше 300 мс, счётчик увеличивается на единицу, а новое значение отправляется в последовательный порт и на дисплей в строке «Visitors». Более короткие события — взмах руки, пролетевший предмет — отбрасываются.

Диагностика

Если на дисплее ничего нет, проверяют все соединения по схеме. Если не срабатывает дальномер, проверяют его подключение и смотрят в мониторе последовательного порта, фиксируются ли обнаружения.

← Все статьи