找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3350|回复: 15
打印 上一主题 下一主题
收起左侧

关于单片机AD值转换成温度温度除了查表法还有其他方法吗?

  [复制链接]
跳转到指定楼层
楼主
ID:609524 发表于 2021-8-9 11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问各位大佬,ad值转换成温度处了查表法,还有其他的方法好用吗,
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:959221 发表于 2021-8-9 12:05 | 只看该作者
查表最快了,也可以用公式计算,51加减法还能对付,但还不太适合浮点数计算,调用库,还占用大量时间.如果对结果运算时间没要求,也无所谓了

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:592807 发表于 2021-8-9 13:26 | 只看该作者
看单片机运算功能,如果运算功能OK,可以通过加减乘除快速得到结果,那就用运算,如果不能那就查表,以前的单片机运算能力差,老前辈自己算好了数据存储到单片机里,变成查表法,现在很多单片机都能进行多位数运算。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:451718 发表于 2021-8-9 13:34 | 只看该作者
直接用带转换的功能的芯片, 比如MAX6675
回复

使用道具 举报

5#
ID:959628 发表于 2021-8-9 14:35 | 只看该作者
可以用多个AD分段平均处理
回复

使用道具 举报

6#
ID:609524 发表于 2021-8-9 14:47 | 只看该作者
黄youhui 发表于 2021-8-9 13:26
看单片机运算功能,如果运算功能OK,可以通过加减乘除快速得到结果,那就用运算,如果不能那就查表,以前的 ...

大佬能给一个运算例程参考参考吗
回复

使用道具 举报

7#
ID:130230 发表于 2021-8-9 16:01 | 只看该作者
查表是最优处理方式。
回复

使用道具 举报

8#
ID:401564 发表于 2021-8-9 16:31 | 只看该作者
如果是传感器,就是直接取换算就可以了
如果是NTC,最好是查表,虽然也有公式,但查表是最实用也是最准确的,所以,NTC的供应商会在NTC的数据手册中附上温度对应的电阻值
至于运算速度,基本不用考虑,不管你是用整型还是浮点型,又或者是查表,最多也就一千多条指令,以STC的1T单片机为例,运算总时间不超过100uS,你都用单片机来采样NTC了,这100uS就不算是占用时间了
如果你觉得100uS的运算时间都还有点长,直接上FPGA,300MHZ时钟......
回复

使用道具 举报

9#
ID:161164 发表于 2021-8-9 16:33 | 只看该作者
杨天想 发表于 2021-8-9 14:47
大佬能给一个运算例程参考参考吗

就是计数啊~
如LM35:temp = (ADC/1024.0*5.0)/0.01;
如果是其它温度传感器如PT100,就要看数据手册有没有电压温度转换方程
如果没有就要从电压温度转换表入手
把转换表输入Excel 然后生成一个曲线方程再来运算
回复

使用道具 举报

10#
ID:883242 发表于 2021-8-9 16:59 | 只看该作者
问题是你的AD值是从哪里来的?我们都不是算命的。
回复

使用道具 举报

11#
ID:939710 发表于 2021-8-10 06:02 | 只看该作者
ntc用查表是因为本身并不是全量程线性的,所以用查表查到一个范围之后再进行线性转换是最精确的。
回复

使用道具 举报

12#
ID:609524 发表于 2021-8-10 09:04 | 只看该作者
Hephaestus 发表于 2021-8-9 16:59
问题是你的AD值是从哪里来的?我们都不是算命的。

adc转换过来的啊
回复

使用道具 举报

13#
ID:401564 发表于 2021-8-10 20:40 | 只看该作者
lishengaha 发表于 2021-8-10 06:02
ntc用查表是因为本身并不是全量程线性的,所以用查表查到一个范围之后再进行线性转换是最精确的。

查表本身就是为了精确,没有必要什么线性计算的
按大多NTC给的电阻温度对应数据,查表误差也就是1摄氏度而已,而且,NTC两个温度之间对应的电阻值本身就是有交叉的,并不是固定不变有,进行纯线性计算,精确到0.1摄氏度,那只不过是感觉上的精度高了而已NTC的精度本身就不可能多高,1%的精度,如果温度是200摄氏度,那么误差就是正负2摄氏度了
回复

使用道具 举报

14#
ID:213173 发表于 2021-8-10 20:57 | 只看该作者

如果温度传感器特性在此设备的测量范围是线性变化当然用公式计算方式方便,否则用查表方式更好。
回复

使用道具 举报

15#
ID:609524 发表于 2021-8-11 09:47 | 只看该作者
wulin 发表于 2021-8-10 20:57
如果温度传感器特性在此设备的测量范围是线性变化当然用公式计算方式方便,否则用查表方式更好。

我就是闲查表麻烦了点,问题已经解决了我用的是分段法,效果还行,勉强可以用
回复

使用道具 举报

16#
ID:367934 发表于 2021-8-11 11:51 | 只看该作者
查表跟计算的目的是一样的,不一样的是过程,查表需要把整张表存下来,代码量相对比较多。过程中能学到的只有查表的算法。要是赶时间用查表的方式比较快实现。
使用公式可以学到的东西比较多,基本上都是理论方面的东西。
计算公式就是:
RT=R*EXP(B*(1/T1-1/T2))
RT:就是通过ADC转换得来的热敏电阻的当时阻值:
计算公式就是:Vp=Vin*R2/(R1+R2)
R:热敏电阻的标称值,单位欧
B:热敏电阻的系数
T2:(273.15+25)(绝对温度+摄氏度)
T1:就是实际测量的温度
所以
T1=1/(ln(RT/R)/B+1/T2)

float Rt;
float temp;
float Ka= 273.15;
float T2=(273.15+25.0);  //T2
Rt =getNtcRt(adc,n);          //热敏电阻当前阻值
temp = Rt/Rp;
temp=log(temp);   //ln(Rt/Rp)
temp/=Bx;         //ln(Rt/Rp)/B
temp+=(1/T2);
temp = 1/(temp);
temp-=Ka;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表