Датчики температуры для проекта Arduino sous-vide

Я создаю ПИД-регулятор для sous-vide, как этот , и пытаюсь решить, какой датчик температуры взять.

Приоритеты:

  • Стоимость: < 25 фунтов стерлингов с доставкой в ​​Великобританию
  • Точность: +/- 0,5С
  • Диапазон: 0 - 100°С
  • Выход: что-то, что может быть считано Arduino с минимальной дополнительной схемой (например, 0-5 В постоянного тока, сопротивление, которое легко измерить, или цифровой выход, такой как OneWire и т. д.)
  • Физические: водонепроницаемый, безопасный для пищевых продуктов (в идеале) и с проводом длиной не менее метра - в идеале не слишком много работы для создания такого форм-фактора (у меня нет мастерской)
  • Режим отказа: было бы идеально, если бы отказ вызвал превышение температуры, а не понижение температуры.

С удовольствием пойду на компромисс по любому из вышеперечисленных, если это необходимо, но это мой идеал. Также открыт для предложений о том, что еще я должен пойти на компромисс. Меня особенно интересуют мысли о таких датчиках, как датчик типа k, pt100, чип TMP36 и «стандартный» термистор 10K (хотя, если эти названия недостаточно конкретны, дайте мне знать, что мне следует знать). вместо этого ищите).

Точность 0,5°C бессмысленна и только усложнит вам жизнь. 1°C более чем достаточно. И даже этого вы не можете получить с термистором NTC, не потратив мучительный день на его калибровку.
Похоже, приложение на самом деле требует максимально возможной абсолютной точности. Создается впечатление, что точка контролируемой варки работает именно в очень узком диапазоне температур, близких к температуре кипения.
Для плиты sous-vide вам действительно нужна только одна или две точки калибровки, потому что вы работаете в очень ограниченном диапазоне температур.
@RocketSurgeon - Sous vide обычно готовится при температуре около 60ºC. Необходимая точность зависит от того, что готовится. Он может сильно различаться.
Хорошо знать. Я ошибочно подумал, скажем, о рецептах чая, требующих нагревания воды почти до точки кипения, но избегающих самого кипения, и тому подобных вещах.
Рокетмагнит и ракетохирург вели беседу, которая совершенно не смущала глаз.
Почему мне кажется, что я уже видел точно такой же вопрос раньше? А, из вашего предыдущего вопроса.
Коммерческие водяные бани, кажется, не претендуют на точность. Они цитируют разрешение, стабильность и единообразие. Действительно ли требуется такая высокая точность?
@Kellenjb - это вопрос о датчике температуры. Мой предыдущий вопрос был о реле.
@Cybergibbons - я счастлив от калибровки, а не от чего-то абсолютно точного, но я хотел бы знать, когда в рецепте указано 55C, что я могу установить его на 55C и получить результат, который я ищу. Из того, что я могу сказать, это действительно требует точности +/-0,5C, хотя +/-1C может быть приемлемым. +/-2C неприемлемо.
@RichardRussell Эта статья Gizmag может представлять интерес - июль 2012 года.
Вот хорошая реализация су-вида, которая может дать вам некоторые идеи. flashingleds.net/sousvader/sousvader.html

Ответы (5)

Во-первых, соглашаясь с другими: переход на точность 1,0C сделает вашу жизнь намного проще.

Кажется, вы настроены на аналоговые датчики, но я бы предложил датчик с цифровым интерфейсом. Аналоговые датчики являются либо (используемыми) радиометрическими (выдают зависящий от температуры процент Vcc), что дает нелинейный отклик, который вам придется преобразовать. Другой тип (LM35 и т. д.) является абсолютным, что требует от вас аналого-цифрового преобразования относительно опорного напряжения, которое должно быть (намного) более точным, чем желаемая точность. Если вы не хотите измерять что-то, что датчик с цифровым интерфейсом не может (например, >> 100C), это кажется лишним.

Редактировать: давайте попробуем LM35. 10 мВ/C, даже если предположить, что сам LM35 не вносит ошибок , типичный эталон (LM431 и т. д.) имеет точность 1%, что вносит погрешность в 1% в показаниях температуры! Типичный аналого-цифровой преобразователь микроконтроллера имеет разрядность 10 бит, предположим, что полная шкала соответствует эталонному напряжению 2,5 В (проверьте, позволяет ли это ваш UC!). 1-битная ошибка аналого-цифрового преобразователя (будем оптимистами! Лучше сверьтесь со спецификацией вашего uC) составляет 2,5 мВ = ошибка 1/4C. Таким образом, даже без самого датчика мы имеем погрешность +/ 1,25 C (в лучшем случае...).

Получите датчик с цифровым интерфейсом, например старый добрый ДС1820/18С20/18Б20, все ТО92. Или один из датчиков I2C или SPI, которые Microchip делает в TO220. Если вы нагреваете в лотке или что-то еще, вы можете подключить вкладку к лотку.

Меня не слишком волнует, аналоговый он или цифровой — я не знал, что существуют цифровые устройства. Я отредактирую вопрос, чтобы уточнить. Посмотрев на характеристики DS18S20, он выглядит подходящим, вот только встроить его в какой-нибудь зонд для погружения в воду - нетривиальная задача для тех, кто никогда этого не делал :-)
Основываясь на информации, приведенной в этом и других ответах, а также на дальнейших поисках, я нашел водонепроницаемый зонд DS18B20 в Alpha-Crucis (ЕС). Он также доступен в Adafruit в США. Он отвечает всем моим требованиям и имеет идеальный форм-фактор.

Получите прецизионный датчик температуры IC, такой как LM35CAZ .

LM35CAZ

Вы питаете его хорошими 5 В, а выходное напряжение представляет собой простое напряжение, которое является линейной функцией температуры. Они имеют довольно хорошую точность ±1⁄4˚C при комнатной температуре.

Добавлен:

Несколько человек говорили о том, что «точность в диапазоне температур» для этого датчика составляет ± 1ºC. Это не тот диапазон, о котором нужно говорить. «Точность при температуре приготовления» — это правильный диапазон, о котором следует говорить. При температуре около 60ºC точность составляет ±0,7, а возможно, и выше. «Типичная» линия варьируется примерно на 0,1ºC в зависимости от вашей кулинарной плиты.

Точность LM35CAZ

Вам, вероятно, потребуется только одна или две точки калибровки, чтобы этот датчик был достаточно точным для ваших нужд. Но, конечно, для этого требуется точный термометр, по которому можно его откалибровать. Для этого у вас есть несколько вариантов:

Вариант 1: Вы можете использовать воду. Температура воды, подвергающейся замерзанию, равна 0ºC. Так что поместите его в небольшую чашку с водой в морозильной камере и внимательно следите за выходным напряжением. Он будет падать и падать, пока вода не начнет замерзать. В этот момент температура перестанет падать и какое-то время останется неизменной. Как только заморозка завершится, температура снова начнет падать. Обратите внимание на напряжение в плоской области, чтобы использовать его в качестве точки калибровки 0ºC.

График температуры замерзающей воды

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

Калибровка термометра.

Использование 0ºC и 100ºC не так хорошо, как использование, скажем, 50ºC и 80ºC, но это намного проще. Если у вас есть очень точный термометр, вам следует использовать точки калибровки ближе к температуре приготовления.

Вариант 2: Используйте метиловый спирт. (Спасибо stevenvh) Это кипит при 64,7ºC. Это настолько близко к вашей температуре приготовления, что вам понадобится только одна точка калибровки, чтобы получить очень точную температуру приготовления. Очевидно, будьте осторожны, чтобы не опьянеть и не взорвать себя парами. Не нагревайте спирт на открытом огне!

Добавлено - Усиление

Поскольку вы работаете в узком диапазоне температур и вам нужна хорошая точность управления, возможно, стоит также усилить выход датчика. Это даст большее разрешение АЦП на Arduino, что приведет к большей стабильности алгоритма ПИД-регулирования. См. вопрос Преобразование уровня аналогового напряжения (сдвиг уровня) , в котором обсуждается усиление и сдвиг уровня аналогового напряжения.

Предполагая, что вы работаете в диапазоне 40–100 °C (0,4–1,0 В). Вы захотите вычесть 0,4 В из сигнала, получив 0,0 В - 0,6 В, и усилить результат с коэффициентом усиления 8, получив 0,0 В - 4,8 В. Это даст отличное разрешение.

