高精度温度测量
        我自从大二参加校电子设计大赛,做了一个温度计后就一直在纠结一个问题,如何把温度计的精度做上去?当时做校赛的时候采用了一个比较传统的电路方案:用稳压芯片的电压为基准,采用op07运放搭配精密电阻搭建电流源,然后用AD620仪表放大器放大PT100上的电压,送入单片机ADC采样后计算得到电阻,再通过R-T关系得到温度,这种结构也是百度上通常可以搜索到的方案,当时由于采用了精密电阻,电流源精度在万分之三左右,但是整体线性性不好,误差在最小70mOhm,最大在100mOhm,电流源的误差贡献就在30mOhm左右了,而且当时用了一个1.5元的稳压芯片,电压也不稳定,导致零点偏移严重。最后光电路的误差带来的温度测量误差就在0.25度了,哪怕在采用1/3B级误差0.1度的铂电阻,整体的误差在0.35度(0.27?)左右了,完全达不到WMO的0.1度要求。所以一直想提高测量精度。终于我发现了一个电路图,279393

        这个电路图带来的好处不言而喻,但是由于我不是电子专业出身对于一些模电方面的东西还是不太懂,就比如这个参考电压的最低电平高于输入信号的电压情况是否正确?(大神可以跟我讲讲不?)
        对此我问了一些人,最后
        。。。。。。。
        没人理我。😂

        但是我还是相信ADI公司的,虽然我买不起他们的芯片,于是在伟大的淘宝上我买到仿制芯片来试验一下。
        画PCB,买原件,焊接。。。。。。。花去了我一个月的时间,最后焊完这家伙长这样
279397

        然后写程序调试,克服各种奇怪的问题,一边又一遍debug,最后的结果还算好,通过和垃圾5位电表的比对,测量电阻精度在+-20mOhm左右,分辨率为5mOhm。
        但是我却遇到了致命的问题:稳定性不好,每次上电的数值都不一样,偏差在20mOhm上下,(已经排除了温漂的影响)如此大的偏差直接影响了最后测温的精度。现在这个问题是我想尽量去克服的问题。不知道论坛里面有没有大神可以帮我看看到底是什么问题?
---------------------------------------------------------------------------------------------------------------------------
        今天把温度计开了一天,PT100换成低温漂电阻,仪器参数如下:
        平均值:120.301
        方   差: 0.0207
279444







ps:如今气象上公认最好的电测温度计是芬兰维萨拉生产的,精度在+-0.2度

[修改于 2 年前 - 2018-01-18 19:32:15]

来自 仪表与测量
2018-1-17 20:03:57
1楼
要做一个很准的温度计,首先需要一个更准的温度计……
折叠评论
加载评论中,请稍候...
折叠评论
2楼
稳压芯片不准的吧。。不是有专门的电压基准芯片么。。
这里的文本显示不出来
------
引用 三水合番:
问题来了,世界上最准的温度计是咋制造的2333

ps.[quote]引用标签上方的文本无法在帖子中显示,不知道是不是bug..
@虎哥

[修改于 2 年前 - 2018-01-17 20:41:05]

折叠评论
加载评论中,请稍候...
折叠评论
3楼
引用 radio:
是个BUG,以前多处引用的帖子已经脆了,要修。@的ID最后面要加空格才能识别。

宏观温度是按照“分子无序运动的快慢”来定义的,这东西很难进行直接观察,间接的手段也比较模糊,因此温度的计量是一个世界性难题,目前执行的ITS-90标准也是用一系列实物基准作为固定点,用各种奇技淫巧来进行分度。世界范围内,目前的不确定度水平,在中低温区大约是0.2mK。

楼主提到了0.35度的误差,要想计量到这个不确定度,就需要非常精密的恒温槽。标准元件反而简单一点,可以采用二等或一等标准水银温度计。

计量一等标准水银温度计就需要用到更高的基准,通常是标准铂电阻温度计,它的电阻是依靠电桥测定的。如果需要在线测量,采用“数字万用表”是可行的,但是表的不确定度需要妥善的控制,这就是楼主遇到的问题。

