Дешеве зондування температури з MCU


13

Я шукаю дешеве рішення для визначення температури з MCU. Мої вимоги:

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

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

Який хороший напрямок на пошук дешевшого рішення. НТК?


Редагувати 18 липня 2012 року

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

Однак я не впевнений, що мені вдається дотримуватися Stevenvh в його міркуваннях про помилку, яку можна отримати з НТК на дешевих порівняно з напівпровідниковими мікросхемами.

Щоб отримати температуру за допомогою NTC, вступають у дію наступні функції:

  1. Передавальна функція перетворення температури навколишнього середовища до опоруHTaRNTC(R25,B25/85)
  2. HRNTCV(Vexcitation,RNTC,Rlin)
  3. HVbits(V,Vref,σconversion)
  4. HbitsTest(bits,σapprox)

Джерела помилок, які я бачу, таким чином:

  1. R25B2585
  2. 1% для значення резистора лінеаризатону, припустимо, 0,5% для джерела напруги збудження
  3. Для PIC16F1825 внутрішня опорна напруга, що використовується для АЦП, має 6% невизначеності. Крім того, сам АЦП має інтегральні, диференціальні, зсувні та помилки посилення в порядку близько 1,5 фунта. При 10 бітах останні комбіновані максимум 0,5%.
  4. Як показав stevenvh у своїй відповіді, лінійне наближення має помилку лише 0,0015% у діапазоні, що цікавить.

Таким чином, помилка в оцінці температури буде явно переважати за похибкою опорної напруги ADV та помилками у значеннях резистора. Очевидно, це буде перевищувати 6%. Помилка внаслідок лінійного наближення є абсолютно незначною, як вказувало stevenvh.

Невизначеність 6% при 300 Келвін еквівалентна температурній похибці 18 К. Температурні чіпи мають похибку близько 1 К. При 300K це відповідає невизначеності 0,3%.

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

На даний момент я переконаний, що NTC можуть бути високоточним температурним рішенням, але на дешевих мені здається, що їх продуктивність буде пострілом у темряві.

Відповіді:


12

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


Всі відповіді, які я отримав на це питання, були дуже корисними. Я прийняв це завдяки простоті використання клонів LM75. Не турбуватися про лінеаризацію тощо - великий плюс у моєму випадку.
ARF

Цікаво: чому ви віддаєте перевагу цифровому датчику?
м.Алін

5
Не хвилюйтесь щодо посилань, лінеаризації, налаштування A / D-перетворювача, а також апаратного забезпечення є тривіальним. Мінус у тому, що вам доведеться мати справу з протоколом.
Wouter van Ooijen

15

Я б сказав, NTC, так. Цей найдешевший я міг знайти на Digikey. Приблизно півдолара, це набагато дешевше, ніж датчики температури, які мають приблизно однакову точність. Перевага NTC полягає в тому, що йому потрібен лише серійний резистор і вхід АЦП на вашому мікроконтролері, які більшість зараз є.

Низька ціна має і недолік: НТК - це все, крім лінійних. Вам або потрібно використовувати його функцію передачі (це з експоненцією, яка вам може не сподобатися, або використовувати таблицю пошуку, яка для даного діапазону може бути найкращим рішенням.

редагувати дд. 2012-07-13
Бах, побитий жалюгідним LM75. Я не дозволю цьому пройти. :-)

Я буду використовувати * 103 * MT * з цієї серії NTC . Спочатку функція передачі:

R=10kΩe13.4096+4481.80T150522T2+1877103T3

T

Не виглядає багатообіцяючою, і справді між 0 ° C і 100 ° C крива виглядає приблизно так:

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

нічого, крім лінійного, як я вже сказав. Ми можемо спробувати це лінеаризувати, але пам’ятайте, що ми збираємось зробити резисторний подільник з ним, і вони теж не лінійні, тому будь-яка лінеаризація тепер буде зруйнована резистором серії. Тож почнемо з резистора і подивимося, що відбувається. У мене є джерело живлення 3,3 В і підберіть резистор 5,6 кОм на Vcc, тоді вихід стає

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

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

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

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

Mathematica кажуть, що рівняння для нашого майже досконалого лінійного наближення є

VOUT=0.0308 T 1V/°C+2.886 V

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

Кому потрібен LM75 !?



редагувати дд. 2012-08-13

