Filterung Fernbedienung

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Das Signal der Fernbedienung ist sehr stark von Störungen beeinflusst. Die Störungen führen dazu, dass das Signal außerhalb des Arbeitsbereichs liegt und somit die blaue LED angeschaltet wird, d.h. das der RC-Modus angezeigt wird. ( weitere Erläuterungen siehe Bibliothek Sensoren/Aktoren online Block SenFernb-Fernbedienung)

Störungen

Daher sollte das Signal so gefiltert werden, dass die Störungen vermieden werden. Um zu prüfen, welcher Filter der geeignetste ist, wurden für das Signal SenRti_PwmBreiteGas_f64 mehrere Filter getestet. Es wurden ein einfacher Kalman-Filter, ein rekursiver Mittelwertfilter, die Filterung über die Ableitung und die Filterung über eine if-Bedingung betrachtet. Alle Modelle befinden sich unter ...\SVN_Unterlagen\Software\Filterung_PWM-Signal_Fernbedienung

Um das Signal in den Modellen nachzubilden wird der Block Signal Builder verwendet. Das gestörte Signal wird in einer Excel-Datei gespeichert und dann im Signal Builder geladen.

Rekursiver Mittelwert und Simple Kalman

Simple Kalman und Rekursiver Mittwelwert

Beim gewichteten rekursiven Mittelwert-Filter, bzw. Tiefpassfilter, wird der Mittelwert des vorherigen Werts und der aktuelle Wert berücksichtigt. Beide Werte werden über einen Gewichtungsfaktor Alpha gewichtet, d.h. es wird ihnen eine Bedeutung zugewiesen (mehr Vertrauen in Messwert oder Mittelwert). Die Funktion stammt aus der Vorlesung Multisensorsysteme WS2013/14 von Herrn Prof. Dr. Ing. Ulrich Schneider:

function PWM_Breite_Gas_filt_RM = RekursiverMittelwert(x)
%
%
persistent fVorherigeMittelwert k 
persistent bErsterDurchlauf  

%% Initalisierung der Variablen bei ertsen Durchlauf
 if isempty(bErsterDurchlauf)
  k = 1;
  fVorherigeMittelwert = 0.0975;
  
  bErsterDurchlauf = 1;  
end


alpha = (k - 1) / k;
PWM_Breite_Gas_filt_RM   = alpha*fVorherigeMittelwert + (1 - alpha)*x;

fVorherigeMittelwert = PWM_Breite_Gas_filt_RM;
k       = k + 1;

Der Kalman-Filter ist deutlich komplexer als der gewichtete, rekursive Mittelwertfilter und kann mehrdimensionale und nicht lineare Systeme filtern. Für einfache eindimensionale Anwendungen ist der Filter dem gewichteten, rekursiven Mittelwertfilter sehr ähnlich. Wesentlicher Unterschied ist, dass beim Mittelwertfilter ein fester Gewichtungsfaktor angenommen wird und beim Kalman-Filter die Gewichtung zwischen Vorhersage und wahrem Wert dynamisch angepasst wird. Die Funktion stammt wiederum aus der Vorlesung Multisensorsysteme:

function PWM_Breite_Gas_filt = SimpleKalman(z)
%
%
persistent A C Q R 
persistent x P
persistent firstRun


if isempty(firstRun)
  %% einmalige Initialisierung
  A = 1; % Systemmatrix der linearen Zustandsraumdarstellung
  C = 1; % Ausgangsmatrix der linearen Zustandsraumdarstellung
  
  Q = 0.01; % Kovarianzmatrix des Systemrauschens
  R = 10; % Kovarianzmatrix des Messrauschens

  x = 0.0975; % in V aktueller Wert
  P = 5; % Kovarianzmatrix des Schätzfehlers
  
  firstRun = 1;  
end

%% Prädiktionsschritt  
% 1. Vorhersage des Zustandsvektors und der Kovarianz
xp = A*x;            % Prädiktion der Schätzung
Pp = A*P*A' + Q;     % Prädiktion der Fehlerkovarianz

%% 2. Berechnung der Kalman Verstärkung K
K = Pp*C'*inv(C*Pp*C' + R);

%% 3. Korrektur der Zustandsschätzung
x = xp + K*(z - C*xp);

%% 4. Korrektur der Kovarianzschätzung
P = Pp - K*C*Pp;

%% Ausgang ist die Zustandsschätzung
PWM_Breite_Gas_filt = x;

Die Ergebnisse der beiden Filter wurden in einem Scope dargestellt und sehen wie folgt aus:

Simple Kalman und Rekursiver Mittwelwert Scope


Autor: Julia Müller (Diskussion) 17:47, 6. Feb. 2014 (CET)