Датчики расстояния sharp сравнение. Инфракрасный лазерный дальномер

Все о розетках

В данной статье рассмотрим подключение и работу с ИК-датчиком измерения расстояния SHARP GP2Y0A02YK0F.
В отличие от того же , данный датчик имеет гораздо более скромный диапазон измерений, но все равно обладает рядом полезных отличительных свойств. Например, данный датчик позволяет измерять расстояние даже через прозрачные поверхности (правда, теряя точность показаний, но все же).

Подключение датчика:

GND на любой из GND пинов--- ардуино

OUT на любой из аналоговых входов ардуино (в примерах подсоединено к A0)

VCC на + 5 вольт на ардуино

Основные технические характеристики:

Диапазон измерения расстояния: от 20 до 150 см

Аналоговый выход

Размеры: 29.5x13x21.6 мм

Потребление тока: 33 мА

Напряжение питания: от 4.5 до 5.5 В

Её необходимо распаковать и добавить в папку "libraries" в папке с Arduino IDE. Не забывайте перезагрузить среду, если на момент добавления IDEшка была открыта.

В чем особенность данной библиотеки и почему именно её рекомендуем к использованию? Ответ прост и кроется в принципе её работы. Для измерения расстояния используется множество замеров, из которых отбрасываются ошибочные, которые сильно отличаются от соседних. По утверждениям авторов - 12% всех показаний вносят 42% ошибки в итоговое значение расстояния, если не отбрасывать ошибочные измерения.

Перейдем к программному коду - примеру работы с датчиком (пример подойдет также для датчика GP2Y0A21Y, в коде необходимо будет изменить значение model на 1080):

Пример программного кода

#include #define ir A0 //пин, к которому подключен датчик. Обязательно аналоговый! #define model 20150 //модель датчика. 1080 для GP2Y0A21Y, 20150 для GP2Y0A02Y SharpIR SharpIR (ir, model); void setup () { Serial .begin (9600); } void loop () { delay (2000); unsigned long pepe1=millis (); // засекаем время до начала измерений int dis=SharpIR .distance(); // получаем расстояние с датчика Serial .print ("Mean distance: " ); // выводим расстояние в монитор порта Serial .println (dis); unsigned long pepe2=millis ()-pepe1; // считаем время, затраченное на измерение Serial .print ("Time taken (ms): " ); // и выводим его Serial .println (pepe2); }

Лазерный дальномер инфракрасного диапазона излучает энергию в диапазоне, невидимом человеческим глазом. Он является лазерным устройством, относящимся к классу 1 в соответствии с требованиями Управления контроля продукции и лекарств США, 21 CFR 1040.10-11. Маркировка соответствия лазера требованиям FDA, закреплена на корпусе системы CMS Wireless. На этой маркировке указываются также модель, серийный номер и дата изготовления.

К классу 1 относятся лазеры, которые в нормальных рабочих условиях не могут причинить человеку вреда. При нормальной установке человек может смотреть на лазерный луч без очков или в своих обычных очках (Не смотрите на лазерный луч, когда система включена – стандартная мера предосторожности).

Лазер остается в возбужденном состоянии, пока команды LASER TEST или START SURVEY продолжают быть выбраны в программном обеспечении контроллера. Когда лазер находится в возбужденном состоянии, на экран контроллера выводятся расстояния и другие данные.

Красный светодиод на панели управления, находящейся в ящике контроллера, постоянно горит при включенной системе независимо от того, возбужден ли лазер или нет.

В состав лазерной сканирующей головки входят лазерный дальномер и узел захвата (рисунок 7.2, рисунок 7.3).

Рисунок 7.2 - Сканирующая головка

Рисунок 7.3 - Внешний вид лазерной сканирующей головки

Рисунок 7.4 - Установка VIP в подземных условиях

Рисунок 7.5 - Установка штанг и мачт в подземных условиях

Рисунок 7.6 - Ввод сканера в полость в подземных условиях

Таблица 33 -Технические характеристики

