Добавить в корзинуПозвонить
Найти в Дзене
Electronics && Oleg Gorshkov

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

Sharp 2Y0A21 — это инфракрасный датчик расстояния (полное название модели — Sharp GP2Y0A21YK0F), предназначен для измерения дистанции в диапазоне от 10 до 80 см. Он выдает аналоговый сигнал, пропорциональный измеряемому расстоянию. Датчик использует метод триангуляции с помощью инфракрасного излучателя (IRED) и позиционно-чувствительного детектора (PSD) для определения расстояния до объекта. Выходное напряжение обратно пропорционально расстоянию до объекта (напряжение выше на меньших расстояниях). Рабочее напряжение 4,5–5,5 В, потребляемый ток ~30 мА. Чаще всего датчик используют совместно с микроконтроллером, или с платой Arduino. Рассмотрим простейший вариант подключения к Arduino. Датчик имеет всего три вывода: +питания (красный провод), земля (чёрный провод) и измерительный выход (желтый провод). Соединим желтый провод с аналоговым входом Arduino A0, остальные соответственно с VCC и GNG. Между VCC и GNG производитель рекомендует установить конденсатор на 10 мкФ. Зальем в Arduino с

Sharp 2Y0A21 — это инфракрасный датчик расстояния (полное название модели — Sharp GP2Y0A21YK0F), предназначен для измерения дистанции в диапазоне от 10 до 80 см. Он выдает аналоговый сигнал, пропорциональный измеряемому расстоянию. Датчик использует метод триангуляции с помощью инфракрасного излучателя (IRED) и позиционно-чувствительного детектора (PSD) для определения расстояния до объекта. Выходное напряжение обратно пропорционально расстоянию до объекта (напряжение выше на меньших расстояниях). Напряжение питания 4,5–5,5 В, потребляемый ток ~30 мА.

Чаще всего датчик используют совместно с микроконтроллером, или с платой Arduino.

Рассмотрим простейший вариант подключения к Arduino. Датчик имеет всего три вывода: плюс питания (красный провод), земля (чёрный провод) и измерительный выход (желтый провод). Соединим желтый провод с аналоговым входом Arduino A0, остальные соответственно с VCC и GNG. Между VCC и GNG производитель рекомендует установить конденсатор на 10 мкФ. Зальем в Arduino скетч:

#define SENSOR_PIN A0 // Аналоговый пин для подключения датчика

void setup() {

Serial.begin(9600); // Инициализация монитора порта

}

void loop() {

// Читаем значение с датчика (0 - 1023)

int rawValue = analogRead(SENSOR_PIN);

// Формула для аппроксимации расстояния в см (для Sharp GP2Y0A21YK0F)

// Рассчитана на основе дата шита для 5V питания

float distance = 12343.85 * pow(rawValue, -1.15);

// Вывод данных в монитор порта

Serial.print("Distance: ");

Serial.print(distance);

Serial.println(" cm");

delay(200); // Небольшая задержка для стабильности вывода

}

Arduino должна считывать результаты измерения, и выводить их в монитор порта в сантиметрах, раз в 200 миллисекунд.

подключение к Arduino
подключение к Arduino

Установил расстояние примерно 16 сантиметров.

результат
результат

Работает! Данный датчик можно использовать наряду с ультразвуковым HC-SR04 в различных проектах автоматики и робототехники. Каждый из них имеет свои преимущества и недостатки. Например HC-SR04 имеет возможность измерять большее расстояние, но не любит пористые материалы, плохо отражающие звук. 2Y0A21 в отличии от него не любит прозрачные материалы, плохо отражающие свет.

Меня же больше прельщает возможность использовать данный датчик в различных проектах, без микроконтроллера. Такую возможность даёт простой аналоговый выход. Хоть выходное напряжение изменяется и нелинейным образом в зависимости от расстояния, но упрощённо его можно привести к формуле : Distance(cm) = 27.26/(Voltage-0.1).

Для примера рассмотрим схему, зажигающую светодиод, при достижении расстояния меньше заданного.

схема принципиальная
схема принципиальная

В данной схеме я реализовал компаратор на операционном усилителе LM358. Можно было, конечно, использовать специализированный компаратор, например LM393, но решил использовать то, что есть в наличии. Народная микросхема LM358 содержит в своём корпусе два операционных усилителя. Мне нужен только один из них, поэтому второй я заглушил. На неинвертирующий вход усилителя подаётся напряжение с датчика, на инвертирующий — опорное напряжение с потенциометра. Резисторы R1 и R2 создают гистерезис. Без него светодиод будет моргать или гореть в полнакала на участках, близких к пороговым. Номиналы этих резисторов подобрал экспериментальным путём.

Добился потенциометром срабатывания на расстоянии, близком к 20 сантиметрам

Видно, что светодиод загорается при приближении на 19 сантиметров и ближе, а гаснет при удалении на 22 сантиметра и более. При этом переключение происходит скачкообразно, без дребезга.

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