Дешевое измерение температуры с MCU

13

Я ищу дешевое решение для измерения температуры с помощью MCU. Мои требования:

  • 2 канала
  • диапазон температур: 30-35 ° C
  • временное разрешение: 1-2 K
  • расстояние кабеля (MCU -> датчик) 10 см - 2 м являются приемлемыми
  • относительная температура между двумя каналами достаточна, абсолютная температура не требуется

Моя отправная точка - две термопары с усилителями для термопар, но для моего приложения это кажется излишним. Термопары стоят на 10 $ в Radiospares, усилители на 5 $, которые будут стоить 30 $ только для оценки температуры.

Какое хорошее направление искать более дешевое решение. NTCS?


Редактировать 18 июля 2012

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

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

Чтобы получить температуру с помощью NTC, в игру вступают следующие функции:

  1. Передаточная функция ЧАСTaрNTС(р25,В25/85) преобразования температуры окружающей среды к сопротивлению
  2. напряжение производится с помощью делителя напряжения ЧАСрNTСВ(ВеИкссяTaTяоN,рNTС,рLяN)
  3. AD преобразование ЧАСВбяTs(В,Врее,σсоNvерsяоN)
  4. приближение линейной кривой: ЧАСбяTsTеsT(бяTs,σaппроИкс)

Источники ошибок, которые я вижу, таковы:

  1. Ошибки значений NTC: 1% каждая для значений и B 25 - 85 : всего около 2%р25В25-85
  2. 1% для значения резистора линеаризации и, скажем, 0,5% для источника напряжения возбуждения
  3. Для PIC16F1825 внутреннего опорного напряжения используется для АЦП имеет 6% неопределенности. Кроме того, сам АЦП имеет интегральные, дифференциальные ошибки, ошибки смещения и усиления, каждый порядка 1,5 фунта на кв. При 10 битах последние объединенные составляют не более 0,5%.
  4. Как показал Стивенвх в своем ответе, погрешность линейного приближения составляет всего 0,0015% в диапазоне интересов.

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

Неопределенность 6% при 300 Кельвин эквивалентна погрешности температуры 18К. Температура чипов имеет ошибку около 1К. При 300K это соответствует неопределенности 0,3%.

Мне кажется, что не может быть и речи об этом с NTC без чрезвычайно тщательной калибровки и проверки производительности. Неопределенность в резисторах линеаризации, напряжении возбуждения или АЦП, каждый из которых рассматривается отдельно, толкает неопределенность решения NTC выше этого. Или у меня есть большая ошибка в моих рассуждениях?

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

ARF
источник

Ответы:

12

1-2 градуса - это простое разрешение (даже если вы имеете в виду точность, а это не одно и то же!). Я бы рассмотрел LM75 и его различные клоны, или DS1820 / 18S20 / 18B20 / 1822. Микрочип имеет множество датчиков температуры , в том числе клоны LM75 по цене менее $ 1. Версии выходного напряжения дешевы, но я бы предпочел цифровую.

Воутер ван Оойен
источник
Все ответы, которые я получил на этот вопрос, были очень полезны. Я принял это из-за простоты использования клонов LM75. Не нужно беспокоиться о линеаризации и т.д., это большой плюс в моем случае.
АРФФ
Просто любопытно: почему вы предпочитаете цифровой датчик?
м.Алин
5
Не беспокойтесь о ссылках, линеаризации, настройке аналого-цифрового преобразователя и аппаратных средствах. Недостатком является то, что вы должны иметь дело с протоколом.
Воутер ван Ойджен
15

Я бы сказал, NTC, да. Этот самый дешевый, который я мог найти в Digikey. Около полдоллара, это намного дешевле, чем ИС датчиков температуры, которые имеют примерно одинаковую точность. Преимущество NTC заключается в том, что ему нужен только последовательный резистор и вход АЦП на вашем микроконтроллере, который есть у большинства в настоящее время.

Низкая цена также имеет недостаток: NTC совсем не линейны. Вы должны либо использовать ее передаточную функцию (с экспонентой в ней, которая вам может не понравиться), либо использовать справочную таблицу, которая для данного диапазона может быть лучшим решением.

редактировать дд. 2012-07-13
Бах, избитый несчастным LM75. Я не позволю этому пройти. :-)

Я собираюсь использовать * 103 * MT * из этой серии NTC . Сначала передаточная функция:

рзнак равно10КΩе-13,4096+4481,80T-150522T2+1877103T3

T

Не выглядит многообещающе, и действительно, между 0 ° C и 100 ° C кривая выглядит так:

введите описание изображения здесь

что-нибудь кроме линейного, как я уже сказал. Мы можем попытаться линеаризовать это, но помните, что мы собираемся сделать резисторный делитель с ним, и они также не будут линейными, поэтому любая линеаризация теперь будет разрушена последовательным резистором. Итак, начнем с резистора и посмотрим, что получится. У меня есть напряжение питания 3,3 В и я выбираю резистор 5,6 кОм для Vcc, затем выход становится

