Тем не менее, кроме линзы, алгоритм влияет. Нужно выделять изменение сигнала, в обе стороны.
Я делаю это вот так:
Код
u16 dif_pir;
u16 difp;
u16 difm;
void AnalyseMeasurement(void)
{ u8 i;
difp=0;
difm=0;
for (i=0; i<SIZE-1; i++)
{ if (pir_buf[i]<pir_buf[i+1])
difp+=(pir_buf[i+1]-pir_buf[i])/2;
else
difm+=(pir_buf[i]-pir_buf[i+1])/2;
}
dif_pir=(difp>>3)+(difm>>3);
}
Массив результатов измерений на 15 секунд, один отсчет помещается каждые 100 мс.
При таком алгоритме чувствительность на два порядка лучше сравнения с порогом.
Уходя, оставьте свет...