通过MCU进行廉价的温度感应


13

我正在寻找一种便宜的解决方案,用于通过MCU感测温度。我的要求是:

  • 2个频道
  • 温度范围:30-35°C
  • 温度分辨率:1-2 K
  • 电缆距离(MCU->传感器)可接受10cm-2m
  • 两个通道之间的相对温度足够,不需要绝对温度

我的出发点是两个带热电偶放大器的热电偶,但这对我的应用来说似乎有些过时了。在Radiospares,热电偶的价格为10美元,安培的价格为5美元,仅估算一个温度就需要30美元。

寻找便宜的解决方案的好方向是什么。NTC?


编辑2012年7月18日

在stevenvh扩展了他的答案以显示NTC可以获得的高度线性之后,我花了一些时间重新考虑NTC是否不是更好的解决方案。

但是,我不确定我能否遵循stevenvh的观点,即与半导体芯片相比,使用NTC可以便宜地获得错误。

为了使用NTC获得温度,以下功能起作用:

  1. 传递函数HTaRNTC(R25,B25/85) 的环境温度转换为电阻
  2. 分压器产生的电压HRNTCV(Vexcitation,RNTC,Rlin)
  3. AD转换HVbits(V,Vref,σconversion)
  4. 线性曲线近似:HbitsTest(bits,σapprox)

因此,我看到的错误源是:

  1. NTC值错误:1%各为25 - 85个值:总约2%R25B2585
  2. 线性等渗电阻值是1%,激励电压源是0.5%
  3. 对于PIC16F1825,用于ADC的内部基准电压具有6%的不确定性。此外,ADC本身具有积分,差分,失调和增益误差,每个误差约为1.5 lsb。在10位时,后者合计最多为0.5%。
  4. 正如史蒂文夫(Stevenvh)在他的回答中所表明的那样,线性近似在目标范围内的误差仅为0.0015%。

因此,温度估算误差显然将由ADV参考电压的误差和电阻值的误差支配。显然它将超过6%。如stevenvh所指出的,由于线性近似所引起的误差完全可以忽略。

300开尔文下6%的不确定度等于18K的温度误差。温度芯片的误差约为1K。在300K时,不确定度为0.3%。

在我看来,在没有非常仔细的校准和性能验证的情况下用NTC击败它是不可能的。线性隔离电阻,激励电压或ADC各自的不确定性将NTC解决方案的不确定性推到了更高水平。还是我的推理有重大错误?

目前,我坚信NTC可以成为高精度的温度传感解决方案,但以便宜的价格,对我来说,它们的性能将是黑暗中的一击。

Answers:


12

1-2度是一个简单的分辨率(即使您指的是精度,也不一样!)。我会考虑LM75及其各种克隆,或DS1820 / 18S20 / 18B20 / 1822。Microchip有很多温度传感器,包括价格低于1美元的LM75克隆。电压输出版本便宜,但我更喜欢数字版本。


我收到的有关该问题的所有答案都非常有帮助。由于易于使用LM75克隆,我接受了这一点。就我而言,不必担心线性化等问题。
ARF 2012年

只是好奇:您为什么更喜欢数字传感器?
m.Alin 2012年

5
无需担心基准,线性化,配置A / D转换器,并且硬件也很简单。缺点是您必须处理协议。
Wouter van Ooijen

15

我会说NTC,是的。是我在Digikey可以找到的最便宜的。大约半美元,比精度差不多的温度传感器IC便宜得多。NTC的优势在于,它在微控制器上仅需要一个串联电阻和一个ADC输入,而现在大多数情况下都具有。

低价格也有一个缺点:NTC并非线性。您要么使用它的传递函数(其中可能不喜欢它的指数函数),要么使用查找表,对于给定范围,查找表可能是最佳解决方案。

编辑 dd。2012-07-13
Bah,被惨痛的LM75击败。我不会让这个过去的。:-)

我将使用此NTC系列的* 103 * MT * 。首先传递函数:

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

T

看起来不太理想,实际上在0°C至100°C之间,曲线如下所示:

在此处输入图片说明

就像我说的那样,除了线性以外,什么都没有。我们可以尝试对其进行线性化,但是请记住,我们将用它制作一个电阻分压器,它们也不是线性的,因此任何线性化现在都会被串联电阻器所破坏。因此,让我们从电阻开始,看看会发生什么。我有一个3.3 V电源,并选择一个5.6kΩ电阻连接至Vcc,然后输出变为

在此处输入图片说明