Лазерная сканирующаяголовка
Дальность измерения цели с 20 – процентным отражением 350 м.
Дальность измерения до белой стены 650 м
Диапазон угла вращения 0 - 360º
Диапазон угла наклона 0 – 145º
Линейная точность измерения -+2 см в диапазоне рабочих температур
Разрешающая способность 1 см
Угловая точность измерения -+ 0,3º
Максимальная скорость вращения 21º/с
Длина волны 905 нм (в инфракрасном диапазоне), 635 нм (в оптическом диапазоне).
Отклонение лазерного луча 5 мрад
Мах кол-во отсчетов 100 000 (для каждой съемки)
Опорная конструкция
Материалы Углепластик, стыковочные узлы из полиэтилена высокой плотности, зажимы из нержавеющей стали.
Длина штанги 2-9 м, регулируется
Кол-во штанговых секций 5 конических по 2 м каждая
Длина опор мачты (2 шт) 2-5 м, регулируется
Кол-во мачтовых надставок 5 (различной длины)
Питание (внешние батареи)
Напряжение Номинально 24 В
Емкость 7.2 А/ч, номинально 24 В
Потребляемая мощность 2.5 А, номинально 24 В
Внешние условия
Рабочая температура Дальномер (- 10º до +50º), указатель (0º до 40º)
Температура хранения От –20 до +50º
Влажность воздуха От 0 до 95%, без конденсата
Размеры
Блок питания (мм) 270 * 247 * 175
Вес, кг 8.3
Мачта (мм) 2290*230*250
Секция штанги (мм) 1930*200*250
Вес, кг 44.5
Безопасность для глаз
Указатель 2 класс
Дальномер 1 класс
Устройство вертикального ввода в полость (VIP)
Компоненты 25 алюминиевых стержней (около 1.5 метра каждый)
1 адаптер сканирующей головки
2 центрирующие пружинные системы
1 соединительный кабель, около 41 метра

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

Инфракрасный дальномер позволяет определять расстояние до объектов. Это модель GP2Y0A021 компании Sharp. Сенсор определяет расстояние по отражённому лучу света в инфракрасном спектре. Дальномер может использоваться для объезда препятствий и ориентирования на местности.

Выводом является аналоговый сигнал, с уровнем напряжения, зависимым от расстояния до цели в установленном направлении.

Датчик подключается к управляющей электронике через 3 провода. При подключении к Arduino будет крайне удобно использовать Troyka Shield. Шлейф для подключения включён в комплект.

Внимание! Распиновка питания этого сенсора может различаться. Перед включением модуля ознакомьтесь с особенностями подключения модулей DFRobot.

Чтобы надёжно установить дальномер куда-либо, существует специальное крепление.

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

  • Напряжение питания: 4,5–5,5 В
  • Потребляемый ток: 30–40 мА
  • Диапазон расстояний: 10–80 см

Ограничения

Поскольку в основе работы устройства используется свет, сенсор плохо подходит для определения расстояния до светопоглощающих объектов. Дальномер даже не почувствует прозрачную поверхность, например из пластика или оргстекла. Для определения расстояний в таком окружении подойдёт ультразвуковой дальномер URM37 или HC-SR04.

Этот инфракрасный дальномер имеет небольшую мёртвую зону перед собой: 10 см. Если необходимо рассматривать препятствия на меньших расстояниях, а предельное расстояние не так важно, рассмотрите дальномер для дистанций 4-30 см той же линейки. Если же ваше устройство должно видеть дальше, обратите внимание на дальномер для дистанций 20-150 см. Можно добиться большей гибкости, комбинируя датчики с различными диапазонами.

Инфракрасный датчик расстояния 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. Создадим новый скетч и внесем в него следующее содержимое: //Инфракрасный датчик расстояния //сайт // подключение библиотек для работы с дисплеем 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<5; 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

1. На дисплей не выводится информация
  • Проверьте правильность соединения всех проводов, согласно схеме на рисунке 5.
2. Не срабатывает датчик расстояния
  • Проверьте подсоединение модуля sharp;
  • Проверьте срабатывание обнаружения датчиком в мониторе последовательного порта.