Датчики используют в самых разнообразных схема и проектах. Ни одна автоматизация не обходится без них. Нам они интересны, потому что для упрощения проектирования и популяризации электроники создан проект Arduino . Это готовая плата с микроконтроллером и всем необходимым для работы с ней и программирования. В этой статье мы рассмотрим датчики для Ардуино, но они могут и применяться с другими микроконтроллерами.
Какими бывают датчики?
Сенсоры являются глазами, ушами и другими органами чувств микроконтроллера или другого управляющего устройства. Их различают по роду сигнала и по назначению.
По роду сигнала разделяют на:
Аналоговые;
Цифровые.
А по назначению датчики бывают для измерения:
Температуры;
Давления;
Влажности;
Кислотности;
Освещенности;
Уровня воды или других веществ;
Вибраций;
И другие специализированные компоненты.
Если говорить об Ардуино, то, при получении информации с датчиков, мы обрабатываемых цифровой сигнал, либо измеряем напряжение с аналогового выхода модуля. Как уже было сказано, сенсоры бывают цифровыми и аналоговыми . Некоторые модули для Ардуино имеют и цифровой и аналоговый выход, что унифицирует их.
По устройству они бывают
Резистивные;
Индуктивные;
Емкостные;
Пьезоэлектрические;
Фотоэлементы и другие типы.
Датчик света или освещенности
Простейшим способом определить освещённость чего-либо – использовать фоторезистор, фотодиод или фототранзистор . Можно подключить к Ардуино один из перечисленных вариантов или купить специальную плату — датчик освещенности .
В чем преимущества готового решения? Во-первых, для определения изменений освещенности одного фотоэлемента недостаточно, нужен ещё и обычный или подстроечный резистор, возможно её и компаратор , для ступенчатого срабатывания типа «да/нет». Во-вторых, печатная плата, изготовленная в заводских условиях будет надежнее навесного монтажа или пакетной плат, или других способов, которыми пользуются любители.
На алиэкспресс или в других интернет магазинах (например, в том-же Gearbest) его можно найти по запросу «PHOTOSENSITIVE-SENSOR» или просто «датчик света».
У этого модуля есть три вывода:
Питание;
Земля;
Цифровой выход с компаратора.
Или версия с четырьмя выводами:
Питание;
Земля;
Цифровой выход с компаратора;
Аналоговый.
Так на плате размещен подстроечный резистор для регулировки момента срабатывания компаратора может выдавать цифровой сигнал.
Примеры использования:
Датчик освещенности для фотореле;
Сигнализация (в паре с излучателем);
Счетчик объектов которые пересекают световой луч и т.д.
Точных значений добиться сложно, так как для корректной отстройки по освещенности понадобится полноценный люксметр. Фоторезисторы подходят скорее для определения абстрактных величин типа «темно или светло».
Кроме такой платы в продаже можно встретить довольно интересный модуль GY-302. Это датчик освещенности на базе интегральной микросхемы BH-1750. Его особенностью является то, что это цифровой модуль, у него разрядность в 16 бит, общается с микроконтроллерами по шине i2c. 16 бит позволяют измерять освещенность от 1 до 65356 Люкс (Лк).
Ниже изображена схема его подключения. Вы можете обратить внимание на то, что SDA и SCL подключены к аналоговым пинам микроконтроллера .
Это связано с тем, что на этих пинах ардуины реализована шина I2C, в чем можно убедится, посмотрев на следующую картинку. Поэтому пусть вас не вводит этот факт в заблуждение, датчик является цифровым.
Преимуществом цифровых сенсоров является то, что не нужно проверять значения каждого экземпляра, составлять таблицы для перевода измеренных величин в реальные шкалы и прочее. В большинстве случаев для цифровых датчиков достаточно просто подключить готовую библиотеку и считывать значения, переведенные в реальные единицы измерения.
Пример скетча для GY-302 (BH-1750):
Как работает скетч?
В начале мы говорим программе о том, что нужно подключить библиотеку Wire.h, которая отвечает за связь по линии I2C, и BH1750. Остальные действия хорошо описаны в комментариях, а в итоге каждые 100мс мы считываем значение с сенсора в Люксах.
Характеристики GY-302 BH1750:
Связь с микроконтроллером по I2C
Спектральная характеристика подобна чувствительности глаза
Минимизированы погрешности вызванные ИК-излучением
Диапазон измерения 0-65535 Lux
Напряжение питания: 3-5 В
Малый потребляемый ток и функция спящего режима
Фильтрация световых шумов 50/60 Гц
Максимальное число сенсоров на 1 шине I2C – 2 штуки.
Не требует калибровки
Ток потребления – 120 мкА
В спящем режиме – 0,01 мкА
Измеряемая длина волны – 560 нм
В режиме высокого разрешения – 1 Лк
В режиме низкого разрешения – 4 Лк
АЦП – 16 бит
Время, за которое выполняются измерения:
В режиме высокого разрешения – 120 мс
В режиме низкого разрешения – 16 мс
Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств
Датчик препятствия
Я выбрал этот датчик следующим к рассмотрению, потому что один из его вариантов работает на базе фотодиода или фототранзистора, которые по принципу действия схожи с рассмотренным в предыдущем разделе фоторезистором.
Его название «оптический датчик препятствия». Основным функциональным элементом является фотодиод и светодиод излучающие и принимающие в ИК спектре (поэтому не виден человеческому глазу, а также пороговый узел, собранный, например, на компараторе с регулятором чувствительности. С его помощью регулируется расстояние, на котором срабатывает датчик, кстати он цифровой.
Пример схемы подключения:
Пример программы обработки сигнала с датчика.
Здесь, если на выходе с датчика «1», что значит «есть препятствие», – зажжется светодиод, встроенный в плату Ардуино, либо подключенный к 13 пину (одно и то же). Наиболее часто используется в робототехнике и сигнализациях.
Датчик расстояния
Предыдущий экземпляр состоят из приемника, — фотодиода, и излучателя, — светодиода. Ультразвуковой датчик расстояния также состоит из приемника и излучателя УЗ волн. Его название – HC SR04.
Характеристики HC SR04:
Питающее напряжение 5В
Рабочий параметр силы т ока – 15 мА
Сила тока в пассивном состоянии < 2 мА
Обзорный угол — 15°
Сенсорное разрешение – 0,3 см
Измерительный угол — 30°
Ширина импульса – 10-6 с
Дальность измерения: 2-400 см.
Погрешность появляется из-за:
температуры и влажности воздуха – можно снизить, измеряя температуру с помощью DHT-11 или DHT-22, например, и вводя коэффициенты для коррекции измерений.
расстояния до объекта;
расположения объекта относительно датчика (согласно диаграммы излучения), можно нивелировать установив HC SR04 на сервопривод для изменения направления и точной корректировки.
качества исполнения элементов модуля датчика.
Диаграмма направленности:
У платы есть четыре вывода:
VCC – питание;
Trig – входной сигнал;
Echo – выходной сигнал;
GND – общий провод.
Как обрабатывать показания?
1. На вход TRIG посылаем импульс длительностью в 10 мкс;
2. Внутри модуля импульс преобразуется в пачку из 8 импульсов, которые следуют друг за другом с частотой в 40 кГц и посланы через излучатель;
3. Отраженные от препятствия импульсы приходят на приёмник и выводятся на вывод ECHO;
4. Длительность импульса, полученного с вывода ECHO нужно разделить на 58.2, чтобы получить расстояние в сантиметрах и на 148, если нужно перевести в дюймы.
Пример программного кода:
Измеряем температуру
Простейший способ измерения температуры с помощью микроконтроллера – использовать термопару или терморезистор . Термопары используются для измерения высоких температур, для измерения комнатной и уличной – подойдет тот, о котором я расскажу немного ниже, а пока давайте рассмотрим термопару.
Для каждого вида термопар свой подход для работы с микроконтроллером. Например, есть термопара К-типа, или как её еще называют – хромель-алюмелевая, с диапазоном измеряемых температур от -200 до +1400 градусов Цельсия с чувствительностью 41 мВ/градус Цельсия. А для неё есть специальный преобразователь на базе ИМС max6675, в нем есть функция компенсации температуры холодного спая и прочее.
Работать с этим модулем можно с помощью одноименной библиотеки для Ардуино. На рисунке ниже вы видите пример программного кода для этого случая.
Тогда на монитор последовательного порта выводится следующее.
Но также есть и цифровой датчик температуры DS12B20 , его можно назвать классическим, так как он уже много лет используется в любительски проектах, причем еще задолго до появления Ардуино.
Это цифровая интегральная микросхема её внутреннее устройство изображено на рисунке ниже:
Схема подключения к плате:
Основные характеристики и сведения о DS18b20:
Погрешность – меньше 0,5 С (в диапазоне температур от -10С до +85С).
Калибровка не требуется
Диапазон измерений – от -55 С до +125С
VCC, напряжение питания 3,3-5В.
разрешающая способность до 0,0625С, задается программно;
Разрядность – 12 бит
Каждому экземпляру присваивается уникальный серийный код. Это нужно для того, чтобы без проблем использовать несколько штук в одном проекте
Интерфейс для связи – 1-Wire
Обвязка не требуется
Максимальное число датчиков на одной линии — 127 штук
Режим паразитного питания – в этом случае датчик питается напрямую от линии связи. При этом не гарантируется измерение температуры выше, чем 100С
Ниже вы видите таблицу перевода двоичного кода с DS18b20 в значения температуры в градусах Цельсия.
Пример программы для считывания значений температуры.
Полезные статьи про Ардуино:
Как не спалить Ардуино — советы для начинающих
19 шилдов для Arduino на все случаи жизни
Какие бывают дисплеи для Ардуино и как их подключить
10 интересных проектов для Ардуино
Датчики атмосферного давления
Электронные барометры собираются на базе датчиков атмосферного давления. Широкое распространение получили следующие варианты:
BMP180;
BMP280;
BME280.
Если два предыдущих экземпляры были подобны друг другу, то датчик BME280 – это миниатюрная метеостанция. В ней встроено 3 датчика:
Температуры;
Давления;
Влажности.
Его технические характеристики:
Размеры 2,5 х 2,5 х 0,93 мм;
Металлический LGA-корпус, оснащенный 8-ю выходами;
Напряжение питания 1,7 – 3,6В;
Наличие интерфейсов I2C и SPI;
Потребляемый ток в режиме ожидания 0,1 мкА.
Эти примеры являются МЕМС-барометрами. МЕМС расшифровывается, как микроэлектромеханический. Это механическая микроструктура, которая для своей работы использует емкостные явления и другие принципы. Ниже вы видите пример такого датчика в разрезе.
Пример схемы подключения:
И пример программного кода:
Логика программы несложная:
1. Вызов подпрограммы (функции) считывания с датчика.
2. Запрос показаний встроенного в барометр датчика температуры.
3. Ждем время для оценки датчиком температуры;
4. Считываем результат измерений температуры;
5. Запрос значения давления;
6. Ждем время измерения давления;
7. Считываем значение давления;
8. Возвращаем значение давления из функции.
Интересен тот факт, что возможно четыре варианта считывания значений, они задаются в качестве аргумента в функции startPressure, вторым знаком от 0 до 3, где 0 – грубая оценка, а 3 – точная.
Датчик движения
Самым распространенным датчиком движения для Ардуино является модуль HC SR501 на базе ИК—сенсора. Особенностью этого модуля является то, что у него есть регулировка расстояния срабатывания и времени задержки выходного сигнала после срабатывания.
Характеристики модуля:
1. Напряжение питания 4,5 – 20 В.
2. Ток покоя ≈ 50 мкА;
3. Напряжение выходного сигнала (логический уровень): 3.3 В;
4. Диапазон рабочих температура – от -15° C до 70° C;
5. Размеры: 32*24 мм;
6. Поле зрения – 110°;
7. Максимальная дистанция срабатывания – от 3 до 7 м (регулируется); При температуре более 30° C это расстояние может уменьшаться.
Схема подключения:
Как с ним работать мы рассматривали в статье, опубликованной ранее: Схемы датчиков движения, принцип их работы и схемы подключения
Датчик уровня воды
Предназначен для индикации уровня жидкости.
Характеристики:
1. Напряжение питания 3-5В
2. Ток потребления >20 ма
3. Аналоговый
4. Размеры измерительной зоны 40×16 мм
5. Допустимая влажность 10%- 90%
Пример программного кода:
Выходные значения от 0 (в сухом состоянии) до 685 (может отличаться фактически зависит от проводимости воды). Не забывайте об электролизе, при измерениях уровня соленной или жесткой воды его разъест.
Датчик протечки
Модуль состоит из двух частей – сам датчик и компаратор, может быть построен на LM393, LM293 или LM193.
Благодаря компаратору происходит преобразование аналогового сигнала в цифровой.
Схема подключения:
Цоколевка платы:
VCC – питание, должно соответствовать питанию платы Ардуино, в большинстве случаев это 5В;
GND – общий провод;
АO – аналоговый сигнал;
DO — цифровой сигнал.
На плате компаратора есть подстроечный резистор, он устанавливает чувствительность датчика. Может выступать в качестве сигнализации дождя или протечки чего либо, а в паре с таким краном может работать как защита от протечки трубопровода в квартире :
На видео показано как он работает:
Датчик влажности
Обычно используется в проектах автоматического полива , для определения влажности почвы, также как и предыдущий состоит из электродов и платы с компаратором.
Может работать как в аналоговом, так и цифровом режимах. Пример схемы подключения для системы автоматического полива с краном на базе двигателя:
И пример программного кода для обработки цифрового сигнала с датчика влажности:
Заключение
Мы рассмотрели популярные датчики, однако есть еще и масса других. Это разнообразные датчики вибрации, гироскопы, акселерометры, датчики излучений и прочее.
Целью статьи было собрать в одном месте разнообразные элементы, которые могут быть полезны начинающему электронщику для реализации своих проектов. Если вам интересен тот или иной датчик – пишите в комментариях и мы рассмотрим его подробнее.
Для большего удобства, мы собрали для вас таблицу с ориентировочной стоимостью и перечень популярных датчиков для Ардуино, в том порядке, в котором они были рассмотрены в статье: Датчики для Ардуино
Цены взяты из интернет-магазинов РФ или Украины. В Китае они стоят в 2 и более раз дешевле.
Информация, опубликованная на данном веб-сайте, представлена исключительно в ознакомительных целях, за применение этой информации администрация сайта ответственности не несет.