Dieser Thread bezieht sich auf den Beitrag "qtouch - sekt oder selters" Stichworte: Touch Sensor - Touch Slider - Touch Fader Funktionsprinzip ------------------------------------------------------------ Die beschriebene Methode ermittelt die Berührung nicht über eine Kapazitätsmessung sondern über eine Charge-Transfer-Messung detektiert. Es gibt 2 Kondensatoren die als Speicher für Ladungen dienen. den Kondensator Cs als Speicher und die "Touch" Electrode als Kondensator gegen Erde. Am Anfang werden beide entladen, um die Kondensatoren in einen definierten Zustand zu bringen. Das bedeutet, dass PB1 und PC1 als Ausgänge und auf LOW geschaltet werden. Etwas warten damit Entladung auch vollständig erfolgt. Danach werden in einer Schleife folgende Punkt abgearbeitet: 1. Der Touch Kondensator wird über PB1 aufgeladen (nur wenige pf). Dabei ist der Port PC1 ist als Eingang geschaltet damit in den Cs kein Stromfließen kann. 2. Pin PB1 wird als Eingang konfiguriert und PC1 als Ausgang mit 0V. Jetzt wandert die Ladung aus dem Touch Kondensatorin Cs (welcher viel grösser ist und sich nur gering auflädt) 3. Wenn die Spannung am Cs ausreicht um vom AVR als 1 gelesenzu werden, wird die Schleife beendet und durch geführte Schleifenanzahl ausgeben. Der Zählerstand ist ein Maß für die benötigten Ladezyklen. Wenn nicht beginnt die Schleife von vorne. Der Endstand des Zählers verändert sich, wenn mann mit dem Finger den Touchsensor berührt. So zusagen wird durch den kleineren Touch-Kondensator schrittweise der große Kondensator Cs aufgeladen. Die Anzahl der benötigten Ladezyklen hängt von der "Größe" des Touch Kondensator ab. Und die wiederum von dessen Umgebung (Finger). Stand der Dinge ------------------------------------------------------------ - Aufbau Widerstand 1kOhm und Kondensator 33nF - Messmethode funktioniert bestens - Messungen sind zuverlässig - autokallibrierung funktioniert -> testprogramm mit Bargraph siehe Anhang. Das alles gibt es auch nochmal zusammengefasst hier: http://www.jtronics.de/elektronik-avr/kapazitives-touch-pad.html Ein Demonstrationsvideo gibt es auf Youtube: http://www.youtube.com/watch?v=z3nLNGeyadU noch zu tun ------------------------------------------------------------ - Auswertung Scrollrad - Auswertung Fader / Slider - günstiges Touch Layout mit Target oder Eagel erzeugen Vielleicht wird im Lauf der Zeit eine gute Bibliothek daraus ;-) Grüße Martin
:
Verschoben durch User
hat keiner eine Idee wie man solch ein Scrollrad, bestehend aus 9 Touchfelden auswerten könnte?
Sollte eigentlich kein Hexenwerk sein, fang einfach mal an... Übrigens, wenn ich Deine Beschreibung oben zum Verfahren lese, dann bekomme ich das Gefühl, dass Du noch nicht so ganz verstanden hast wie das wirklich funktioniert. Kann das sein?
warum nehmt ihr nicht die QTouch LIb von Atmel? Da ist alles drin..
Martin J. schrieb: > hat keiner eine Idee wie man solch ein Scrollrad, bestehend aus 9 > Touchfelden auswerten könnte? Du brauchst zum Scrollen ja nur den äußeren Ring mit 8 Tasten auswerten. Ich würde folgendes versuchen: Sobald eine Taste vom Scroll-Ring durch Annäherung aktiviert wird: -> Taste merken Dann eine Scheife: repeat Wenn rechte Taste von der zuletzt aktiven gedrückt -> Scroll-Zähler erhöhen -> neue Taste merken Wenn linke Taste von der zuletzt aktiven gedrückt -> Scroll-Zähler erniedrigen -> neue Taste merken Wenn andere Taste als die nächste Taste rechts / links -> Abbruch der Schleife (Bedienfehler, Fehlerkennung) until "alle Ringtasten inaktiv" Man kann das ganze noch weiter ausbauen bzw- verfeinern, da man durch die Zählerstände der einzelnen Tasten sicherlich auch Zwischenpositionen des Fingers erkennen kann. Dass wäre dann eine Erweiterung, nachdem man die erste Version hinbekommen hat. Frage: Wo hast Du auf dem Touchpad Ground angeschlossen?
Servus, ist zwar für PIC (bei Microchip heißt das mTouch) - die Appnotes sind Gold wert: http://www.microchip.com/en_US/technology/mTouchButtons/index.html
hat jemand schon etwas mit den tastern umgesetzt? Autokallibrierung: In dem Programmcode ist ein Beispiel für die gleitende Berechnung der Autokallibrierung, leider muss ich feststellen, dass diese noch macken hat. Hat jemand noch eine idee das besser zu lösen?
Also bei mir lief es ebenfalls nicht schlecht, aber auch nicht so top. Bei einem gewissen Fingerabstand toggelte der Zustand manchmal wie wild hin und her. Ich konnte es dann eliminieren, indem ich in der Auswertung eine Hysterese einbaute. War die "Taste" also gedrückt, wird sie erst wieder als losgelassen ausgewertet, wenn der Zählerstand den Schwellwert vom gedrückten Zustand minus einer Hysterese für das Loslassen unterschritten hat. Hast Du auch diesen Effekt oder was ist bei Dir das Problem?
bei mir ist es auch so ... wie meinst du das mit der hysterese? kannst du den code mal posten?
Kapier ich nicht, warum Ihr das Rad 2x erfinden müsst: Die TouchLib von Atmel funktioniert doch wunderbar und da sind Slider, Wheels usw schon mitdrin. Warum also mit Filtern und Hysteresen rumwursteln, wenn alles schon fertig implementiert ist???
Hallo zusammen, tut mir Leid, dass ich den alten Thread nochmal aufwärme, aber ich hab die Sache elektrisch noch nicht richtig verstanden. Wie das mit der Software- Abfrage funktioniert hab ich kapiert, nur das mit der Ladungsverschiebung zwischen den zwei C's nicht. Wie fließen da die Ströme? Wie kommt die Ladung des Touch- Kondensators in den Cs? Ich kapier es nicht. Danke im Voraus.
Wenn du einen Slider oder ein Wheel auswerten möchtest, gibt es prinzipiell zwei Möglichkeiten: 1. Interpolation (rechen-aufwändiger) 2. Wie oben beschrieben, auswerten welches Feld als nächstes relativ zum letzten berührt wurde. Bei der interpolation solltest du dann noch eine schwerpunktberechnung machen (lineare interpolation) oder über die sich ergebende gleichung differenzieren (polynominterpolation). Zur linearen Interpolation gibt's diese Formel:
x0,x1,y0,y1 sind zwei bekannte Messwerte und deren Position. x ist ein Wert zwischen x0 und x1. Beispiel: [6][10][4] du hast 3 Sensorflächen und möchtest 3 Werte zwischen den Feldern interpolieren. Du setzt dann in die Formel ein:
Setzt du das fort kommt das raus: [6][7][9][10][8][6][4] Darüber lässt du dann die Schwerpunktberechnung laufen:
i ist die Position im Array+1. x = (6+7*2+9*3+10*4+8*5+6*6+4*7)/(6+7+9+10+8+6+4) = 3,82 Also liegt deine Berührung zwischen 3 und 4 mit mehr Tendenz zu 4. Ist dir das nicht genau genug (du solltest es erstmal ausprobieren), nutzt du die Polynominterpolation. Dabei wird aber ein Haufen Rechen-arbeit abfallen. Sieh dir am besten den Wikipedia-Artikel an der ist recht gut. http://de.wikipedia.org/wiki/Polynominterpolation
Hallo Zusammen, ich bin über diesen interessanten Beitrag gestolpert. Ich benutzte das IC AT42QT2160 von Atmel. Mit diesem möchte ich ein "endlos" Wheel realisieren. Das Wheel ist auf der Platine geätzt und besteht aus 24 Sensoren. Das Wheel wird mit 8 X-Leitungen und 1 Y-Leitung angeschlossen. Betrieben wird das Wheel als QMatrix, d.h. ein Sensor besteht aus zwei Elektroden. Bei 24 Sensoren und 8 X-Kanälen soll zwischen den einzelnen Kanälen resitiv interpoliert werden. So halb funktioniert das Wheel auch. Halb deswegen, weil der Übergang von 360° auf 0° nicht korrekt funktioniert, d.h. eine neue Drehung wird nicht erkannt. Beim Übergang (besser Überlauf) springt die Wheel ERkennung wild hin und her. Kann das QT2160 überhaupt interpolieren? In dem Datenblatt habe dazu nichts gefunden. Hat schon jemand ein (endlos) Wheel mit dem AT42QT2160 realisiert? Da das mit dem Wheel nicht so klappt, ist wohl die alternative sich einen Matrix Touch-Controller selber zu bauen. Das sollte mit einem Atmel-Controller (z.B. ATmega 88P o.ä. ) und der QTouch-Library zu realisieren sein. Die Dokumentation zur Library habe natürlich durchgelesen. Doch leider findet sich kein Hinweis darauf, ob und wie resistiv interpolierte Wheels unterstützt werden. Auch ist die Frage, ob ein Überlauf von 359° auf 0° richtig erkannt wird. Hat jemand damit Erfahrung? Für einen Tipp wäre ich echt dankbar. Gruß Karsten
Ob du interpolation hast oder nicht lässt sich schnell prüfen: 360/8 = 45. Solltest du Werte in 8er-Schritten bekommen oder eben immer 45° Schritte bekommst wird nicht interpoliert, andernfalls schon. Warum willst du mit eine QTouch-Controller ein resistives Wheel auswerten? Wenn du mit QTouch oder QMatrix arbeitest, hast du nichts mit interpolation am Hut. Wenn überhaupt macht das Atmels Bibliothek oder der Touch-Controller selbst.
>Warum willst du mit eine QTouch-Controller ein resistives Wheel >auswerten? Weil mir bisher die Möglichkeit der Realisierung mit einem AVR nicht bekannt war und in ATMEL's Produktporfolio der AT42QT2160 unter Slider/Wheel steht. Mittlerweile bin ich auch schlauer, nachdem ich dem Atmel-Support ne Mail geschrieben habe. Der hat zugegeben, dass der Controller QT2160 kein resistives unterstützt und es auch keinen Baustein gibt, der das kann. Empfehlung von Support: die QT-Touch Library verwenden. >Wenn du mit QTouch oder QMatrix arbeitest, hast du nichts mit >interpolation am Hut. Wenn überhaupt macht das Atmels Bibliothek oder >der Touch-Controller selbst. Wie und ob die QTouch-Library eine Interpolation macht ist von Support nicht zu erfahren. Lediglich der Überlauf von 360 auf 0 wird von der Bibliothek erkannt. ATMEL bietet in der Application-Note AVR254 genau das an, was ich benötige. Leider gibt es Softwaretechnisch nur ein .hex-File zum Proggen. Mein Wheel hat 8 Kanäle (8 x-Leitungen). Ich müsste die Software also entsprechend anpassen. Leider rückt ATMEL den c-Code nicht raus. Ein Beispielprojekt mit code wäre nicht schlecht. Leider scheint es im ganzen WEB kein Beispiel für ein Qmatrix-Wheel zu geben. Das Manual der QTouch-Library habe ich gelesen. Bin schon etwas schlauer. Aber ein funktionierendes Beispiel macht doch vieles leichter.
Hallo, wollt nur mal nachfragen, ob es jemand mit einem Spiegel dazwischen versucht hat ? Oder man es wegen der Verspiegelung (metallisch -Schirm) gleich vergessen kann ? Thanx. Micha
Hallo, Q-Matrix: Bei Q-Matrix wird das Feld zwischen zwei Elektroden aufgebaut, die sich in der Regel auf einer Platine befinden. Der Finger stört das Feld. Diese Störung wird detektiert.Daher wird das mit dem Spiegel wird wahrscheinlich nicht funktionieren, da Metall die Feldlinien leitet, bzw. einen Abschirmeffekt bewirkt. Q-Touch: Bei Q-Touch befindet sich nur eine Elektrode auf der Platine. Die Gegenelektrode der Kapazität bildet der FInger. Hier könnte der Spiegel als Elektrode dienen. Bei Berührung sollte eine Potentialverschiebung stattfinden, die gemessen wird. Problematisch wird das allerdings, wenn die verspiegelte Fläche über mehrere Elektroden auf der Platine reicht. Karsten
Hallo, ich bin Glaser und habe eigentlich von Elektronik keine Ahnung. Ich möchte auf der Rückseite einer Glasscheibe einen "kap. Sensor" aufdrucken. Es gibt dafür keramische Farben, die eingebrannt werden und Strom leiten. Kann mir jemand helfen, wie das aussehen muss?
die Farbe muss du dann halt kontaktieren mit leitfähigem Kleber oder so und dann an einen Touchcontroller oder uC anschließen. Aber wenn du davon keine Ahnung hast musst du dann jemand beauftragen, der dir die Elektronik erstellt. Wie dick ist denn die Glasscheibe?
Die Scheibestärke kann variieren. ich hatte mir das so vorgestellt, dass man den Sensor aufdruckt und die Elektronik dann entsprechend durch einen Stecker verbindet. Weiß nicht, ob das möglich ist.
ja aber irgendwie muss man die Flächen ja kontaktieren. Wie willst du da ein Stecker dran machen? ab 5mm wird es schwierig. Je nachdem wie groß auch die Tasten sind.
Wir drucken bei uns sogenannte "Alarmschleifen" auf Glas. An diesen werden Kabel angelötet. Hast du eine Idee wie das Druckbild aussehen muss. Ich habe gehört, dass Platinen gedruckt werden(Siebdruck)
ob Platinen professionell auch gedruckt werden, weiß ich nicht. Ich kenne nur ätzen. Du meinst das Druckbild auf der Glasscheibe? Wenn die Glasscheibe <= 5mm ist reicht für Buttons ein Kreis mit ~13mm Durchmesser. Die Kabel der einzelnen Buttons sollten halt dann nicht gebündelt oder längere Zeit parallel verlaufen. Also möglichst kurze Kabel und Platine so nah wie möglich.
kannst du mir helfen, soetwas zu realisieren? hast du ne e-mail oder so?
können schon, nur ob ich dazu in nächster Zeit genug Zeit dafür habe weiß ich nicht... Was willst du dann mit den Signalen ansteuern? Wäre dann also ne Platine erstellen, herstellen und programmieren?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.