Widerstand messen

Hi

Hab malwieder nen problem -.-
Ich habe hier schon seid längerem ne 17 Zoll Touch-platte rumliegen, die ich iwann mal aus nem defekten Touch-bilschirm entwendet hab. Vorher hab ich damit immer gezeichnet, aber jetzt möchte ich sie mit meinem Arduino "verbinden". Die Touch-platte hat 4 anschlüsse, und jenachdem wo man sie berührt, verändert sich der Widerstand. Berührt man sie nicht, besteht keine Verbindung zwichen den Pins. Ich hab dann gedacht, dass ich das einfach wie nen LDR oder was weiß ich was am Ardu über nen Analogen eingang anschließe. Da is ja dann noch nen widerstand in der "schaltung" drinne. Das doofe is jez nur, dass, auch wenn ich die Touchplatte nicht berühre, ein Wert geliefert wird. Ich möchte aber, kein wert Ausgespuckt wird, wenn ich die Touchplatte nicht berühre. Außerdem ist der Wert, den der Widerstand bringt, genauso wie ein bestimmter punkt auf der Touchplatte.

Gibt´s ne andere möglichkeit den Widerstand zu messen? Hab schon ein wenig rumgetüftelt, aber trotzdem bin ich zu keiner Lösung gekommen :frowning:

Die werte die rauskommen sollten zwichen 0 und 1023 liegen, die ich dann auf 800 x 600 "pixel" mappe.

MFG, Robdeflop®

Hallo Robdeflop

Um den Widerstand der Touch-Platte machst du mit ihm und einem widerstand einen Spannugsteiler. Je nach Widersatandswert des Pannels hast Du verschiedene Spannungen am Analog-Eingang.
Das problem ist aber daß Du 2 Richtungen zu messen hast, X und Y. Daum kannsz Du den Spannungteiler nicht direkt und konstant auf Masse und +5V schalten sondern mußt es über Digitale Ausgänge steuern.
x Achse: einen X-Richtung-Kontakt auf LOW, den anderen X-Richtung-Kontakt über Widerstand auf HIGH; y-Richtungs-Ansteuerung hochohmig schalten ( als Eingänge delarieren) und Wert messen.
y Achse: einen Y-Richtung-Kontakt auf LOW, den anderen Y-Richtung-Kontakt über Widerstand auf HIGH; X-Richtungs-Ansteuerung hochohmig schalten ( als Eingänge delarieren) und Wert messen.

Wenn der wertebereich zu klein ist mußt Du den Widerstand des Spannungsteilers ändern bzw die kontakte über Transistore auf Masse und 5V schalten da die Ausgänge dea Arduino unter Umständen nicht ganz auf Masse und 5V schalten.

Grüße Uwe

Hi

Ah ok, danke :slight_smile: Das versteh ich schonmal fast :smiley:
Mit dem Code werde ich denke mal keine Probleme haben, nur eher mit der "schaltung" :confused:

So? :

Digial 1 ------ TouchX ----- Widerstand ----- GND
|
Analog1

Digial 2 ------ TouchY ----- Widerstand ----- GND
|
Analog2

Stimmt das so? Bin in Elektronik noch nich so ganz der hellste :smiley:
Hab aber glaube ich wieder was falsch verstanden.

MFG, Robdeflop®

nein so:

Digial 2 ------ TouchX ----- Widerstand ----- Digital 3
|
Analog1

Digial 4 ------ TouchY ----- Widerstand ----- Digital 5
|
Analog2

wobei:
x Messung: Digial 2 -> H; Digial 3 -> L; Digial 4 und Digial 5 als Eingang mit pinmode. ecc

Du kannst nicht permanent auf Masse schalten da Du sonst eine Paralellschaltung der 2 Widerstände hast und der widerstandswert ist von der x und y koordinate abhängig.

Grüße Uwe

HI