введите описание изображения здесь

Совсем неплохо! Фиолетовая кривая является касательной в нашем диапазоне интересов: от 30 ° C до 35 ° C. Я мог бы построить график, увеличенный на этом, но это дает нам две совпадающие линии, поэтому давайте посмотрим на ошибку:

введите описание изображения здесь

Также выглядит не очень хорошо, но вы должны взглянуть на вертикальную шкалу, которая дает относительную погрешность линейного приближения по сравнению с нашей характеристикой NTC от 30 ° C до 35 ° C. Ошибка составляет менее 15 промилле или 0,0015% .

Mathematica говорит, что уравнение для нашего почти идеального линейного приближения

ВОUTзнак равно-0,0308 T 1В/°С+2,886 В

Это приведет к показаниям АЦП 609 и 561, соответственно. для 10-битного АЦП. Это диапазон 48 для разницы 5 ° C или около 0,1 ° C. Просто NTC и резистор.

Кому нужен LM75 !?



редактировать дд. 2012-08-13

Факт: решение NTC нуждается в калибровке.

Я пообещал Арику вернуться к подсчету ошибок, но он намного сложнее, чем я думал, и его невозможно выполнить из-за неполных данных. Например, у меня есть очень точные числа для коэффициентов в передаточной функции NTC (7 значащих цифр уже округлены!), Но нет информации об их точности. Несколько комментариев, хотя.

ββ

±

Ссылка АЦП PIC имеет довольно плохой допуск 6%. Арик говорит, что неопределенность в 6% при 300 Кельвин эквивалентна температурной погрешности 18 К , что, конечно, нелепо и совершенно абсурдно. Я сделал быструю проверку: рассчитал выход делителя напряжения для температуры 20 ° C. К этому добавили 6% и рассчитали обратно значение сопротивления NTC и температуру, которая будет. Ошибка составляет не 18 ° C, а 1 ° C или менее 0,5% относительно 0 К.

Несмотря на это, ошибка 6% совершенно не имеет значения ! При использовании опорного напряжения АЦП для резистивного делителя напряжения , что не появляются даже в расчетах. Мне было бы все равно, если ошибка была 50%. Используйте другую ссылку, если неверная внутренняя ссылка недоступна за пределами контроллера. Как источник питания 3,3 В или просто любое другое постоянное напряжение, которое у вас есть.

Калибровка - это не то, что вам нужно для одноразового проекта, но для массового производства это не волнует вообще, особенно в бытовой электронике, где важен каждый цент, вы, скорее всего, найдете NTC, чем дорогой LM75.

stevenvh
источник
3
Приятно спрашивать экспертов: вы получаете каждый ответ (аналоговый или цифровой), теперь Арику просто нужен эксперт, чтобы выбирать между экспертами :)
Wouter van Ooijen
Примерно полдоллара? Разве это не тот предмет, который вы упоминаете? Это $ 0,15 / 100 шт. И MCP9701A составляет около $ 0,25 / 100 шт . Ух ты, я думал, что цифровые стоили так дорого, как 2 или 3 доллара за штуку!
Абдулла Кахраман
2
@abdullah - все относительно. Великий инженер, вероятно, указал бы на допуск 1% на сопротивление серии и его температурный коэффициент 100 ppm / ° C. В любом случае, если у нас есть ошибки чтения, это не будет связано с приближением! :-)
stevenvh
1
@stevenvh Ваш расширенный ответ дал мне повод пересмотреть мою первоначальную оценку. Однако я не уверен, что полностью понимаю, как можно получить высокоточные измерения с помощью NTC по дешевке. Буду признателен, если вы посмотрите на мой отредактированный вопрос и скажете, есть ли у меня недостаток в моих рассуждениях. Большое спасибо за вашу помощь!
АРФФ
1
@ Арик - обновил мой ответ. Я особенно чувствовал, что предполагаемая ошибка 18 К нуждается в ответе :-)
stevenvh
6

Это звучит как работа для термисторов или, если быть более точным, двух термисторов. Поскольку вам нужно только различать три различных температурных состояния и вы ищете только относительную температуру, вы можете соединить два термистора вместе, чтобы создать один аналоговый сигнал. Затем это можно измерить с помощью встроенного в микро A / D. Большинство микро имеют аналого-цифровые, так что это не будет стоить ничего больше. Я бы, вероятно, добавил пару резисторов и конденсаторов в качестве фильтров нижних частот, чтобы уменьшить шум.

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

