我目前使用以下函数来计算每个发生的温度读数的移动平均值200ms
。
uint16_t ntc_average(uint16_t adcdata)
{
static uint8_t first = 1;
static uint16_t t1,t2,t3,t4,t5;
if(first == 1)
{
first = 0;
t1 = t2 = t3 = t4 = t5 = adcdata;
}
t5 = t4;
t4 = t3;
t3 = t2;
t2 = t1;
t1 = adcdata;
adcdata = (t1+t2+t3+t4+t5)/5;
return(adcdata);
}
但是,5 个点是不够的,我可能需要更长的缓冲才能更平滑。例如,每 10-20 个读数一次或两次,该值可能会向上或向下下降一个点,我需要对其进行平滑处理。增加 tn 变量似乎很难看……我想我可能需要 t1-t50。
谁能建议C
我可以用来平滑温度读数的另一个功能?请注意,这些值是无符号整数而不是浮点数。