mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP TouchScreen - Filterung


Autor: Der Albi (der-albi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich sitze Zur Zeit über meinem TouchScreen (Resistiv, 2.4").
Ich Sample die Koordinaten mit ~140Hz. Wie man das so kennt, sind die 
Touch-Koordinaten krass verrauscht und teilweise völlig unfug.
Das Problem habe ich zufriedenstellend gelößt.

Nun muss ich mich um die Gestiken kümmern. Nichts kompliziertes, sondern 
nur die Intension des Benutzers herausfinden.
Dabei sollen lediglich 2 Fälle unterschieden werden:
a) Nur auflegen des Fingers oder Stifts, um zu sehen, wie die GUI 
reagiert
b) Drücken des Touchscreens im Sinne von "TuWas" (Mausklick sozusagen)

Die Messwerte des Drucks stehen zur Verfügung.

Wenn wirklich Interesse am Stoff besteht, dann bitte ich jetzt den 
Anhang anzusehen, ohne die Bilder wirds sinnlos weiterzulesen.

Mein bisheriger Ansatz: (Blaue Linie)
Ein Bandpassfilter:  Er filtert den "GleichDruck" heraus und gibt mir 
sozusamgen die erste Ableitung aus, dabei werden hohe Frequenzen 
gedämpft.
Das wird damit nichts.

Im Anhang sieht man 6 Bilder, die jeweils verschiedene Eingaben 
repräsentieren. Es folgt eine kleine Auswertung: (Die Rote Linie um 
unteren Dieagram ist interessant, das blaue ist mein Bandpass-Versuch)

>Bild 1:
Ich habe nur meinen Daumen aufgelegt. Der Daumen ist eine recht große 
Fläche.Große Flächen verursachen bei Resistiven TouchScreens automatisch 
große Drücke. Deswegen ist der Druck-Grundlevel relativ hoch und das 
Rauschen durch geringe Druckvatiationen recht groß. Dieser Fall darf 
KEIN Klick auslößen.

>Bild 2:
Fingernagel oder Stift haben nur geringer Kontaktfläche. Das Ergebnis 
der Messungen Unterliegt weniger Rauschen. Jedoch ist der 
GleichDruck-Anteil geringer als beim Daumen.
Das auszuwerten wäre nicht Schwer.

>Bild 3:
Hier habe ich meinen Dicken Daumen bemüht einfach draufzuhauen. Das muss 
als Mausklick interpretiert werden können.

>Bild 4:
Hier habe ich einen Stift genommen und "draufzuklicken"
Man sieht: Im Vergleich ist der MaximalDruck kleiner.

>Bild 5:
Hier habe ich mal den Daumen aufgelegt und dann den Druck verandert, als 
hätte ich per auflegen mein GUI-Steuerelement Markiert und dann 
ausgelößt.
Man sieht: Mit dem Auge sind die Druckpunkte recht gut zu erkennen, aber 
vom Filterstandpunkt aus gesehen, sind sie schwer vom Rauschen zu 
unterschieden.

>Bild 6:
Das ist sozusagen nochmal Bild 5 nur mit einem Stift. Man sieht 
eindeutig, dass die Druckunterschiede recht gering sind. Das rauschen 
aber auch.

---------------------------
Der Filter muss also folgenes Können:
Einfach Formuliert:
Bild 1 == Bild 2  nur auflegen darf erkannt werden
Bild 3 == Bild 4  nur Klicks dürfen erkannt werden
Bild 5 == Bild 6  anfangs das Auflegen, dann die Klicks erkennen


>Folgende Ideen geistern in meinem Kopf:
Hochpass (mit geringer 3dB-GrenzFrequenz) um den Gleichanteil 
herauszufiltern, damit wird erstmal alles normiert. Der GleichDruck wird 
weggeschnitten, nur noch der Wechseldruck ist interessant.

Mit dem Verbleibenden Signal:
a) noch ein Hochpass (mit  hoher Grenzfrequenz) und Effektivwertbildung 
-> Müsste dann das Rauschen repräsentieren -> Je höher, desto Wurstiger 
der Finger ;-)
b) ein Tiefpass zur Klickerkennung, wenn dann ein Maximum und Minumum in 
einem Bestimmten Zeitrahmen aufkommt, wird ein KlickEvent ausgelößt.

Warum ich hier Schreibe:
Ich brauche Hilfe beim Filterdesign.. ich habe davon kaum Ahnung.
Welche FilterAlgos sind anzuwenden? IIR FIR? Gibt es dafür sinnvollere 
Lösungen? Wie macht man eine Digitale Effektivwertbildung??

Hat jemand andere Ideen, wie man soetwas umsetzen kann?

Die messwerte sehen qualitativ genauso aus. Ich denke im allgemeinen 
Einsatz sind sie eher noch schlechter.

Hilfe ;-)

PS:
SystemInfo: Mikrocontroller, externer Ram, Ordentlich Leistung, aber 
ungern würde ich viel Spendieren, SmapleRate == 140Hz, 9 Bit 
genauigkeit, Das Auswerteprogramm arbeitet auf dem OC mit Rohdaten.

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein ähnliches Problem mit überlagerten rauschen. Kommt 
vermutlich vom TFT selbst (Crystalfontz 3.5"). Überlagerungsfrequenz ist 
ziemlich genau 8kHz.

Ist zwar schon eine Weile her, aber wie hast Du das damals gelöst? Ich 
überlege ein Filter in Software einzusetzen (uC ist ein STM32).

Meine Schaltung ist vorerst sehr einfach, nur 4 Portpins in Verwendung.

Gruß

Autor: Jan F. (fenki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du nicht an die Methode mit wenig Druck = markieren, viel Druck = 
Klick gebunden bist, meinte ich, dass die Methode wie bei Touchpads 
zuverlaseeiger waere:
Druck = Cursor oder Markierung bewegen
Druck weg und innerhalb eines bestimmten Radius + Zeit = Klick
Kurzes Antippen auf ein markiertes Objekt = Aktion ausfuehren

Dies sollte besser kompatibel sein als zu verschiedenen Fingern (= 
Benutzern). Einige druecken gerne fest, andere streicheln einen Touch 
sehr liebevoll...
Auch die aktiven Touch-Loesungen mit Druckstaerke-Auswertung, welche ich 
kenne, verwenden dieses System.
Selbstverstaendlich lerne ich aber auch gerne etwas neues :-)

Gruss
Fenki

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.