No Image

Ардуино работа с датчиками

СОДЕРЖАНИЕ
225 просмотров
12 декабря 2019

Датчик движения ардуино позволяет отследить перемещение в закрытой зоне объектов, излучающих тепло (люди, животные). Такие системы часто применяют в бытовых условиях, например, для включения освещения в подъезде. В этой статье мы рассмотрим подключение в проектах ардуино PIR-сенсоров: пассивных инфракрасных датчиков или пироэлектрических сенсоров, которые реагируют на движение. Малые габариты, низкая стоимость, простота эксплуатации и отсутствие сложностей в подключении позволяет использовать такие датчики в системах сигнализации разного типа.

Описание датчика движения ардуино

Конструкция ПИР датчика движения не очень сложна – он состоит из пироэлектрического элемента, отличающегося высокой чувствительностью (деталь цилиндрической формы, в центре которой расположен кристалл) к наличию в зоне действия определенного уровня инфракрасного излучения. Чем выше температура объекта, тем больше излучение. Сверху PIR-датчика устанавливается полусфера, разделенная на несколько участков (линз), каждый из которых обеспечивает фокусировку излучения тепловой энергии на различные сегменты датчика движения. Чаще всего в качестве линзы применяют линзу Френеля, которая за счет концентрации теплового излучения позволяет расширить диапазон чувствительности инфракрасного датчика движения Ардуино.

PIR-sensor конструктивно разделен на две половины. Это обусловлено тем, что для устройства сигнализации важно именно наличие движения в зоне чувствительности, а не сам уровень излучения. Поэтому части установлены таким способом, что при улавливании одной большего уровня излучения, на выход будет подаваться сигнал со значением high или low.

Основными техническими характеристиками датчика движения Ардуино являются:

  • Зона обнаружения движущихся объектов составляет от 0 до 7 метров;
  • Диапазон угла слежения – 110°;
  • Напряжение питания – 4.5-6 В;
  • Рабочий ток – до 0.05 мА;
  • Температурный режим – от -20° до +50°С;
  • Регулируемое время задержки от 0.3 до 18 с.

Модуль, на котором установлен инфракрасный датчик движения включает дополнительную электрическую обвязку с предохранителями, резисторами и конденсаторами.

Принцип работы датчика движения на Arduino следующий:

  • Когда устройство установлено в пустой комнате, доза излучения, получаемая каждым элементом постоянна, как и напряжение;
  • При появлении в комнате человека, он первым делом попадает в зону обозрения первого элемента, на котором появляется положительный электрический импульс;
  • Когда человек перемещается по комнате, вместе с ним перемещается и тепловое излучение, которое попадает уже на второй сенсор. Этот PIR-элемент генерирует уже отрицательный импульс;
  • Разнонаправленные импульсы регистрируются электронной схемой датчика, которая делает вывод, что в поле зрения Pir-sensor Arduino находится человек.

Для надежной защиты от внешних шумов, перепадов температуры и влажности, элементы Pir-датчика на Arduino устанавливаются в герметичный металлический корпус. На верхней части корпуса по центру находится прямоугольник, выполненный из материала, который пропускает инфракрасное излучение (чаще всего на основе силикона). Чувствительные элементы устанавливаются за пластиной.

Схема подключения датчика движения к Ардуино

Подключение Pir-датчика к Ардуино выполнить не сложно. Чаще всего модули с сенсорами движения оснащены тремя коннекторами на задней части. Распиновка каждого устройства зависит от производителя, но чаще всего возле выходов есть соответствующие надписи. Поэтому, прежде чем выполнить подключение датчика к Arduino необходимо ознакомиться с обозначениями. Один выход идет к земле (GND), второй – обеспечивает выдачу необходимого сигнала с сенсоров (+5В), а третий является цифровым выходом, с которого снимаются данные.

  • «Земля» – на любой из коннекторов GND Arduino;
  • Цифровой выход – на любой цифровой вход или выход Arduino;
  • Питание – на +5В на Arduino.

Схема подключения инфракрасного датчика к Ардуино представлена на рисунке.

Пример программы

Скетч представляет собой программный код, который помогает проверить работоспособность датчика движения после его включения. В самом простом его примере есть множество недостатков:

  • Вероятность ложных срабатываний, за счет того, что для самоинициализации датчика требуется одна минута;
  • Отсутствие выходных устройств исполнительного типа – реле, сирены, светоиндикации;
  • Короткий временной интервал сигнала на выходе сенсора, который необходимо на программном уровне задержать, в случае появления движения.

Указанные недостатки устраняются при расширении функционала датчика.

Скетч самого простого типа, который может быть использован в качестве примера работы с датчиком движения на Arduino, выглядит таким образом:

Возможные варианты проектов с применением датчика

Пир-датчики незаменимы в тех проектах, где главной функцией сигнализации является определение нахождения или отсутствия в пределах определенного рабочего пространства человека. Например, в таких местах или ситуациях, как:

  • Включение света в подъезде или перед входной дверью автоматически, при появлении в нем человека;
  • Включение освещения в ванной комнате, туалете, коридоре;
  • Срабатывание сигнализации при появлении человека, как в помещении, так и на придомовой территории;
  • Автоматическое подключение камер слежения, которыми часто оснащаются охранные системы.

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

Датчики используют в самых разнообразных схема и проектах. Ни одна автоматизация не обходится без них. Нам они интересны, потому что для упрощения проектирования и популяризации электроники создан проект Arduino. Это готовая плата с микроконтроллером и всем необходимым для работы с ней и программирования. В этой статье мы рассмотрим датчики для Ардуино, но они могут и применяться с другими микроконтроллерами.

Читайте также:  Гроссгеймия крупноголовчатая травянистые растения для открытого грунта

Какими бывают датчики?

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

По роду сигнала разделяют на:

А по назначению датчики бывают для измерения:

Уровня воды или других веществ;

И другие специализированные компоненты.

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

По устройству они бывают

Фотоэлементы и другие типы.

Датчик света или освещенности

Простейшим способом определить освещённость чего-либо – использовать фоторезистор, фотодиод или фототранзистор. Можно подключить к Ардуино один из перечисленных вариантов или купить специальную плату — датчик освещенности.

В чем преимущества готового решения? Во-первых, для определения изменений освещенности одного фотоэлемента недостаточно, нужен ещё и обычный или подстроечный резистор, возможно её и компаратор, для ступенчатого срабатывания типа "да/нет". Во-вторых, печатная плата, изготовленная в заводских условиях будет надежнее навесного монтажа или пакетной плат, или других способов, которыми пользуются любители.

На алиэкспресс или в других интернет магазинах его можно найти по запросу «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 Лк

Время, за которое выполняются измерения:

В режиме высокого разрешения – 120 мс

В режиме низкого разрешения – 16 мс

Датчик препятствия

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

