Оглавление:

Термометр для приготовления пищи с температурным зондом ESP32 NTP с коррекцией Стейнхарта-Харта и температурной сигнализацией .: 7 шагов (с изображениями)
Термометр для приготовления пищи с температурным зондом ESP32 NTP с коррекцией Стейнхарта-Харта и температурной сигнализацией .: 7 шагов (с изображениями)

Видео: Термометр для приготовления пищи с температурным зондом ESP32 NTP с коррекцией Стейнхарта-Харта и температурной сигнализацией .: 7 шагов (с изображениями)

Видео: Термометр для приготовления пищи с температурным зондом ESP32 NTP с коррекцией Стейнхарта-Харта и температурной сигнализацией .: 7 шагов (с изображениями)
Видео: Кухонный термометр из нержавейки обзор 2024, Ноябрь
Anonim
Image
Image
Термометр для приготовления пищи с температурным датчиком ESP32 NTP с коррекцией Стейнхарта-Харта и температурной сигнализацией
Термометр для приготовления пищи с температурным датчиком ESP32 NTP с коррекцией Стейнхарта-Харта и температурной сигнализацией

Все еще на пути к завершению «предстоящего проекта», «Термометр для приготовления пищи с температурным датчиком ESP32 NTP с коррекцией Steinhart-Hart и температурной сигнализацией» - это руководство, показывающее, как я добавляю датчик температуры NTP, пьезозуммер и программное обеспечение к своему емкостному сенсорному устройству. Емкостный сенсорный ввод ESP32 с использованием «металлических заглушек» для кнопок »для создания простого, но точного термометра для приготовления пищи с программируемой сигнализацией температуры.

Три емкостные сенсорные кнопки позволяют установить уровень срабатывания сигнализации по температуре. Нажатие центральной кнопки отображает дисплей «Set Alarm Temperature», позволяющий левой и правой кнопкам уменьшать или увеличивать температуру сигнала тревоги соответственно. Нажатие и отпускание левой кнопки снизит температуру срабатывания сигнализации на один градус, а нажатие и удержание левой кнопки будет непрерывно снижать температуру срабатывания сигнализации, пока она не будет отпущена. Аналогичным образом, нажатие и отпускание правой кнопки увеличит температуру срабатывания сигнализации на один градус, а нажатие и удерживание правой кнопки будет непрерывно повышать температуру срабатывания сигнализации, пока она не будет отпущена. По завершении настройки температуры будильника просто снова нажмите центральную кнопку, чтобы вернуться к отображению температуры. В любое время, когда температура равна или превышает температуру сигнала тревоги, звучит пьезозуммер.

И, как уже упоминалось, датчик температуры NTP используется в конструкции вместе с уравнениями Стейнхарта-Харта и коэффициентами, необходимыми для точных показаний температуры. Я включил чрезмерно подробное описание уравнения Стейнхарта-Харта, коэффициентов Стейнхарта-Харта, делителей напряжения и алгебры в Шаг 1 (в качестве бонуса я усыпляю каждый раз, когда я его читаю, так что вы можете захотеть пропустите шаг 1 и сразу переходите к шагу 2: сборка электроники, если, конечно, вам не нужно вздремнуть).

Если вы решите создать термометр для приготовления пищи, я включил следующие файлы для настройки и 3D-печати:

  • Файл Arduino "AnalogInput.ino", содержащий программное обеспечение для проектирования.
  • Cad-файлы Autodesk Fusion 360 для корпуса, демонстрирующие его конструкцию.
  • Файлы STL Cura 3.4.0 «Case, Top.stl» и «Case, Bottom.stl» готовы для 3D-печати.

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

И, как обычно, я, вероятно, забыл один или два файла или неизвестно что еще, поэтому, если у вас есть какие-либо вопросы, не стесняйтесь спрашивать, поскольку я делаю много ошибок.

Электроника была разработана с использованием карандаша, бумаги и калькулятора Radio Shack EC-2006a (Кат. № 65-962a) на солнечной энергии.

Программное обеспечение было разработано с использованием Arduino 1.8.5.

Корпус был разработан с использованием Autodesk Fusion 360, нарезан с помощью Cura 3.4.0 и напечатан в PLA на Ultimaker 2+ Extended и Ultimaker 3 Extended.

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

Шаг 1: Математика, математика и другие математические вычисления: Стейнхарт – Харт, коэффициенты и резистивные делители

