Коптильный комплекс на базе Arduino. Шаг 4 Датчики влажности. Метеостанция.
Продолжим тему Датчиков.
В предыдущем шаге сформирован список всех датчиков, где начиная с №6 идут комбинированные датчики. По мимо температуры они измеряют и влажность. Но есть еще один способ измерения влажности, где влажность измеряют на основе разности двух температур . И в качестве источника информации будет датчик температуры. В итоге имеем 5 вариантов подключения.
Идем по порядку.
Для этого режима в качестве типа датчика влажности указываем датчик температуры.. В нашем списке это номера 1 2 3 4 5. Система будет считать этот датчик «мокрым» и будет сравнивать температуру с него с температурой камеры (TEMP_SENSOR_BOX).
Подключение аналогично описанному в «Шаг 3» только контакт контроллера A3 (pin57).
Разность показаний двух датчиков температуры является аргументом для входа в Номинальную Психрометрическую Таблицу. На выходе которой мы получаем значение влажности. Методика расчета и аппроксимация аналогична реализованному расчету температуры терморезистора. Выбор таблицы зависит от состояния вентиляторов. Если они отключены или их нет то принимается таблицы для скорости воздуха 0,5 м/с (естественная конвекция). Если вентиляторы включены — для скорости 2,5 м/с и выше.
Далее алгоритм разделяется на две ветви.
- В случае применения в качестве датчика температуры наружного воздуха типа BME280 у нас есть атмосферное давление и как следствие — возможность рассчитать поправку к значению влажности. Дело в том, что психрометрическая таблица рассчитывается исходя из условия, что давление воздуха равно 1000 гПа. По факту оно будет отличаться, давление, как мы знаем, постоянно меняется. Получив давление, программа обращается к Таблице Поправок и вычисляет итоговое значение влажности.
- В случае применения остальных типов поправка не вычисляется и итоговое значение влажности равно определенному по номинальной психрометрической таблице. Что конечно немного снижает точность измерений.
2. BME280
Комбинированный датчик который дает данные по температуре, влажности, давлению и высоте над уровнем моря.
Идеально подходит для использования в качестве источника данных о внешней среде. Использовать его внутри камеры не целесообразно, так как у него предельная температура 85 градусов. Придумали его в компании BOSCH. Техническая информация тут: BST-BME280_DS001-10.pdf (1,85 МБ)
Скачано: 280
Датчик подключается к шине I2C (двух-проводная шина передачи данных). Контакты контроллера 20 и 21. Шина универсальная и к ней будет подключено еще несколько устройств.
Адрес по умолчанию 0x76.
Не обязательно использовать все данные с одного комбинированного датчика. Например можно взять влажность и давление с одного а температуру с другого. Но в данном случае (для внешней среды), претензий к нему нет.. Очень быстрый и точный датчик.
Комбинированный датчик который дает данные по температуре и влажности. Имеет много аналогов, которые незначительно отличаются конструкцией. у некоторых аналогов датчик закрыт защитной пластиной.
Один из кандидатов на использование внутри камеры в качестве датчика влажности. Имеет проблемы с расчетом высокой влажности на температурах свыше 75 градусов. На остальных режимах вполне адекватен и пригоден. Если установить внутрь камеры то при копчении и варке желательно изолировать от среды. Можно применить сервопривод для открытия и закрытия шторки.
Датчик подключается к шине I2C (двух-проводная шина передачи данных). Контакты контроллера 20 и 21.Техническая информация тут: HTU21D.pdf (983,58 КБ)
Скачано: 314
Адреса по умолчанию: температура — 0xE3, влажность — 0xE5.
Внимание. Питание датчика 3.3V
Комбинированный датчик который дает данные по температуре и влажности.
Фаворит из всех комбинированных датчиков для установки внутри камеры.
Датчик подключается к шине I2C (двух-проводная шина передачи данных). Контакты контроллера 20 и 21.Техническая информация тут: SHT3x_Datasheet.pdf (904,51 КБ)
Скачано: 572
Адрес по умолчанию 0x44.
Комбинированный датчик который дает данные по температуре и влажности. Единственный из всех имеет корпус и крепление для установки. Достаточно влагозащищен и имеет фильтр. Это определенно главное достоинство и одновременно недостаток этого датчика. Инерция очень велика.. Имеет совместимость на уровне библиотек с DHT22.
Самый дорогой из всех. Мне достался за 644 рубля.
Датчик подключается к шине 1-Wire (аналогично DS18B20). Техническая информация тут: AM2305.pdf (586,11 КБ)
Скачано: 272
Пару слов по общим вопросам:
Изменил а точнее упростил настройку конфигурации. Теперь для выбора датчика не нужно расскоментировать строки, достаточно указать номер.
Также пьезоэлемент (пищалка) подключена к А13, вместо пин48.
Звуковая сигнализация: озвучка нажатий на экран, как и просили, отключается в настройках. Сигнал при аварийной ситуации естественно нет.
Учитывая, что программно подключены все датчики контроллер может полноценно начать исполнять свою первую функцию — Метеостанция.
Это уже реальный прибор который пригодится в нашем производстве. Причем даже если больше с ним ничего не автоматизировать. Он покажет все данные о климате как снаружи камеры так и внутри её. Температуру продукта и таймер времени приготовления.
Данные отображаются как в виде табло:
Так и графически:
Думаю «противники автоматизации» не скажут, что этот прибор бесполезен для нас.
Экран Метеостанции доступен во всех конфигурациях комплекса, но и сам является отдельной конфигурацией. (при включении будет виден сразу, а весь остальной интерфейс будет отключен).
Для включения конфигурации «Метеостанция» в качестве основной надо установить «1»
Пусть это конечно малый шаг, но это уже реально работоспособный прибор который принесет пользу.
Спасибо за внимание. Следующий шаг «Вентиляторы»
Цифровой датчик температуры и влажности I2C (Trema-модуль)
В линейке trema-модулей есть три датчика температуры и влажности:
В этой статье, рассматривается модуль подключаемый к шине I2C, который позволяет, с большой точностью, определить температуру и влажность окружающей среды.
Общие сведения:
Модуль построен на базе чипа AM2320. По своим техническим характеристикам, модуль превосходит датчики DHT11 и DHT22. Модуль на базе чипа AM2320 позволяет проверять достоверность данных не проверкой контрольной суммой, как в датчиках DHT11 и DHT22, а проверкой циклически избыточного кода, что в разы уменьшает вероятность получения ошибочных данных.
Видео:
Спецификация:
- Интерфейс: I2C.
- Питание: 3,1 . 5,5 (номинально 5В).
- Потребляемый ток:
- В режиме ожидания: 8 . 10 мкА.
- В режиме измерений: 350 мкА, пиковый до 950 мкА.
- Измерение температуры:
- Допустимый диапазон: -40°C .. 80°C.
- Максимальная погрешность: ±0,5°C.
- Разрешение шкалы: 0,1°C.
- Измерение относительной влажности:
- Допустимый диапазон: 0. 99,9%
- Максимальная погрешность: ±3% при t=25°C
- Разрешение шкалы: 0.1%
- Уход показаний: 0,5%/год
- Минимальное время между считываниями показаний: 2 сек
- Габариты: 30х30х6,5 мм
- Вес: 4 гр.
Все модули линейки «Trema» выполнены в одном формате
Подключение:
Модуль подключается к аппаратной или программной шине I2C Arduino и имеет адрес 0x5C.
Для удобства подключения, предлагаем воспользоваться TremaShield.
Модуль удобно подключать 4 способами, в зависимости от ситуации:
Способ — 1 : Используя проводной шлейф и Piranha UNO
Используя провода «Папа — Мама», подключаем напрямую к контроллеру Piranha UNO.
Способ — 2 : Используя Trema Set Shield
Модуль можно подключить к любому из I2C входов Trema Set Shield.
Способ — 3 : Используя проводной шлейф и Shield
Используя 4-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.
Способ — 4 : Альтернативный вариант подключения
Модуль можно подключить к любому выводу Arduino, как при подключении датчиков DHT11 и DHT22:
- Вывод SCL модуля нужно соединить с выводом GND до подачи питания.
- Вывод SDA модуля нужно подключить к любому выводу Arduino и подтянуть его к Vcc (+5V) через резистор 4,7 кОм . 10 кОм.
- При таком варианте подключения, для работы с модулем потребуется библиотека iarduino_DHT, а не iarduino_AM2320.
- Преимуществом альтернативной схемы подключения является то, что к одной плате Arduino можно подключить множество модулей.
- Недостатком альтернативной схемы является то, что между опросами модуля должна выдерживаться пауза в 3-4 секунды.
При подключении датчика температуры и влажности AM2320 по шине I2C к другим платам, например, WEMOS D1 mini или WEMOS D1 mini Pro на базе микроконтроллера ESP8266, и т.д. То перед подключением библиотеки iarduino_AM2320, нужно подключить библиотеку Wire, как это описано в разделе Wiki — расширенные возможности библиотек iarduino для шины I2C.
Питание:
Модуль поддерживает питание 3,3 В или 5 В постоянного тока.
Подробнее о модуле:
Для работы с модулем, предлагаем воспользоваться библиотекой iarduino_AM2320, синтаксис которой идентичен библиотеке iarduino_DHT для работы с датчиками DHT11 и DHT22.
Подробнее про установку библиотеки читайте в нашей инструкции..
Примеры:
Получение данных от модуля в монитор последовательного порта, с выводом всех возможных ошибок:
Результат работы скетча:
Описание основных функций библиотеки:
Данная библиотека может использовать как аппаратную, так и программную реализацию шины I2C.
О том как выбрать тип шины I2C рассказано в статье Wiki — расширенные возможности библиотек iarduino для шины I2C.
Коптильный комплекс на базе Arduino. Шаг 3 Датчики температуры
Пора что-то подключить.
Начнем с датчиков температуры. Я не буду глубоко вдаваться в теорию вопроса, но для раскрытия темы придется слегка обобщить материал.
Как уже сказано в «Шаге 0», прошивка позволяет легко менять различное подключенное оборудование. Определимся со списком этого оборудования.
На мой взгляд, на первое время будет достаточно реализовать подключение следующих датчиков:
- 1 : LM35 ( TMP35, TMP37, LM335) National Semiconductor(диапазон −55˚. 150˚C точность + / — 0.75°C)
- 2 : 10 кОм (подтяжка 4.7К) NTC thermistor(диапазон -55…125 °C точность + / — 0.5°C) стоит в KY-013
- 3 : 100 кОм (подтяжка 4.7К) ATC Semitec 104GT-2 thermistor (диапазон -50…300 °C точность + / — 0.6°C)
- 4 : 200 кОм (подтяжка 4.7К) ATC Semitec 204GT-2 thermistor (диапазон -50…300 °C точность +/- 0.6°C) (добавлено 28 10 2017)
- 5 : DS18B20 ATC Semitec 104GT-2 thermistor (диапазон -50…125 °C точность + / — 0.6-2.0°C) стоит в KY-001
- 6 : MAX6675 + К-тип термопара (диапазон -200˚. 1350˚C точность +/- 0.25°C) (добавлено 29 09 2017)
- 7 : BME280 (диапазон -40 до + 85 °C точность + / — 1°C)
- 8 : HTU21D (SHT21, Si7021 HDC1080) (диапазон −40˚. 125˚C точность + / — 0.4°C)
- 9 : SHT31 (диапазон 0%. 100% точность +/- 2%) + Т -40-125°C +/- 0.2°C
- 10 : AM2305/DHT22(диапазон 0%. 100% точность +/- 2%) + Т -40-125°C +/- 0.4°C
Список конечно можно расширять, если это нужно.
Почему именно они?
Это популярные представители основных семейств датчиков температуры в массовом сегменте.
LM 35 — представитель семейства «интегральных датчиков температуры»
Это датчики у которых выходное напряжение пропорционально температуре по шкале Цельсия. Очень простое подключение и код для контроллера. Низкая цена. Но не терпит «вольностей» при монтаже.. Все экранируем, ставим RC цепочки. и.т.д. Смотрим datasheet LM35.pdf (306,53 КБ)
Скачано: 301 .
Основная ценность этих датчиков в том, что у них ЛИНЕЙНАЯ зависимость значения напряжения на выходе от температуры. Коэффициент 10 мВ/ °C.
10 кОм/100 кОм/200 кОм терморезисторы Точные, экономичные, живучие при высоких температурах, стабильные. в общем все вроде чудесно.. Картину портит нелинейность параметров. На разных температурах значение сопротивления на градус разные. Эта особенность отбила желание применять их у многих. Причем эти многие, не понимая причины, кричат «врут», «большая погрешность». и.т.д. И при этом бурно аплодируют всяким «цифровым» заменителям у которых внутри они же и стоят.. Есть дрейф показателей со временем. Да, есть трудности пересчета значений, но при нормальном подходе все очень даже не плохо..
DS18B20 Один из самых распространенных представителей семейства «цифровых датчиков температуры». Такой «крепкий середнячёк». Все у него без рекордов, средняя точность, не очень экономичные, склонны к саморазогреву и смерти на низких температурах. Требуют контроллер для снятия показаний. Но функциональность отличная. Имеют память где хранят значения, сигналят о превышении порогов температуры, 2 вида питания основное/паразитное (правда на паразитном питании сужается диапазон). В общем заслуженно попал в список.
MAX6675 + К-тип термопара Arduino контроллеры не в состоянии переварить данные от термопары, возможности АЦП не позволяют этого. Но если пропустить через дополнительный модуль это становится реальным. Говорить про термопару нечего, достаточно посмотреть на характеристики. (добавлено по комментарию)
AM2305, SHT31, BME280 и HTU21D — комбинированные датчики которые измеряют не только температуру но и влажность, а BME280 еще и давление. Подробней остановлюсь на них в следующем шаге. Так как попали они в список по теме влажности.. А температура уже «прицепом».
Подключение к контроллеру
Сопротивления на 4,7 кОм нужно подобрать/купить/найти как можно более точные.
В конфигурации просто поменять цифру типа датчика на нужную.
Если у Вас есть уличный температурный датчик (он является дополнительным оборудованием) установите в строке #define TEMP_SENSOR_EXT тип нужного датчика . Это действие подключит датчик наружной температуры.. Все просто.
Напоминаю: в программе существует поправка показаний датчиков. Она меняет +/- на всем диапазоне измерений..
LM35 — с ним все очень просто, расчет линейный, реализовано 3 уровня точности.
Для выбора точности поменяйте в этом месте значение:
10 кОм/100 кОм терморезисторы — расчет идет не по формуле а через массив значений. Где значению АЦП соответствует свое значение температуры:
Левая колонка — значение АЦП, правая — Температура.
Если у Вас стандартный терморезистор — ничего менять не нужно. Если непонятно что.. то тут можно подправить в нужную сторону значения АЦП.
Например: в диапазоне 15-55 градусов температура отличается от 1 до 0.5 градусов, свыше 55 температура точная.
Первый путь — Заносим в табличный редактор колонку АЦП, посчитали кол-во строк где нужно поменять. Поделили, получили вес 1 строки. Пропорционально разбросали поправку..
Второй путь — Плавно нагревая датчик, контролируем по поверочному прибору температуру и снимаем показания АЦП. Вносим их в таблицу.
Цифровые датчики сами усредняют показания, в случае аналоговых это сделано программно.
На экране Вы видите не фактические показания аналоговых датчиков, а усредненные за период. Если что-то не нравится, можно изменить эти интервалы. Меняем их в переменных:
Например: хотим обновлять на экране раз в 2 секунды
Меняем 3000 на 2000.
Сами датчики опрашиваются чаще, если мы хотим за 2 секунды делать 10 замеров то меняем 300 на 200. Если 5 замеров то меняем 300 на 600 и у переменной «const int NumRead» поменяем значение с 10 на 5.
А можно ничего не менять, выбрать свои датчики и пользоваться. У меня с такими настройками все норм показывает.
Надеюсь понятно описал.
Подготовил новый релиз программы с подключенными датчиками температуры.
Необходимо скачать библиотеку OneWire. Скачать.
Те кто ставит первый раз, не забываем установить шрифты. Там все картинки.
И заменить прошивку контроллера. TARNET8.RAR (12,6 КБ)
Скачано: 340 (Устарела, см. более свежие версии выше)
Так как дополнил список новыми датчиками, дополню эту статью после получения их по почте. Без практической проверки работоспособности кода публиковать его не буду.