请问如何用C51做热敏电阻的非线性补偿?

2020-01-21 21:35发布

硬件电路结构已经固定不可修改,就是电源经过10K电阻与热敏电阻到地,10位ADC对热敏电阻上的电压进行取样。要求能测量0~80℃范围,精度最好0.1℃
我计算了B值3435时,0~80℃,每隔5℃的测量电压与转换值列表,发现非线性很严重。如果用全查表的方式来做补偿,就算精度1℃也要一个80位的表格,对我的应用来说还是空间大了点。
有没有什么占用空间小的补偿办法?计算复杂点可以接受,对实时性的要求不是很高。32M主频的C51能在0.03S内完成即可
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
xivisi
1楼-- · 2020-01-22 02:39
分断查表,斜率变化厉害的区域 数据点多一些, 斜率变化小的段少一些点
bigeblis
2楼-- · 2020-01-22 02:49
 精彩回答 2  元偷偷看……
xivisi
3楼-- · 2020-01-22 06:32
难道你要根据公式实时计算? 带指数的啊
xnliuxiwen
4楼-- · 2020-01-22 12:22
都用C编写了,80个字节不多吧. 0.1的精度对热敏电阻是不是过份要求了?
dengxiaofeng
5楼-- · 2020-01-22 15:49
10bit ADC 范围 0-1023  测温范围 0-80°  精度 0.1° 分辨率  80/0.1==800  可以说几乎做不到 精度0.1  
因为 ADC 还有什么 失码,积分非线性误差  什么的   
还有你的基准 稳不稳  温漂之类的问题
就算你得到了稳定的数据输出,校准平台也是一个相当麻烦的事情?
测温到0.1 不是连一个表都舍不得建立吧,我觉得现在的单片机 flash 超级大 如果可以用表格换精度 我愿意建立很多的表格 因为单片机就善于查表 不善于计算

---------------------------------------------------------------------------------------------
我用16bit ADC 处理了基准,分压电阻是 千分之一精度 10ppm 温漂,每个热敏电阻每隔10°校准(0.1°恒温槽 + 标准温度计)
数据然后中间数据计算,得到了 0.2°左右的精度
---------------------------------------------------------------------------------------------
楼主现在的硬件 10bitADC 不建表  只计算 就算你有比较好的补偿 也会花费比建表更多的精力
要线性的 我记得南京有一家公司 造线性热敏电阻 楼主可以考虑一下!
楼主先把精度搞到 0.3 或者 0.5 左右 就明白了

----------------------------------------------------------------------------------------------
bigeblis
6楼-- · 2020-01-22 16:13
用XLS做了一个热敏电阻与温度的对照表,发现我的要求太高了
就算建表以10bit的分辨率最理想状态下要做0.1精度都不可能,用指数取算太慢,而且空间占用未必小
最后还是实际点,分辨率1℃,查表。直接略去低二位数据按8bitADC来查,略去不需要的范围,需要建的表不是很大

一周热门 更多>