Факт: рішення NTC потребує калібрування.

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

Арік додає помилки, як 1% відхилення опору + 1% на помилку = 2%. Ну, це не так просто, і це частина ускладнення, про яке я згадував. Припустимо, що 1% відхилення на призводить до помилки в результаті 0,1%.ββ

Помилки не завжди виражаються однаково. Наприклад, таблиця даних LM75 Maxim не згадує мінімальні та максимальні помилки, а значення трьох сигм та шестисигм. З іншого боку, таблиця даних Vishay NTC говорить про 1% помилки. Це шість сигм? Сім-сигма? Тоді це може виявитись більш точним, ніж LM75, який на 2 ° C точний шість сигм, навіть 3 ° C за температурний діапазон. Цього немає чого соромитися; кілька датчиків обійдуться набагато краще без калібрування. Питання: як ви порівнюєте показники толерантності? І ще один: як ви поєднаєте кілька функцій кривої дзвінка, щоб отримати загальну помилку?±

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

Незважаючи на це, 6% помилка абсолютно не має значення ! Якщо ви використовуєте опорне напругу АЦП для дільника резистора, це напруга навіть не відображається в розрахунках. Мені було б байдуже, якщо помилка була 50%. Використовуйте іншу посилання, якщо погана внутрішня довідка недоступна поза контролером. Як і джерело живлення 3,3 В, або просто будь-яке інше напруга постійного струму, яке у вас є.

Калібрування - це не те, що вам потрібно для разового проекту, але для масового виробництва це зовсім не хвилює, і особливо в побутовій електроніці, де кожен цент рахується, ви швидше знайдете NTC, ніж дорогий LM75.


3
Приємне запитання у експертів полягає в тому, що ви отримуєте кожну відповідь (аналоговий проти цифрового), тепер Аріку просто потрібен експерт, щоб вибрати між експертами :)
Wouter van Ooijen

Близько півдолара? Чи не це той же самий елемент , який ви згадуєте? Це $ 0,15 / 100шт. А MCP9701A - це приблизно $ 0,25 / 100шт. Нічого собі, я подумав, що цифрові - такі дорогі, як 2 або 3 долари кожен!
абдулла кахраман

2
@abdullah - все відносно. Чудовий інженер, ймовірно, вказував би на толерантність серії 1% та його температурний коефіцієнт 100 ppm / ° C. У будь-якому випадку, якщо у нас є помилки читання, це не буде через наближення! :-)
stevenvh

1
@stevenvh Ваша розширена відповідь дала мені підстави переглянути свою первісну оцінку. Однак я не впевнений, що я повністю розумію, як ви можете досягти високоточного вимірювання за допомогою НТС дешево. Буду вдячний, якби ви подивились на моє відредаговане запитання і сказали мені, чи є у мене недолік у моїх міркуваннях. Велике спасибі за вашу допомогу!
ARF

1
@Arik - оновив мою відповідь. Особливо мені здалося, на помилку 18 К потрібна відповідь :-)
stevenvh

6

Це звучить як робота для термісторів, або двох термісторів, якщо бути точнішими. Оскільки вам потрібно розрізняти лише три різних температурних стану і ви шукаєте лише відносну температуру, ви можете з'єднати два термістори разом, щоб зробити єдиний аналоговий сигнал. Потім це можна виміряти за допомогою A / D, вбудованого в мікро. Більшість мікросхем мають A / D, тому це нічого не коштуватиме. Я б, мабуть, додав пару резисторів і конденсаторів як фільтрів низьких частот, щоб зменшити шум.

Один термістор йде від землі до аналогового сигналу, а інший від потужності до аналогового сигналу. Можливо, вам доведеться зробити деяку калібрування, але при вузькому діапазоні температур і низькій роздільній здатності вам не потрібно захоплюватися. Можливо, достатньо просто зберегти нульову різницю напруги і відняти її від майбутнього читання.


Дякуємо за підказку щодо використання двох термісторів у конфігурації дільника напруги для вимірювання відносної напруги. Я б не думав про це.
ARF

@Arik - два термістори в серії працюють лише в тому випадку, якщо їх опір лінійно змінюється в залежності від температури, тому обов'язково перевірте це. (Я робив у своїй відповіді.)
stevenvh