[修改于 2 年前 - 2018-01-17 20:41:32]

折叠评论
加载评论中,请稍候...
折叠评论
cgcc(作者)
4楼
引用 三水合番:
通过pt100测温可以转为测电阻,也就是我可以用测万分之一的低温漂电阻的方法来评估电路的精度,至于PT100探头测温精度方面我也只能相信厂家的参数了。
折叠评论
加载评论中,请稍候...
折叠评论
2018-1-18 09:26:49
5楼
要注意pt100自发热,同时看看各家app note

00687c.pdf150k1次

CN0287.pdf470k1次


[修改于 2 年前 - 2018-01-18 09:28:59]

折叠评论
加载评论中,请稍候...
折叠评论
6楼
前段时间刚做完一个气相色谱仪里程控线性升温的项目
我觉得我可以回答这个问题233
-
徐版说的PT100自发热问题是其一,这一点很重要,所以供电电压必然不能很高。
这就需要很大的放大倍数给单片机采集,所以前端要做到低噪。
如果要很精确,恒压供电肯定是不靠谱的,一般是用运放与基准源搭成恒流源给pt100供电。
标定之后,仪用放大器输出放大之后的电压仅与增益*I*R有关,这样可以得到不错的温度分辨率。
我做到了0.2°C的精度。
-
再谈我后来用的方案,因为量产产品需要每次都标定校准。
这样其实是很耗费人工的,所以我后来选了美信Maxim的MAX31865这款芯片。、
这个芯片支持2-3-4wire PT100温度采集和自校准。
标称可以达到 0.03125°C的温度精度,实际我用在0.125°C这一档,效果非常稳定。
用来做双环PID,可以达到0.2°C左右的控制精度。
这里有个我开发的时候在GitHub上找到的基于Arduino的例程。
可以参考一下。
后来我把它移植STM32F4平台上了,用一个回调做初始化配置。
279412

采集部分代码主体就是这样,
写的很乱,见笑了 - -。
为自己的时间着想,建议选用IC集成解决方案会比较靠谱。
-
ps:顺便晒一下我做的程控升温的线性度。279413


[修改于 2 年前 - 2018-01-18 10:24:08]

折叠评论
加载评论中,请稍候...
折叠评论
cgcc(作者)
7楼
引用 rb-sama:
集成ic是个省事的方案。你那个芯片的0.125度的应该是分辨率吧?而且工作范围内,总精度在0.5度左右(190mOhm),当然你的项目里面测温是一个子项目,标定就显得很麻烦,我这个是想做一个气象站的。标定是一定要的。所以我内部加了拟合函数功能模块。



ps:
集成更低系统功耗,简化设计,减少设计周期:
简便的RTD铂电阻之数字转换器;
支持100Ω至1kΩ (0°C时)铂电阻RTD (PT100至PT1000);
兼容于2线、3线和4线传感器连接;
SPI兼容接口;
20引脚TQFN和SSOP封装;
高精度设备满足误差预算:
15位ADC分辨率,标称温度分辨率为0.03125°C (随RTD非线性变化);
整个工作条件下,总精度保持在0.5°C (0.05%满量程);
全差分VREF输入;
转换时间:21ms (最大值);
集成故障检测,增加系统稳定性:
±45V输入保护;

[修改于 2 年前 - 2018-01-18 12:55:34]

