Я ищу дешевое решение для измерения температуры с помощью MCU. Мои требования:
- 2 канала
- диапазон температур: 30-35 ° C
- временное разрешение: 1-2 K
- расстояние кабеля (MCU -> датчик) 10 см - 2 м являются приемлемыми
- относительная температура между двумя каналами достаточна, абсолютная температура не требуется
Моя отправная точка - две термопары с усилителями для термопар, но для моего приложения это кажется излишним. Термопары стоят на 10 $ в Radiospares, усилители на 5 $, которые будут стоить 30 $ только для оценки температуры.
Какое хорошее направление искать более дешевое решение. NTCS?
Редактировать 18 июля 2012
После того, как Стивенвх расширил свой ответ, чтобы показать высокую степень линейности, которую можно получить с помощью NTC, я потратил некоторое время, чтобы пересмотреть вопрос о том, не являются ли NTC лучшим решением.
Однако я не уверен, что могу следовать Стивенву в его рассуждениях об ошибке, которая может быть получена с помощью NTC дешевле, чем полупроводниковые чипы.
Чтобы получить температуру с помощью NTC, в игру вступают следующие функции:
- Передаточная функция преобразования температуры окружающей среды к сопротивлению
- напряжение производится с помощью делителя напряжения
- AD преобразование
- приближение линейной кривой:
Источники ошибок, которые я вижу, таковы:
- Ошибки значений NTC: 1% каждая для значений и B 25 - 85 : всего около 2%
- 1% для значения резистора линеаризации и, скажем, 0,5% для источника напряжения возбуждения
- Для PIC16F1825 внутреннего опорного напряжения используется для АЦП имеет 6% неопределенности. Кроме того, сам АЦП имеет интегральные, дифференциальные ошибки, ошибки смещения и усиления, каждый порядка 1,5 фунта на кв. При 10 битах последние объединенные составляют не более 0,5%.
- Как показал Стивенвх в своем ответе, погрешность линейного приближения составляет всего 0,0015% в диапазоне интересов.
Ошибка в оценке температуры, таким образом, очевидно, будет доминировать ошибки опорного напряжения А и ошибками в величинах резисторов. Это будет явно более 6%. Ошибка, вызванная линейным приближением, совершенно незначительна, как указывал Стивенвх.
Неопределенность 6% при 300 Кельвин эквивалентна погрешности температуры 18К. Температура чипов имеет ошибку около 1К. При 300K это соответствует неопределенности 0,3%.
Мне кажется, что не может быть и речи об этом с NTC без чрезвычайно тщательной калибровки и проверки производительности. Неопределенность в резисторах линеаризации, напряжении возбуждения или АЦП, каждый из которых рассматривается отдельно, толкает неопределенность решения NTC выше этого. Или у меня есть большая ошибка в моих рассуждениях?
В настоящий момент я убежден, что НТЦ могут быть высокоточным решением для измерения температуры, но по дешевке мне кажется, что их производительность будет броском в темноте.
Я бы сказал, NTC, да. Этот самый дешевый, который я мог найти в Digikey. Около полдоллара, это намного дешевле, чем ИС датчиков температуры, которые имеют примерно одинаковую точность. Преимущество NTC заключается в том, что ему нужен только последовательный резистор и вход АЦП на вашем микроконтроллере, который есть у большинства в настоящее время.
Низкая цена также имеет недостаток: NTC совсем не линейны. Вы должны либо использовать ее передаточную функцию (с экспонентой в ней, которая вам может не понравиться), либо использовать справочную таблицу, которая для данного диапазона может быть лучшим решением.
редактировать дд. 2012-07-13
Бах, избитый несчастным LM75. Я не позволю этому пройти. :-)
Я собираюсь использовать * 103 * MT * из этой серии NTC . Сначала передаточная функция:
Не выглядит многообещающе, и действительно, между 0 ° C и 100 ° C кривая выглядит так:
что-нибудь кроме линейного, как я уже сказал. Мы можем попытаться линеаризовать это, но помните, что мы собираемся сделать резисторный делитель с ним, и они также не будут линейными, поэтому любая линеаризация теперь будет разрушена последовательным резистором. Итак, начнем с резистора и посмотрим, что получится. У меня есть напряжение питания 3,3 В и я выбираю резистор 5,6 кОм для Vcc, затем выход становится
Совсем неплохо! Фиолетовая кривая является касательной в нашем диапазоне интересов: от 30 ° C до 35 ° C. Я мог бы построить график, увеличенный на этом, но это дает нам две совпадающие линии, поэтому давайте посмотрим на ошибку:
Также выглядит не очень хорошо, но вы должны взглянуть на вертикальную шкалу, которая дает относительную погрешность линейного приближения по сравнению с нашей характеристикой NTC от 30 ° C до 35 ° C. Ошибка составляет менее 15 промилле или 0,0015% .
Mathematica говорит, что уравнение для нашего почти идеального линейного приближения
Это приведет к показаниям АЦП 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.
источник
Это звучит как работа для термисторов или, если быть более точным, двух термисторов. Поскольку вам нужно только различать три различных температурных состояния и вы ищете только относительную температуру, вы можете соединить два термистора вместе, чтобы создать один аналоговый сигнал. Затем это можно измерить с помощью встроенного в микро A / D. Большинство микро имеют аналого-цифровые, так что это не будет стоить ничего больше. Я бы, вероятно, добавил пару резисторов и конденсаторов в качестве фильтров нижних частот, чтобы уменьшить шум.
Один термистор переходит с земли на аналоговый сигнал, а другой - с питания на аналоговый сигнал. Возможно, вам придется выполнить некоторую калибровку, но с вашим узким диапазоном температур и низким разрешением вам не нужно становиться модным. Вероятно, достаточно просто сохранить нулевое разностное напряжение и вычесть его из будущего чтения.
источник
Если вам неизвестен метод измерения температуры с использованием дельта-напряжения с помощью ступенчатого диода и вы заинтересованы в измерении температуры, вам следует прочитать это - это может изменить ваши представления об измерении температуры.
Я немного опоздал на вечеринку.
Поскольку ответ будет использован к настоящему времени, я в основном просто обрисую альтернативный метод, который имеет значительные достоинства, но который на удивление мало используется в дискретной форме.
Этот метод обычно используется в интегральных микросхемах для измерения температуры, но он все еще менее известен, чем можно было бы ожидать.
Если кремниевый (скажем) диод поочередно питается двумя известными токами, изменение дельта-напряжения с изменением тока связано с абсолютной температурой.
Этот метод используется (по крайней мере) в датчиках 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.
источник
Очень простой измеритель температуры (в градусах Цельсия) с термистором (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 для округления.
источник
Я использую LM35DZ . Температура колебалась от 0 до 100 по Цельсию, линейный выход и низкий импеданс ; Я использовал его с прямым подключением к моему входу АЦП PIC, до сих пор работает очень хорошо.
Одна единица стоит около 3 долларов США.
источник
Как насчет чипа STM32F0? Его модуль АЦП содержит внутренний датчик температуры И откалиброванные значения в двух температурных точках И откалиброванное значение для его внутреннего генератора Vref.
Со всем этим вы можете использовать его как очень точный датчик температуры - 12-разрядный АЦП, а сигма - чуть более 1 фунта на кв. Дюйм - в широком диапазоне напряжений.
Он также может быть запрограммирован как специальный датчик температуры: в основном во сне и после пробуждения, чтобы считывать температуру и передавать данные, а затем возвращаться в режим сна.
все это за меньшие деньги в небольших количествах.
источник