0
以下の方法を使用して、ダストセンサーからデータを取得しています。しかし、私がダストセンサーから得たデータはまったく安定していないようです。非常に短期間で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,
私が参照できるアルゴリズムはありますか? –
平均的には、最後の10程度の値をバッファ(配列)に追加して平均を計算するだけです。 ローパスの場合:arduinoの既存のローパスフィルタコードを見つけようとする可能性があります –
私のコメントがあなたの問題解決に役立った場合、それを答えとしてマークしてください! –