Цифровой датчик линии призван отличать тёмную поверхность от светлой.
Разместите датчик на нижней поверхности мобильной платформы, чтобы научить вашего робота двигаться вдоль линии, не выезжать за пределы территории или не сваливаться с края стола.
Проверим датчик в действии с платформами Arduino. На выходе сенсора цифровой сигнал. Для быстрого и удобного подключения используйте Troyka Shield.
// пин датчика линии #define SENSOR_LINE_PIN A0 void setup() { // открываем последовательный порт Serial.begin(9600); } void loop() { // считываем значение с датчика bool signal = digitalRead(SENSOR_LINE_PIN); if ( !signal ) { // если сигнал ноль // выдаем предупреждение Serial.println("Warning! Out of table!"); } else { // если сигнал единица Serial.println("OK! Above table!"); } delay(100); }
После загрузки скетча — откройте монитор Serial-порта. Проведите датчиком сначала над столом, а потом за краем стола. При выходе за край стола на мониторе должно возникнуть предупреждение.
Датчик подключается к управляющей электронике по трём проводам.
Питание (V) — красный провод. На него должно подаваться напряжение 5 В (или 3,3 В).
Земля (G) — чёрный провод. Должен быть соединён с землёй микроконтроллера.
Сигнальный (S) — жёлтый провод. Подключается к цифровому входу микроконтроллера. Через него датчик передает микроконтроллеру бинарное значение, ноль или единицу.
Оптопара TCRT5000 — это собранные в одном корпусе светоиод (синий на рисунке) и фототранзистор n-p-n типа (чёрный на рисунке). Светодиод излучает в инфракрасном диапазоне на длине волны 950 нм. Свет отражается от поверхности и попадает на фототранзистор.
Нужно иметь ввиду, что показания датчика также зависят от расстояния до поверхности. Когда датчик слишком низко, перегородка между диодом и фототранзистором оптопары мешает транзистору принимать отраженный свет. Когда датчик слишком высоко, отраженный свет рассеивается и не доходит до датчика. В обоих случаях датчик выдаст 0.
На борту цифрового датчика расположен инвертирующий триггер Шмитта. При низком напряжении на фототранзисторе — на выходе датчика единица, при высоком — ноль.
Переменный резистор позволяет настраивать датчик линии на различные оттенки серого. Если повернуть ручку резистора до упора против часовой стрелки (максимальное сопротивление), то датчик будет выдавать логический ноль над поверхностью светлого оттенка серого. Если повернуть ручку до упора по часовой стрелке (минимальное сопротивление) то датчик будет реагировать только на самые тёмные оттенки. Варьируя сопротивление, вы можете настроить датчик на нужный вам оттенок.
Сигнальный светодиод загорается, когда датчик находится над светлой (по его мнению) поверхностью. Наличие диода позволяет более точно откалибровать датчик. Оттенок серого, над которым он загорается в зависимости от настройки можно считать реперной точкой.
Чип сенсора: оптопара TCRT5000
Напряжение питания: 3,3-5 В
Максимальный потребляемый ток: менее 10 мА
wiki.amperka.ru
Аналоговый датчик линии в отличии от цифрового видит не только чёрную и белую поверхность, но и найдёт все оттенки серого.
Закрепите пару таких сенсоров внизу мобильной платформы и ваш робот станет участником соревнований езды по линии или робосумо. Датчик линии так же позволит роботу увидеть пропасть и спасёт от падения со стола.
Проверим датчик в действии с платформами Arduino. На выходе сенсора аналоговый сигнал. Для быстрого и удобного подключения используйте Troyka Shield.
// пин датчика линии #define SENSOR_LINE_PIN A0 // определяем напряжение питания Vcc — 5 В или 3.3 В #define VOLTAGE 5.0 // переменная для хранения значения аналогового сигнала в вольтах float v; void setup() { // открываем последовательный порт Serial.begin(9600); } void loop() { // считываем показания с датчика, вычисляем уровень напряжения int reading = analogRead(SENSOR_LINE_PIN); v = (float)reading * VOLTAGE / 1024.0; // выводим показания на экран Serial.print("V = "); Serial.print(v); Serial.println(" volts"); delay(3000); }
После загрузки скетча — откройте монитор Serial-порта. Перемещайте датчик над разными градациями серого и следите за показаниями.
Датчик подключается к управляющей электронике по трём проводам.
Земля (G) — Соедините с пином GND микроконтроллера.
Питание (V) — Соедините с рабочим напряжением микроконтроллера.
Сигнальный (S) — Выход аналогового сигнала датчика. Подключите к аналоговому входу микроконтроллера.
Оптопара TCRT5000 — это собранные в одном корпусе светодиод и фототранзистор. Светодиод излучает свет в инфракрасном диапазоне с длиной волны 950 нм. Световой поток отражается от поверхности и попадает на фототранзистор. Чем светлее поверхность, тем больше отражается света, чем темнее — тем меньше.
Показания датчика также зависят от расстояния сенсора до поверхности. При расстоянии менее 3 миллиметров — перегородка между ИК-излучателем и приёмником мешает транзистору принимать отраженный свет. А при расстоянии более 10 миллиметров — отраженный свет рассеивается и не доходит до приёмника.
При повороте подстроечного резистора до упора по часовой стрелке, датчик будет воспринимать границу между черной и белой поверхностями как размытую. А при повороте в обратную сторону — граница для датчика станет резче.
Когда датчик находится над светлой поверхностью индикаторный светодиод горит, а над тёмной — не горит.
Светодиод позволяет более точно откалибровать датчик. Оттенок серого, над которым он загорается в зависимости от настройки — cчитайте реперной точкой.
Чип сенсора: оптопара TCRT5000
Напряжение питания: 3.3–5 В
Максимальный потребляемый ток: менее 10 мА
wiki.amperka.ru
Датчик подключается к любому аналоговому выводу arduino
В комплекте имеется кабель для быстрого и удобного подключения к Trema Shield.
Модуль удобно подключать 2 способами, в зависимости от ситуации:
Используя провода «Папа — Мама», подключаем напрямую к контроллеру Piranha UNO
Используя 3-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.
Напряжения питания датчика 5В постоянного тока. Подводится к выводам «V» (+5В) и «G» (GND).
Датчик освещает поверхность направленным ИК светодиодом (длинна световой волны 940нм). Световой поток отражается от поверхности и попадает на кремниевый NPN фото-транзистор, где преобразуется в электрический сигнал. Так как используется фото-транзистор NPN типа (обратной проводимости), с нагрузкой на коллекторе, то уровень электрического сигнала на выходе «S», обратно-пропорционален отраженному от поверхности свету и прямо пропорционален удалению от отражающей поверхности.
Из графика видно, что если датчик линии находится в 5 мм от белой отражающей поверхности, то уровень на в
wiki.iarduino.ru
Езда по линии — самое зрелищное и азартное соревнование по робототехнике. Следуя по чёрной линии, робот должен быстрее всех добраться до финиша. В этом ему помогает датчик линии: при помощи оптических сенсоров робот «видит» чёрную линию и следует по ней. Чем точнее датчик, тем быстрее робот преодолеет дистанцию и придёт к финишу.
Установите на «Робоняшу» сборку из аналоговых датчиков линии, и ваш робот станет чемпионом в этом виде соревнований. Ни одна линия не ускользнёт от его восьмиканального зрения.
На борту модуля расположено восемь датчиков линии. Кроме чёрного и белого цвета, каждый сенсор способен распознать 4096 оттенков серого. Благодаря такой чувствительности робот лучше определяет границу перехода от линии к фону и быстрее реагирует на повороты.
Сенсоры линии подключены к отдельному 32-разрядному микроконтроллеру STM32F030F4P6 с вычислительным ядром ARM Cortex M0. Контроллер считывает данные с восьми датчиков линии и передаёт их управляющей платформе по интерфейсу I²C/TWI. Адрес модуля по умолчанию 0x42
, но его можно изменить, если захотите подключить несколько модулей.
Интенсивность излучения и чувствительность фотоприёмников можно программно регулировать.
К платформе Arduino сенсорный модуль удобнее подключать через плату расширения: например, через Troyka Shield.
При помощи трёхпроводных шлейфов подключите модуль к питанию V
и G
и к пинам шины I²C — SDA
и SCL
.
Для запуска примеров скачайте и установите библиотеку I2CioExpander.
Попробуем получить значения с датчиков сборки и вывести полученные значения на монитор serial-порта. Для этого создадим объект для работы с датчиком, выставим чувствительность фотоприёмников и настроим яркость свечения инфракрасных светодиодов.
// библиотека для работы с модулями I²C #include <Wire.h> // библиотека для работы cо сборкой датчиков линии #include <Octoliner.h> // создаём объект для работы с датчиками линии Octoliner octoliner(42); void setup() { // открываем Serial-порт Serial.begin(115200); // начало работы с модулями I²C Wire.begin(); // начало работы с датчиками линии octoliner.begin(); // выставляем чувствительность фотоприёмников в диапазоне от 0 до 255 octoliner.setSensitivity(200); // выставляем яркость свечения ИК-светодиодов в диапазоне от 0 до 255 octoliner.setBrightness(255); } void loop() { // считываем значение с датчиков линии for (int i = 0; i < 8; i++) { // выводим значения в Serial-порт Serial.print(octoliner.analogRead(i)); Serial.print("\t"); } Serial.println(); // ждём пол секунды delay(500); }
Теперь научим датчики определять нахождение линии. Будем использовать диапазон от –1 до 1:
–1 — линия в крайнем левом положении модуля.
1 — линия в крайнем правом положении модуля.
0 — линия посередине модуля.
// библиотека для работы с модулями I²C #include <Wire.h> // библиотека для работы cо сборкой датчиков линии #include <Octoliner.h> // создаём объект для работы с датчиками линии Octoliner octoliner(42); void setup() { // открываем Serial-порт Serial.begin(115200); // начало работы с модулями I²C Wire.begin(); // начало работы с датчиками линии octoliner.begin(); // выставляем чувствительность фотоприёмников в диапазоне от 0 до 255 octoliner.setSensitivity(200); // выставляем яркость свечения ИК-светодиодов в диапазоне от 0 до 255 octoliner.setBrightness(255); } void loop() { // массив для хранения показателей с датчиков линии int dataSensors[8]; // считываем значение с датчиков линии for (int i = 0; i < 8; i++) { // выводим значения в Serial-порт dataSensors[i] = octoliner.analogRead(i); Serial.print(octoliner.analogRead(i)); Serial.print("\t"); } Serial.println(octoliner.mapLine(dataSensors)); Serial.println(); // ждём пол секунды delay(500); }
Для плавной езды по линии рекомендуем использовать сборку датчиков совместно с ПИД-регулятором.
К платформе Iskra JS сенсорный модуль удобнее подключать через плату расширения: например, через Troyka Shield.
При помощи трёхпроводных шлейфов подключите модуль к питанию V
и G
и к пинам шины I²C — SDA
и SCL
.
Напишем программу, которая поможет получить значения с датчиков сборки и вывести полученные значения на консоль. Для этого подключим модуль работы со сборкой датчиков, выставим чувствительность фотоприёмников и настроим яркость свечения инфракрасных светодиодов.
I2C1.setup({sda: SDA, scl: SCL, bitrate: 100000}); // подключаем модуль работы с октролайнером var octoliner = require("@amperka/octoliner").connect({i2c:I2C1, address:42}); // устанавливаем чувствительность датчиков линии octoliner.setSensitivity(0.8); // устанавливаем уровень подсветки octoliner.setBrightness(1); setInterval(()=>{ for(var i = 0; i < 8; ++i){ // в цикле считываем все 8 датчиков и выводим из значения console.log(octoliner.analogRead(i)); } },500);
Теперь научим датчики определять нахождение линии. Будем использовать диапазон от –1 до 1:
–1 — линия в крайнем левом положении модуля.
1 — линия в крайнем правом положении модуля.
0 — линия посередине модуля.
I2C1.setup({sda: SDA, scl: SCL, bitrate: 100000}); // подключаем модуль работы с октолайнером var octoliner = require("@amperka/octoliner").connect({i2c:I2C1, address:42}); // устанавливаем чувствительность датчиков линии octoliner.setSensitivity(0.8); // устанавливаем уровень подсветки octoliner.setBrightness(1); setInterval(()=>{ console.log(octoliner.mapLine(octoliner.getBinaryLine())); },500);
Для плавной езды по линии рекомендуем использовать сборку датчиков совместно с ПИД-регулятором.
Плата крепится к роботу при помощи шести ушек, которые сделаны под размер винтов М3.
Мозг сенсорной сборки — мощный 32-разрядный микроконтроллер STM32F030F4P6 с вычислительным ядром ARM Cortex M0. Контроллер считывает данные с восьми датчиков линии и передаёт управляющей платформе по интерфейсу I²C/TWI.
На борту модуля расположены два четырёхканальных операционных усилителя MCP6004, при помощи которых можно отрегулировать чувствительность сразу восьми сенсоров.
Преобразователь NCP582LSQ33 с выходом 3,3 В обеспечивает питание логической части модуля. Максимальный выходной ток 150 мА.
На плате расположены два светодиода — индикаторы данных и питания.
Имя светодиода | Назначение |
---|---|
ACT | Отвечает за обмен данными между управляющей платформой и сенсорной сборкой. При обмене данными индикатор мигает. |
PWM | Показывает чувствительность датчиков: чем больше чувствительность, тем ярче горит светодиод. |
На модуле выведен разъём Troyka-контактов:
Питание (V) соединяет с рабочим напряжением микроконтроллера.
Земля (G) соединяет с пином GND микроконтроллера.
Сигнальный (D) — пин данных шины I²C. Подключается к SDA-пину микроконтроллера.
Сигнальный (C) — пин тактирования шины I²C. Подключается к SCL-пину микроконтроллера.
На модуле расположено восемь датчиков линии на оптопаре TCRT5000.
Оптопара TCRT5000 — это светодиод и фототранзистор, собранные в одном корпусе. Светодиод излучает инфракрасный свет, длина волны 950 нм. Световой поток отражается от поверхности и попадает на фототранзистор, где преобразуется в электрический сигнал. Чем светлее поверхность, тем больше отражается света. Чем темнее — тем меньше.
Показания датчика зависят не только от цвета линии, но и от расстояния сенсора до поверхности. Если расстояние менее 3 мм, то перегородка между ИК-излучателем и приёмником мешает транзистору принимать отражённый свет. При расстоянии более 15 мм отражённый свет рассеивается и не доходит до приёмника.
Напряжение питания: 3.3–5 В
Микроконтроллер: STM32F030F4P6
Интерфейс: I²C
Адрес по умолчанию: 0x42
Тип сенсора: оптопара TCRT5000
Количество каналов: 8
wiki.amperka.ru
Представленный датчик предназначен для реализации классической задачи любительской робототехники – следование робота вдоль линии, для чего требуется надежно отличать темную поверхность от светлой. Данное устройство (модель TCRT5000) приобретено на Али за 1 доллар.
Датчик поставляется в антистатическом пакете. Конструктивно данный модуль это печатная плата, на которой располагается излучатель и приемник инфракрасного излучения, разделенные перегородкой исключающей прямую засветку приемника. Габариты модуля 37 х 13 х 16 мм, масса 2,4 г. Для крепления на плате имеется отверстие диаметром 3 мм.
Для того, что бы осуществлять регулирование чувствительности датчика на плате имеется подстроечный резистор. На плате располагаются два зеленых светодиода один – индикатор питания, другой загорается при срабатывании датчика. При напряжении питания 5 В потребляемый модулем ток составляет около 26 мА в дежурном режиме и 30 мА при срабатывании. При напряжении питания 3,3 В эти значения составляют 15,5 мА и 17 мА соответственно.
На модуле имеется четырех контактный разъем:
При напряжении питания 5 В на лист белой бумаги датчик реагирует с расстояния 7-8 см, считая от уровня платы. Черную матовую поверхность (бокс CD-диска) датчик обнаруживает с расстояния 2,5 см.
При напряжении питания 3,3 В на белую бумагу датчик реагирует с расстояния 4,5 см, на черный матовый бокс диска с 1,5 см.
Факт срабатывания легко установить по моменту зажигания светодиода на плате датчика или используя для этих целей программу LED_with_button [1].
Как понял автор обзора аналоговый выход на данном устройстве это формальность на нем всегда или высокий или низкий уровень. В этом можно убедиться с помощью программы AnalogInput2
В целом неплохой простой и дешевый датчик, который в целом повторяет датчик KY-033 [3] или аналогичный датчик от Амперки [4], но при этом он не является частью большого комплекта как первый и стоит на порядок дешевле второго.
Архив с прошивкой качайте тут. Специально для сайта 2 Схемы.ру — Denev.
2shemi.ru
Оптические датчики для платформы Ардуино. Типы, описание, характеристики. Подключение и испытание. Механические датчики были рассмотрены тут.
Данный модуль представляет собой делитель напряжения, состоящий из фоторезистора и постоянного резистора сопротивлением 10 кОм [1-3]
Модуль имеет габаритный размер 30 x 14 мм и массу 1,2 г. Для подключения служит трехконтактный разъем. Центральный контакт – питание +5В, контакт «-» — общий, контакт «S» — информационный. Потребляемый ток 270 мкА.
При изменении освещенности происходит изменение сопротивления фоторезистора, что приводит к изменению уровня напряжения на сигнальном выводе модуля.
Если загрузить в Arduino программу AnalogInput2, то в мониторе последовательного порта среды разработки Arduino IDE можно наблюдать, как меняются показания, снимаемые с аналогового входа платы Arduino.
Модуль легко сделать глазом робота или датчиком освещенности умного дома.
Модуль представляет собой инфракрасный светодиод без каких-либо дополнительных элементов, добавочного сопротивления на плате нет.
Модуль имеет габариты 35 х 15 мм и масса 1,3 г. Как понимает автор, подключение данного светодиода ничем не отличается от подключения обычного светодиода видимого диапазона. Центральный контакт модуля ни к чему не подключен, контакт «-» — общий, контакт «S» — информационный. Последовательно со светодиодом автор включал резистор сопротивлением 200 Ом, при этом ток, потребляемый светодиодом, составил 17 мА. Излучение данного светодиода глазом заметить невозможно.
При помощи матрицы фотоаппарата можно зарегистрировать излучение светодиода, для этого желательно установить чувствительность не меньше 800 ISO, отключить вспышку, максимально открыть диафрагму фотоаппарата и минимизировать окружающую засветку.
Модуль приемника инфракрасного излучения имеет габариты 24 х 15 мм и массу 1,6 г и представляет собой печатную плату на которой располагается сам приемный модуль и красный светодиод с добавочным сопротивлением [6-7].
Модуль имеет три вывода: центральный немаркированный – питание +5В, контакт «-» — общий, контакт «S» — информационный. Потребляемый ток 200 мкА в режиме ожидания, 500 мкА с работающим светодиодом.
В момент приема инфракрасного сигнала светодиод на плате мигает, что достаточно удобно при отладке конструкций на макетной плате.
Для полноценного использования ИК-приемника можно воспользоваться библиотекой IRremote [8-10]. Для примера иллюстрирующего работу данного устройства можно использовать программу IR. В качестве источника сигналов можно использовать пульт дистанционного управления от телевизора.
Коды сигналов пульта телевизора
Аналогично модуль может принимать сигналы от пульта дистанционного управления светодиодной лампой.
При помощи этого датчика не сложно организовать многокомандное дистанционное управление в пределах прямой видимости, при расстоянии между приемником и передатчиком около 3-5 м.
В проектировании устройств с подвижными деталями может оказаться важным подсчитывать число оборотов или факт достижение деталью определенного положения. Подобное можно реализовать с помощью механических концевых выключателей или герконов, но эти элементы имеют механические подвижные части, а значит, будут со временем изнашиваться, залипать и т.п. Для аналогичных целей можно использовать оптопару KY-010 [11], которая не имеет подвижных частей, а поэтому более надежна.
Модуль фотопрерывателя имеет габариты 24 х 15 мм и массу 1,2 г
Данное устройство представляет собой инфракрасный светодиод с токограничительным резистором. Светодиод освещает фототранзистор, с коллектора которого и снимается полезный сигнал. Модуль имеет три вывода: центральный немаркированный – питание +5В, контакт «-» — общий, контакт «S» — информационный. Потребляемый ток 10 мА.
Модуль надежно срабатывает, будучи подключенным, вместо тактовой кнопки с программой LED_with_button [12].
Данный модуль представляет собой печатную плату, на которой располагается инфракрасный фотодиод и фототранзистор. Теоретически опираясь на изменения прозрачности подушечки пальца данный модуль должен позволить определить частоту пульса [13-14].
Габаритные размеры модуля составляют 24 х 15 х 15 мм, масса1,4 г. Модуль имеет три контакта: центральный немаркированный – питание +5В, контакт «-» — общий, контакт «S» — информационный. Потребляемый ток 10 мА.
Как понимает автор, светодиод должен быть направлен на фототранзистор
По всей видимости, добиться адекватной работы от данного модуля непросто [15].
Впрочем, как оптопара он работает неплохо. Если загрузить в память микроконтроллера программу AnalogInput2, то можно наблюдать, что модуль надежно реагирует на пересечение инфракрасного луча. Впрочем, заметных колебаний показаний, которые можно связать с биением пульса, автор не зарегистрировал. В принципе показания изменяются однотипно, в не зависимости от того, что перекрывает поле зрения фототранзистора: подушечка пальца, мочка уха, лист бумаги, линейка.
Добиться работоспособности с демонстрационным кодом то же не получилось [16]. Таким образом, получается, что данный модуль это обычная оптопара, хотя, разумеется, автор может ошибаться.
Данный модуль представляет собой печатную плату, на которой располагается инфракрасный фотодиод и фотоприемник [17-18]. По интенсивности отраженного инфракрасного сигнала модуль позволяет отличить черную поверхность от белой, что важно в классической задаче робототехники – изготовлении робота, движущегося вдоль линии.
Модуль имеет габариты 47 х 10 х 12 мм, масса 2,1 г. Для крепления модуля на плате предусмотрено два отверстия диаметром 3 мм на расстоянии 11 мм друг от друга. На плате располагаются инфракрасный светодиод и фотоприемник, разделенные непрозрачной перегородкой. Для регулирования чувствительности датчика на плате имеется подстроечный резистор. При срабатывании датчика зажигается красный светодиод.
Подстроечный резистор позволяет регулировать расстояние срабатывания от 25 до12 мм, считая от поверхности платы.
На модуле имеется трех контактный разъем: центральный «V+»– питание +5В, контакт «G» — общий, контакт «S» — информационный. В зависимости от интенсивности отраженного сигнала на информационном выходе меняется напряжение, что можно пронаблюдать, подключив модуль к порту A0 платы Arduino UNO (в память микроконтроллера загружена программа AnalogInput2).
Потребляемый модулем ток составляет около 15 мА, зажигание красного светодиода на плате датчика приводит к увеличению энергопотребления примерно на 1 мА.
В целом модуль оставляет приятное впечатление в сравнении с функционально аналогичным модулем от компании Амперка [19-20]. При меньшей цене этот модуль можно закрепить более надежно, подстроечный резистор удобнее регулировать, правда аналоговый датчик линии от компании Амперка заметно компактнее.
Модуль предназначен для обнаружения препятствий без непосредственного контакта с ними. На печатной плате модуля располагается ИК-светодиод и ИК-фотоприемник, когда интенсивность отраженного от препятствия излучения превышает заданный порог, формируется сигнал срабатывания датчика.
Модуль имеет размер 45 х 16 х 12 мм, массу 4 г, в печатной плате модуля предусмотрено крепежное отверстие диаметром 3 мм. На плате имеется четырехконтактный разъем, через который осуществляется питание модуля и передача информации. Назначение выводов разъема следующее: «GND» — общий провод, «+»– питание +5В, «OUT» — информационный выход, «EN» — управление режимом работы. Для индикации подачи питания на датчик служит светодиод «Pled», при срабатывании загорается светодиод «Sled».
На информационном цифровом выходе «OUT» появляется низкий логический уровень, если в поле зрения датчика имеется препятствие, иначе на выходе высокий логический уровень. В этом можно убедиться, загрузив в память Arduino UNO программу AnalogInput2, тогда при срабатывании датчика в мониторе последовательного порта программы Arduino IDE будет наблюдаться следующая картина.
По данным продавцов [21-22], датчик может обнаруживать препятствия на расстоянии от 2 до 40 см. Автору настоящего обзора удалось добиться срабатывания датчика на расстоянии 5,5-3,5 см от белого препятствия (лист бумаги). Черную шероховатую поверхность (бокс CD-дисков) датчик не видит совсем, черную глянцевую поверхность датчик регистрирует расстояния около 2 см.
Согласно документации, для настройки частоты модуляции ИК-импульсов на частоту 38 кГц служит подстроечный резистор промаркированный 103, а для регулирования чувствительности датчика следует использовать подстроечный резистор промаркированный 507. как хорошо видно на предыдущих фотографиях на плате доставшейся автору оба переменных резистора имеют маркировку 103. Возможно это брак в данном конкретном устройстве. Может быть этим и объясняется малая дальность действия датчика.
Датчик потребляет ток 4-5 мА в рабочем режиме и 5-6 мА при срабатывании. Если настроить датчик на минимально расстояние срабатывания, то можно немного уменьшить ток потребления (примерно на 1 мА). На данной фотографии, также видно, сто при срабатывании датчика загорелся светодиод «Sled».
По описанию этого датчика вывод «EN» служит для управления режимом работы при снятой перемычке. При низком логическом уровне на входе «EN» датчик включен, при высоком логическом уровне модуль дальномера находится в спящем режиме с пониженным энергопотреблением.
Однако по наблюдениям автора при снятой перемычке, когда выход «EN» был ни к чему не подключен, потребляемый ток возрастал до 13,5 мА, при этом датчик переставал реагировать на препятствие. При надетой перемычке подача на «EN» низкого логического уровня (от гнезда «GND» платы Arduino UNO) привела к скачу потребления тока до 150 мА. При подаче на «EN» высокого логического уровня (от гнезда 3,3 В платы Arduino UNO) и снятой перемычке датчик работает как обычно. В общем, в этом режиме датчик вел себя как-то странно, хотя возможно дело в ошибках методики эксперимента, которые допустил автора настоящего обзора или в браке данного экземпляра датчика.
Таким образом, с одно стороны датчик можно использовать по назначению, однако по факту этот датчик не превосходит более простые ИК-датчики расстояния [23]
Этот датчик предназначен для обнаружения мощных источников инфракрасного излучения, например открытого пламени.
Датчик имеет габариты 47 х 15 х 15 мм, массу 3 г, в печатной плате модуля предусмотрено крепежное отверстие диаметром 3 мм. Чувствительным элементом датчика является ИК-фотодиод. Регулировать чувствительность датчика можно многооборотным подстроечным резистором. Индикация питания осуществляется светодиодом L1.
При срабатывании датчика загорается светодиод L2. Датчик имеет четыре контакта. «A0» — аналоговый выход, выходное напряжение на котором меняется в зависимости от освещенности фотодиода (в память Arduino UNO была загружена программа AnalogInput2).
Выводы питания «G» — общий провод, «+»– питание +5В. На цифровом входе «D0» присутствует низкий логический уровень, если ИК-излучение не превышает заданного порога, при срабатывании датчика низкий уровень меняется на высокий.
Датчик уверенно реагирует на излучение лампы накаливания мощностью 40 Вт с расстояния около 0,5 м. На зажженную спичку датчик реагирует с расстояния около 10 см.
В дежурном режиме датчик потребляет около 5 мА, при срабатывании ток возрастает до 8-9 мА
В целом это достаточно простой и надежный датчик, однако если его использовать, как рекомендуют продавцы, в устройстве, типа автоматики контроля поджига и подачи топлива или в роботе-пожарном, то необходимо как следует продумать защиту датчика от воздействия открытого пламени.
Файлы и прошивки в общем архиве. Обзор прислал в редакцию сайта «2 Схемы» — Denev.
2shemi.ru
Существует большое количество сенсоров с аналоговым сигналом совместимых с Arduino, которые подключаются по трём проводам:
Питание (Vcc) — красный провод. На него должно подаваться напряжение, указанное в документации на сенсор. Чаще всего 5 В — это норма.
Земля (GND) — чёрный провод. Должен быть соединён с землёй микроконтроллера.
Сигнальный (S) — синий провод. С него считываются показания сенсора.
При использовании аналогового сигнала, показания датчика передаются в виде переменного напряжения на сигнальном проводе. Сигнальное напряжение может принимать значение от 0 В до напряжения питания. Хотя обычно «рабочий диапазон» напряжений более узкий. Между измеряемой величиной и возвращаемым обратно напряжением установлена определённая зависимость. Например: чем больше величина, тем больше напряжение; или наоборот: чем больше величина, тем напряжение меньше. Иногда зависимость более сложная: напряжение растёт до определённого значения, затем падает пропорционально ему. Всё зависит от сенсора.
Так например, инфракрасный дальномер измеряет расстояние до объекта перед ним. Для него чем меньше расстояние, тем больше напряжение. Если объект находится на расстоянии 20 см, сенсор выдаёт ~2.5 В на сигнальном проводе; на расстоянии 60 см ~ 1 В; на расстоянии 150 см ~ 0.4 В. Точная диаграмма зависимости напряжения от расстояния для инфракрасного дальномера от Sharp приведена в его datasheet’е.
Для других сенсоров диаграммы можно так же найти в документации или получить экспериментально.
На Arduino Uno имеется 6 аналоговых входов с помощью которых можно считывать переменное напряжение, и исходя из его значения получать значения с датчика. Эти входы объединены на плате в группу «Analog In» и пронумерованы от A0 до A5.
Провода на таких сенсорах с одного конца обжаты коннектором для подключения к плате сенсора, а с другого конца — коннектором предназначенным для включения в штырьковые контакты на принимающей стороне. IO Shield, плата расширения для Arduino делает процесс подключения сенсора к нужным контактам микроконтроллера тривиальным: она, помимо всего прочего, имеет 6 троек штырьковых контактов, соединённых с соответствующими входами A0-A5 на Arduino.
Для подключения сенсора достаточно просто включить его коннектор в одну из троек.
Обратите внимание на маркировку возле контактов и убедитесь что она соответствует назначению проводов, выходящих из коннектора к сенсору. Если вы вставите коннектор вверх ногами, сенсор просто не заработает: никаких повреждений приченено не будет.
Считать данные с аналогового сенсора крайне просто. Для этого в Arduino существует стандартная функция analogRead. Так, например, если вы подключили сенсор к контакту A5, чтобы получить показания сенсора в переменную value
достаточно исполнить:
int value = analogRead(A5);
Диапазон входного напряжения от 0 до 5 В в программе проецируется на диапазон целочисленных значений от 0 до 1023. Перевести полученное значение в физические единицы, такие как, например, расстояние, поможет функция map. Подробнее об этом рассказывает Джереми Блюм, в своём 4-м видеоуроке по Arduino.
Таким образом, программа, которая раз в секунду считывает показания аналогового сенсора, подключенного к контакту А5, и посылает их на компьютер может выглядеть так:
#define SENSOR_PIN A5 void setup() { Serial.begin(9600); } void loop() { delay(1000); int val = analogRead(SENSOR_PIN); Serial.println(val); }
Преимуществом сенсоров с аналоговым сигналом является крайняя простота их использования с Arduino. Кроме того, поскольку показания датчика можно считывать «из коробки» всего одной командой, драгоценные килобайты памяти на микроконтроллере не расходуются на хранение алгоритма расшифровки протокола, присущего цифровым сенсорам.
Главным недостатком аналогового сигнала является неустойчивость к внешним шумам. Если провод от сенсора до микроконтроллера будет достаточно длинным, он начнёт работать как антенна и улавливать внешние электромагнитные поля: провод сам будет влиять на выходное напряжение и тем самым искажать показания. Поэтому разумный предел длины провода для аналогового сенсора — не более 50 см.
Аналоговый сигнал при чтении на Arduino может иметь максимум 1024 градации, чего может оказаться недостаточно для высокоточных измерений.
На ATmega328p, установленном на Arduino, как и на большинстве других микроконтроллеров аналоговых входов не много. Поэтому количество одновременно контролируемых аналоговых сенсоров ограничено. У Arduino Uno — их 6, у Arduino Mega 2560 — 16.
Если какой-либо из недостатков существеннен для вашего проекта, обратите внимание на цифровые сенсоры.
wiki.amperka.ru