Математика, математика и многое другое. Математика: Стейнхарт – Харт, коэффициенты и резистивные делители
Математика, математика и многое другое. Математика: Стейнхарт – Харт, коэффициенты и резистивные делители

В моих более ранних проектах, включающих датчик температуры NTC, использовалась методика поиска по таблице для преобразования входящего напряжения с резисторного делителя в температуру. Поскольку ESP32 поддерживает 12-битный аналоговый ввод, и поскольку я проектировал для повышения точности, я решил реализовать уравнение «Стейнхарта-Харта» в коде для преобразования напряжения в температуру.

Уравнение Стейнхарта-Харта, впервые опубликованное в 1968 году Джоном С. Стейнхартом и Стэнли Р. Хартом, определяет зависимость сопротивления от температуры датчика температуры NTC следующим образом:

1 / T = A + (B * (log (Термистор))) + (C * log (Термистор) * log (Термистор) * log (Термистор))

куда:

  • T - градусы Кельвина.
  • A, B, C - коэффициенты Стейнхарта-Харта (подробнее об этом чуть позже).
  • Термистор - это значение сопротивления термистора датчика температуры при текущей температуре.

Итак, почему это, казалось бы, сложное уравнение Стейнхарта-Харта необходимо для простого цифрового термометра на основе датчика температуры NTC? «Идеальный» датчик температуры NTC обеспечил бы линейное представление сопротивления фактической температуры, таким образом, простое линейное уравнение, включающее входное напряжение и масштабирование, привело бы к точному представлению температуры. Однако датчики температуры NTC не являются линейными и в сочетании с нелинейным аналоговым входом практически всех недорогих одноплатных процессоров, таких как WiFi Kit 32, создают нелинейные аналоговые входы и, следовательно, неточные показания температуры. Используя уравнение, такое как Steinhart-Hart, наряду с тщательной калибровкой, можно получить высокоточные показания температуры с использованием датчиков температуры NTC с недорогим одноплатным процессором, создав очень близкое приближение к фактической температуре.

Итак, вернемся к уравнению Стейнхарта-Харта. В уравнении используются три коэффициента A, B и C для определения температуры как функции сопротивления термистора. Откуда берутся эти три коэффициента? Некоторые производители предоставляют эти коэффициенты со своими датчиками температуры NTC, а другие нет. Кроме того, предоставленные производителем коэффициенты могут соответствовать или не соответствовать точному температурному датчику, который вы можете приобрести, и, скорее всего, они являются репрезентативными для большой выборки всех температурных датчиков, которые они производят в течение определенного периода времени. И, наконец, я просто не мог найти коэффициенты для датчика, использованного в этой конструкции.

Без необходимых коэффициентов я создал Steinhart-Hart Spreadsheet, калькулятор на основе электронных таблиц, который помогает генерировать необходимые коэффициенты для датчика температуры NTC (я потерял ссылку на аналогичный веб-калькулятор, который я использовал много лет назад, поэтому я создал этот). Чтобы определить коэффициенты для температурного зонда, я начинаю с измерения значения резистора 33 кОм, используемого в делителе напряжения, с помощью цифрового омметра и ввожу значение в желтую область электронной таблицы с надписью «Резистор». Затем я помещаю датчик температуры в трех средах; первая комнатная температура, вторая ледяная вода и третья кипящая вода, вместе с известным точным цифровым термометром, и подождите, пока температура на термометре и счетчик входных сигналов термистора, отображаемый на дисплее Wi-Fi Kit 32 (подробнее об этом позже), стабилизируются. Когда температура и счетчик входов термистора стабилизированы, я ввожу температуру, показанную известным точным термометром, и счетчик термисторов, отображаемый на дисплее Wi-Fi Kit 32, в желтую область электронной таблицы, помеченную «Градусы F от термометра» и «AD. Подсчитайте из комплекта Wi-Fi 32 дюйма соответственно для каждой из трех сред. После ввода всех измерений в зеленой области электронной таблицы отображаются коэффициенты A, B и C, требуемые уравнением Стейнхарта-Харта, которые затем просто копируются и вставляются в исходный код.

Как упоминалось ранее, выходные данные уравнения Стейнхарта-Харта выражаются в градусах Кельвина, и эта конструкция отображает градусы Фаренгейта. Преобразование градусов Кельвина в градусы Фаренгейта происходит следующим образом:

Сначала преобразуйте градусы Кельвина в градусы Цельсия, вычтя 273,15 (градусы Кельвина) из уравнения Стейнхарта-Харта:

