Otra forma de encontrar una señal de tipo promedio en tiempo real, y tomar lecturas periódicas, entonces considere una constante \ $ \ alpha \ $ tal que \ $ \ alpha \ $ < < 1.
Cuando inicie, configure la variable de salida, llámela y, al primer valor confiable que obtenga, o comience con cero (pero tomará más tiempo alcanzar un valor).
Cada vez que lea un valor, x, calcule \ $ y: = \ alpha | x | + (1- \ alpha) y \ $
Esto es equivalente a un rectificador de valor absoluto de precisión seguido de un filtro IIR (respuesta de impulso infinito) de tiempo discreto con constante de tiempo \ $ \ tau = \ frac {T_S} {\ alpha} \ $.
Por ejemplo, si su tiempo de muestra es 1msec y \ $ \ alpha \ $ = 0.001, tendrá un filtro de constante de 1 segundo.
Una cosa buena acerca de esto es que los requisitos de almacenamiento y cálculo son mínimos (lo que marca la diferencia en un entorno carente de recursos, como un PIC).
Por supuesto, también puede almacenar un montón de lecturas y hacer un filtro FIR (respuesta de impulso finito), y eso puede tener sentido en algunas situaciones. Una de las ventajas del filtro FIR es que no hay memoria del pasado después de que el número de lecturas que eligió haya expirado, por lo que si tiene un pico enorme, la resaca no es tan mala.