折叠评论
加载评论中,请稍候...
折叠评论
cgcc(作者)
8楼
引用 RodTech:
嗯嗯。考虑了。电流源是镜像电流源,电流大小是350uA。这个电流下自发热影响很小的吧?
折叠评论
加载评论中,请稍候...
折叠评论
9楼
引用 cgcc:
分辨率是 0.03125°C,我做了均值滤波,均值滤波后输出固定的值。
当前温度与下一次采集的温度差低于0.125°C不变,这是为了避免PID反复积分。
原理是在最小采样周期,温度不会瞬变。
PT100传感器的等级与标准确定了测量温度的值,这个是可信的,温度差同样可以通过标定来解决。
没太了解你说的拟合函数问题,如果用软件来测值太麻烦了。
MAX31865是集成在里面的,直接读真值。
折叠评论
加载评论中,请稍候...
折叠评论
cgcc(作者)
10楼
引用 rb-sama:
我的 意思是 温度计标定的话肯定要标定几个温度点的,而这些温度点的偏差不太适合直接加减一个值去补偿,所以用一个拟合函数来补偿这个误差。佷好奇你那个方案如果把PT100换成阻值已知的电阻情况下,温度显示与阻值公式推算的温度差距是多少。

[修改于 2 年前 - 2018-01-18 19:35:07]

折叠评论
加载评论中,请稍候...
折叠评论
2018-1-19 10:59:17
11楼
引用 cgcc:

对于你上面提出的的问题,其实都可以在datasheet里找到答案。
用这个片子对RTD做测量,官方提供以下三个方案
279449

1:简单的线性计算公式带来的误差范围如上。
这种方案显然不符合你的项目要求。
279450

2:拟合公式来进行精确函数计算补偿,不需要你说的自己测点做拟合。
这个公式是满足IE751标准的,datasheet中有相关描述。
有快速浮点计算能力的嵌入式系统比较适合应用这个方案。
279451

3:查表线性插值拟合
折中的方案,查表后作线性插值,精度介于以上两个方案之中。
-
上面三个方案,原理都是基于采集电阻值标准,温度对电阻值的conver。
下面来看看ADC的精度,
279452

±1LSB的意思是,最大一个正负分辨率的误差。
换算到温度就是±0.03125°C,在Vref可信时,这个是ADC采集能够带来的最大温度误差。
当然以上的前提是,配合方案2能带来的最高精度结果。
-
对于你的应用,单片机处理能力足够的话,建议用方案2。
处理能力较弱的话,用方案3。
-
以上都是基于Maxim原厂资料置信的结论,如果对原厂测试数据怀疑的话。
可能真的要做人肉标定,那就是另外一个话题了。

[修改于 2 年前 - 2018-01-19 11:24:37]

折叠评论
加载评论中,请稍候...
折叠评论
2018-1-27 21:46:58
2018-1-27 21:46:58
cgcc(作者)
12楼
明天准备进行水三相点标定
折叠评论
加载评论中,请稍候...
折叠评论
2018-1-28 13:14:21
cgcc(作者)
13楼
2018/1/28
气压:102.0kpa
理论值,冰水混合物 0.0摄氏度,沸水:100.2摄氏度
雪后阴
冰水混合物:99.993Ohm -> 0.0摄氏度
沸水:138.570Ohm->100.3摄氏度
折叠评论
加载评论中,请稍候...
折叠评论
14楼
水要蒸馏,其实大气压的测量更不容易测准,引入了新的误差,当然气压对三相点偏移贡献比较小。

[修改于 2 年前 - 2018-01-28 16:41:51]

折叠评论
加载评论中,请稍候...
折叠评论
2018-4-9 13:30:45
2018-4-9 13:30:45
15楼
这样精度的电路设计根本用不着用三相点瓶标定,除非你的电路和传感器达到了50mk以下的不确定度
折叠评论
加载评论中,请稍候...
折叠评论
2019-1-30 20:02:26
2019-1-30 20:02:26
16楼

这个电路我做过,用经过34401A标定的电阻箱测试,精度做到0.01K是非常轻松的。没有测试设备无法测试实际温度的精度。至关重要的原件是那个6.25k的电阻,我用的是5ppm的,有钱的话可以用Vishay VHP202温飘可以做到0.1ppm,也可用国产的RJ711,温飘可以做到1ppm。

折叠评论
加载评论中,请稍候...
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

ID:{{user.uid}}
{{user.username}}
{{user.info.certsName}}
{{user.description}}
{{format("YYYY/MM/DD", user.toc)}}注册,{{fromNow(user.tlv)}}活动
{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png