Moderadores: andre_luis, 51, guest2003, Renie
xultz escreveu:Por fim, implementar filtros em firmware (o recurso de tirar média é um filtro passa-baixa, ele é bem meia-boca mas é um filtro, colocando índices melhores pode dar melhor resultado)
Subtotal[15]=Subtotal[14];
Subtotal[14]=Subtotal[13];
Subtotal[13]=Subtotal[12];
...
...
Subtotal[0]=Novo_valor;
Media=(Subtotal[0]+Subtotal[1]+Subtotal[2]+ ... + Subtotal[15]) >>4 ;
u16_AccADC += NovoValorADC();
u8_NLeiturasADC++;
u16_MediaADC = (u16_AccADC / u8_NLeiturasADC);
u16_AccADC = 0;
u8_NLeiturasADC = 0;
// Kalman filter setup
// Baseado no vídeo do Youtube "Temperature Sensor Kalman Filtering on an Arduino Uno"
float X = 0.0;
float P = 1.0; // Predição da Covariancia
float kg = 1.0; // Kalman gain
// Defines for TMP36
#define Q 1e-8 // or 1e-9 -> Covariance
#define R 1.22e-5 // Variance
loop:
Mostra_temp(X) // Temperatura atual (X(t-1)).
P = P + Q; // Predição da covariância
kg = P/(P + R); // Kalman Gain
P = (1 - kg)*P; // Update covariance estimation
X = X + (kg*(LeituraAD - X)); // Update the state estimate.
end
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante