DR HACK

itafsqarhyazeubebgcazh-CNzh-TWhrcsdanlenettlfifrglkadeelhtiwhihuisidgajakolvltmkmsmtnofaplptrorusrskslesswsvthtrukurvicyyi

Filtro Complementare 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 FiltroComplementare {
private :
  float tau;
  float a;
  float x_angleC;

public :
  void init(){
    tau=0.075;
    a=0.0;
    x_angleC=0.0;
  }

  float compute(float newAngle, float looptime) {
    float Rate=0.0;
    float dtC = looptime/1000.0;
    a=tau/(tau+dtC);
    x_angleC= a* (x_angleC + Rate * dtC) + (1-a) * (newAngle);
    return x_angleC;
  }
}

FiltroComplementare FC;
float loop_time=1.0;

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

void loop() {
  analogWrite(PIN3, map(FC.compute(analogRead(A0), loop_time), 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.

Notare come la variazione della variabile "loop_time" influenza 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.

Aggiungi commento


Codice di sicurezza
Aggiorna

We use cookies to improve our website and your experience when using it. Cookies used for the essential operation of the site have already been set. To find out more about the cookies we use and how to delete them, see our privacy policy.

I accept cookies from this site.

EU Cookie Directive Module Information