一点也不差!紫色曲线是我们感兴趣的范围内的切线:30°C至35°C。我可以画出放大的图,但这给了我们两条重合的线,所以让我们看一下错误:

在此处输入图片说明

看起来也不太好,但是您必须查看垂直标度,它给出了在30°C至35°C之间与我们的NTC特性相比线性近似的相对误差。误差小于15 ppm或0.0015%

Mathematica说,我们近乎完美的线性近似方程为

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

这将导致ADC读数分别为609和561。用于10位ADC。5°C的差异在48的范围内,或约0.1°C的分辨率。仅NTC和一个电阻。

谁需要LM75 !?



编辑 dd。2012-08-13

事实:NTC解决方案需要校准。

我答应了Arik重新进行错误计算,但是它比我想象的要复杂得多,并且由于数据不完整而无法完成。例如,对于NTC传递函数中的系数,我有一个非常精确的数字(7个有效数字已经四舍五入了!),但是没有关于其准确性的信息。不过有一些评论。

Arik添加了一些误差,例如1%的电阻公差+ 1%的 = 2%的误差。好吧,这并不是那么容易,这就是我提到的复杂性的一部分。例如,上的1%公差会导致结果出现0.1%的误差。βββ

错误并不总是表示相同。例如,Maxim的LM75数据表没有提到最小和最大误差,而是三个西格玛和六个西格玛值。另一方面,Vishay NTC数据表显示 1%错误。那是六个西格玛吗?七西格玛 然后它可能会比LM75更精确,后者是2°C的精确六西格码,甚至在整个温度范围内为3°C。没什么可羞耻的。如果没有校准,很少有传感器会做得更好。问题:您如何比较公差数字?还有一个:如何结合多个钟形曲线函数以获得总误差?±

PIC的ADC参考的6%容差非常差。阿里克(Arik)说,在300开尔文下6%的不确定性等于18 K的温度误差,这当然是荒谬的,完全荒谬的。我做了一个快速检查:计算了温度为20°C时分压器的输出。加上6%,然后计算回到NTC的电阻值和温度。误差不是18°C,而是1°C或小于0.5%,以0 K为基准。

即使这样,6%的误差也完全无关紧要!如果将ADC的参考电压用于电阻分压器,则该电压甚至不会出现在计算中。我不在乎错误是否为50%。如果错误的内部参考在控制器外部不可用,请使用其他参考。像3.3 V电源一样,或者只是周围放置的任何其他DC电压。

校准不是一次性项目所需要的,但对于批量生产则完全不用担心,尤其是在消费电子产品中,每一分钱都很重要,与昂贵的LM75相比,您更有可能找到NTC。


3
询问专家的
好处

大约半美元?是不是你提到同一个项目?这是$ 0.15 / 100pcs。和MCP9701A约为0.25 $ / 100个。哇,我以为数码相机太贵了,每个2或3美元!
Abdullah kahraman 2012年

2
@abdullah-一切都是相对的。一位出色的工程师可能会指出串联电阻的容差为1%,并且其温度系数为100 ppm /°C。无论如何,如果我们有读取错误,那将不是由于近似值造成的!:-)
stevenvh 2012年

1
@stevenvh您的扩展回答使我有理由修改我的原始评估。但是,我不确定我是否完全理解如何以便宜的价格使用NTC进行高精度测量。如果您看着我编辑过的问题并告诉我我的推理是否有缺陷,我将不胜感激。非常感谢您的帮助!
ARF 2012年

1
@Arik-更新了我的答案。我特别觉得所谓的18 K错误需要响应:-)
stevenvh 2012年

6

这听起来像是一个热敏电阻的工作,或者更精确地说是两个热敏电阻。由于您只需要区分三种不同的温度状态,并且只在寻找相对温度,因此可以将两个热敏电阻连接在一起以产生单个模拟信号。然后可以使用内置在微控制器中的A / D进行测量。多数微型话筒都有A / D,因此不会花费更多。我可能会添加一对电阻器和电容器作为低通滤波器,以降低噪声。

一个热敏电阻从地到模拟信号,另一个从电源到模拟信号。您可能需要进行一些校准,但是由于温度范围较窄且分辨率较低,因此不需要花哨的时间。大概只保存零差电压并从将来的读数中减去就足够了。


感谢您提供有关在分压器配置中使用两个热敏电阻来测量相对电压的提示。我不会想到的。
ARF 2012年

@Arik-串联的两个热敏电阻仅在其电阻随温度线性变化时才起作用,因此请务必进行检查。(我回答了我。)
stevenvh 2012年