Ahhhhh, danke :slight_smile: War dann ja nur 1 fehler ^^
Werd das ma grad aufm breadboard aufbauen und den Code dafür machen.

Aber vielen dank :smiley:
wenn ich probs hab meld ich mich gleich nomma :slight_smile:

MFG, Robdeflop®

Hi

Vielen dank, es geht :slight_smile:
Gibt da nur leider mehrere Probleme :frowning:

  1. Die Werte schwanken stark
  2. Die werte sind zu ungenau, also bieten zu wenige pixel, hab viele Widerstände probiert. Meistens kommen z.B. werte von 100 - 200. Wenn ich das auf 0 bis 800 Pixel mappe, ist das schon ziemlich ungenau, also das Raster ist sehr groß, wenn du verstehst was ich meine. Hier mal die Funktion für X:
int GetX(void)
{
  int x = 0;
  pinMode(xIn, OUTPUT);
  pinMode(xOut, OUTPUT);
  pinMode(yIn, INPUT);
  pinMode(yOut, INPUT);
  digitalWrite(xIn, HIGH);
  digitalWrite(xOut, LOW);
  x = analogRead(xRead);
  if(x != 0)
  {
    x = map(x, 100, 200, 0, 800);
  }
  else
  {
    x = -1;
  }
  return x;
}

Hast du oder wer anders evtl ne Lösung?

MFG, Robdeflop®

Hi

Kleine Ergänzung:

X von ca 1 bis ca 1,6 kOhm -> Längere achse
Y von ca 1,45 bis ca 1,8 kOhm -> Kürzere achse

Sind die werte dass die TouchPlatte ausspuckt. Falls das wer braucht :slight_smile:
Freue mich über Hilfe

MFG, Robdeflop®

Hallo Robdeflop

Ich hab zwar noch nie ein Touchpannel ausgemessen aber die Widerstandsänderung kommt mir arg wenig vor.
Hat's jemand mal versucht oder hat Erfahrung???

Grüße Uwe

Hi

Ja, find´s selber doof dass die Widerstandsänderung an den endpunkten so klein ist :frowning: Hab aber noch die Elektronik dafür, die man direkt über USB an den PC anschließen kann, falls das was nützt^^ Vill kann man ja iwo die Daten abgreifen?

MFG, Robdeflop®

Ich würde eher das zu schwache Analogsignal verstärken. Wenn du Werte zwischen 100-200 bekommst, einfach die Spannung vervierfachen oder gar verfünffachen. Sollte mit einem Operationsverstärker je Achse problemlos möglich sein, es gibt auch sehr kompakte Dual-OpAmps im DIL8-Gehäuse. Bei der Wahl sollte man sich vermutlich besser auf Rail-To-Rail-Typen beschränken, also die Versionen, die die Ausgangangspannung bis auf Höhe der Versorgungsspannung bringen können.

@sth77

Das ist mal nicht die Frage. Die Frage ist: sind diese kleinen Widerstandsänderungen fisiologisch oder ist was was nicht funktioniert. Das ist zuerst zu klären. Wenn dann die Widerstandsänderung so klein ist kann man ans Aufarbeiten des Signals denken.

Viele Grüße Uwe

Hi

Die Widerstandsänderungen sind leider richtig so. Hab die Touchplatte malwieder an die Elektronik angeschlossen, treiber installiert und kalibriert. Am PC funzt das ganze wunderbar. Kann man nicht iwie das USB signal auslesen oder irgendwo daten von der Platine abgreifen? Oder ich versuch das mit der Spannung erhöhen. Was wäre einfacher/sinnvoller?

MFG, Robdeflop®

hallo Robdeflop

hab das hier gefunden; leider auf italienisch. Aber die Tabelle und der Kode ist auf englisch.
http://mnicolato.altervista.org/arduino/ardtouch.htm

Da haben wir einen Gedankenfehler gemacht.