Градусы C = (A + (B * (log (Термистор))) + (C * log (Термистор) * log (Термистор) * log (Термистор))) - 273,15

Во-вторых, конвертируйте градусы Цельсия в градусы Фаренгейта следующим образом:

Градусы F = ((Градусы C * 9) / 5) + 32

После завершения уравнения Стейнхарта-Харта и коэффициентов требуется второе уравнение для считывания выходного сигнала резисторного делителя. Модель резисторного делителя, используемого в этой конструкции:

vRef <--- Термистор <--- vOut <--- Резистор <--- Земля

куда:

  • vRef в этой конструкции составляет 3,3 В постоянного тока.
  • Термистор - это датчик температуры NTC, используемый в резистивном делителе.
  • vOut - выходное напряжение резисторного делителя.
  • Резистор - это резистор номиналом 33 кОм, используемый в резистивном делителе.
  • И земля, ну, земля.

v Выход резистивного делителя в этой конструкции подключен к аналоговому входу A0 комплекта 32 WiFi (контакт 36), и выходное напряжение резисторного делителя рассчитывается следующим образом:

vOut = vRef * резистор / (резистор + термистор)

Однако, как отмечено в уравнении Стейнхарта-Харта, для получения температуры требуется значение сопротивления термистора, а не выходное напряжение резисторного делителя. Таким образом, преобразование уравнения для вывода значения термистора требует использования небольшой алгебры следующим образом:

Умножьте обе стороны на «(резистор + термистор)», в результате получится:

vOut * (резистор + термистор) = vRef * резистор

Разделите обе стороны на «vOut», в результате получится:

Резистор + термистор = (vRef * резистор) / vOut

Вычтем «резистор» с обеих сторон, в результате получится:

Термистор = (vRef * Resistor / vOut) - Резистор

И наконец, используя свойство дистрибутива, упростите:

Термистор = резистор * ((vRef / vOut) - 1)

Подставив количество аналоговых входов WiFi Kit 32 A0 от 0 до 4095 для vOut и подставив значение 4096 для vRef, уравнение резисторного делителя, обеспечивающее значение сопротивления термистора, требуемое уравнением Стейнхарта-Харта, принимает следующий вид:

Термистор = Резистор * ((4096 / Счетчик аналоговых входов) - 1)

Итак, оставив математику позади, давайте соберем немного электроники.

Шаг 2: Сборка электроники

Сборка электроники
Сборка электроники
Сборка электроники
Сборка электроники
Сборка электроники
Сборка электроники

