OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10332|回复: 5

关于NTC温度采集的一个问题,请教下各位!

[复制链接]

69

主题

289

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1294
金钱
1294
注册时间
2013-3-14
在线时间
62 小时
发表于 2014-12-6 20:23:33 | 显示全部楼层 |阅读模式
5金钱
最近在做一个智能电饭锅的程序,由于具有炒菜功能,所以需要处理的温度范围要求比较宽,需要从0~230度,AD是12位的,但是用12位的处理这个温度范围,会导致有的区间出现同一个AD值对应不同温度的情况。所以在这里想问问各位,在不增加AD位数的情况下,怎么来处理同一个AD值对应不同温度的情况,采用的是查表法,表里面存的是各个温度对应的AD值。假如出现500这个AD值对应51~55度,即51~55度对应的AD值都是500,这个时候应该怎么来处理温度显示问题?各位有懂的么,希望指教下!

最佳答案

查看完整内容[请看2#楼]

首先,12位AD的分辨率对应0-230的温度,应该说还是能分的比较细的。线性情况下,1度都能分得17个刻度值。其次,NTC做温度,要求就不能太高,做电饭锅,温度准确到5度,我估计也是可接受的。再次,虽然NTC不是很线性,但在较大温差变化时候,NTC的变化应该是有的,不会出现是同一个值。当然,NTC这类元件,应该存在上升和下降值的不一样,比如温度上升时候,50度是500,下降时候,50度可能是550,那么就需要建立两套数据表,或者做 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2014-11-26
在线时间
0 小时
发表于 2014-12-6 20:23:34 | 显示全部楼层
首先,12位AD的分辨率对应0-230的温度,应该说还是能分的比较细的。线性情况下,1度都能分得17个刻度值。其次,NTC做温度,要求就不能太高,做电饭锅,温度准确到5度,我估计也是可接受的。再次,虽然NTC不是很线性,但在较大温差变化时候,NTC的变化应该是有的,不会出现是同一个值。当然,NTC这类元件,应该存在上升和下降值的不一样,比如温度上升时候,50度是500,下降时候,50度可能是550,那么就需要建立两套数据表,或者做数据修正。
回复

使用道具 举报

55

主题

1231

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2624
金钱
2624
注册时间
2014-2-13
在线时间
514 小时
发表于 2014-12-6 20:47:43 | 显示全部楼层
NTC不是线性数据,所以用查表法
技术交流,Sell 中颖单片机,欢迎私信骚扰
回复

使用道具 举报

69

主题

289

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1294
金钱
1294
注册时间
2013-3-14
在线时间
62 小时
 楼主| 发表于 2014-12-6 20:54:10 | 显示全部楼层
回复【2楼】黑夜之狼:
---------------------------------
我知道用查表法啊,我问的是好几个温度值对应同一个AD值时,这个时候查表该怎么处理
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2014-12-11
在线时间
0 小时
发表于 2014-12-11 21:40:20 | 显示全部楼层
我從網路上得到的經驗是 選擇合適的ntc 能夠承受的ntc, 從0度到230 建立表格 每一度都有阻值對應,再使用 差分法,得到小數點的值!!
參考看看!!  我使用 10K NTC 讀取0~100度


unsigned const int tempresist[]={28709,27421,26200,25042,23943,22899,21908, 20967, 20072, 19221, 18412, 17642, 16910,16213, 15549,14916,14314,13740,13192,12670,12172, 11696,11243, 10809, 10395,10000,9622,9261, 8916, 8585, 8269, 7967,7677,7400,7135, 
6880, 6637, 6403, 6179, 5964, 5758, 5561, 5371, 5189, 5014, 4846, 4685, 4530, 4381, 4238, 4101, 3968, 3841, 3719, 
3601, 3487, 3378, 3273, 3172, 3074, 2980, 2890, 2803, 2718, 2637, 2559, 2483, 2411, 2340, 2272, 2207, 2144, 2082, 2023, 1966, 1911, 1858, 1807, 1757, 1709, 1662, 1617, 1573, 1531, 1491, 1451, 1413, 
1376, 1340, 1305, 1271, 1239, 1207, 1177, 1147, 1118, 1090, 1063,1037, 1011,987,963,939,917,895,874,853,833,813,794,776,758
};//b值3435 25度 10k NTC電阻=((1024count/NTCcount)-1)/10k


unsigned char Compare_tempres(unsigned int TR)//電阻查表成為溫度
{
 unsigned char cmp_cnt;
 cmp_cnt =0;
 while (TR<tempresist[cmp_cnt])
 {
  cmp_cnt++;
  if (cmp_cnt>140)
  break;
 }
 return cmp_cnt;
}

void ADC_Temperature(void)
{
NTCvalue=NTCresist();//溫度AD值轉換成溫度電阻
Degree_C = Compare_tempres(NTCvalue);//溫度電阻查表成溫度值
Degree_0C= ((tempresist[Degree_C-1]-NTCvalue)*10)/(tempresist[Degree_C-1]-tempresist[Degree_C]);//差分成小數
}
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-12-18
在线时间
0 小时
发表于 2014-12-18 08:35:01 | 显示全部楼层
4楼回复的办法很不错,先查表,再差分
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-9-30 06:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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