Его название «оптический датчик препятствия». Основным функциональным элементом является фотодиод и светодиод излучающие и принимающие в ИК спектре (поэтому не виден человеческому глазу, а также пороговый узел, собранный, например, на компараторе с регулятором чувствительности. С его помощью регулируется расстояние, на котором срабатывает датчик, кстати он цифровой.

Пример схемы подключения:

Пример программы обработки сигнала с датчика.

Здесь, если на выходе с датчика «1», что значит «есть препятствие», – зажжется светодиод, встроенный в плату Ардуино, либо подключенный к 13 пину (одно и то же). Наиболее часто используется в робототехнике и сигнализациях.

Датчик расстояния

Читайте также:  Габариты подвески контактного провода

Предыдущий экземпляр состоят из приемника, — фотодиода, и излучателя, — светодиода. Ультразвуковой датчик расстояния также состоит из приемника и излучателя УЗ волн. Его название – HC SR04.

Характеристики HC SR04:

Питающее напряжение 5В

Рабочий параметр силы т ока – 15 мА

Сила тока в пассивном состоянии Как обрабатывать показания?

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 в значения температуры в градусах Цельсия.

Пример программы для считывания значений температуры.

Датчики атмосферного давления

Электронные барометры собираются на базе датчиков атмосферного давления. Широкое распространение получили следующие варианты:

Если два предыдущих экземпляры были подобны друг другу, то датчик 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 ма

4. Размеры измерительной зоны 40×16 мм

5. Допустимая влажность 10%- 90%

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

Читайте также:  Гидроизоляционная пленка для фундамента

Выходные значения от 0 (в сухом состоянии) до 685 (может отличаться фактически зависит от проводимости воды). Не забывайте об электролизе, при измерениях уровня соленной или жесткой воды его разъест.

Датчик протечки

Модуль состоит из двух частей – сам датчик и компаратор, может быть построен на LM393, LM293 или LM193.

Благодаря компаратору происходит преобразование аналогового сигнала в цифровой.

VCC – питание, должно соответствовать питания платы Апдуино, в большинстве случаев это 5В;

GND – общий провод;

АO – аналоговый сигнал;

DO — цифровой сигнал.

На плате компаратора есть подстроечный резистор, он устанавливает чувствительность датчика. Может выступать в качестве сигнализации дождя или протечки чего либо, а в паре с таким краном может работать как защита от протечки трубопровода в квартире:

На видео показано как он работает:

Датчик влажности

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

Может работать как в аналоговом, так и цифровом режимах. Пример схемы подключения для системы автоматического полива с краном на базе двигателя:

И пример программного кода для обработки цифрового сигнала с датчика влажности:

Заключение

Мы рассмотрели популярные датчики, однако есть еще и масса других. Это разнообразные датчики вибрации, гироскопы, акселерометры, датчики излучений и прочее.

Целью статьи было собрать в одном месте разнообразные элементы, которые могут быть полезны начинающему электронщику для реализации своих проектов. Если вам интересен тот или иной датчик – пишите в комментариях и мы рассмотрим его подробнее.

Для большего удобства, мы собрали для вас таблицу с ориентировочной стоимостью и перечень популярных датчиков для Ардуино, в том порядке, в котором они были рассмотрены в статье: Датчики для Ардуино

Цены взяты из интернет-магазинов РФ или Украины. В Китае они стоят в 2 и более раз дешевле.

Легкость, с которой Arduino может получить значения с датчиков, является одной из особенностей, которая делает эти платы такими полезными.

Датчики – это устройства, которые преобразуют физические величины, например, яркость света или температуру, в электрическую величину. Например, термопара выдает напряжение, пропорциональное её температуре. Существует множество различных датчиков:

  • датчик освещенности;
  • датчик движения;
  • датчик температуры;
  • датчик магнитного поля;
  • датчик силы тяжести;
  • датчик влажности;
  • датчик вибрации;
  • датчик давления;
  • датчик электрических полей;
  • звуковой датчик;
  • датчик положения.

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

Эксперимент 1: датчик расстояния

В этом эксперименте мы будем использовать датчик расстояния Sharp GP2Y0A21YK для управления яркостью светодиода.

Инфракрасный (IR) датчик SHARP

Необходимые комплектующие

  • 1 x Arduino Mega2560;
  • 1 x макетная плата;
  • 1 x светодиод;
  • 5 x перемычка;
  • 1 x резистор 470 Ом;
  • 1 X датчик расстояния Sharp GP2Y0A21YK.

Схема соединений

Датчик расстояния Sharp может обнаруживать объекты на расстояниях от 10 до 80 см. Он излучает импульс инфракрасного света, а затем определяет угол, на котором отражается этот свет. Чем дальше объект, тем ниже выходное напряжение. Если датчик не принимает отраженный свет, то напряжение на его выходе составит 0 В. Если объект находится на расстоянии 10 см или ближе, выходное напряжение будет равно 5 В (в этом эксперименте мы подаем на датчик напряжение питания 5 В).

Выход датчика подключается к аналоговому входу Arduino. Аналого-цифровой преобразователь (ADC) Arduino затем преобразует это напряжение в значение от 0 до 1023. Затем это значение преобразуется в значение от 0 до 255, и это число используется для установки коэффициента заполнения сигнала на широтно-модулированном (ШИМ) выходе, который управляет яркостью светодиода. В результате, чем ближе объект к датчику расстояния, тем ярче светит светодиод.

Видео

Эксперимент 2: датчик температуры

В этом эксперименте Arduino будет измерять температуру с помощью микросхемы датчика LM35. LM35 – это низковольтная микросхема, которая требует питания постоянным напряжением от +4 до +20 вольт. Это идеально, потому что мы можем подключить датчик к выводу +5V на плате Arduino. LM35 имеет всего 3 вывода: два для питания и один для аналогового выхода. Выходной вывод представляет собой аналоговый выход, напряжение на котором линейно пропорционально температуре в градусах Цельсия. Выходной сигнал находится в диапазоне от 0 до 1,5 вольта. Выходное напряжение 9 В соответствует температуре 0°C, и при каждом повышении температуры на один градус оно увеличивается на 10 мВ. Чтобы преобразовать выходное напряжение в температуру, вам необходимо просто разделить выходное напряжение в мВ на 10. Например, если выходное напряжение равно 315 мВ (0,315 В), температура равна 31,5°C.

Назначение выводов микросхемы LM35

Необходимые комплектующие

  • 1 x датчик температуры LM35;
  • 2 x светодиод;
  • 1 x коробок спичек;
  • 2 X резистор 470 Ом;
  • 1 x Arduino Mega2560;
  • 1 x макетная плата;
  • 10 x перемычка.

Схема соединений

Выходной вывод LM35 (вывод 2) подключен к выводу A0 Arduino. Код использует функцию analogRead() для преобразования выходного напряжения в число между 0 и 1023. Умножение этого числа на 0.48828125 преобразует его в градусы Цельсия, которые и отображаются в мониторе последовательного порта.

Видео

Комментировать
225 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector