校准热敏电阻的最简单方法是什么?


11

作为一个无法使用实验室设备的业余爱好者,对我来说似乎真的不可能校准我拥有的热敏电阻。

当然,还有经过校准的温度传感器,例如DS18B20,但是特别适用于慢速MCU(例如Aruino UNO)的热敏电阻(与新的MCU相比)更加简单。

在不使用实验室设备的情况下校准热敏电阻有哪些选择?


1
使用经过校准的传感器作为DS18B20,以获取热敏电阻的特性。
扬卡

您所说的“偷拍者”是什么意思?如果您需要在热敏电阻上进行软件校正,但您没有使用DS18B20,那听起来似乎不是很好的理由。
Elliot Alderson

如果您担心全分辨率DS18B20的一秒延迟,请使用电池监控单线传感器之一,例如DS2438。它具有片上快速温度传感器。
扬卡

2
@newbie为了精度,通常很难校准温度。有些范围比其他范围困难。常用材料的凝固点可以提供很大的帮助,如果您的产品系列中包含更多的凝固点,则可以提供更多帮助。但是准确的参考文献可以追溯到实验室中某个地方保存并由一两个物理学家管理的NIST或DIN(或类似小组)标准。如果您指定温度范围以及在该范围内寻求的精度和精确度,这将对您的问题有所帮助。
jonk

1
@newbie但是在家吗?寻找纯度,然后创建冰/液组合或纯冷凝锅炉。例如,冰与水混合是非常常用的方法-但是它是否足够有用可能取决于您的准确度数据和您愿意从事的工作。您也可以使用沸水或硫酸使其冷凝在佛罗伦萨烧瓶的底部。(我都用过。)但是结果还取决于杂质,气压变化和其他因素。您的要求有很多关于自制尝试的建议。
jonk

Answers:


5

校准热敏电阻(或几乎所有与此相关的传感器)分两个步骤:

  1. 测量校准数据
  2. 设计适合该数据的校准定律

第一步是最困难的,不幸的是我经验最少的一步。然后,我将仅以非常笼统的术语来描述它。第二步主要是数学。

测量校准数据

您必须用(T,R)对填写表格,即在已知温度下测得的电阻值。校准数据应涵盖实际使用中需要的整个温度范围。超出此范围的数据点不是很有用。否则,您拥有的数据点越多越好。

为了测量热敏电阻的电阻,建议您 不要使用欧姆表。而是使用与实际校准后测量相同的设置。这样,电阻测量中的任何系统误差(如ADC失调和增益误差)都将被校准。

要了解温度,您有两种选择:使用固定的温度点(例如沸水或融冰)或使用已校准的温度计。定点是温度校准的黄金标准,但是很难正确设置它们,并且您可能不会在自己关心的温度范围内找到很多固定点。

使用已知良好的温度计可能会更容易,但仍需注意以下几点:

  • 您应确保热敏电阻和参考温度计的温度相同
  • 您应该保持该温度稳定足够长的时间,以使两者都达到热平衡。

将两者放在一起,放在具有高热惯性的机柜(冰箱或烤箱)中可能会有所帮助。

显然,参考温度计的精度在这里是非常重要的因素。您对最终测量精度的要求应该更加准确。

拟合校准定律

现在,您需要找到适合您数据的数学函数。这称为“经验拟合”。原则上,只要法律距离数据点足够近,任何法律都可以这样做。多项式在这里是最喜欢的,因为拟合总是会收敛(因为函数相对于其系数是线性的),并且即使在低微控制器上也很便宜。作为一种特殊情况,线性回归可能是您可以尝试的最简单的定律。

但是,除非您对非常窄的温度范围感兴趣,否则NTC热敏电阻的响应是高度非线性的,并且不太适合于低次多项式拟合。但是,对变量进行战略性更改可以使您的法律几乎是线性的,并且非常容易拟合。为此,我们将转移一些基本物理学的知识。

