Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Настольный термометр на Arduino с трендом, максимумом и минимумом

Компоненты и материалы

Arduino UNO×1
Точный температурный датчик TS-NTC-103, 10 кОм×1
LCD-дисплей 16×2 (белый на синем) с I²C×1
Блок питания 12 В 2 А×1
Конденсатор 100 нФ (2 шт.)×2
Электролитический конденсатор 470 мкФ 16В×1
Металлоплёночный резистор 10 кОм, точность 0,1%×1
Кнопка (нормально разомкнутая)×1
Потенциометр 10 кОм (линейный)×1
Резистор 10 кОм×1

О проекте

Введение

Этот термометр сделан для удовольствия и для получения опыта написания программ для Arduino и работы с LCD-дисплеем. В процессе решил добавить функциональность: отображение максимальной и минимальной температуры, а также стрелку тренда (вверх/вниз) на дисплее. Кнопка используется для сброса минимума и максимума до текущей температуры.

Как собрать

Сборка довольно проста. Соедините компоненты по схеме. Вывод 5В Arduino Uno должен быть соединён со всеми +5В (стрелки). Также соедините все выводы земли. Термометр питается от внешнего блока 12 В постоянного тока, подключённого к Arduino. Загрузите скетч в Arduino — и готово.

Датчик — высокоточный NTC

Используется высокоточный термистор B+B Thermo Technik TS-NTC-103 (10 кОм). Допуск сопротивления при 25 °C составляет ±0,5%. Диапазон измерений −60…+150 °C, что позволяет заменять дорогие платиновые термометры. И базовое сопротивление, и B-коэффициент имеют допуск ±0,5%, поэтому датчик можно использовать без калибровки и заменять без перенастройки. Достигается точность ±0,12 K при 25 °C. В диапазоне −60…+85 °C максимальная погрешность около ±0,5 K. Можно использовать другой высокоточный NTC, но придётся изменить коэффициенты Стейнхарта-Харта в скетче.

Для высокоточных измерений второй резистор делителя напряжения (последовательно с NTC) тоже должен быть высокоточным. Использован металлоплёночный резистор 10 кОм, 0,1%, 0,6 Вт, ТКС 25 ppm. Подойдёт любой резистор с допуском 0,5% или лучше.

Помехи на кабеле NTC

NTC установлен снаружи дома, в моём случае на нескольких метрах кабеля. Чтобы избежать помех от бытовой техники, поставил развязывающий конденсатор 0,1 мкФ от аналогового входа температуры (пин 14) на землю. Осциллограф всё равно показывал шум. Причиной был тактовый генератор LCD 1602. Шум исчез после установки конденсатора 0,1 мкФ между VDD и VSS дисплея. Конденсатор нужно паять прямо на плате дисплея максимально короткими проводами (не более 1 см).

Для подавления пульсаций от импульсного блока питания поставил элко 470 мкФ между 5В и землёй Arduino.

Размещение NTC

Чтобы избежать ошибочных измерений, NTC и его корпус никогда не должны быть на солнце. Разместите в тени, лучше на северной стороне дома (южной — для южного полушария) или подальше от стены. Не вплотную к стене — оставьте несколько мм зазора, стена может быть на пару градусов теплее воздуха. Лучше стена без отопления за ней (например, гараж).

О программной части

Подключена библиотека LiquidCrystal для команд LCD 1602. Объявлены константы и переменные — см. комментарии в скетче. A, B, C — коэффициенты Стейнхарта-Харта для используемого NTC. Для других NTC их нужно изменить. Переменная interval (строка 17) задаёт интервал между измерениями — 3 секунды. Для сглаживания используется скользящее среднее по 30 последовательным измерениям (numReadings = 30, строка 22). Отображаемая температура — средняя за последние 90 секунд. Для расчёта используется массив readings[30]. Каждое измерение — целое 0…1023.

Аппроксимация Стейнхарта-Харта

NTC (термистор с отрицательным ТКС) — резистор, сопротивление которого падает при нагреве. Зависимость нелинейна. В практике используют две формулы: бета-формулу и формулу Стейнхарта-Харта. Последняя даёт лучшую аппроксимацию, её и используем. Производитель часто даёт коэффициенты для обеих. Но TS-NTC-103 работает в широком диапазоне −60…+150 °C, а мы используем лишь −10…+30 °C. Лучше посчитать коэффициенты специально для этого диапазона. Взял три пары «сопротивление — температура» из спецификации (−10, 0, +20 °C). Коэффициенты легко считаются онлайн-калькулятором Stanford Research Systems. На диаграмме видны данные (красные точки), бета-аппроксимация и аппроксимация Стейнхарта-Харта. При 10 кОм формула Стейнхарта-Харта даёт 25,0035 °C (очень точно), а бета-формула — 25,7716 °C (гораздо хуже).

Код

Версия 1.4 исправляет проблему с объявлением функции PrintPG(), вызывавшую ошибку компиляции в офлайн-редакторе. Версия 1.3 добавила гистерезис для стрелки тренда. Полный код и библиотеки доступны в репозитории проекта.

Схемы

Схема подключения приведена в разделе Schematics.

Производственный процесс

  1. Интегрированная система контроля доступа с QR, RFID и верификацией температуры
  2. Подключение нескольких DS18B20 1-Wire датчиков к Raspberry Pi для точного мониторинга температуры
  3. Как считывать температуру с DS18B20 на Raspberry Pi 2
  4. Измерение температуры на Raspberry Pi с датчиками Maxim 1-Wire и мостом DS2482 I2C
  5. Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
  6. Бесшовный мониторинг температуры и влажности на Raspberry Pi с EzTemp
  7. Точный мониторинг температуры в серверной на Raspberry Pi
  8. Самодельная система термостатирования для домашнего пивоварения: мониторинг и регулирование на Arduino
  9. Мониторинг температуры помещения на Raspberry Pi с графиками Gnuplot и email-алертами
  10. Создание многодатчиковой системы мониторинга температуры и света с Raspberry Pi и DS18B20