Forum: Mikrocontroller und Digitale Elektronik MI0283QT-2 Touchscreen Probleme


von ljstefan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich verwende für meine Steuerung (Beckhoff HMI) ein MI0283QT-2.
Mein eigentliches Problem ist das nach cirka einer Woche der Touchscreen 
defekt (verzerrt) ist.
Die Ansteuerung wird mit einem XMega128A1 getätigt.
Für die AD Wandlung verwende ich aber nicht den ADC vom XMega sondern 
einen MCP3204-C da mir die referenzspannung des Xmega nicht sehr 
gefällt.
--> Die Touchscreenports hängen jeweils auf einem Pin des XMega und auf 
einem Eingang des MCP.
Zusätzlich hab ich jeden port noch mit einem externen Pulldown von 100k 
versehen.
Das geanze funktioniert einwandfrei... bis nach ca 1-2wochen der Touch 
defekt ist (ist nun schon der 2.).
Die gleiche Ansteuerung wird auch mit einem anderen Touch verwendet, 
dabei aber mit den internen ADC eines ATMega644p (5V) und funktioniert 
seit 2 jahren einwandfrei.

Ansteuerung in Pascal:
1
function gety() : integer;
2
var
3
  v0,v1,v2 : word;
4
begin
5
  // Y-Positiv und negativ als eingang
6
  // X-Positiv und negativ als ausgang
7
  TOUCH_XPos_Direction := 1;
8
  TOUCH_YPos_Direction := 0;
9
  TOUCH_XNeg_Direction := 1;
10
  TOUCH_YNeg_Direction := 0;
11
12
  // X-Negativ hi ==> VCC 3,3V
13
  // X-Positiv lo ==> GND
14
  TOUCH_XPos := 0;
15
  TOUCH_YPos := 0;
16
  TOUCH_XNeg := 1;
17
  TOUCH_YNeg := 0;
18
  // Y-Positiv und negativ werden von dem 100K Pulldown auf GND gezogen
19
  // ADC 3x einlesen und mittelwertbildung
20
  delay_us(50);
21
  v0 := MCP3204_Read(2);
22
  delay_us(10);
23
  v1 := MCP3204_Read(2);
24
  delay_us(10);
25
  v2 := MCP3204_Read(2);
26
  result := (v0+v1+v2) div 3;
27
  // Alle Touchscreenports auf eingang
28
  TOUCH_XPos_Direction := 0;
29
  TOUCH_YPos_Direction := 0;
30
  TOUCH_XNeg_Direction := 0;
31
  TOUCH_YNeg_Direction := 0;
32
  TOUCH_XPos := 0;
33
  TOUCH_YPos := 0;
34
  TOUCH_XNeg := 0;
35
  TOUCH_YNeg := 0;
36
  delay_us(5);
37
end;
38
(******************************************************************************)
39
function getx() : integer;
40
var
41
  v0,v1,v2 : word;
42
begin
43
  // Y-Positiv und negativ als ausgang
44
  // X-Positiv und negativ als eingang
45
  TOUCH_XPos_Direction := 0;
46
  TOUCH_YPos_Direction := 1;
47
  TOUCH_XNeg_Direction := 0;
48
  TOUCH_YNeg_Direction := 1;
49
50
  // Y-Positiv hi ==> VCC 3,3V
51
  // Y-Negativ lo ==> GND
52
  TOUCH_XPos := 0;
53
  TOUCH_YPos := 1;
54
  TOUCH_XNeg := 0;
55
  TOUCH_YNeg := 0;
56
  
57
  // X-Positiv und negativ werden von dem 100K Pulldown auf GND gezogen
58
  // ADC 3x einlesen und mittelwertbildung
59
  delay_us(50);
60
  v0 := MCP3204_Read(3);
61
  delay_us(10);
62
  v1 := MCP3204_Read(3);
63
  delay_us(10);
64
  v2 := MCP3204_Read(3);
65
  result := (v0+v1+v2) div 3;
66
  
67
  // Alle Touchscreenports auf eingang
68
  TOUCH_XPos_Direction := 0;
69
  TOUCH_YPos_Direction := 0;
70
  TOUCH_XNeg_Direction := 0;
71
  TOUCH_YNeg_Direction := 0;
72
  TOUCH_XPos := 0;
73
  TOUCH_YPos := 0;
74
  TOUCH_XNeg := 0;
75
  TOUCH_YNeg := 0;
76
  delay_us(5);
77
78
end;
79
(******************************************************************************)
80
function Touch_GetPressure() : integer;
81
begin
82
  result := 0;
83
  // Y-Positiv und negativ als eingang
84
  // X-Positiv und negativ als ausgang
85
  TOUCH_XPos_Direction := 1;
86
  TOUCH_YPos_Direction := 0;
87
  TOUCH_XNeg_Direction := 1;
88
  TOUCH_YNeg_Direction := 0;
89
90
  // X-Negativ hi ==> VCC 3,3V
91
  // X-Positiv hi ==> VCC 3,3V
92
  TOUCH_XPos := 1;
93
  TOUCH_YPos := 0;
94
  TOUCH_XNeg := 1;
95
  TOUCH_YNeg := 0;
96
  delay_us(50);
97
98
  // Eingang Y-Negativ lesen
99
  if TOUCH_YNeg_In then
100
    begin
101
      result := 1;
102
    end;
103
104
  // Alle Touchscreenports auf eingang
105
  TOUCH_XPos_Direction := 0;
106
  TOUCH_YPos_Direction := 0;
107
  TOUCH_XNeg_Direction := 0;
108
  TOUCH_YNeg_Direction := 0;
109
  TOUCH_XPos := 0;
110
  TOUCH_YPos := 0;
111
  TOUCH_XNeg := 0;
112
  TOUCH_YNeg := 0;
113
  delay_us(5);
114
end;

In der Hauptschleife wird immer Touch_GetPressure aufgerufen.
--> wenn das ergebniss 1 ist (touch betätigt) dann werden x und y 
gelesen.

Die Spannung ist 3,3V ==> Der Touchscreen müsste das ja wohl aushalten.
Mein anderer funktioniert ja einwandfrei mit 5 Volt seit längerer 
Zeit...
Eine Spezifikation des Touchscreens vom MI0283QT-2 hab ich leider noch 
nicht gefunden.
Im 1. Bild sieht man die Standart Kalibrierpunkte.
Im 2. Bild sind die durch die verzerrung abgespeicherten Punkte.
Im 3. Bild sieht man den Verzerrten Bereich.
--> der Halbkreis ist durch fahren entlang des rechten Displayrandes 
entstanden.

Hat so was schon jemand von euch gesehen?
Zufall ist es keiner da es ja schon das 2. Display ist.
Original war von ME
2. von Watterott.

Sg. Stefan

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
Noch kein Account? Hier anmelden.