- Цена: $6.38 (покупал за $5.42)
Роботам, как и смерть всем человекам очень нужны органы чувств, чтобы ориентироваться в пространстве. Инфракрасный дальномер Sharp GP2Y0A21YK очень подходит на эту роль, если вам требуется избегать столкновения с препятствиями или знать, где примерно это самое препятствие находится. Кстати, возможно, у вас дома уже есть один из роботов, где используются похожие датчики. Это практически все вменяемые китайские роботы-пылесосы и, полагаю, многие модели Roomba. И, вероятно, многие другие. А если уж этим сенсорам нашлось место в более-менее серьезной технике, то и мы найдем им применение, правда? Чтобы не кривить душой, скажу сразу: я заказывал эти датчики не просто поиграться. Наоборот, с самого начала знал, что они мне пригодятся, чтобы сделать интерактивную лампу, которая меняет интенсивность свечения в зависимости от положения ладони над ней. Конечно, реальность внесла свои коррективы и в итогеЕвлампия (так зовут лампу) получилась гораздо интереснее базовой концепции. Иными словами, у нее теперь пять режимов: ночник, светильник с регулировкой яркости, термометр, «северное сияние» с ручной регулировкой и автоматическое северное сияние. А кроме того — пара сервисных функций: включение и выключение фонового и верхнего освещения в комнате. Вот как это работает: Ну а теперь самое время подробнее рассказать о датчике, благодаря которому все и случилось. Как я говорил в самом начале, Sharp GP2Y0A21YK — это инфракрасный дальномер. А значит, он оснащен ИК-излучателем и ИК-приемником: первый служит источником луча, отражение которого ловит второй. При этом ИК-лучи датчика для человеческого глаза невидимы (хотя можно различить красное мерцание, если посмотреть в датчик) и при такой интенсивности безвредны. На домашних животных они так же не оказывают никакого влияния. Согласно даташиту характеристики такие:
- Напряжение питания: 5В
- Максимальный потребляемый ток: 40 мА (типичный — 30 мА)
- Диапазон работы: 10 см — 80 см
Что касается конкурентов, то по сравнению с ультразвуковыми сенсорами, например, сверхпопулярным HC-SR04, у этого датчика есть и достоинства, и недостатки. К достоинствам можно отнести все то, что сказано выше, т.е. нейтральность и безвредность. А недостатки — меньший радиус действия (у HC-SR04 порядка 4 м) и зависимость от внешних помех, в том числе — некоторых типов освещения. Я, к примеру, встречал упоминания, что солнечный свет может влиять на показания датчика. Датчик поставляется в спартанском комплекте, т.е. сам датчик и кабель с разъемом для подключения к датчику. На другой стороне — просто залуженные провода, что не очень удобно для использования с Arduino Uno, но вполне подходит для контроллеров без распаянных разъемов. Так как я планировал использовать датчик с Arduino Pro Mini, это был вполне подходящий вариант — провода просто запаял в макетную плату. Провода различаются по цвету: желтый — сигнал, черный — земля, красный — плюс питания (+5В). Выход датчика аналоговый (хотя в даташите почему-то написано — цифровой). То есть, напряжение на нем пропорционально расстоянию до препятствия. Вместе с тем, как и в случае с ультразвуком, для датчика есть разница между разными типами препятствий. В связи с этим в даташите Sharp приводит данные при использовании в качестве отражателей эталонных карточек Kodak с коэффициентом отражения 90%. Судя по нему, на 20 см датчик выдает 1.3В. Давайте сравним с моими экспериментальными данными: Напоминаю, что аналоговый вход Arduino работает в диапазоне 0В — 5В и имеет 1024 ступеней, отсюда расчет: (5/1024)*(показания датчика). Так что если учесть то, что все своими (дрожащими) руками, то показания вполне вписываются в характеристики датчика. И заодно видно, что черная поверхность вносит свои коррективы. . так он светит Вместе с тем, как заметил внимательный читатель, есть и специфика. Суть в том, что когда препятствие находится ближе нижней границы радиуса действия (10 см), датчик начинает считать, что препятствие, наоборот, удаляется (когда накрыл рукой показания зафиксировались на 345). Примерно так это выглядит: В связи с этим рекомендация: в целевом устройстве датчик должен быть установлен так, чтобы препятствие физически не могло оказаться ближе нижней границы радиуса действия. Отсюда вывод: хотя для многих целей даташит вполне адекватен, иногда имеет смысл провести эксперименты, чтобы потом не было мучительно больно. И это особенно актуально, если датчик несколько заглублен (или закрыт ИК-прозрачным материалом), а значит, может получать отражения от стенок или других элементов корпуса. Например, я столкнулся с тем, что Евлампия, будучи установленной на штатном месте после успешно проведенных «настольных» тестов, стала сходить с ума. Сначала я думал, что виноваты помехи по питанию и даже поставил параллельно питанию датчика пару конденсаторов (10 мкФ и 0.1 мкФ), подтянул аналоговый вход Arduino к нулю через резистор 10 кОм и даже купил сетевой фильтр-розетку. Но когда это не помогло, то снова вернулся на стол, где покрутил датчик в разные стороны и увидел, что по факту даже если расстояние до ближайшего препятствия больше 80 см, показания датчика заметно меняются. Так что если ваши подопечные будут неадекватны — проверяйте фактические показания в реальных условиях. Вот, например, элементарный скетч, который, во-первых, с интервалом в полсекунды выводит показания датчика, а, во-вторых, зажигает светодиод Arduino, если показания попадают в диапазон от 100 до 200: Если подводить итог, то датчик, хотя и немного капризен, очень прост в использовании и относительно дешев. Использовать его можно в роботах, а также для контроля пересечения дверных проемов, в каких-нибудь интерактивных устройствах, управляемых жестами и в чем-то, что еще подскажет фантазия.
Содержание
- Обзор
- Технические характеристики модуля
- Пример использования
- Часто задаваемые вопросы FAQ
Обзор инфракрасного датчика расстояния
Инфракрасный датчик расстояния Sharp GP2Y0A является популярным выбором для различных проектов на базе Arduino, которым требуется точное измерение расстояния. В датчиках Sharp установлен инфракрасный (IR) светодиод (LED) с линзой, который излучает узкий световой луч. Отраженный от объекта луч направляется через другую линзу на позиционно-чувствительный фотоэлемент (Position-Sensitive Detector, PSD). От местоположения падающего на PSD луча зависит его проводимость. Проводимость преобразуется в напряжение и, к примеру, оцифровывая его аналого-цифровым преобразователем микроконтроллера, можно вычислить расстояние. Выход инфракрасного датчика расстояния Sharp обратно пропорциональный — с увеличением расстояния его значение медленно уменьшается. Вид графика зависимости между расстоянием и напряжением.
Датчики, в зависимости от их типа, имеют границы измерения, в пределах которых их выход может быть признан надежным. Измерение максимального реального расстояния ограничивают два фактора: уменьшение интенсивности отраженного света и невозможность PSD регистрировать незначительные изменения местоположения отображенного луча. В целом график зависимости между расстоянием и напряжением не является линейным, однако в пределах допустимых расстояний график обратной величины выходного напряжения и расстояния к линейности приближается достаточно близко, и с его помощью довольно просто получить формулу для преобразования напряжения в расстояние. Для нахождения такой формулы необходимо точки этого графика ввести в какую-либо программу обработки табличных данных и из них создать новый график. В программе обработки табличных данных на основе точек графика возможно автоматически вычислить линию тренда. Например, для датчика GP2Y0A021YK0F:
Технические характеристики инфракрасного дальномера Sharp
• Рабочее напряжение: 4,5 — 5,5 В; • Максимальный потребляемый ток: 40 мА (типичный — 30 мА); • Тип выходного сигнала: аналоговый; • Дифференциальное напряжение, большее диапазона распознавания расстояния: 2,0 В; • Время отклика: 38 ± 10 мс • Диапазон работы: • Датчик GP2Y0A41SK0F: 4 — 30 см; • Датчик GP2Y0A021YK0F: 10 см — 80 см; • Датчик GP2Y0A02YK0F: 20 см — 150 см;
Пример использования
Создадим пример подсчета посетителей магазина. Упростим задачу, предполагая, что вход осуществляется через неширокую дверь, и для входа и выхода разные двери. На входе ставим инфракрасный дальномер Sharp GP2Y0A21YK0F (20-150 cм) таким образом, чтобы при прохождении человека показания имели значения 10 – 50 см, при отсутствии людей 80 см. При обнаружении посетителя увеличиваем счетчик подсчета посетителей. Данные выводим на графический дисплей Nokia 5110. Для отображения информации с датчиков будем использовать ЖК-дисплей Nokia 5110. Это графический монохромный дисплей с разрешением 84×48 точек. Дисплей Nokia 5110 поставляется на плате в паре с контроллером PCD8544 и штыревым разъемом. Электропотребление дисплея позволяет питать его от выхода +3.3 В платы Arduino. Для проекта нам понадобятся следующие детали: • плата Arduino Uno • макетная плата (Breadboard Half ) • инфракрасный датчик расстояния sharp GP2Y0A21YK0F • дисплей Nokia 5110 • соединительные провода Соберем схему, показанную на рисунке. Запустим Arduino IDE. Создадим новый скетч и внесем в него следующее содержимое:
//Инфракрасный датчик расстояния //3d-diy.ru // подключение библиотек для работы с дисплеем Nokia #include #include // Nokia 5110 // pin 3 - Serial clock out (SCLK) // pin 4 - Serial data out (DIN) // pin 5 - Data/Command select (D/C) // pin 6 - LCD chip select (CS) // pin 7 - LCD reset (RST) Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7); // аналоговый пин для подключения выхода Vo сенсора const int IRpin = A0; // переменные int value1; // для хранения аналогового значения unsigned long timevisitors; // время прохождения int count_visitors=0; // переменная подсчета посетителей void setup() { // запуск последовательного порта Serial.begin(9600); Serial.println("start"); // инициализация дисплея display.begin(); // установить контраст фона экрана display.setContrast(60); display.clearDisplay(); // очистить экран display.setTextSize(1); // размер шрифта display.setTextColor(BLACK); // цвет // заставка display.setCursor(5,15); display.print("Visitors: 0"); display.display(); delay(2000); } void loop() { // получаем сглаженное значение и переводим в напряжение value1=irRead(); if(value1>50) // фиксация прохождения { timevisitors=millis(); while(irRead()>50) ; if(millis()-timevisitors>300) // > минимального времени прохождения { Serial.println("passage!!!"); count_visitors=count_visitors+1; // увеличение счетчика // вывод в монитор последовательного порта Serial.print("count_visitors="); Serial.println(count_visitors); // вывод на дисплей display.clearDisplay(); display.setCursor(5,15); display.print("Visitors: "); display.print(count_visitors); display.display(); } } delay(200); } // Усреднение нескольких значений для сглаживания int irRead() { int averaging = 0; // переменная для суммирования данных // Получение 5 значений for (int i=0; i i++) { value1 = analogRead(IRpin); // значение сенсора переводим в напряжение float volts = analogRead(IRpin)*0.0048828125; // и в расстояние в см int distance=32*pow(volts,-1.10); averaging = averaging + distance; delay(55); // Ожидание 55 ms перед каждым чтением } value1 = averaging / 5; // усреднить значения return(value1); }
Работать с сенсорами SHARP очень просто — достаточно подключить к нему питание и завести вывод Vo на аналоговый вход Arduino. Значение получаемой функции analogRead представляет собой целое число от 0 до 1023. Таким образом, чтобы узнать напряжение на выходе сенсора, необходимо значение на аналоговом входе Arduino умножить на 0,0048828125 (5 В / 1024). Расстояние вычисляем по формуле distance=volts*0.0001831-0.003097. При чтении данных, при каждой итерации цикла, иногда приходят разные значения сигнала при одном и том же расстоянии. Датчик передает сигнал на аналоговый порт с некоторой амплитудой и иногда в момент считывания данных значение оказывалось отличным от нормального, потому что итерация приходится на провал. Для сглаживания значений, получаемых с дальномера используем функцию irRead(). Датчик обнаруживает попадание объекта в дверной проем. Далее ожидаем окончания прохода. Если это время больше минимального времени прохода (отсечение взмаха руки, пролет предмета и пр.) инкрементируем счетчик посетителей и выводим данные в последовательный порт и на дисплей. Для работы с дисплеем Nokia 5110 нам понадобятся Arduino библиотеки Adafruit_GFX и Adafruit_PCD8544.
Часто задаваемые вопросы FAQ
- Проверьте правильность соединения всех проводов, согласно схеме на рисунке 5.
- Проверьте подсоединение модуля sharp;
- Проверьте срабатывание обнаружения датчиком в мониторе последовательного порта.
Главнаяв†’Интернет-магазинв†’Каталог товаровв†’Сенсоры и датчикив†’
Отложить375 руб<nobr>+—</nobr></td></table>Есть в наличии ( 6 )Нашли дешевле?Sharp GP2Y0A21YK0F
Датчик расстояния Sharp GP2Y0A21 является отличным устройством, для добавления функции обхода препятствия или обнаружения движения, вашему роботу или другому проекту. С диапазоном обнаружения от 10 до 80 см и выходным аналоговым сигналом показывающим расстояние, этот датчик очень прост в использовании.
Описание:
Датчики Sharp являются популярным выбором для различных проектов, которым требуется точное измерение расстояния. Этот инфракрасный датчик более экономичен по сравнению с ультразвуковым дальномером, а также обеспечивает лучшее быстродействие по сравнению с другими инфракрасными датчиками. Непосредственная связь с большинством микроконтроллеров реализуется за счёт соединения аналогового выхода с аналого-цифровым преобразователем для измерения значений, или через компаратор, для порогового обнаружения. Определяемое расстояние для этой версии датчика от 10 до 80 см; график зависимости выходного напряжения от расстояния показан на рисунке.
В GP2Y0A21 используется 3-х выводной разъём JST совместимый с 3-х жильным кабелем JST для датчиков Sharp (в комплект не входит). Также можно просто припаять три провода, если смотреть сзади, то слева направо: питание, земля и выходной сигнал.
Линеаризация выходного значения:
Отношение выходного напряжения датчика к обратно пропорционально изменяемому расстоянию практически линейно на всём диапазоне измерений. Техническая документация GP2Y0A21YK0F (374k pdf) содержит график изменения аналогового выходного напряжения как функции от обратно пропорционально изменяющегося расстояния до отражённого объекта. Вы можете использовать этот график для приблизительной оценки расстояния, сопоставляя выходное напряжение (V) c расстоянием (см). Более простой метод определения расстояния заключается в вычислении коэффициента линеаризации, примерно равный расстоянию до отражённого объекта. Чтобы его найти, необходимо разделить постоянный множитель шкалы (~27 В*см) на выходное напряжение. Добавление смещения и изменение коэффициента масштабирования может улучшить аппроксимацию этой линии.
Спецификация:бочее напряжение: 4,5 — 5,5 В </li>требляемый ток: 30 мА </li>меряемое расстояние: 10 — 80 см </li>п выходного сигнала: аналоговый </li>фференциальное напряжение, большее диапазона распознавания расстояния: 1,9 В </li>емя отклика: 38 ± 10 мс </li>змеры: 29,5 х 13,0 х 13,5 мм </li>с: 3,5 гр
Мы продаём также аналоговые датчики дальности: Sharp GP2Y0A51SK0F 2-15см, Sharp GP2Y0A41SK0F 4-30см, Sharp GP2Y0A02YK0F 20-150см. У этих аналоговых датчиков идентичные выводы и очень похожие корпуса, что удобно при возникновении необходимости замены датчика в разрабатываемом приложении. У нас также есть цифровые датчики дальности Sharp GP2Y0D805, GP2Y0D810 и GP2Y0D815, у которых очень маленькое минимальное расстояние обнаружения, быстрое время отклика, низкий ток потребления, и намного меньший размер корпуса.
Данный перевод является собственностью интернет-магазина РОБОТОТЕХНИКА — www.robototehnika.ru
Файлы для скачивания:Документация по GP2Y0A21YK0F (365кб pdf) </li>
Характеристики
Артикул | 23302 |
Используемые источники:
- https://mysku.ru/blog/aliexpress/29357.html
- https://3d-diy.ru/wiki/arduino-datchiki/infrakrasnyj-datchik-rasstojanija/
- https://robototehnika.ru/e-store/catalog/202/857/