Embedded-Systeme & Mikrocontroller Kapazitive Sensorik verbessern


Modell des Kalman-Filters

18.10.2012

Kapazitive Berührungsschnittstellen werden für Tasten und Slider bei der Eingabesteuerung immer beliebter. Deren Leistung unter wechselnden Umgebungsbedingungen ist entscheidend für die korrekte Funktion im Endgerät. Software-Algorithmen verarbeiten dabei Sensordaten, um verschiedene Störungen zu unterdrücken, die die Funktion beeinträchtigen würden. Eine spezielle adaptive Filtertechnik verbessert die Leistungsfähigkeit des Sensors unter wechselnden Bedingungen.

Das dynamische Verhalten des Ausgangssignals am Berührungssensor ist die Summe eines Touch-Deltas (Touch-Delta) und der Basislinie (Baseline). Zusammen bilden diese beiden Zustandsgrößen den Ausgang des kapazitiven Sensorblocks in der MCU. Der Kalman-Filter stellt einen optimierten Filter für Sensordaten dar. Diese Filtermethode bietet Vorteile gegenüber einfachen Tiefpassfiltern, die zu verzögerten Reaktionszeiten führen können. Ein Tiefpassfilter führt auch kein Baseline-Tracking durch - dies muss separat erfolgen. Der Kalman-Filter überwacht beide Zustandsgrößen, basierend auf dem dynamischen Modell des Touch-Deltas und der Baseline. Das Ausgangssignal für die endgültige Position auf dem Slider verbessert sich durch die weitere Filterung mit Anti-Jitter- und Anti-Glitch-Algorithmen, um die Daten in störbehafteten Umgebungen nicht zu verfälschen. Der Kalman-Filter ist ein optimiertes Schätzverfahren zur Analyse des Verhaltens dynamischer Systeme mit störbehafteten Messdaten. Der Filter schätzt und sagt das Verhalten des nächsten Ausgangs auf der Grundlage eines Modells voraus und verwendet dann den Messwert, um zu versuchen, ob dieser korrekt ist. Im Wesentlichen handelt es sich dabei um mathematische Gleichungen, die eine Vorhersage-Korrektur-Abschätzung enthalten. Diese minimiert die geschätzte Fehlerkovarianz sobald mutmaßliche Bedingungen erfüllt sind. Der Filter wurde ausgiebig für Navigationsanwendungen erforscht, kann aber auch für viele andere Arten von Problemen verwendet werden. Der Kalman-Filter adressiert das allgemeine Problem, den Zustand eines diskreten, zeitgesteuerten Prozesses abzuschätzen, der über eine lineare stochastische Differenzgleichung geregelt wird. Die Prozess- und Messungs-Rauschkovarianz ändert sich und wird mit jeder Messung aktualisiert.Das Systemmodell hat die Form:x(k) = [�?] · x(k-1) (Gleichung 1)Die Matrix [�?] enthält die Koeffizienten für die beiden Zustandsgrößen des Touch-Deltas und der Baseline. Die Zustandsvariablen sind die Touch-Delta-Kapazität x(k)1und die Baseline-Kapazität x(k)2. Das Systemmodell kann aus folgender Ableitung entnommen werden: dx= f(x)dtDie Dynamik der Touch-Delta-Kapazität x(k)1wird als Filter erster Ordnung betrachtet: c ·dx1+ kx1=oder �?dx1+ x1 =(Gleichung 2)dt dtDarin ist �? die Zeitkonstante erster Ordnung. Ersetzt man dx durch die diskrete Form, wobei �? die Abtastrate ist, gehtdtdie Gleichung in das Format des in Gleichung 2 aufgeführten Systemmodells über.Die folgende Gleichung veranschaulicht die Herleitung der ersten Zustandsgröße in das Systemmodell-Format: [x(k)1- x (k - 1)1]�?T + x (k)1=�?x(k)1=[�? + T ]· x (k - 1)1(Gleichung 3)Als nächstes wird die Baseline-Kapazität x(k)2berücksichtigt. Deren Dynamik zeigt keine �?nderungen, der Filter kann nur die Baseline über die Störungskovarianz verschieben. Gleichung 4 zeigt die Herleitung der zweiten Zustandsgröße in das Systemmodell-Formatdx2= f(x)dt[x(k)2- x(k - 1)2]T =(Gleichung 4)x(k)2= x(k - 1)2(�?)Damit wird die Filtermatrix [�?]zu : [�?] =�? + Tund das Prozessmodell zu01[�?][xk1]=�? + T[x ([k - 1)]1]xk20 1x ([k - 1)]2(Gleichung 5)Das Messausgangsmodell ist einfach die Summe aus xk1+ xk2, was dem Touch-Delta und der Baseline entspricht. Z(k) = D (k) X (k)[1][x(k)1](Gleichung 6)Z(k) =1x([k)]2Abbildung 1 hilft dabei, die Vorhersage-Korrektur-Aktualisierung und den Zustandsfluss im Filter zu verstehen. Es beschreibt, welche Gleichungen verwendet und aktualisiert werden. Diese Sequenz wird für jeden Kanal durchgeführt, der als Taster im Slider verwendet wird.

Gleichungen für den Kalman-Filter

Im Folgenden werden die Gleichungen für den Kalman-Filter näher beschrieben:PREDICT: Time Update

