Инфракрасный дальномер. Инфракрасный лазерный дальномер. Основные технические характеристики
Роботам, как и смерть всем человекам очень нужны органы чувств, чтобы ориентироваться в пространстве. Инфракрасный дальномер Sharp GP2Y0A21YK очень подходит на эту роль, если вам требуется избегать столкновения с препятствиями или знать, где примерно это самое препятствие находится.
Кстати, возможно, у вас дома уже есть один из роботов, где используются похожие датчики. Это практически все вменяемые китайские роботы-пылесосы и, полагаю, многие модели Roomba. И, вероятно, многие другие.
А если уж этим сенсорам нашлось место в более-менее серьезной технике, то и мы найдем им применение, правда?
Чтобы не кривить душой, скажу сразу: я заказывал эти датчики не просто поиграться. Наоборот, с самого начала знал, что они мне пригодятся, чтобы сделать интерактивную лампу, которая меняет интенсивность свечения в зависимости от положения ладони над ней.
Конечно, реальность внесла свои коррективы и в итоге . Иными словами, у нее теперь пять режимов: ночник, светильник с регулировкой яркости, термометр, «северное сияние» с ручной регулировкой и автоматическое северное сияние.
А кроме того - пара сервисных функций: включение и выключение фонового и верхнего освещения в комнате.
Вот как это работает:
Ну а теперь самое время подробнее рассказать о датчике, благодаря которому все и случилось.
Как я говорил в самом начале, Sharp GP2Y0A21YK - это инфракрасный дальномер. А значит, он оснащен ИК-излучателем и ИК-приемником: первый служит источником луча, отражение которого ловит второй. При этом ИК-лучи датчика для человеческого глаза невидимы (хотя можно различить красное мерцание, если посмотреть в датчик) и при такой интенсивности безвредны.
На домашних животных они так же не оказывают никакого влияния.
Согласно характеристики такие:
- Напряжение питания: 5В
- Максимальный потребляемый ток: 40 мА (типичный - 30 мА)
- Диапазон работы: 10 см - 80 см
А недостатки - меньший радиус действия (у 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:
// Желтый - A0, Черный - земля, Красный - +5В unsigned int l; void setup() { Serial.begin(9600); pinMode(A0, INPUT); pinMode(13, OUTPUT); l = 0; } void loop() { l = analogRead(A0); Serial.println(l); delay(1000); if (l > 100 && l < 200) { digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); } }
Если подводить итог, то датчик, хотя и немного капризен, очень прост в использовании и относительно дешев.
Использовать его можно в роботах, а также для контроля пересечения дверных проемов, в каких-нибудь интерактивных устройствах, управляемых жестами и в чем-то, что еще подскажет фантазия.
Планирую купить +32 Добавить в избранное Обзор понравился +38 +67 Инфракрасный датчик расстояния 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.
- Проверьте подсоединение модуля sharp;
- Проверьте срабатывание обнаружения датчиком в мониторе последовательного порта.
Дальномеры
В этом уроке мы поподробнее познакомимся с дальномерами.
Ультразвуковой дальномер HC-SR04
На сегодняшний день (2016 г) стоит не более 1$ на AliExpress .
Датчик имеет 4 вывода:
- Vcc – На этот контакт подается питание в 5В.
- Trig – На этот контакт нужно подать логическую единицу на 10мкс, чтобы дальномер испустил ультразвуковую волну.
- Echo – После того, как ультразвуковая волна вернется обратно, на этот контакт будет подана логическая единица на время, пропорциональное расстоянию до объекта
- Gnd – Этот контакт подключается к земле.
Ультразвуковой дальномер – работает по принципу “летучей мыши”. Он посылает ультразвуковую волну и считает время, за которое волна возвратится. Зная скорость звука и время, за которое волна пришла обратно, можно рассчитать расстояние до объекта.
С помощью этого дальномера мы соберем небольшой парктроник, который можно будет увеличить и собрать готовое устройство для парковки автомобиля. Еще я покажу, как можно использовать дальномер для управления своими устройствами.
Дальномер
Давайте соберем простенькую схему для того чтобы понять, как работает дальномер.
Код
#define ECHO 13 #define TRIG 12 void setup() { pinMode(ECHO, INPUT); // На ECHO нужно подать логическую единицу pinMode(TRIG, OUTPUT); //С TRIG мы будем считывать значение расстояния Serial.begin(9600); //Установим соединение с Serial портом } void loop() { //Подаем на TRIG HIGH и сразу LOW digitalWrite(TRIG, HIGH); digitalWrite(TRIG, LOW); //Считываем длину пришедшего сигнала в микросекундах int dist = pulseIn(ECHO, HIGH) / 54; // Делим на 54, чтобы перевести показания в см Serial.println(dist); //Выводим показания дальномера в Serial delay(300); //Ждем немного, чтобы глаз успевал различать показания }
Пояснения
pulseIn(ECHO, HIGH); - С помощью этой функции мы считали время, на которое на пине ECHO устанавливается значение HIGH. Это время считается в микросекундах.
В общем виде pulseIn(); можно записать так:
pulseIn(пин, значение, таймаут);
Пин – Пин, на котором будет производиться подсчет времени.
Значение – Уровень ожидаемого сигнала, при котором будет проводиться подсчет. HIGH или LOW.
Таймаут – время в микросекундах, в течение которого ожидается приход сигнала. По истечении таймаута значение, возвращаемое функцией, будет приравнено к нулю.
Так, с принципом работы дальномера разобрались. Время сделать парктроник для игрушечных машинок.
Парктроник
Схема парктроника выглядит так:
#define ECHO 3 // Прием сигнала с дальномера #define TRIG 2 // Подача сигнала на дальномер #define COUNT 5 // Кол-во светодиодов #define BUZZ 6 // Пин для пищалки #define FIRST 9 // Первый пин светодиодов #define dist_setup 1 //Подстроечный коэффициент #define frequency 5000 void setup() { for(int i = 0; i < COUNT; ++i) //Обозначаем светодиоды как выход... { pinMode(i+FIRST, OUTPUT); } pinMode(ECHO, INPUT); //...ECHO как вход... pinMode(TRIG, OUTPUT); //...TRIG как выход... pinMode(BUZZ, OUTPUT); //...пищалку как выход Serial.begin(9600); //Установим соединение с Serial } void loop() { digitalWrite(TRIG, HIGH); //Подаем команду на дальномер digitalWrite(TRIG, LOW); int dist = pulseIn(ECHO, HIGH) / 54; //Измеряем расстояние до объекта dist = constrain(dist, 2, 60); //Полученные значения загоняем в диапазон от 2 до 60 //Сравниваем полученные показания и включаем нужный режим if (dist < 10) { all_led_on(); } else if (dist < 20 * dist_setup) { four_led_on(); } else if (dist < 30 * dist_setup) { three_led_on(); } else if(dist < 40 * dist_setup) { two_led_on(); } else if(dist < 50 * dist_setup) { one_led_on(); } else { for(int i = 0; i < COUNT; ++i) { digitalWrite(i+FIRST, LOW); } noTone(BUZZ); } } // Описание режимов void one_led_on() { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); digitalWrite(12, LOW); digitalWrite(13, HIGH); tone (BUZZ, frequency, 1000); delay(1000); } void two_led_on() { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); digitalWrite(12, HIGH); digitalWrite(13, HIGH); tone(BUZZ, frequency, 700); delay(700); } void three_led_on() { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); tone(BUZZ, frequency, 400); delay(400); } void four_led_on() { digitalWrite(9, LOW); digitalWrite(10, HIGH); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); tone(BUZZ, frequency, 200); delay(200); } void all_led_on() { for(int i = 0; i < COUNT; ++i) { digitalWrite(i+FIRST, HIGH); } tone(BUZZ, frequency, 5000); delay(5000); }
Пояснения
Парктроник снабжен светодиодной и звуковой индикацией. При приближении объекта на заданные расстояния раздаются более частые сигналы, и загорается больше светодиодов.
dist_ setup – это коэффициент, с помощью которого можно регулировать расстояние до срабатывания парктроника.
У меня он равен единице. Если вам нужно уменьшить расстояние – нужно уменьшить коэффициент, но тогда он будет в виде 0.xxx. Для этого вводится переменная типа float.
Частоту писка можно также изменять. Для этого нужно изменить значение frequency . Но следует помнить, что пищит пьезоизлучатель ужасно. Крайне. И, мне кажется, что он быстро отобьет у вас желание им пользоваться дальше или дольше 5 минут.
Как вариант – понизить частоту до 20 Гц или подключить обычный динамик на 8 Ом, к примеру.
Пароль
Теперь попробуем сделать секретный шифр, который зажигает светодиоды. А если в схему включить сервомотор с задвижкой, то можно сделать замок на дверь или ящичек с паролем.
Внимание на схему.
Код
//Пины первого дальномера #define TRIG1 12 #define ECHO1 13 //Пины второго дальномера #define TRIG2 10 #define ECHO2 11 //Светодиоды #define FIRST 3 #define COUNT 5 //Кнопка сброса #define RESET 2 //Переменные для пароля int key1; int key2; int key3; void setup() { //Обозначение светодиодов как выход for(int i = 0; i < COUNT; i++) { pinMode(i+FIRST, OUTPUT); } //Обозначение пинов на дальномерах pinMode(TRIG1, OUTPUT); pinMode(ECHO1, INPUT); pinMode(TRIG2, OUTPUT); pinMode(ECHO2, INPUT); pinMode(RESET, INPUT_PULLUP); } void loop() { //Подача сигнала на дальномеры digitalWrite(TRIG2, HIGH); digitalWrite(TRIG2, LOW); int dist2 = pulseIn(ECHO2, HIGH,3000) / 54; digitalWrite(TRIG1, HIGH); digitalWrite(TRIG1, LOW); int dist1 = pulseIn(ECHO1, HIGH) / 54; //Дополнительная индикация "ввода" символов if(dist1 < 10 && dist2 < 10) { digitalWrite(5, HIGH); delay(100); } if(dist2 > 20 && dist2 < 25) { digitalWrite(4, HIGH); delay(100); } if(dist1 > 20 && dist1 < 25) { digitalWrite(6, HIGH); delay(100); } //Код пароля + индикация "ввода" символов if(dist2 > 10 && dist2 <15) { key1 = 1; digitalWrite(3, HIGH); delay(100); } if(dist1 > 10 && dist1 < 15) { digitalWrite(7, HIGH); delay(100); key1 = 0; } if(dist1 > 20 && dist1 < 25 && key1 == 1) { key2 = 1; } else if(dist2 > 20 && dist2 <25 || key1 == 0) { key1 = 0; key2 = 0; } if(dist1 < 10 && dist2 < 10 && key2 == 1) { key3 = 1; } if(key3 == 1) { for(int i = 0; i < COUNT; i++) { digitalWrite(i + FIRST, HIGH); } } if(key3 == 0) { for(int i = 0; i < COUNT; i++) { digitalWrite(i + FIRST, LOW); } } //Сброс пароля boolean res = digitalRead(RESET); if(res == 0) { key1 = 0; key2 = 0; key3 = 0; } }
Пояснения
Для того чтобы зажечь все пять светодиодов – нужно знать последовательность действий, которую нужно выполнять. Вот для вас задание – “Не смотря объяснения ниже, определить, какую же последовательность действий нужно выполнять, чтобы загорелись все пять светодиодов”
Это выполнимая задача, если вы читали первую часть курса и разобрались в работе функции if().
Разобрались? Если да – молодцы, а если нет – почти молодцы.
Всего есть три “символа ввода” – от 0 до 10, от 10 до 15 и от 20 до 25.
Состояние от 0 до 10 включается, если поднести обе руки на расстояние от 0 до 10 см к обоим дальномерам. Если это сделать – загорится желтый светодиод.
Состояние от 10 до 15 включится, когда вы поднесете руку к правому или левому дальномеру на расстояние от 10 до 15 см. О совершении этого действия вам подскажут крайний левый светодиод для левой руки и крайний правый – для правой.
Состояние от 20 до 25 включается в тот момент, когда расстояние от руки до одного из дальномеров будет от 20 до 25 см. Об этом вас проинформируют второй слева и второй справа светодиоды для левой и правой руки соответственно.
Стоит отметить, что выполнять последовательность нужно строго.
- Поднести ПРАВУЮ руку на расстояние от 10 до 15.
- После того, как загорелся крайний правый светодиод – поднести ЛЕВУЮ руку на расстояние от 20 до 25. Все это делается, не меняя положения правой руки.
- После индикации второго слева светодиода – отвести ЛЕВУЮ руку влево, чтобы не загорелся крайний левый светодиод, иначе – код нужно будет набирать сначала. ПРАВУЮ руку приблизить на расстояние от 0 до 10, а ЛЕВУЮ подвести на это же расстояние, не задевая расстояние от 10 до 15
- Светодиоды должны гореть и не реагировать на ваши действия.
- Нажать кнопку RESET, для сброса пароля. Светодиоды должны потухнуть.
Каждое неверное движение сбрасывает пароль, и его нужно вводить заново. С первого раза может и не получиться, но спустя несколько минут тренировки, я уверен – все получится, и светодиоды загорятся.
После того, как у вас будет получаться зажечь все светодиоды, можно вам проверить себя и изменить код так, чтобы последовательность была другая – на ваше усмотрение. Можно сделать больше “символов”, а можно оставить те же, но сделать каждый символ с использованием двух дальномеров. Это будет заданием для самостоятельного решения.
Инфракрасный дальномер Sharp
С этими дальномерами все даже проще. Подключать их нужно, как и все аналоговые датчики. И даже можно без резистора на 10 кОм. Если вы по каким-то причинам этого не умеете, то это описано в моей статье про .
Терменвокс
Есть такой музыкальный инструмент, как терменвокс. И сейчас мы соберем подобие этого инструмента.
Код
// Обозначаем дальномер, кнопку и пищалку #define RFIND A5 #define BUT 9 #define BUZ 8 // Логические переменные для кнопки bool sound_on = false; bool but_up = true; void setup() { pinMode(RFIND, INPUT); pinMode(BUZ, OUTPUT); pinMode(BUT,INPUT_PULLUP); } void loop() { //Код для включения и выключения терменвокса bool but_now = digitalRead(BUT); if(but_up && !but_now) { delay(10); bool but_now = digitalRead(BUT); if(!but_now) { sound_on = !sound_on; } } but_up = but_now; //Код для терменвокса if(sound_on == 1) { int val, freq; val = analogRead(RFIND); //Со значениями constrain и map можно поиграть, как душе угодно val = constrain(val, 100, 400); freq = map(val, 100, 400, 1000, 2500); tone(BUZ, freq, 20); } }
Пояснения
Если нажать кнопку, то из пищалки или динамика, смотря, что вы подключили, раздастся сигнал, который будет варьироваться в соответствии с расстоянием от дальномера до вашей руки.
Кнопка нужна для остановки или запуска нашего “Терменвокса”
Итог
Сегодня мы поближе познакомились с дальномерами и провели несколько небольших экспериментов, два из которых можно использовать в реальной жизни. Парктроник – помог бы припарковаться, а Кодовый замок можно усовершенствовать таким образом, что при вводе правильного пароля, сервомотор открывает защелку на двери в вашу комнату, например.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот | |
---|---|---|---|---|---|---|---|
Схема 1 | |||||||
Плата Arduino | Arduino Uno | 1 | В блокнот | ||||
Макетная плата | Breadboard-half | 1 | В блокнот | ||||
Соединительные провода | "Папа-Папа" | 4 | В блокнот | ||||
Дальномер | HC-SR04 | 2 | В блокнот | ||||
Схема 2 | |||||||
Плата Arduino | Arduino Uno | 1 | В блокнот | ||||
Дальномер | HC-SR04 | 1 | В блокнот | ||||
Соединительные провода | "Папа-Папа" | 15 | В блокнот | ||||
Макетная плата | Breadboard-half | 1 | В блокнот | ||||
Пьезоизлучатель | 1 | В блокнот | |||||
Резистор | 220 Ом | 1 | В блокнот | ||||
Светодиод | АЛ102Б | 2 | В блокнот | ||||
Светодиод | АЛ307В | 1 | В блокнот | ||||
Светодиод | АЛ307Д | 2 | В блокнот | ||||
Схема 3 | |||||||
Плата Arduino | Arduino Uno | 1 | В блокнот | ||||
Дальномер | HC-SR04 | 2 | В блокнот | ||||
Резистор | 220 Ом | 5 |
Лазерный дальномер инфракрасного диапазона излучает энергию в диапазоне, невидимом человеческим глазом. Он является лазерным устройством, относящимся к классу 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 используется в тех случаях, куда доступ человека опасен, и невозможен визуальный контроль. Съемка дает абсолютно точное, привязанное к системе координат положение пустот, что в свою очередь дает возможность рационального, точного и правильного проектирования дальнейшего использования или погашения этих пустот.