zjx_arm 发表于 2013-4-25 20:31:11

R-T表要用数组整个加入内存吗?内存不够啊(热敏电阻,AD)

事情是这样的,小弟买了一个热敏电阻传感器模块,然后用开发板上集成的片内AD模块进行转换,然后根绝电路图求出其对应的电阻值,然后到R-T表格去查找该电阻值所对应的温度,结果我发现R-T表上R跟T的对应关系并无规律可循啊,那怎么在程序中查找呢?难道要把整个表格的数据都弄成数组存在内存中?内存不够啊。。。都是float,要好几K呢。。。蛋疼啊!


bigeblis 发表于 2013-4-25 21:14:41

查表程序需要把表放入内存????
我都是直接放在程序空间里的

yunhuisong 发表于 2013-4-25 22:25:14

也可以根据你需要的温度范围,把R-T表转换成AD值存在Room里,一般就那些温度点,不可能做到小数点后精确的温度值。

myh_hh 发表于 2013-5-29 17:48:23

3楼说的是。ad 值放在rom中,查表使用。整数与小数分开做表,都用int变量。。。

yuyu87 发表于 2013-5-31 16:04:54

放在CODE代码空间,而不是DATA RAM空间

zhugean 发表于 2013-6-7 14:25:25

二分法
举个例子:
我的理解 顺序表(2、5、7、10、14、15、18、 23 、35、 41 、 52)阻值
找出12的位置
查4次,先和中间数15比,比15小
在和前半段中间数7比:比7大
只剩俩数了,和10比:比10大,
和14比:比14小
找到序号后查对应的温度表,然后再线性插值

lqsoft 发表于 2013-6-8 18:04:10

可以使用多项式拟合

365mcu 发表于 2013-4-25 20:31:12

本帖最后由 365mcu 于 2013-6-8 18:50 编辑

一般如果是-30~150的话那个表table={xx},其中num=180.默认table=-30度,以在数组中第0位为-30度的温度值(即查找到AD值在table中的位置值num就是该AD所对应温度值负偏移30),考虑到精确度可以扩大100倍。
实际温度值=num-30
必须查表,非线性变化曲线

youpeng 发表于 2013-6-9 21:25:15

表不大,就查表;
表很大,就想办法分段拟合。

xizi 发表于 2013-6-11 10:07:06

这帖子开的,都一个多月了。lz没动静了。

chencc8 发表于 2013-6-11 13:15:05

哈哈,如果真要保存在ram里的话 那就用曲线拟合吧
最小二乘法+高斯消元法 做2次或者3次方程的拟合,不过matlab貌似可以直接算矩阵的,我的上司就是那样弄的,但是我在gcc中测试到他算出来的系数精度不高 使用他的系数在某些点上算出来的误差甚至接近0.1%。
而直接用C语言根据算法流程写的函数算出来的2次方程系数是可以最大误差是可以达到10万分之X这个级别的,我不懂matlab,估计是他的设置不对吧~~

songshanxiaozi 发表于 2014-7-9 15:56:31

单片机的内存(我指的是RAM)都很小而ROM比较大。当然放在ROM中。
页: [1]
查看完整版本: R-T表要用数组整个加入内存吗?内存不够啊(热敏电阻,AD)