Что касается электроники, я ранее собрал демонстратор ESP32 Capacitive Touch https://www.instructables.com/id/ESP32-Capacitive … Для этой сборки требуются следующие дополнительные компоненты:

  • Пять 4-дюймовых кусков провода 28awg (один красный, один черный, один желтый и два зеленых).
  • Один, датчик температуры Maverick «ET-72 Temperature Probe» (https://www.maverickthermometer.com/product/pr-003/).
  • Один разъем «телефон» 2,5 мм, крепление на панель (https://www.mouser.com/ProductDetail/502-TR-2A).
  • Один резистор 33 кОм 1% 1/8 Вт.
  • Один, пьезозуммер https://www.adafruit.com/product/160. Если вы выбираете другой пьезозуммер, убедитесь, что он соответствует характеристикам этого (прямоугольная волна, <= текущий выход ESP32).

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

  • Зачистил и залудил концы каждого провода длиной 4 дюйма, как показано.
  • Припаял один конец желтого провода и один конец резистора 33 кОм к контакту «Tip» разъема телефона.
  • Припаял один конец черного провода к свободному концу резистора 33 кОм и обрезал лишний провод резистора.
  • Накладываем термоусадочную трубку на провода и резистор.
  • Припаял один конец красного провода к контакту "Рукав" на разъеме телефона.
  • Припаял свободный конец желтого провода к контакту 36 на WiFi Kit 32.
  • Припаял свободный конец черного провода к контакту GND на WiFi Kit 32.
  • Припаял свободный конец красного провода к контакту 3V3 на WiFi Kit 32.
  • Припаял один зеленый провод к одному выводу пьезозуммера.
  • Припаял оставшийся зеленый провод к оставшемуся выводу пьезозуммера
  • Припаял свободный конец одного из зеленых пьезопроводов к контакту 32 на WiFi Kit 32.
  • Припаял свободный конец оставшихся зеленых пьезопроводов к контакту GND на WiFi Kit 32.
  • Вставил датчик температуры в телефонный разъем.

Когда вся проводка была завершена, я дважды проверил свою работу.

Шаг 3: Установка программного обеспечения

Установка программного обеспечения
Установка программного обеспечения

Файл «AnalogInput.ino» - это файл среды Arduino, содержащий программное обеспечение для проектирования. В дополнение к этому файлу вам понадобится графическая библиотека «U8g2lib» для OLED-дисплея WiFi Kit32 (дополнительную информацию об этой библиотеке см. На

С графической библиотекой U8g2lib, установленной в вашем каталоге Arduino, и «AnalogInput.ino», загруженным в среду Arduino, скомпилируйте и загрузите программное обеспечение в WiFi Kit 32. После загрузки и запуска верхняя строка OLED отобразится на WiFi Kit 32 должен отображаться как «Температура», а текущая температура отображается крупным текстом в центре дисплея.

Коснитесь центральной кнопки (T5), чтобы отобразить дисплей «Установка температуры срабатывания сигнализации». Отрегулируйте температуру срабатывания сигнализации, нажав левую кнопку (T4) или правую кнопку (T6), как описано во введении. Чтобы проверить сигнал тревоги, отрегулируйте температуру сигнала тревоги, чтобы она была равна или ниже текущей температуры, и должен звучать сигнал тревоги. По завершении установки температуры срабатывания будильника нажмите центральную кнопку, чтобы вернуться к дисплею температуры.

Значения dProbeA, dProbeB, dProbeC и dResistor в программном обеспечении - это значения, которые я определил во время калибровки датчика, который я использовал в этой конструкции, и должны генерировать показания температуры с точностью до нескольких градусов. Если нет или если требуется более высокая точность, то следующей является калибровка.

Шаг 4: Калибровка датчика температуры NTP

Калибровка датчика температуры NTP
Калибровка датчика температуры NTP

Для калибровки датчика температуры необходимы следующие элементы:

  • Один цифровой омметр.
  • Один известный точный цифровой термометр, способный изменять температуру от 0 до 250 градусов по Фаренгейту.
  • Один стакан ледяной воды.
  • Одна кастрюля с кипятком (будьте очень и очень осторожны!).

Начнем с получения фактического значения резистора 33 кОм:

  • Отключите питание платы WiFi Kit 32.
  • Выньте датчик температуры из телефонного разъема (может также потребоваться отпаять черный провод от WiFi Kit 32, в зависимости от вашего цифрового омметра).
  • Откройте электронную таблицу Steinhart-Hart.
  • Измерьте значение резистора 33 кОм с помощью цифрового омметра и введите его в желтое поле «Резистор» в электронной таблице и в переменную «dResistor» в программном обеспечении. Хотя это может показаться чрезмерным, резистор 33 кОм 1% действительно может повлиять на точность отображения температуры.
  • Вставьте датчик температуры в телефонный разъем.

Затем получите коэффициенты Стейнхарта-Харта:

  • Включите известный точный цифровой термометр.
  • Подключите USB-источник питания к WiFi Kit 32.
  • Одновременно нажмите и удерживайте левую (T4) и правую (T6) кнопки, пока не появится дисплей «Счетчики термисторов».
  • Подождите, пока цифровой термометр и счетчики термисторов стабилизируются.
  • Введите температуру и количество термисторов в желтые столбцы «Градусы F от термометра» и «Показатели AD от ESP32» в строке «Помещение».
  • Вставьте цифровой термометр и термисторные зонды в ледяную воду и дайте обоим дисплеям стабилизироваться.
  • Введите температуру и количество термисторов в желтые столбцы «Градусы F от термометра» и «Показатели AD от ESP32» в строке «Холодная вода».
  • Вставьте цифровой термометр и термисторные зонды в кипящую воду и дайте обоим дисплеям стабилизироваться.
  • Введите температуру и количество термисторов в желтые столбцы «Градусы F от термометра» и «Показатели AD от ESP32» в строке «Кипящая вода».
  • Скопируйте зеленый коэффициент «A:» в переменную «dProbeA» в исходном коде.
  • Скопируйте зеленый коэффициент «B:» в переменную «dProbeB» в исходном коде.
  • Скопируйте зеленый коэффициент «C:» в переменную «dProbeC» в исходном коде.

Скомпилируйте и загрузите программное обеспечение в WiFi Kit 32.

Шаг 5: 3D-печать корпуса и окончательная сборка

3D-печать корпуса и окончательная сборка
3D-печать корпуса и окончательная сборка
3D-печать корпуса и окончательная сборка
3D-печать корпуса и окончательная сборка
3D-печать корпуса и окончательная сборка
3D-печать корпуса и окончательная сборка

Я напечатал и «Case, Top.stl», и «Case, Bottom.stl» с высотой слоя 0,1 мм, заполнением 50%, без опор.

Распечатав корпус, я собрал электронику и корпус следующим образом:

  • Я отсоединил провода от заглушек трех отверстий, прижал заглушки к отверстиям в "Case, Top.stl", затем повторно припаял провода к заглушкам, внимательно отмечая левую (T4), центральную (T5) и правую. (T6) провода и соответствующие кнопки.
  • Прикрепите телефонный разъем к круглому отверстию в "Case, Bottom.stl" с помощью прилагаемой гайки.
  • Поместил пьезозуммер в нижнюю часть корпуса рядом с разъемом для телефона и закрепил на месте двусторонней лентой.
  • Вставьте WiFi Kit 32 в нижнюю часть корпуса, убедившись, что порт USB на WiFi Kit 32 совмещен с овальным отверстием в нижней части корпуса (НЕ нажимайте на OLED-дисплей, чтобы разместить WiFi Kit 32 в нижней части корпуса. сборка, поверьте мне, только не делайте этого!).
  • Прижмите верхнюю часть корпуса к нижней части корпуса и закрепите на месте с помощью маленьких точек толстого цианакрилатного клея по углам.

Шаг 6: О программном обеспечении

О программном обеспечении
О программном обеспечении

Файл «AnalogInput.ino» является модификацией файла «Buttons.ino» из моего предыдущего руководства «https://www.instructables.com/id/ESP32-Capacitive-Touch-Buttons/». Я изменил исходные три раздела кода «setup ()», «loop ()» и «InterruptService ()», чтобы включить программное обеспечение для датчика и сигнализации, и добавил еще три раздела кода «Analog ()», «Кнопки ()» и «Дисплей ()» для очистки «петли ()» и добавления необходимого программного обеспечения для датчика и сигнализации.

«Analog ()» содержит код, необходимый для считывания счетчика термистора в массив, усреднения массива счетчиков, использования делителя напряжения для генерации значения термистора и, наконец, использования уравнений Стейнхарта-Харта и уравнений преобразования температуры для вычисления градусов Фаренгейта.

«Кнопки ()» содержат код, необходимый для обработки нажатий кнопок и редактирования температуры срабатывания сигнализации.

«Display ()» содержит код, необходимый для отображения информации на OLED-дисплее.

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

Надеюсь, вам понравилось (и вы все еще не спите)!

Шаг 7: «Предстоящий проект»

В
В

Предстоящий проект «Intelligrill® Pro» - это монитор для коптильни с двойным датчиком температуры, включающий:

  • Расчеты температурного датчика Steinhart-Hart (в отличие от «справочных» таблиц) для повышения точности, как указано в данном Руководстве.
  • Прогнозируемое время до завершения на зонде 1 с учетом повышенной точности, полученной на основе расчетов Стейнхарта-Харта.
  • Второй датчик, датчик 2, для контроля температуры курильщика (от 32 до 399 градусов).
  • Емкостное сенсорное управление вводом (как в предыдущем руководстве).
  • Удаленный мониторинг на основе WIFI (с фиксированным IP-адресом, позволяет отслеживать прогресс курильщика из любого места, где есть подключение к Интернету).
  • Расширенный температурный диапазон (от 32 до 399 градусов).
  • Звуковые сигналы завершения как внутри передатчика Intelligrill®, так и на большинстве устройств мониторинга с поддержкой Wi-Fi.
  • Отображение температуры в градусах F или C.
  • Формат времени в формате ЧЧ: ММ: СС или ЧЧ: ММ. Отображение заряда батареи в вольтах или в процентах заряда.
  • И выход PID для курильщиков со шнеком.

«Intelligrill® Pro» все еще тестируется, чтобы стать самым точным, функциональным и надежным Intelligrill®, созданным мной на основе HTML. Он все еще находится на стадии тестирования, но с едой, которую он помогает готовить во время тестирования, я поправился более чем на несколько фунтов.

Опять же, надеюсь, вам понравится!

Рекомендуемые: