Επιφάνειες αφής (Touch Screens). Μέρος 1o.

Πρόσφατα έστειλα στην ανακύκλωση μερικά παλιά κινητά τηλέφωνα που είχα. Εκεί υπήρχε και ένα Nokia 5800 (ΑΥΤΟ). Είπα να κρατήσω την οθόνη αφής που έχει και να παίξω λίγο μαζί της. Το άνοιξα λοιπόν και κράτησα την επιφάνεια αφής.

Touch-1

Η συγκεκριμένη οθόνη αφής είναι ωμικής τεχνολογίας (resistive touchscreen). Πρόκειται για δύο αγώγιμες επιφάνειες, με συγκεκριμένη αντίσταση, που είναι πολύ κοντά τοποθετημένες η μία απέναντι από την άλλη. Όταν ασκείται πίεση στην οθόνη, οι δύο ωμικές επιφάνειες έρχονται σε επαφή και δημιουργούν κάποιες συγκεκριμένες τιμές αντίστασης. Όταν εφαρμοστεί τάση στο δικτύωμα που προκύπτει, η τάση εξόδου έχει σχέση με την τοποθεσία επαφής. Μετρώντας λοιπόν την τάση αυτή, μπορεί κάποιος να βρει την τοποθεσία της επαφής. Κάτι τέτοιο μπορεί εύκολα να υλοποιηθεί με κάποιον μικροελεγκτή. Για παράδειγμα με ένα Arduino και τον ATmega328p.

Υπάρχουν διάφοροι τύποι ωμικών επιφανειών αφής. Ο ποιο απλός είναι αυτός των τεσσάρων καλωδίων. Που είναι και ο τύπος της επιφάνειας έβγαλα από το κινητό. Ο τρόπος εύρεσης της θέσης που κάτι αγγίζει την οθόνη είναι ανεξάρτητος από το μέγεθος της. Κάθε ένα ζευγάρι των καλωδίων μίας τέτοιας οθόνης, όταν δεν υπάρχει σημείο πίεσης, παρουσιάζει μία σταθερή τιμή αντίστασης. Το συγκεκριμένο μοντέλο έχει στο ένα ζευγάρι αντίσταση των 875 Ohm (οριζόντια όπως βλέπουμε στην παρακάτω φωτογραφία) και 305 στο άλλο (κάθετα όπως βλέπουμε στην παρακάτω φωτογραφία).

DSC02582 DSC02583

Η λογική για την εύρεση των συντεταγμένων είναι αρκετά απλή. Για τον άξονα των Χ… Συνδέουμε τα καλώδια του άξονα Χ (αυτά με την αντίσταση των 875 Ohm για παράδειγμα) μεταξύ γείωσης και 5 volts (τα συνδέουμε σε δύο pin του μικροελεγκτή που το ένα θα είναι σε λογικό high και το άλλο σε λογικό Low). Από το άλλο ζευγάρι (που θα είναι ο άξονας Y πλέον) το ένα το αφήνουμε ασύνδετο (πχ. σε ένα pin σε υψηλή σύνθετη αντίσταση, High-Z) και στο άλλο μετράμε την τάση του (το συνδέουμε σε ένα pin του ADC του μικροελεγκτή μας).

X-X

Στην ουσία έχουμε ένα ποτενσιόμετρο. Μετρώντας την τάση στην έξοδο του ποτενσιόμετρου (που για τις δύο ακραίες θέσης θα κυμαίνεται από 5 έως 0 volts) μπορούμε να εξάγουμε κάποιο συμπέρασμα για την θέση του δρομέα. Έτσι αν για παράδειγμα ο ADC “διαβάσει” μία τάση των 2,5 volts τότε ξέρουμε πως υπάρχει πίεση στο μέσον του άξονα X.

DSC02576 DSC02577 DSC02578

Ομοίως εργαζόμαστε και για τον άξονα των Υ. Συνδέουμε τα καλώδια του άξονα Υ (αυτά με την αντίσταση των 305 Ohm) μεταξύ γείωσης και 5 volts (τα συνδέουμε σε δύο pin του μικροελεγκτή που το ένα θα είναι σε λογικό high και το άλλο σε λογικό Low). Από το άλλο ζευγάρι το ένα το αφήνουμε ασύνδετο (πχ. σε ένα pin σε υψηλή σύνθετη αντίσταση, High-Z) και στο άλλο μετράμε την τάση του (το συνδέουμε σε ένα pin του ADC του μικροελεγκτή μας).

Y-Y

DSC02579 DSC02580 DSC02581