Wenn Du das animierte Bild anschaust:
Man legt +5V und Gnd an die beiden Elektroden einer Achse an und liest den Spannungswert den ein Kontakt beider Lagen am Berührungspunkt zwischen die beiden Ebenene in der anderen Achse ab. Die digitalen Pind in der anderen Achse sind dabei hochohmig geschaltet (Eingang). An 1 Elektrode der 2 Achsen ist je ein analoger Eingang angeschlossen. So hat man als Ausgangswert eine Spannung zwischen 0 und 5V.
Schau Dir mal den Beispielcode an.

als Schaltbild (pins und logische Level als Beispiel):
x Achse: Digial 2 ------ TouchX ----- Digital 3 + Analog1
y Achse: Digial 4 -------TouchY ----- Digital 5 + Analog2

X Messung: Digial 2 - LOW (0V); Digital 3 - HIGH (+5V), Digial 4 und Digital 5 - Input; Analog2 messen.

Y Messung: Digial 4 - LOW (0V); Digital 5 - HIGH (+5V), Digial 2 und Digital 3 - Input; Analog1 messen.

Grüße Uwe

Hi

Ahhh, danke :slight_smile: Werd das mal probieren :smiley:

X Messung: Digial 2 - LOW (0V); Digital 3 - HIGH (+5V), Digial 4 und Digital 5 - Input; Analog2 messen.

X Messung: Digial 4 - LOW (0V); Digital 5 - HIGH (+5V), Digial 2 und Digital 3 - Input; Analog1 messen.

Da meinst beim zweiten x bestimmt y :wink:

Werd gegen abend mal berichten

MFG, Robdeflop®

Hast recht. Habs ausgebessert.
Grüße Uwe

Hi

Ich weiß nicht so recht ob meine Verkabelung stimmt xD Das Flachbandkabel ist in einer art adapter verklebt und geht dann in richtige adern über, un kann somit nicht sehen welche ader rechts, links, unten, oben ist.
Hab einfach Ohm gemessen. Wenn ich zwichen Adern 1 und 2 messe, schwankt das Messgerät die ganze zeit hin und her, zwichen milliohm und killoohm, ganz schnell, ist also unmessbar (wenn ich nicht drauftippe, das selbe wenn ich drauftippe). Also sollten das ja die gegenüberliegenden seiten sein? Also z.B. rechts und links? Zwichen 3 und 4 das selbe. Zwichen 1 und 3, und 2 und 4 messe ich die Widerstände die ich weiter oben gepostet hab, wenn ich auf die Platte tippe. Wenn ich nicht tippe, wird kein Widerstand gemessen, also keine verbindung.
Was mich verwirrt ist, dass zwichen 1 und 2, und 3 und 4 der Widerstand immer schwankt, ich es also nicht messen kann oO

Ist ja richtig dass schon ein wert zurückgegeben wird obwohl man nicht auf das Touch tippt? (Mit meinem Code):

int x1 = 2;
int x2 = 3;

int y1 = 4;
int y2 = 5;
int GetX(void)
{
  int x = 0;
  pinMode(x1, OUTPUT);
  pinMode(x2, OUTPUT);
  pinMode(y1, INPUT);
  pinMode(y2, INPUT);
  digitalWrite(x1, LOW);
  digitalWrite(x2, HIGH);
  x = analogRead(A1);
  return x;
}

int GetY(void)
{
  int y = 0;
  pinMode(y1, OUTPUT);
  pinMode(y2, OUTPUT);
  pinMode(x1, INPUT);
  pinMode(x2, INPUT);
  digitalWrite(y1, LOW);
  digitalWrite(y2, HIGH);
  y = analogRead(A0);
  return y;
}

Den code von der Inet-seite kann ich nicht verwenden, da das dort verwendete Touchscreen viel kleiner ist.

Sollte so stimmen? Ich bekomme diesmal aber immerhin etwas bessere Werte geliefert, von 300 bis 900, und von 400 bis 900 :slight_smile:

MFG, Robdeflop®