1. Vorhersage der nächsten Zustandsgrößen: Xprek = �? · Xk 2. Vorhersage der nächsten Fehlerkovarianzmatrix: Ck ist die Kovarianzmatrix des Schätzfehlers. Cprek ist der vorhergesagte Wert. W ist die Modell-Fehlerkovarianz. Cprek = �? · Ck · �? + W

CORRECT: Measurement Update

1. Berechnung der Kalman-Verstärkung: K = Cprek · Dk ( ´) Dk · Cprek · Dk´ + Q 2. Aktualisierung der Schätzung mit der Messung Zk und Verwendung von K, um eine aktualisierte Schätzung zu erhalten: Xk 1 = Xprek + K (Zk - Dk · Xprek) 3. Aktualisierung der Fehlerkovarianzmatrix: Ck = Cprek - K · Dk · Cprek 4. Aktualisierung der Zustandsvariable: Xk = Xk_ 1

Zuerst muss eine Schätzung vertrauenswürdiger Werte der Fehlerkovarianzmatrix Ck und Xk erfolgen. Auf dieser Vertrauensebene sorgt ein kleinerer Wert für weniger Varianz. Die Modell-Störungskovarianzmatrix (W) ist für die Feineinstellung des Filters von Bedeutung. Werden diese Werte nicht korrekt eingestellt, ändert sich das Verhalten des Filters erheblich. Die Werte beeinflussen die Art, wie schnell der Filter auf Störungen der Zustandsgrößen reagiert. Für das Touch-Delta ist ein hoher Wert gefordert, damit dieses entsprechend schnell reagiert. Für die Baseline ist nur ein sehr kleiner Wert erforderlich, da davon ausgegangen wird, dass der Wert eher stabil und konstant bleibt. Befindet sich plötzlich Wasser auf dem Sensor, kann dies die Baseline ändern. Ist dann der Störungswert für die Baseline zu niedrig, ist der Filter nicht imstande, die schnelle �?nderung auszugleichen. Hier ist etwas Know-how gefordert, um solche Szenarien zu erfassen und die Kovarianzwerte auf Basis der gemessenen Bedingungen zu aktualisieren. Der Ausgang des Kalman-Filters ist Xk für jeden Sensor innerhalb des Sliders. Die Touch-Delta-Werte von Xk werden dann an den Centroid-Algorithmus übergeben, um die Position entlang des Sliders zu verfolgen.

Der Centroid-Algorithmus

Der Centroid-Algorithmus dient zur Berechnung der Position entlang des Sliders. Die gefilterten Touch-Delta-Daten xk1werden an den Centroid-Algorithmus übergeben. Dieser skaliert entsprechend des erfassten Touch-Deltas. Die Centroid-Gleichung für einen Slider mit drei Tasten lautet wie folgt:Centroid =(x1 · bin1 + x2 · bin2 + x3 · bin3 )(Gleichung 7)x1 + x2 + x3In dieser Gleichung stellen x1, x2 und x3 die Touch-Delta-Werte für die Kanäle 1, 2 und 3 dar; bin1, bin2 und bin3 sind Skalierungskoeffizienten. Ist die Summe der Touch-Deltas aller Tasten des Sliders kleiner als der vorgegebene Schwellenwert, hält der Algorithmus den Centroid auf Null. Anderenfalls wird der Centroid-Ausgang berechnet. Der Schwellenwert wird durch die Berührungsstärke einer gültigen Berührung bestimmt, die sich je nach Tastengröße und Überzugsmaterial ändert. Der Anwender kann folgende Parameter selbst einstellen:

Anzahl der Kanäle im Slider Bin-Zahlen können von der Granularität abhängen Summen-Schwellenwert: die Summe der Touch-Deltas des gesamten Sliders. Damit wird bestimmt, ob eine gültige Berührung stattgefunden hat. Ergebnisse der adaptiven Filterung

Abbildung 2 zeigt den Touch-Delta-Ausgang von drei Slider-Tasten mit 2,88 mm Überzugsmaterial. Die anfängliche Baseline wird von der Ausgangskapazitätsmessung subtrahiert. Die Daten zeigen die gleiche Testsequenz unter verschiedenen Umgebungsbedingungen. Die Testsequenz ist wie folgt:

Schnelles Doppeltippen auf Taste 1, 2 und dann 3, Schnelles Wischen (Slide) von links nach rechts, dann von rechts nach links, Lange Berührung auf Taste 1, 2 und dann 3, Langsames Wischen von links nach rechts, dann von rechts nach links.

Die erste Testsequenz wurde unter Normalbedingungen ohne externe Störungen oder Wasser auf der Oberfläche vorgenommen. Die zweite Sequenz wurde mit einer Leuchtstofflampe in 2 cm Entfernung vom Slider durchgeführt. Die Störungen zeigen sich in den Daten, sobald das Licht eingeschaltet wird. Die dritte Testsequenz wurde mit einem befeuchteten Finger und einer Leuchtstofflampe in 2 cm Entfernung durchgeführt. Verschiebungen der Baselines sind eindeutig erkennbar, genauso wie Störungen, vor allem in Sequenz 3. Die Rohdaten des Sensors werden durch den Kalman-Filter und anschließend durch den Centroid-Algorithmus geleitet. Nach dem Erhalt der Ergebnisse aus dem Centroid-Algorithmus werden die Daten schließlich durch eine Anti-Glitch- und Anti-Jitter-Routine gesendet.

Bildergalerie

Firmen zu diesem Artikel
Verwandte Artikel