Точность в диапазоне температур составляет 1°C. 0,25°C — это коммерческий разговор.
@stevenvh - «Точность по температуре» - это неправильный диапазон, о котором нужно говорить. «Точность при температуре приготовления» — это правильный диапазон, о котором следует говорить.
0,5°C указано при 25°C. Будет ли температура приготовления ближе к этому или ближе к диапазону температур? Думаю, последнее.
@stevenvh - я думаю, что диаграмма, которую я разместил, отвечает на этот вопрос.
Не поймите меня неправильно, я не хочу, чтобы ваш сенсор выглядел плохо. Я хочу быть реалистом. Как инженер-конструктор я избегаю типичных значений. Дизайн для худшего случая. Если максимум 0,7°C указан при 60°C , это означает, что это может произойти , независимо от того, насколько красивыми могут быть 0,1°C. В зависимости от вашего приложения подсчет типичных значений может привести к проблемам с качеством.
@stevenvh - Вот почему калибровка при 0ºC и 100ºC - хорошая идея. Это, вероятно, принесет точность в пределах 0,25ºC. Если вы действительно не разрабатываете наихудший случай и не предполагаете, что точность изменяется случайным образом в этих пределах.
Вы можете откалибровать температуру кипения метилового спирта вместо воды: 64,7°C.
@stevenvh - Это хорошая идея! В этом случае он, вероятно, мог бы просто выполнить калибровку по 1 точке, чтобы получить достаточную точность. Хотя нужно быть осторожным, чтобы не опьянеть/не взорвать себя.
Не стесняйтесь добавлять это к своему ответу. Не все читают все комментарии.
Увеличение полезного диапазона для охвата диапазона датчика уменьшит шум квантования, но вы также должны отметить, что теперь он добавляет свой собственный набор ошибок. Даже если вы выполняете калибровку в одной точке, вам теперь придется учитывать дрейф напряжения смещения входа усилителя в зависимости от температуры устройства, а не готовящегося материала. Я не говорю, что усиление — это плохо, просто если вы собираетесь его рекомендовать, вы также должны указать проблемы, с ним связанные.
@Olin - это хороший момент. Однако шум квантования в этом случае действительно плох. 5 LSB свыше 0,25ºC. Это сделает стабильность довольно сложной. Я упомяну об ошибках усиления в ответе завтра.
Обратите внимание, что устройство имеет заводскую обрезку — отсюда и гарантированные 0,5С при 25С (для топовой модели) и расхождение в обе стороны. Весьма вероятно [ТМ], что после калибровки он будет вести себя так же при любой другой разумной температуре.
Спасибо за этот ответ и обсуждение - очень признателен
@RichardRussell - Нет проблем. Не забудьте проголосовать и/или отметить полезные ответы.
В качестве примечания вы можете обнаружить, что чашка с ледяной водой очень точно достигает 0 градусов. Это потому, что таяние льда будет удерживать его на уровне 0 градусов, чтобы подняться выше, он должен растопить весь лед. Просто чашка ледяной воды даст вам отличный эталон 0 градусов в середине, не нужно смотреть вечно (необходимо компенсировать давление и содержание минералов, если вы хотите быть супер точным)
Просто записка от человека, который очень хорошо разбирался в химии. Любые примеси, кислоты, основания, соли, жесткость воды, медь, железо и т.д., растворенные в воде, изменяют как ее температуру кипения, так и температуру замерзания, а так как это градуировка, а дистиллированная вода так дешева и легкодоступна , обязательно используйте дистиллированную воду для всех ваших потребностей в калибровке! Вы не получите «повышения точки кипения» или «понижения точки замерзания», которые вы получили бы из-под крана (или даже неба).
Лед также должен быть приготовлен из дистиллированной воды. Для наиболее точных калибровок используйте только дистиллированную воду!

Похоже, вы спрашиваете только о зонде. Очевидно, вы хотите что-то, что можно поставить в прямой контакт с едой. ПИД-регулятор включает в себя не только датчик обратной связи, но, похоже, вы не об этом спрашиваете. Если что-то из этого неверно, вам следует обновить свой вопрос. Я также понятия не имею, что такое "Sous Vide". Любая информация, относящаяся к этому, должна быть в вашем вопросе. Ссылки предназначены только для справочного материала.

Как упомянул Стивен, 1/2 градуса по Цельсию очень амбициозны и не нужны, когда вы говорите о еде.

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

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

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

Опять же, 1/2 градуса по Цельсию требует слишком многого, но вам все равно это не нужно. Термистор, возможно, с 4 точками калибровки, подгонкой уравнения, а затем интерполяцией должен подойти для решения реальной проблемы.

Калибровка до 1/2 градуса с использованием надежного известного термометра, разве это не смещает проблему? Эталонный термометр должен быть по крайней мере таким же точным, а лучше даже более точным, чем эта 1/2 градуса.
@Federico: Это решает проблему точности, но эталонным термометром может быть любая технология, он не должен быть безопасным для пищевых продуктов и не должен быть машиночитаемым. Приличный ртутный (или другой жидкостный) термометр, предназначенный для этого диапазона, должен быть доступен без особых проблем.
У меня есть приличный откалиброванный термометр, который я могу использовать для калибровки этого. Мне не нужно, чтобы он непосредственно контактировал с едой, но поскольку он будет погружен в жидкость в рисоварке, которую я также могу использовать для приготовления риса, я не хочу, чтобы из него вытекало что-то токсичное... Виде" - это способ приготовления блюд при точной температуре в вакуумных пакетах на водяной бане. Я строю ПИД-регулятор из Arduino, и в этом случае мне просто нужно определиться с датчиком температуры.

