Hallo zusammen,
und zwar würde ich gerne einen resistiven Touchscreen simulieren.
Sprich: DA-Wandler mit Mikrocontroller steuern, um Spannung zu
generieren.
Die Ausgänge des DA-Wandlers an die Kontakte des resistiven
Touchscreens.
Und im Idealfall, eine Bitkombination auf den Bus legen, damit ich einen
Touch auf dem Display simulieren kann.
Soweit der Plan.
Ich dachte da an einen DA-Wandler an dem 2 Ausgänge jeweils für X- und
Y-Richtung verwendet werden.
Jedoch hat der Touch 4 Kontakte. Ich gehe mal davon aus, dass die
anderen beiden Masse sein werden.
Ein weiteres Problem wird sein, dass ich mir nicht sicher bin, welche
Spannung ich jeweils bei den Ausgängen des DACs generieren soll.
Ich wollte dazu erstmal alle vier Kontakte des Tochdisplays mit dem
Oszilloskop anschauen. Also einfach einen Single Shot sobald ich
"touche", um zu sehen, was überhaupt passiert.
Anschließend versuchen irgendwie die Spannungen herauszufinden, die in
beiden Richtungen generiert werden müssen.
Jetzt meine Frage: Kann das überhaupt funktionieren, oder gibt es
bessere Vorgehensmethoden?
Der Touchscreen hat 4 Anschlüsse, weil ein Pärchen für die X und das
andere für die Y Achse gedacht ist. Dazwischen liegt beim Berühren dann
jeweils ein Widerstand, der von den Koordinaten abhängt.
Das Auslesen passiert so, das du z.B. zum Auslesen der X Koordinate an
den X- Anschluss Masse anlegst, an den X+ Anschluss eine Spannung von
z.B. Vcc legst und an einem der Y Anschlüsse die Spannung misst.
Mit einem AVR ist das einfach, denn die AD Eingänge sind auch digitale
Ausgänge und können auf High bzw. Low gesetzt werden. Für die Y Achse
verfährst du umgekehrt, hier wird dann zwischen Y- und Y+ eine Spannung
gelegt und dann an einem der X Anschlüsse gemessen.
Ein DA Wandler nützt dir hier nicht viel. Du brauchst einen ADC, um die
Spannung zu messen.
Er will den Touch aber immitieren.
@TO: Das mit dem DAC ist der richtige Weg. Du musst aber:
1. Den Ausgangsspannungsbereich vom DAC an die Messspannung des
tocuh-controllers anpassen
2. Aufpassen keine Komponente zu überlasten
Am einfachsten schaltest du über Widerstände (die so dimensionieren das
ein Kurzschluss (mit Gnd oder Vcc) keine Überlast des DACs auslöst
(mindestens ein paar hundert Ohm) die Ausgänge des DACs jeweils an beide
Kontakte für die Ebene. Also quasi ein Y aus Widerständen, die X+ nd X-
Kontakte kommen an die beiden "Arme" und der DAC-Ausgang an den "Fuß".
@Max D.
Ich verstehe leider deinen zweiten Abschnitt überhaupt nicht :D
ich hätte einfach die Messspannung an jeweils X+ und Y+ angelegt und
masse an X- und Y-.
Jetzt möchte ich vorher aber erst messen, welche Spannungen benötigt
werden um einen Klick z.B. in der Mitte zu simulieren.
Wenn ich jetzt draufdrücke, entsteht ja ein Spannungsteiler und die
Spannung wird dann gemessen.
Aber wie könnte ich diese nun messen? An X+/- und Y+/- geht das ja
nicht.
Zu Beginn habe ich mir das ganze irgendwie viel leichter vorgestellt. So
schnell kann man sich irren :D
Hans Georg schrieb:> ich hätte einfach die Messspannung an jeweils X+ und Y+ angelegt und> masse an X- und Y-.
So einfach funktioniert das nicht.
Üblicherweise sin die Eingänge beim resistiven Touch erst mal im
Digital-Mode. Erst wenn ein Fingerdruck erkannt wurde, wird auf analogen
Spannungsteiler umgeschalten und die erste Koordinate per ADC gemessen.
Dann wird umgepolt und die zweite Koordinate gemessen.
Beitrag "Re: 4Draht-Touchpanel direkt am AVR und die Portschaltung"
Hans Georg schrieb:> Jetzt möchte ich vorher aber erst messen, welche Spannungen benötigt> werden um einen Klick z.B. in der Mitte zu simulieren.
Grob gesagt, genau die Hälfte der Spannung, die an Y+ oder X+ liegt.
Wenn du bei einem vorhandenen Gerät ferngesteuert den Touch 'drücken'
willst, solltest du mal messen, welche Strategie das Display verfolgt
und ob du evtl. Y+ oder X+ als Referenz für deinen DA Wandler benutzen
kannst.
Thomas Forster schrieb:> Beitrag "Re: 4Draht-Touchpanel direkt am AVR und die Portschaltung"
Kann man so machen, muss man aber nicht. Bei mir z.B. läuft die ganze TS
Chose im ADC Interrupt ab.
Wären da nicht digitale Potis die richtige Lösung?
Ein Poti zwischen X+ und X-, ein zweites zwischen Y+ und Y-, und ein
Schalter verbindet die beiden Schleifer bei Bedarf. Der Schalter
signalisiert die Berührung, die Potistellungen geben die Position an.
jetzt habe ich die vier Pins mal mit dem Oszi aufgezeichnet.
2 sind standardmäßig high und 2 auf masse.
wenn ich jetzt auf den Screen drücke, ist erkennbar, dass X+ und Y+ dann
auf Masse gehen und sobald ich loslasse wieder auf High.
Dadurch komme ich allerdings nicht auf die koordinaten...
Es muss doch möglich sein, von aussen an diesen 4 Pins jeweils eine
bestimmte Spannung anzulegen, um somit einen Tastendruck an der z.B.
oberen linken Ecke zu simulieren?
Wie immer : das Ganze soll ?
Waehrend der Entwicklung fuer einen Controller die Beruehrungen
simulieren?
Wuerd ich so nicht machen. Erst den touch auslesen implementieren. Wenn
der laeuft, dessen Funktionalitaet mit einer seriellen Schnittstelle
imitieren. Dh von Aussen die Touchkoordinaten zum richtigen Zeitpunkt
einspeisen.
Hi
>Es muss doch möglich sein, von aussen an diesen 4 Pins jeweils eine
bestimmte Spannung anzulegen, um somit einen Tastendruck an der z.B.
oberen linken Ecke zu simulieren?
Sieh dir mal an, wie ein Touchscreen funktioniert:
http://www.atmel.com/Images/doc8091.pdf
Eine Koordinate wird durch zwei Messungen bestimmt.
MfG Spess
ich habe jetzt beschlossen, das ganze mit digitalen potis zu
realisieren, um mir die timinggeschichten zu ersparen.
dafür habe ich jetzt erstmal 2 stinknormale 1k potis genommen und
jeweils die masse und versorgung an beide X kontakte und den schleifer
an Y+, an dem gemessen wird.
das selbe habe ich ebenfalls für die Y-Ebene gemacht.
Nun kann ich wunderbar durch drehen der Potis auf meinem Touch
herumfahren.
Allerdings komme ich bei beiden ebenen jeweils nur zur hälfte, und ich
weiß nicht, woran das liegen könnte.
im ausgeschalteten zustand hatte ich am touchdisplay einen widerstand
von 800ohm in x-richtung und 300ohm in y richtung.
deshalb habe ich einfach zwei 1kohm potis verwendet.
woran könnte das liegen?
das prinzip an sich müsste ja schonmal stimmen, jedoch finde ich keine
erklärung dafür, dass ich in beiden ebenen jeweils nur bis zur hälfte
komme...
Hans Georg schrieb:> das prinzip an sich müsste ja schonmal stimmen,
Nein, eben nicht. Wie bereits erwähnt werden bei einem resistiven Touch
zwei Messungen hintereinander ausgeführt, dazwischen werden die Eingänge
und Ausgänge umgeschalten. Deine Potis beeinflussen aber jeweils den
Widerstandswert bzw. den Spannungsteiler der Touch-Folie.
Atmel Application Note lesen.
Thomas Forster schrieb:> Nein, eben nicht.
naja, aufgrund der Tatsache, dass ich nur pin 3 und pin 4 vertauscht
habe, und es jetzt einwandfrei funktioniert, habe ich doch recht gehabt
;)
@Nosnibor. Der weg mit den Digitalen Potis wirds nun sein.
Jetzt muss ich ja die Schleiferkontakte trennen können, damit ein
"abheben des Fingers" simuliert werden kann.
Dies wird mit einem MOS-Schalter am besten funktionieren, nehme ich mal
an? :D
Hans Georg schrieb:> Jetzt muss ich ja die Schleiferkontakte trennen können, damit ein> "abheben des Fingers" simuliert werden kann.>> Dies wird mit einem MOS-Schalter am besten funktionieren, nehme ich mal> an? :D
Ja, so würde ich es jedenfalls versuchen.
Jedenfalls wenn das mit der Versorgungsspannung OK geht: der
MOS-Schalter kann nur Spannungen innerhalb seines
Versorgungsspannungsbereiches schalten, also muß dessen
Versorgungsspannung mindestens so groß sein wie die des Gerätes, das den
Touchscreen abfragt. Und für die digitalen Potis gilt wahrscheinlich das
gleiche.