bigeblis 发表于 2011-8-28 22:51:41

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

硬件电路结构已经固定不可修改,就是电源经过10K电阻与热敏电阻到地,10位ADC对热敏电阻上的电压进行取样。要求能测量0~80℃范围,精度最好0.1℃
我计算了B值3435时,0~80℃,每隔5℃的测量电压与转换值列表,发现非线性很严重。如果用全查表的方式来做补偿,就算精度1℃也要一个80位的表格,对我的应用来说还是空间大了点。
有没有什么占用空间小的补偿办法?计算复杂点可以接受,对实时性的要求不是很高。32M主频的C51能在0.03S内完成即可

xivisi 发表于 2011-8-28 22:55:35

分断查表,斜率变化厉害的区域 数据点多一些, 斜率变化小的段少一些点

bigeblis 发表于 2011-8-28 23:08:26

还是依靠查表?有没有格式可以直接计算啊?

xivisi 发表于 2011-8-28 23:11:51

难道你要根据公式实时计算? 带指数的啊

xnliuxiwen 发表于 2011-8-28 23:41:22

都用C编写了,80个字节不多吧. 0.1的精度对热敏电阻是不是过份要求了?

dengxiaofeng 发表于 2011-8-29 08:50:34

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 发表于 2011-8-29 11:19:47

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

eduhf_123 发表于 2011-8-29 12:38:45

热敏电阻背上再背一个电阻,可以把曲线的线性度修正得好一点,这个电阻的取值应该在5到15K之间,可以自己试,也可以在Excel里用T表来算。

bigeblis 发表于 2011-8-29 22:44:57

补偿电阻我算了,B值3435的10K电阻小于串一个2.47K的。加进去计算,如果ADC分辨率8bit则效果不明显
反正已经决定温度分辨率1℃了,补偿与否不是很重要

小乖 发表于 2014-12-20 12:07:29

好多大神,目前我也遇到类似的问题了,遥控器的摇杆非线性,老板要我做线性补偿,不知怎么搞啊
页: [1]
查看完整版本: 请问如何用C51做热敏电阻的非线性补偿?