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找到已有的低通濾波器代碼 –
如果我的評論幫助您解決了問題,請將其標記爲答案! –