Filterung Fernbedienung
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)
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
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:
Im oberen Scope ist das Ergebnis des gewichteten rekursiven Mittelwertfilters, im mittleren Scope das Ergebnis des Simple Kalman, jeweils mit der oberen und unteren Grenze des Arbeitsbereichs und das gestörte Signal und in unteren Scope ist das gestörte Signal allein dargestellt.
Beide Filter liefern nicht das gewünschte Ergebnis.
Ableitung
if-Bedingung
Autor: Julia Müller (Diskussion) 18:38, 6. Feb. 2014 (CET)