[Из песочницы] Умная подставка для напитков с бесконтактным измерением температуры

Как же часто я делал себе кофе или чай, ставил в сторонку, чтобы остыл, занимался своим делом: учился, программировал, смотрел «Игру Престолов». А когда вспоминал, всё уже было тёплым, а нет ничего противнее тёплого чая или кофе. Эту проблему нужно было как-то решить, и вот начал я делать умную подставку для чая, кофе, пива, супа и т.д. на основе бесконтактного измерения температуры через TMP006 от TI. Идея заключается в том, чтобы подставка измеряла температуру чашки и давала звуковой сигнал, как только мой напиток достиг моей любимой температуры.
Сенсор TMP006 вычисляет температуру объекта посредством замера теплового излучения поверхности посуды в диапазоне от 8–16 µm. Это позволяет замерять температуру без какого-либо контакта. Идеальный вариант, так как все чашки разные по форме и размерам.

Микроконтроллеры от SiliconLabs отличаются низким энергопотреблением и относительной дешевизной. Так как я хочу, чтобы подставка работала от одной батарейки (CR2032) относительно долго, энергопотребление играет тут большую роль.

В спящем режиме с включённым RTC EFM32ZG использует всего 4 µA. TMP006 в режиме StandBy использует 1 µA. Дополнительные компоненты включают Boost Up converter NCP1402 (для светодиодов и пищалки), который тоже ест примерно 1µA в режиме Standby.

Сначала собрал прототип на основе EFM32 Zero Gecko (ARM M0+) из готовых модулей. В спящем режиме в включённым RTC система потребляет 11–12µA.

image

В спящем режиме система проводит 10 секунд, потом просыпается и проверяет, не нажата ли сенсорная кнопка активации. Если нажата, то пользователю предлагают выставить желаемую температуру. Температура показывается на 8 светодиодах в бинарной кодировке.

После EFM32ZG включает TMP006 и идёт спать. Сенсору нужна одна секунда, чтобы провести измерение. В активном режиме он потребляет 220–240µA. Как только результат готов, микроконтроллер просыпается, считывает значения регистров TMP006, проводит очень хитрые вычисления и в итоге получает температуру поверхности. Если температура выше желаемой, то вся система идёт спать на 10 секунд, потом повторяет замер. В случае, если желаемая температура достигнута, идёт звуковой сигнал — ваш кофе достиг идеальной температуры.

Кстати, есть дополнительная функция: измерить температуру и сохранить её как желаемую на будущее. Подставка имеет размер 10×10 см. пришло время делать плату (пользуюсь KiCad):

image

image

image

Пока платы были в производстве (заказывал у ragworm.uk), меня пробило на креатив. Сделал верхнюю и нижнюю крышку:

image

Заказывал в местном сервисе по лазерной резке/гравировке. Пришли платы через 10 дней: качество плохое, но фукционал не пострадал.

image

Я допустил пару серьёзных и глупых ошибок, но так как это мой первый проект, мне простительно. После многих бессонных ночей кодинга и дебаггнинга, всё заработало:

image

Пришло время откалибровать TMP006. Для каждой системы нужно производить достаточно трудоёмкую калибровку, чтобы учесть теплопроводность между сенсором и платой, насколько большое поле обзора у сенсора и т.д. Сам TMP006 очень интересный и хитрый зверь, просто так не заработает.

Калибровку делал на стеклянной посуде с горячей водой высокоточным термометром на основе Pt1000 (±0,1 °C).

image

Точность с такой посудой составляет ±1°C!

Система также хорошо работает и с керамическими чашками, пластиком и бумагой. Всё зависит от излучательной способности (emissivity constant). У многих материалов она в районе 0,95–0,85. Но у металлов значительно ниже, особенно с полированной поверхностью.

Другая проблема заключается в толстых чашках, у которых температура воды и поверхности снаружи очень сильно различается.
Насколько я припоминаю лекции по термодинамике, чем выше температура воды, тем больше разница. У моей толстенной кружки разница может доходить до 10°C при 75°C воды и примерно 3 C° при 60°C. Надо поискать формулу, возможно, эту погрешность удастся легко откорректировать.

И вот, продукт готов:

image

image

image

image

Система работает как надо, за исключением мелких багов, которые я в скором времени ликвидирую. По моим измерениям, одной батарейки должно хватить на 6–10 месяцев (в режиме Standby примерно на 2 года), в зависимости от того, как часто вы пьёте чай.

Сейчас подставка стоит на рабочем столе и оказалась невероятно полезной.

Видео с демонстрацией:

P.S.: Проект был сделан на конкурс от Silicon Labs, отсюда лого и английский язык в видео.

© Geektimes