打印
[技术讨论]

温度加热时每隔5度显示更新一次不用数据表方式能做到吗?

[复制链接]
3273|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LKC134|  楼主 | 2021-11-5 17:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
请问各位大佬有做过温度在加热时每5度就刷新一次显示,到达目标值就固定,除非超出5度范围,有热电偶检测温度,若用数据表方式做则由于AD是10位,所以显示跳动大做不了(虽然做过多种方式AD滤波效果不理想),如显示用定时器做加减5度方式显示,那又如何与温度差不多同步呢?在此向各位大佬指点下。谢谢!

使用特权

评论回复
评论
LKC134 2021-11-5 22:08 回复TA
@tyw :AD值跳动大啊,做不了哦 
tyw 2021-11-5 20:58 回复TA
读待送显数的个位,等于5则刷新一次显示. 

相关帖子

沙发
LKC134|  楼主 | 2021-11-5 19:43 | 只看该作者
顶一下,没有大佬做过?还是太简单了?

使用特权

评论回复
板凳
R2D2| | 2021-11-5 22:22 | 只看该作者
不知道你什么意思,似乎是你不会查表插值,导致最后算出来的数据变化剧烈???
那就多项式拟合吧。

使用特权

评论回复
地板
LKC134|  楼主 | 2021-11-6 08:01 | 只看该作者
R2D2 发表于 2021-11-5 22:22
不知道你什么意思,似乎是你不会查表插值,导致最后算出来的数据变化剧烈???
那就多项式拟合吧。

多谢你的资料,因为这热电偶是山寨货没有数据表的,自己测数据数据数字很跳根本测不准。

使用特权

评论回复
5
LKC134|  楼主 | 2021-11-6 08:35 | 只看该作者
部分程序:
uchar code table[]={数码管段码}
uint Sample;ADC采样值
int temp=0;//温度值
uint code T_Value[400]={400,..............................................................,
                                    ....................................................................1};
/************温度转换************/
void Temp_ack(void)
{
  uint L,H,M;
  uchar i;
L=0;//对分查表最小值25度
H=400;//对分查表最大值400
for(i=0;i=5;i++)
{
M=(L+H)/2;
if(Sample<=T_Value[M])
L=M-1;
else
H=M+1;
}
if(Sample==T_Value[L])
{
  temp=L-5;//索引差值
}
else
if(Sample=T_Value[H])
{
temp=H-5;
}
else
{
while(L<=H)
{
L++;
if(Sample<=T_Value[L]&&Sample>T_Value[L+1])
{
temp=L-5;
break;
}
}
}
//小数线性插补放大10倍小数就不用了
}

使用特权

评论回复
6
LKC134|  楼主 | 2021-11-6 08:41 | 只看该作者
测量温度范围(常温----200度)精度误差-/+5度,热电偶放大使用LM358放大150倍

使用特权

评论回复
7
一叶倾城wwq| | 2021-11-6 10:25 | 只看该作者
查表怎么可能查得准呢?除非做一个很大的数据表,把AD和对应温度数据记录下,换算成公式y=kx+b不就行了,再去判断上次温度值和当前温度值>=5再更新显示,这样应该就行吧,AD值跳变大,也不会10度和15度一样吧,不好算再把AD值右移丢掉两三位。

使用特权

评论回复
8
LKC134|  楼主 | 2021-11-6 10:36 | 只看该作者
以我的理解,这种显示连数据表都不用,他计算出来的值就是一个char型,带符号的那种,*5就是显示温度了,就是这种方式是如何做的?太深奥了

使用特权

评论回复
9
gx_huang| | 2021-11-6 10:40 | 只看该作者
10bit的ADC,我都可以做到温度分辨率0.1度了,不知道你想实现什么功能

使用特权

评论回复
10
cjseng| | 2021-11-6 14:39 | 只看该作者
LKC134 发表于 2021-11-6 08:41
测量温度范围(常温----200度)精度误差-/+5度,热电偶放大使用LM358放大150倍

用OP07做吧,LM358不靠谱,失调电压太大

使用特权

评论回复
11
LKC134|  楼主 | 2021-11-6 16:46 | 只看该作者
cjseng 发表于 2021-11-6 14:39
用OP07做吧,LM358不靠谱,失调电压太大

OP07 要双电压供电,而且电压最小要9V以上才能保证输出稳定,做这种产品要弄几种电压,这不是被人看笑话挨领导批评?况且产品要求温度精度不高,应该还有其它方式做的。

使用特权

评论回复
12
LKC134|  楼主 | 2021-11-6 16:48 | 只看该作者
温度在常温固定25度开始以5度刷新一次显示加热,到达目标值就固定不变。

使用特权

评论回复
13
cool_coder| | 2021-11-6 17:13 | 只看该作者
10 位ADC的分辨率不算高,如果跳动明显,应该检查模拟电路部分是不是有问题。分析过模拟信号中的噪声特征了吗?ADC的采样率是否能覆盖输入信号的全部频范围?

使用特权

评论回复
14
LKC134|  楼主 | 2021-11-6 17:26 | 只看该作者
cool_coder 发表于 2021-11-6 17:13
10 位ADC的分辨率不算高,如果跳动明显,应该检查模拟电路部分是不是有问题。分析过模拟信号中的噪声特征了 ...

测量放大输出到AD输入之间电压,波动不大在1.091-1.093V范围

使用特权

评论回复
评论
cool_coder 2021-11-7 14:31 回复TA
@LKC134 :如果这样测得的跳动量比AD转换的跳动小,就按前面说的先查查看吧 
LKC134 2021-11-7 12:49 回复TA
@cool_coder :是的,以你的评估是什么原因造成的? 
cool_coder 2021-11-7 11:00 回复TA
@LKC134 :所以,只能确定信号的均值跳动不太大吧? 
LKC134 2021-11-6 22:06 回复TA
@cool_coder :用万用表测的 
cool_coder 2021-11-6 19:14 回复TA
用什么工具测的? 
15
LKC134|  楼主 | 2021-11-6 17:35 | 只看该作者
如果不用数据表方式做,温度用一个变量值显示设定时器加减,当检测温度变化时隔3秒+5度刷新一次(25,30,35,40)这样显示,与感温数据基本同步,当降温时,同时设定时器隔3秒-5度刷新显示。

使用特权

评论回复
16
yanwuxu| | 2021-11-6 17:57 | 只看该作者
cjseng 发表于 2021-11-6 14:39
用OP07做吧,LM358不靠谱,失调电压太大

淘宝上那种20块钱的温控器里面都是358,我计量过几个,都还挺准

使用特权

评论回复
17
LKC134|  楼主 | 2021-11-6 18:49 | 只看该作者
我现在放弃精度要求,只做5度范围内的,或者不用数据表,温升显示与感温信号差不多同步也可以。问题是这方式 如何做到与感温差不多同步呢?

使用特权

评论回复
18
cjseng| | 2021-11-6 21:36 | 只看该作者
这是什么意思?

使用特权

评论回复
19
LKC134|  楼主 | 2021-11-6 21:43 | 只看该作者
cjseng 发表于 2021-11-6 21:36
这是什么意思?

是i<5;i++,打错了,源程序没错的

使用特权

评论回复
20
jrcsh| | 2021-11-7 00:41 | 只看该作者
if(adc-adc2>5 )  

if(adc-adc2<5)

adc2=adc   足够懒了把

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

339

帖子

6

粉丝