Hallo zusammen,
Ich benutze einen AD7843 mit unterschiedlichen resistiven
Touchscreenfolien.
Leider sind die Meßergebnisse ziemlich unlinear.
Tippe ich z.B. auf der X-Achse unterschiedliche Punkte an, verändert
sich auch die Y-Achse.
Bei 6,5" habe ich z.B. von links nach rechts 20% Abweichung.
Das passiert mit 2 unterschiedlichen Panels. Eins davon ist ein 3M
Microtouch PL46.4E2.
Zu dem habe ich auch den original Controller SC401U und damit ist das
Panel perfekt linear.
Auch auf dem Oszi sehen die Paneldaten ok aus.
D.h. es wird am AD7843 liegen.
Beschaltung ist nach Datenblatt. Ref. und Versorgung sind 3,3V.
Die Touch-Anschlüsse sind direkt am Panel.
Vertauschen der Anschlüsse bringt ein Vertauschen der Achsen, ändert
aber nichts an der Unlinearität
Ich habe schon unterschiedliche Routinen probiert, die Daten abzufragen.
Aktuell mache ich es so:
1 | TOUCH_CS_LOW();
|
2 | Touch_SendByte(0xD0);
|
3 | uint16_t data0 = Touch_SendByte(0);
|
4 | uint16_t data1 = Touch_SendByte(0);
|
5 |
|
6 | Touch_SendByte(0x90);
|
7 | uint16_t data2 = Touch_SendByte(0);
|
8 | uint16_t data3 = Touch_SendByte(0);
|
9 |
|
10 | TOUCH_CS_HIGH();
|
11 |
|
12 | uint16_t X = data0 << 5;
|
13 | X |= data1 >> 3;
|
14 | uint16_t Y = data2 << 5;
|
15 | Y |= data3 >> 3;
|
Ich könnte die Unlinearität natürlich mit der Kalibrierung rausrechnen,
aber ich glaube nicht, dass das so gedacht ist.
Setzt jemand den AD7843 ohne Probleme ein?
Grüße,
Flo
Edit: Ich nehme auch gerne Vorschläge für bessere Touchscreen-Chips an.
Der AD7843 hat einfach gut gepasst wegen Preis und verfügbarkeit.
Die ADC Pins meines MCs sind leider alle belegt, sonst würde ich es
darüber machen.