@stevenvh:是的,您是对的,但是请注意非常窄的温度范围和较低的分辨率。一旦将两个热敏电阻校准到范围中间附近的等温情况,它们应该表现良好。一个与另一个之间的距离永远不会超过5摄氏度。
奥林·拉斯洛普

@Olin-完全正确。我想我应该添加“以防万一您想在更宽的温度范围内进行测量”。
stevenvh 2012年

5

如果您不了解温度测量的步进二极管电流增量电压法,并且对测量温度感兴趣,则应阅读此内容-这可能会改变您对温度测量的想法。


我参加聚会有点晚了。
由于现在将使用答案,因此我将在很大程度上仅概述一个替代方法,该方法具有相当大的优点,但似乎很少以离散形式使用。

这种方法通常用于IC温度测量IC,但似乎仍比预期的要少。

如果一个硅(假设)二极管交替地被供给两个已知电流,则随着电流变化的电压变化量与绝对温度有关。

此方法至少在TI LM82,LM83,LM84,LM87和LTC3880,LTC3883和LTC2974传感器中使用。

请注意,此方法不同于在给定电流下测量二极管绝对正向压降以推断温度的常规方法。该方法实质上更加准确,并且不需要传感器特定的校准。

可以达到约0.1摄氏度(或K)的精度
分辨率取决于测量方法。

结果是无需设备校准。
结果仅取决于基本的二极管类型(例如,硅,锗),
例如,如果使用低于1美分的1N4148信号二极管,则可以将其更改为另一个1N4148,并获得相同的精度而无需重新校准。

设置使用的两个电流的准确性显然会影响结果准确性,但是由于可以选择这些以适合可用资源,因此结果可能会非常好。

一些但不是全部的片上处理器温度测量系统都使用此方法。您通常会发现在使用该系统的地方,技术说明对细节的要求很低,而且有些模糊不清-也就是说,即使该方法可能追溯到1960年代中期Wi​​dlar可以使用,他们似乎也希望对其保密。

这种方法可以合理地与使用NTC热敏电阻或PT100等铂电阻器及类似电阻实现的精度相媲美,其复杂性和难度极具竞争力。


这份出色的199 Analog Device应用笔记,以速度和精度测量计算机芯片上的温度,声称该技术是一项新技术。我完全不确定它们是否正确-但这肯定有用并且鲜为人知。

从上面的论文(略有改写)可以看出,I和NI的电流以及电流1下的二极管压降Cv1和电流2下的Vd2:

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

由于N,k和q都是已知常数,因此
T =(Constant)(DVd)

_

出色的TI应用笔记多种远程二极管温度感测

维基百科-硅带隙温度传感器

[具有外部PN结的LT AN137精确温度感测] 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;通过10K电阻和3.3v模拟0 A0。; 热敏电阻A0接地。我得到摄氏温度,如下所示:部分代码:analogReference(EXTERNAL);
ADC = AnalogRead(0);
Th = 10000 /(1023 / ADC)-1; // 10000是除数中使用的修订保护。
T =(775-Th)/ 10;

精度为:25°C时+1,20°C时+0,0°C时-1,-20°C时+2。您将775常数更改为更接近所需的期望范围。例如,使用765而不是775在25C附近得到0错误。由于这是整数数学运算,因此我将5加到770,然后除以10进行四舍五入。

显示热敏电阻,ADC,温度和计算结果之间的关系


1

我正在使用LM35DZ温度范围为0摄氏度至100摄氏度,线性输出和低阻抗;我一直在直接连接PIC ADC输入使用它,到目前为止效果很好。

一台的价格约为3美元。


3
而且他需要两个。对我来说,这似乎不是一个廉价的解决方案。与我出色的NTC相比!:-)
stevenvh 2012年

我也使用LM35芯片(并且我喜欢它们),但我确实认为它们对于这个问题有些过大。
2012年

0

非常简单的带有热敏电阻的温度(摄氏温度)测量仪...每个$ 1。

STM32F0芯片怎么样?其ADC模块包含一个内部温度传感器在两个温度点校准值用于其内部Vref生成校准值。

综合考虑所有这些因素,您可以将其用作非常精确的温度传感器-12位ADC,并且sigma刚好在1 sbb以上-电压范围很广。

还可以将其编程为专用的温度传感器:主要在睡眠状态下,醒来以读取温度并传输数据,然后返回睡眠状态。

所有这些只需少量的一美元。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.