DR HACK

Davide Rosa Hack

itenes
104392
OggiOggi6
IeriIeri42
Questa settimanaQuesta settimana48
Questo MeseQuesto Mese957
TuttoTutto104392
Utenti 0
Visitatori 6

Filtro Kalman v.1

Molto spesso quando colleghiamo dei sensori alla nostra Arduino otteniamo dei segnali molto disturbati, grazie ai filtri possiamo pulire questi segnali.

Di seguito riporto una classe da inserire nei vostri sketch .


class FiltroKalman {
private :
  float Q;
  float R;
  float P;
  float X;
  float K;

  void update() {
    K = (P + Q) / (P + Q + R);
    P = R * K;
  }

public :
  void init(){
    Q = 0.00001;
    R = 0.01;
    P = 1.0;
    X = 0.0;
    K = 0.0;
  }

  float compute(float newAngle) {
    update();
    float r = X + (newAngle - X) * K;
    X = r;

    return r;
  }
}

FiltroKalman FK;

void setup() {
  pinMode(A0, INPUT);
  pinMode(PIN3, OUTPUT);
  FK.init();
}

void loop() {
  analogWrite(PIN3, map(FK.compute(analogRead(A0)), 0, 1023, 0, 255));
}

Grafico di esempio del filtro.

Nel grafico potete vedere in colore rosso un segnale sinusoidale con disturbi e di colore bianco il risultato del filtro.

E possiblile variare i parametri del grafico trascinando il mouse sulle barre sopra al grafico.

Your browser does not support the canvas tag.

Save
Cookies user prefences
We use cookies to ensure you to get the best experience on our website. If you decline the use of cookies, this website may not function as expected.
Accept all
Decline all
visit counter
visit counter
visit counter
visit counter
Accept
Decline