https://www.eefocus.com/luo_xinli/blog/15-04/311166_04504.html 单位同事在使用NTC传感器测量温度,发现在电源收到冲击时设备通过NTC传感器测量的温度值会发生跳动。在EMC试验时4KV 2.5KHz试验时,温度会出现正负5°的抖动。这显然是电源输入的干扰引起的。因为我们公司的产品主要用于吸干机的控制,在吸干机中温度变化比较缓慢,如果一秒出现3°的偏差那么一定是一个干扰。所以必须避开这些干扰,因为在某些关键的温度点,会引起致冷分机的打开。温度回落后又会导致风机关闭。这样会引起系统震荡,缩短风机寿命。 .JPG) 解决这个问题,可以在电源的入口加装电源滤波器,在传感器电路添加低通滤波。但是这个做会使硬件成本提高,产品的体积和功耗都增大。所以在低成本的产品中实在没有引入的条件。 有位同事提出了一个简单方法,多次采样取中间值,可以避免温度值的抖动。具体解决办法就是采样五次,然后从小到大排列,取中间值,也就是第三个。在实际试验中温度值确实非常稳定,避免了干扰。 我们可以看看代码实现,使用简单的冒泡排序: if( countFilter >=5) //countFilter 为采样计数器,采样5次以后处理
{
bubbleSort( Tarrary, 5); //冒泡排序,小的在前,大的在后
TEMPTUER_IN= Tarrary[2]; //将第三个值取值赋给TEMPTUER_IN
countFilter=0; //countFilter计数器清零
}
冒泡排序 void bubbleSort( int sort[], unsigned char len )
{
char i,j;
int temp;
len -= 2;
for( i =len; i>=0; i--)
{
for( j =0; j<=i; j++)
{
if( sort[j+1] < sort[j])
{
temp = sort[j];
sort[j]=sort[j+1];
sort[j+1]=temp;
}
}
}
}
|