Was mich verwirrt ist, dass zwichen 1 und 2, und 3 und 4 der Widerstand immer schwankt, ich es also nicht messen kann oO

Macht er es auch, wenn Du das Multimeter von Autorange auf einen geeigneten Widerstandmessbereich manuell schaltest?
Ich würde das nicht überbewerten.

Ist ja richtig dass schon ein wert zurückgegeben wird obwohl man nicht auf das Touch tippt? (Mit meinem Code):

weiß nicht, Wie Du weißt habe ich noch nie mit einem Touchscreen herumgespielt.

Sollte so stimmen? Ich bekomme diesmal aber immerhin etwas bessere Werte geliefert,

Ja, ich glaube mit diesen Werten kannst Du arbeiten.

Grüße Uwe

Hi

Entweder geht das bei meinem multi nit, oder ich bin zu doof dafür xD Sonst hatte ich nie probleme den Widerstand zu messen. In den Einstellungen gibt es folgende Abkürzungen, wo ich kein plan hab was sie bedeuten:

D - H
R - H
A - H
REL
MEM
RCL
CMP

Nja, mem und RCL is klar, mem der speicher un RCL widerrufen der daten?
Aber beim rest hab ich leider keine ahnung.

Das Multi hat folgende Funktionen:
SIG OUT, mV, V, FREQ, LOGIC, Ohm, Dioden, CAP, hFE, PULSE, 4mA, 400mA, 20A und POWER, zum wessen von watt, is ja klar :smiley:
Is das "Peak Tech 4390", hat damals 200 Mark gekostet, is also schon älter, und nicht das selbe wie das "heutige" Peak Tech 4390.

Was kann ich dagegen machen dass die Werte so schwanken? pro achse 10 mal nen wert nehmen, addieren, und durch 10 teilen? Also den Durchschnitt errechnen?

MFG, Robdeflop®

Hallo Robdeflop

Bei der neuen Version des PeakTech 4390 ist das Die Taste "RANGE". Für die Alte kann ich wenig sagen.

Was kann ich dagegen machen dass die Werte so schwanken? pro achse 10 mal nen wert nehmen, addieren, und durch 10 teilen? Also den Durchschnitt errechnen?

Was meinst Du? Schwanken die Werte bei der Messung des Widerstandes mit dem Multimeter oder in der Messung mit dem Arduino?

Lies Dir mal die Funktionsweise der Touchpannel Controller durch: zB:
http://datasheets.maxim-ic.com/en/ds/MAX1233-MAX1234.pdf
http://datasheets.maxim-ic.com/en/ds/MAX11800-MAX11803.pdf

Grüße Uwe

Hi

Was meinst Du? Schwanken die Werte bei der Messung des Widerstandes mit dem Multimeter oder in der Messung mit dem Arduino?

Ich meine beim "messen" des Analog-wertes am Ardu. Wenn ich die Touchplatte an einem festen Punkt berühre, schwanken die werte ja leicht. Das wollte ich nachfragen, ob da der Durchschnittswert eine gute Lösung wäre.

Was genau soll ich aus der Funktionsweise erfahren? Oder welche informationen genau soll ich daraus lesen? Ich denke mal du meinst Seite 15 und 57?

Habs nun mit etwas aufwand geschafft, nur den Kiloohm-bereich zu messen. Nun schwanken die werte nichtmehr.
Zwichen 1 und 2 bleiben die werte immer konstant, egal wo ich tippe, also Rechts und Links, zwichen 3 und 4 auch konstant, also oben und unten.
Nun nen problem dass ich auch noch festgestellt habe. Egal wo ich nun messe, zwichen 1 und 3, 1 und 4, 2 und 3, 2 und 4, wenn ich die eine achse messe, und mit dem finger nur in länge der anderen achse fahren, dürfte sich der Widerstand ja NICHT ändern. aber irgendwie tut es dass schon? Das versteh ich irgendwie nicht.

MFG, Robdeflop®