【问题标题】:Getting unstable data from the dust sensor从灰尘传感器获取不稳定的数据
【发布时间】:2016-04-26 13:41:49
【问题描述】:

我正在使用以下方法从灰尘传感器获取数据。但是,我从灰尘传感器获得的数据似乎根本不稳定。它可以在很短的时间内从 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,

【问题讨论】:

    标签: android arduino sensors


    【解决方案1】:

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

    【讨论】:

    • 有什么算法可以参考吗?
    • 对于平均值:您可以将最后 10 个左右的值添加到缓冲区(数组)中,然后计算平均值。对于低通:您可以尝试为 arduino 找到一个已经存在的低通滤波器代码
    • 如果我的评论帮助您解决了您的问题,请将其标记为答案!
    猜你喜欢
    • 2018-12-06
    • 2021-05-15
    • 2013-12-24
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    相关资源
    最近更新 更多