Estoy usando cuatro de estas celdas de carga conectadas en paralelo y conectadas a un ADS1232 . En general, el dispositivo (escala) está funcionando bien, pero estoy viendo una señal extraña durante unos minutos después de encender la escala. Tengo el ADS1232 conectado en este esquema:
Tengo el ADS1232 conectado a la salida de 10 sps que van a una MCU que realiza una media móvil de más de 32 muestras (ventana de 3.2 s). Cuando comienzo la escala y grabo la salida de este filtro, veo la siguiente señal (línea morada):
He visto la misma señal varias veces. Parece que desaparece después de aparecer una vez en el inicio.
¿Alguien tiene alguna idea sobre qué podría estar causando esta señal?
Editar: Aquí está el código para el filtro de promedio móvil (N = 32 en este caso). El método Input
recibe una nueva muestra cada 0.1 s.
**
template<size_t N>
class MovingAverageFilter {
double samples_[N];
size_t write_;
double sum_;
double average_;
public:
/*initialize a filter with the necessary parameters*/
MovingAverageFilter(double init = 0)
: samples_{0}, write_(0), sum_(init * N), average_(init) {
Reset(init);
}
/*clear buffers*/
void Reset(double init = 0) {
for (auto &i : samples_) {
i = init;
}
sum_ = init * N;
average_ = init;
}
/*input a new value*/
double Input(double input) {
auto oldest = samples_[write_];
sum_ -= oldest;
sum_ += input;
samples_[write_] = input;
write_++;
write_ %= N;
average_ = sum_ / N;
return average_;
}
/*get the last output*/
double LastOutput() const {
return average_;
}
/*get the last input*/
double LastInput() const {
auto index = (write_ - 1) % N;
return samples_[index];
}
};
**