Η τάση που μετρά ο ADC θα έχει σχέση με την μέγιστη τιμή του ADC (αν είναι των 10 bit θα είναι ADCMAX=1024) την τάση αναφορά (Vref που είναι ίδια με την Vcc στην περίπτωσή μας) και την τρέχουσα τιμή που έχει ο ADC (ADCX). Από την δράση όμως του ποτενσιόμετρου ξέρουμε πως η τάση που μετρά ο ADC είναι ανάλογη και της τρέχουσας θέσεως (Χ) και τους μήκους του ποτενσιόμετρου (XLength). Από τις δύο αυτές αυτές σχέσεις μπορούμε να υπολογίσουμε την θέση πίεσης στην επιφάνεια αφής (τα ίδια ισχύουν και για τον άξονα Y).

eq-1

Σε τέτοιες επιφάνειες αφής (με τέσσερα καλώδια) μπορούμε να υπολογίσουμε και πόση πίεση εφαρμόζεται. Να έχουμε πληροφορίες για τον άξονα Z δηλαδή. Όταν εφαρμόζεται πίεση σε κάποιο σημείο της οθόνης, τότε στο σημείο αυτό δημιουργείται μία ωμική αντίσταση. Η τιμή της εξαρτάται από την πίεση. Αν υπολογίσουμε την τιμή της αντίστασης αυτής μπορούμε να εξάγουμε κάποιο αποτέλεσμα για το αν υπάρχει πίεση στην οθόνη.

touch

Για να υπολογίσουμε την αντίσταση αυτή (έστω RTouch) εργαζόμαστε ως εξής. Συνδέουμε το ένα καλώδιο του Χ στην γείωση το άλλο σε μία είσοδο του ADC, το ένα καλώδιο του Υ στην τροφοδοσία και το άλλο σε μία είσοδο του ADC. Παίρνουμε μέτρηση στα δύο κανάλια του ADC. Έτσι ξέρουμε την τάση στα άκρα της Rtouch.

Αν ονομάσουμε τα καλώδια Xa, Xb και Ya, Yb τότε πρέπει να γίνουν οι παρακάτω συνδέσεις για να μετρήσουμε την RTouch.

circuit-1

Για τις τάσεις στα άκρα της RTouch (Την τάση στο σημείο Z1 και στο σημείο Z2), από την εφαρμογή των σχέσεων ενός διαιρέτη τάσης και της τάσης σε σχέση με τις τιμές του ADC προκύπτουν τα παρακάτω.

eq-2

Κατά την μέτρηση για την θέση του άξονα Χ υλοποιείται στην ουσία το παρακάτω κύκλωμα.

circuit-2

Χρησιμοποιώντας πάλι τις σχέσεις ενός διαιρέτη τάσης και της τάσης σε σχέση με τις τιμές του ADC προκύπτουν τα παρακάτω.

eq-3

Χρησιμοποιώντας τις παραπάνω σχέσεις και λύνοντας για την RTouch, καταλήγουμε στην παρακάτω σχέση. Όπου RTotal η ολική αντίσταση του άξονα Χ (875 Ohm), ADCMAX η μέγιστη τιμή που μπορεί να πάρει ο ADC (για τον ATmega328p είναι 1024, 210), ADCX η τιμή του ADC κατά την ανάγνωση της θέσεως X και ADCZ1, ADCZ2 οι τιμές του ADC κατά την μέτρηση στα άκρα της RTouch (κάντε “κλικ” ΕΔΩ για να δείτε όλες τις πράξεις).

eq-4

Για όλες τις μετρήσεις, για το αν ασκείται και που ασκείται πίεση στην επιφάνεια, τα τέσσερα καλώδια (Xa, Xb, Ya, Yb) πρέπει να συνδέονται με τον τρόπο που βλέπουμε στον παρακάτω πίνακα.

table-1

Από τα παραπάνω βλέπουμε πως τα καλώδια Xb και Yb θα είναι πάντα ή σε λογικό 0 (GND) ή σε λογικό 1 (Vcc) ή σε υψηλή σύνθετη αντίσταση εισόδου (High-Z). Οπότε μπορούν να συνδεθούν σε οποιαδήποτε από τις ψηφιακές εισόδους/εξόδους του μικροελεγκτή (πχ. το Xb στο PB0 και το Yb στο PB1). Τα Xa και Ya μπορούν να συνδεθούν σε δύο από τα κανάλια του ADC (πχ. το Xa στο PC0 και το Ya στο PC1).

Συνεχίζεται…

Advertisements
This entry was posted in AVR, Electronics, Science and tagged , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s