@stevenvh: Так, ви маєте рацію, але врахуйте дуже вузький діапазон температур і низьку роздільну здатність. Два термістори, які колись відкалібровані у випадку рівних температур поблизу середини діапазону, повинні робити досить добре. Один ніколи не вимикатиметься від іншого більше ніж на 5 градусів.
Олін Латроп

@Olin - Все правда. Напевно, я мав би додати "у випадку, якщо ви коли-небудь захочете виміряти набагато ширший діапазон температур".
stevenvh

5

Якщо ви не знаєте методу дельта-напруги ступінчастого діодного струму і цікавитесь вимірюванням температури, слід ознайомитися з цим - це може перетворити ваші уявлення про вимірювання температури.


Я трохи запізнююся на вечірку.
Оскільки відповідь буде використано до теперішнього часу, я багато в чому лише окреслюю альтернативний метод, який має значні переваги, але який, здається, напрочуд мало використовується в дискретному вигляді.

Цей метод зазвичай використовується в ІМС вимірювання температури, але все ще здається менш відомим, ніж можна було б очікувати.

Якщо діод кремнію (скажімо) поперемінно подається двома відомими струмами, зміна дельта напруги зі зміною струму пов'язана з абсолютною температурою.

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

Зауважимо, що цей метод відрізняється від звичайного методу вимірювання абсолютного падіння напруги вперед діода при заданому струмі до нижньої температури. Цей спосіб є істотно більш точним і не вимагає спеціальної калібрування датчика.

Точності близько 0,1 градуса С (або К) досяжні.
Роздільна здатність залежить від методу вимірювання.

Результат - калібрування пристрою.
Результат залежить лише від основного типу діода (наприклад, кремнію, германію),
наприклад, якщо ви використовуєте сигнальний діод 1 центу 1N4148, ви можете змінити це на інший 1N4148 і отримати ті ж точності без повторної калібрування.

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

Цей метод використовується деякими, але не всіма системами вимірювання температури процесора. Зазвичай ви виявите, що там, де використовується ця система, технічні описи є дуже детальними та дещо затуманеними - тобто, схоже, вони хочуть зберегти це в таємниці, хоча метод, ймовірно, починає працювати Widlar у середині 1960-х.

Цей метод конкурує з точністю, досяжною при розумній обережності, використовуючи терморезистори NTC або PT100 і т.д. Платинові резистори тощо.


Ця відмінна примітка із застосуванням аналогових пристроїв 199 Вимірювання температур на комп'ютерних мікросхемах стверджує, що техніка - нова. Я зовсім не впевнений, що вони вірні - але це, безумовно, корисно і менш відомо, що можна було б очікувати.

З наведеної статті (трохи переписаної) для струмів I і NI та падіння напруги діода Cv1 при струмі 1 і Vd2 при струмі 2:

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

Оскільки N, k і q - всі відомі постійні,
T = (Константа) (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 через 10K резистор і 3.3v. ; Термістор A0 на землю. Я отримую температуру в Цельцію наступним чином: Частковий код: analogReference (ЗОВНІШНІ);
ADC = analogRead (0);
Th = 10000 / (1023 / ADC) -1; // 10000 - резистор виправлення, який використовується в дільнику.
T = (775 - Th) / 10;

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

Показано співвідношення між термістором, АЦП, температурою та розрахунковим результатом


1

Я використовую LM35DZ . Температура коливалася від 0 до 100 градусів Цельсія, лінійний вихід і низький опір ; Я використовував його при прямому підключенні до мого входу PIC ADC, працює дуже добре до цих пір.

Одна одиниця коштувала близько 3 доларів США.


3
І йому знадобляться два з них. Не схоже на дешеве рішення для мене. Не порівняно з моїми великими НТК! :-)
stevenvh

Я також використовую мікросхеми LM35 (і мені вони подобаються), але я думаю, що вони трохи надмірні для цього питання.
Йоган

0

Дуже простий показник температури (Цельсія) з термістором ... по 1 долар кожен.

Як щодо мікросхема STM32F0? Його модуль АЦП містить внутрішній датчик температури І калібровані значення у двох точках температури І каліброване значення для внутрішнього генератора Vref.

З урахуванням всього цього ви можете використовувати його як дуже точний датчик температури - 12-бітний адм., А сигма трохи більше 1 фунта - в широкому діапазоні напруги.

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

все це за менший долар в невеликих кількостях.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.