Олин Латроп
источник
Спасибо за подсказку относительно использования двух термисторов в конфигурации делителя напряжения для измерения относительного напряжения. Я бы не подумал об этом.
АРФФ
@Arik - два последовательно соединенных термистора работают, только если их сопротивление изменяется линейно в зависимости от температуры, поэтому обязательно проверьте это. (Я сделал в своем ответе.)
Stevenvh
@stevenvh: Да, вы правы, но обратите внимание на очень узкий температурный диапазон и низкое разрешение. Два термистора, откалиброванные для случая одинаковой температуры в середине диапазона, должны работать достаточно хорошо. Один никогда не будет отделен от другого более чем на 5 градусов.
Олин Латроп
@ Олин - Все верно. Думаю, мне следовало добавить «на случай, если вам захочется проводить измерения в более широком температурном диапазоне».
Стивенвх
5

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


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

Этот метод обычно используется в интегральных микросхемах для измерения температуры, но он все еще менее известен, чем можно было бы ожидать.

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

Этот метод используется (по крайней мере) в датчиках TI LM82, LM83, LM84, LM87 и LTC3880, LTC3883 и LTC2974.

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

Точность около 0,1 градуса C (или K) достижима.
Разрешения зависят от метода измерения.

Результатом является калибровка устройства бесплатно.
Результат зависит только от базового типа диода (например, кремний, германий),
например, если вы используете сигнальный диод 1N4148 менее 1 цента, вы можете изменить его для другого 1N4148 и получить ту же точность без повторной калибровки.

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

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

Этот метод конкурирует с точностью, достижимой при разумной осторожности, используя термисторы NTC или PT100 и т. Д. Платиновые резисторы и аналогичные, с очень конкурентоспособной степенью сложности и сложности.


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

Из вышеприведенной статьи (слегка переписанной) для токов I и NI и падения напряжения на диодах Cv1 при токе 1 и Vd2 при токе 2:

Vd1 - Vd2 = DVd = (kT / q) ln (I / NI) = (kT / q) ln (1 / N)

Поскольку N, k и q - все известные постоянные,
T = (Constant) (DVd)

_

Превосходное примечание к приложению TI Несколько датчиков температуры с дистанционным управлением

Википедия - Кремниевый датчик температуры запрещенной зоны

[LT AN137 Точное измерение температуры с помощью внешнего PN-соединения] http://cds.linear.com/docs/Application%20Note/an137f.pdf
Используется, например, в LTC3880, LTC3883 и LTC2974.

Рассел МакМахон
источник
3

Очень простой измеритель температуры (в градусах Цельсия) с термистором (10K) B25 / 100 = 4300 Меня вдохновил приведенный выше комментарий, прочитанный в этой статье.

Я купил термисторы у DigiKey 10K 5% по 1 $ каждый. Я хотел получить справедливое измерение температуры без плавающей и сложной математики. Подключение к Arduino осуществляется следующим образом: Vref до 3.3v; аналоговый-0 A0 через резистор 10К и 3,3В. ; Термистор А0 на землю. Я получаю температуру в градусах Цельсия следующим образом: Частичный код: analogReference (EXTERNAL);
ADC = analogRead (0);
Th = 10000 / (1023 / ADC) -1; // 10000 - фиксированный резидент, используемый в делителе.
Т = (775-Th) / 10;

Начисление: +1 при 25 ° С, +0 при 20 ° С, -1 при 0 ° С, +2 при -20 ° С. Вы изменяете константу 775 так, чтобы она была ближе к желаемому диапазону. Например, используйте 765 вместо 775, чтобы получить 0 ошибку около 25C. Поскольку это целочисленная математика, я добавил 5 к 770 перед делением на 10 для округления.

Показывает соотношение между термистором, АЦП, температурой и расчетным результатом

Ален Теру
источник
1

Я использую LM35DZ . Температура колебалась от 0 до 100 по Цельсию, линейный выход и низкий импеданс ; Я использовал его с прямым подключением к моему входу АЦП PIC, до сих пор работает очень хорошо.

Одна единица стоит около 3 долларов США.

JeeShen Lee
источник
3
И ему понадобятся два из них. Не похоже на дешевое решение для меня. Не по сравнению с моими замечательными NTC! :-)
stevenvh
Я также использую чипы LM35 (и они мне нравятся), но я думаю, что они немного излишни в этом вопросе.
Йохан
0

Очень простой измеритель температуры (в градусах Цельсия) с термистором ... по 1 $ каждый.

Как насчет чипа STM32F0? Его модуль АЦП содержит внутренний датчик температуры И откалиброванные значения в двух температурных точках И откалиброванное значение для его внутреннего генератора Vref.

Со всем этим вы можете использовать его как очень точный датчик температуры - 12-разрядный АЦП, а сигма - чуть более 1 фунта на кв. Дюйм - в широком диапазоне напряжений.

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

все это за меньшие деньги в небольших количествах.

dannyf
источник