Используя LM335Z, вы можете откалибровать смещение и погрешность усиления для любого заданного датчика с помощью 2 тестовых показаний при температуре от 0°C до 100°C со льдом и кипящей водой.

Затем получите проверочное показание в среднем диапазоне, скажем, 50°C.

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

Со стандартами 0,1°C вы можете ожидать погрешность 0,2°C и использовать любой выбранный вами дисплей, чтобы гарантировать погрешность 0,5°C для ваших критических уставок.

См. рис. 3.

http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LИТЕРАТУРА/DATASHEET/CD00000459.pdf

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

Затем вам нужен АЦП, который гарантирует точность +/- 0,5 бит или, возможно, 1 из 256 уровней для считывания с точностью 0,5/100%. Это не гарантируется в большинстве Arduino, поэтому вам нужно использовать аппаратный ЦАП, чтобы проверить это в режиме «Выход минус вход» на 2-канальном осциллографе и выбрать пару переменного тока для CH1 и CH 2, а затем отобразить режим XY CH1 против Ch2, чтобы получить центральную точку, которая проходит максимум +/- 1 бит. Любой шум Vref в вашем АЦП вызовет пропущенные уровни квантования или гистерезис во время переходов, например, от 01111 до 10000, а перекрестные помехи от цифрового заземления к входному аналоговому заземлению не будут работать из-за монотонности.

Посетите сайт TI, чтобы найти литературу об ошибках АЦП.

@Richard Russell <<Я понимаю необходимость контроля 0,5 градуса C в органическом стиле приготовления пищи при низких температурах, когда живые организмы начинают быстро умирать выше температуры Пастера, когда убиваются бактерии.

Если бы это был я, я бы выполнил калибровку с точностью до 0,1 градуса, используя температуры калибровки смещения смещения между 45 и 65 градусами C после того, как он был надежно прикреплен к хорошо изолированному горшку. Тогда вы сможете превзойти любую другую коммерческую плиту на рынке... при условии, что она хорошо изолирована диэлектриком с высоким значением R.

Затем для внешнего вида, чтобы вы могли взять 500 долларов, обернуть его в прецизионную американскую СС, которая, как и «Дух Святого Людовика», глубоко поцарапана и отполирована до блеска. ;)

Лично я бы заказал кислотное травление экстерьера SS профессионалами, которые делают это каждый день с произведениями искусства, имеющими историческое кулинарное значение, за 50 долларов, а затем взимают дополнительную плату за нестандартные изображения с личным логотипом и названием компании. Просто спросите, нужен ли вам хороший реф.

Спасибо, что позволили мне помочь вам в достижении вашей цели.

Ура - это действительно полезно. Должен сказать, что понятия не имею, что такое "американский СС", но звучит красиво :-)
СС = нержавеющая сталь
Конечно, когда вы калибруете датчик, вы делаете это после АЦП. Следовательно, вы также калибруете ошибку АЦП?

Основываясь на информации, приведенной в других ответах, и дальнейших поисках, я нашел водонепроницаемый зонд DS18B20 в Alpha-Crucis (ЕС). Он также доступен в Adafruit в США.

Он отвечает всем моим требованиям и имеет идеальный форм-фактор.

это просто ссылка на продукт и никакой информации о том, почему. Есть пользователи, которые много работали над ответами, чтобы помочь вам научить вас, и принятие обычно является наградой за такую ​​​​задачу, особенно если они проделали работу по руководству вами здесь.
Хорошо, я приму другой ответ. Где я должен сделать свой собственный вывод?
Я говорил две вещи: 1) Если чей-то ответ - это то, что на самом деле привело вас сюда, он, вероятно, должен получить согласие. 2) Написание ответов более чем приемлемо, но не могли бы вы дать нам больше информации, чем просто ссылку. Прямо сейчас я ничего не знаю, кроме того, что это устройство можно носить с собой в нескольких местах и ​​оно водонепроницаемо.
Я сделал Sous Vide с помощью DS18B20, с пластиковым наконечником, но модель с металлическим наконечником лучше. Для приготовления пищи достаточно (я использую его ежедневно), и +/- 1 ° C - все, что вам нужно. Температура в вашей кастрюле неравномерна; она может составлять +/- 3°C в зависимости от того, куда вы поместите зонд и как вы нагреваете воду (погружной против нагревательной плиты), а также от того, циркулирует вода или нет.