从灰尘传感器获取不稳定的数据



我使用以下方法从灰尘传感器获取数据。但是,我从灰尘传感器获得的数据似乎根本不稳定。它可以在很短的时间内从 400 跃升至 5000。我做错了什么吗?

static void dsm501a_timeout_handler_array( void* arg )
{
  dsm501a_context_t *_context = arg;
  _context->ratio = (float)_context->all_low_time /sampletime_ms * 100;
  _context->value =1.1*pow((_context->ratio),3)-3.8*pow((_context->ratio),2)+520*(_context->ratio)+0.62;
  _context->all_low_time = 0;
  // dsm501a_log("                 ratio %f  ,_context->value %f n",_context->ratio,_context->value);
}

_context->all_low_time
_context->value =1.1*pow((_context->ratio),3)-3.8*pow((_context-  >ratio),2)+520*(_context->ratio)+0.62;

pm25val = value * pm25coef *10;  // 10 to transform 0.01 cf to 0.1 ft
251, 74 , 83 , 79 , 88 , 59 ,59,74,

如果你在测量中得到尖峰,你可以尝试实现一个简单的低通滤波器来消除它们。或者只是创建最后 X 值的某种平均值以使其更稳定。

最新更新