我从一位已辞职的同事手里接手了一个项目,其中有一个ad温度转换的程序,这是其中的3句话:
temp =22.0+(((float) atemp / 409.6-0.56)/0.0019) ;
temp0=(float)0.001*temp+0.999*temp_bak;
temp_bak=temp0;
atemp是ad转换后的二进制数值,temp_bak的初值是24.0,temp0是最后的温度输出值
现在有2个问题搞不懂:
1)temp0=(float)0.001*temp+0.999*temp_bak;
temp_bak=temp0;
上面这2句话据其他同事说是起低通滤波的作用,请问是这样吗?
2)我在软件仿真时,把atemp设置成了一个常数,按我的想法,既然ad输出是一个常 数,那么temp0就也应该是一个常数,但我发现temp0却一直在变化,这样的话输出数值就不能反映实际温度值了,请问这个程序有问题吗?