NTC热敏电阻中的导电是一个热激活过程。然后可以通过Arrhenius方程来模拟电导 :

G = g ^ EXP(-E 一个 /(K T))

其中G∞被称为“指数前因子”,E a活化能,k B玻尔兹曼常数,T是绝对温度。

可以将其重新安排为线性定律:

1 / T = A + B log(R)

其中B = k B / E a ; A = B log(G∞); log()是自然对数。

如果使用校准数据并将1 / T绘制为log(R)的函数(这基本上是交换了轴的阿伦尼乌斯图),您会注意到它几乎是一条直线,但并不完全是一条直线。线性度的偏离主要是由于预指数因子与温度有关。但是,该曲线足够平滑,可以很容易地通过低次多项式拟合:

1 / T = c 0 + c 1 log(R)+ c 2 log(R)2 + c 3 log(R)3 + ...

如果您感兴趣的温度范围足够短,那么线性近似可能对您就足够了。然后,您将使用所谓的“β模型”,其中β系数为1 / B。如果您使用三次多项式,则可能会注意到c 2 系数可以忽略。如果您忽略了它,那么您将拥有著名的Steinhart–Hart方程

通常,多项式的阶数越高,就越适合数据。但是如果度数太高,您最终会 过度拟合。在任何情况下,拟合中的自由参数的数量都不应超过数据点的数量。如果这些数字是相等的,那么法律将适合的数据完全相同,但你有没有办法来评估拟合优度。请注意,该热敏电阻计算器 (在注释中链接至)仅使用三个数据点来提供三个系数。这是初步近似校准的主意,但是如果我需要准确性,我将不依赖它。

我将不在这里讨论如何实际执行拟合。用于制作任意数据的软件包非常丰富。


感谢您提供详尽详尽的解释。附带问题 我使用DS18B20传感器作为温度读数源,并注意到热敏电阻读数偏离了约2.2度。然后我在热敏电阻温度计算中添加了2.2度。现在,ds18b20和热敏电阻的读数几乎相同。我测试了25至35度范围内的温度变化,尽管热敏电阻对温度变化的响应更加灵敏,但最终结果几乎相同。我使用的这种方法的缺点是什么?
ElectronSurf

2
@newbie:我不明白“热敏电阻的读数大约偏离2.2度”。热敏电阻不会给出度数的读数。您的意思是说您尝试过一些校准定律(来自何处?),使读数降低了2.2°C?如果是这种情况,并且此偏移量严格恒定,则您的方法的次要缺点是具有更复杂的转换定律和额外的算术步骤。如果偏移量不是严格恒定,则重做拟合将为您提供更好的结果。
埃德加·博内

11

阅读热敏电阻有些棘手。上述校准方法对错误检测没有任何帮助,它将创建对数曲线的两个点(热敏电阻响应曲线)。

这意味着,温度每变化0.1°C,相应的电阻变化就将随温度范围而变化。 在此处输入图片说明

起初,您可能会发现比实际温度低大约2至5°C的错误,但没有错误,只是读数很差。

您没有发布有关如何阅读此热敏电阻的任何详细信息,Arduino可能是?我必须说,有些库根本不起作用,因此您必须创建一个特殊的函数才能这样做。

发布有关如何表征和读取热敏电阻的详细说明。 帖子是西班牙文,但在代码标签中,所有解释都用普通英语。

一旦获得了ABC系数,即使使用6m长的LAN导线,另一次测量的误差也将约为0.1°C。

对4个热敏电阻的测试 该测试同时读取了4个热敏电阻,您会发现与我短暂地用手指握住的2个热敏电阻相比,温度有微小差异。


@newbie这是正确的方法。如果您无法按照说明进行操作,请在一天左右的时间内回复我,我将查找我的arduino代码并查找其中包含的引用,并在此处写下答案。
piojo,

1
链接消失了,这个答案将来创建解决方案的能力高度依赖于链接保持活动状态。您可以将步骤添加到答案中吗?
Keeta-恢复莫妮卡

我复制并粘贴答案的代码部分;//这是一个有关如何读取热敏电阻的示例代码,那里的“ Thermimistor.h”库仅接受Beta //系数,在我的情况下会产生不正确的结果,这是一种更准确的读取//热敏电阻的方式,如果您有奇怪或错误的测量,请遵循以下步骤:// //要获得此代码的准确结果,您将需要://一个multymeter,一个NTC热敏电阻,另一个累加它们的性能,// probe meter。//第1步。-在电阻测量模式下设置多重发射器
亚历杭德罗·圣地亚哥

//步骤2。-读取并注释热敏电阻的实际电阻和//实际温度(允许1分钟以获得稳定的测量值)。//一些热水和一杯。//步骤3.-将两个传感器(热敏电阻和温度探头放置在环境温度下含水的收件人中)。//在另一个杯子中加热一些水。//添加热水,直到将温度探头加热到10°C以上为止,//等待稳定的测量并注释温度和电阻。//从第一次测量开始,添加更多的水将元件加热20°。//注意温度和抗蚀剂
亚历杭德罗·圣地亚哥

1
@newbie如果您有NTC热敏电阻,则需要计算A,B和C常数,并将其插入Steinhart Hart方程中,以利用电阻来解析温度。您需要三个温度/电阻测量值才能找到这些常数。(每个热敏电阻的常数不同,找到常数就是您的校准。)本文介绍了如何执行此操作,但是由于它使用矩阵数学运算,因此建议您找到一个在线计算器。thinksrs.com/downloads/pdfs/applicationnotes/…–
piojo,

9

在杯子里装满冰块,倒入水直到满满。偶尔搅拌一下。当冰开始融化时,您将处于0°C的温度。将传感器浸入水中并读取读数。

如果您的传感器可以忍受,请将其放入沸水锅中。在海平面上,您将获得100°C的参考读数。

如果您需要热收缩传感器以防水,则必须花一些时间使读数稳定。

原理图

模拟该电路 –使用CircuitLab创建的原理图

图1.简单的线性校准曲线。

  • y1是0°C时的电阻,电压或ADC读数。
  • y2是100°C时的电阻,电压或ADC读数。

Ť=100ÿ-ÿ1个ÿ2-ÿ1个

正如评论中指出的那样,如果您使用的是热敏电阻,则需要检查数据表的线性度。如果这种简单的方法还不够好,那么您将不得不在微控制器中使用多项式计算或查找表。


3
这将给您两点,您可以用它们来计算这两个温度的beta。在该范围内的响应将远非线性(假设OP在他/她称其为“热敏电阻”时表示它是线性的),
Scott Seidman

1
@newbie:查看更新。
晶体管

5
@newbie正如晶体管最后写的那样,这种方法可能还不够好。坦率地说,我无法想象它会足够好。这种方法唯一可以为您带来的是可重复性(假设40°C始终与假定的40°C相同,但实际上可能是20°C或60°C)。
piojo,

2
如果压力为1.01325 bar或1013.25毫巴或百帕,纯​​净水会在100°C沸腾。海平面的压力取决于天气。
Uwe

1
@newbie。看起来很有用。如果您可以使用它,请将一些示例代码发布到您的问题中或作为答案。我确信其他人会发现它比我的回答更有用。
晶体管

2

线性温度计有增益和失调误差。

  • 双极电源很可能在0V时失调为零。
  • 单电源桥的Vref或R比率为Vref或Vcc,其中在该设计温度下失调为零。通常这是对称的,因此将对应于设计范围的中点。
  • 热敏电阻在25'C下用2个变量的特定灵敏度曲线进行校准。

  • 校准它只需要2次测量

    • 零位调整,其中误差电压= null = 0,Vt = Vref
    • 在T max时进行增益调整
      • 对于典型的4 R电桥,通常是中点温度。
  • 使用更好的温度计进行校准或
    • 用冰水和沸水加热0,100'C
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.