Σε αυτό το σεμινάριο πρόκειται να συνδέσουμε μια μονάδα χειριστηρίου με τον μικροελεγκτή atmega8. Το JOY STICK είναι μια μονάδα εισόδου που χρησιμοποιείται για επικοινωνία. Βασικά διευκολύνει την επικοινωνία μηχανών χρήστη. Ένα χειριστήριο φαίνεται στο παρακάτω σχήμα.
Η μονάδα χειριστηρίου έχει δύο άξονες - ένας είναι οριζόντιος και άλλος κάθετος. Κάθε άξονας χειριστηρίου προσαρμόζεται σε ποτενσιόμετρο ή δοχείο ή μεταβλητή αντίσταση. Τα μεσαία σημεία πέφτουν ως Rx και Ry. Αυτές οι ακίδες φέρουν ως ακίδες σήματος εξόδου για το JOYSTICK. Όταν το ραβδί κινείται κατά μήκος του οριζόντιου άξονα, με την τάση τροφοδοσίας να υπάρχει, η τάση στον πείρο Rx αλλάζει.
Η τάση στο Rx αυξάνεται όταν κινείται προς τα εμπρός, η τάση στο πείρο Rx μειώνεται όταν κινείται προς τα πίσω. Ομοίως, η τάση στο Ry αυξάνεται όταν κινείται προς τα πάνω, η τάση στο Ry pin μειώνεται όταν κινείται προς τα κάτω.
Έχουμε λοιπόν τέσσερις κατευθύνσεις του JOYSTICK σε δύο κανάλια ADC. Σε κανονικές περιπτώσεις έχουμε 1Volt σε κάθε πείρο υπό κανονικές συνθήκες. Όταν το ραβδί κινείται, η τάση σε κάθε πείρο πηγαίνει υψηλή ή χαμηλή ανάλογα με την κατεύθυνση. Έτσι τέσσερις κατευθύνσεις όπως (0V, 5V στο κανάλι 0) για τον άξονα x. (0V, 5V στο κανάλι 1) για τον άξονα y.
Θα χρησιμοποιήσουμε δύο κανάλια ADC του ATMEGA8 για να κάνουμε τη δουλειά. Θα χρησιμοποιήσουμε το κανάλι 0 και το κανάλι 1.
Απαιτούμενα στοιχεία
Υλικό: ATMEGA8, τροφοδοτικό (5v), AVR-ISP PROGRAMMER, LED (4 τεμάχια), 1000uF πυκνωτής, 100nF πυκνωτής (5 τεμάχια), 1KΩ αντίσταση (6 τεμάχια).
Λογισμικό: Atmel studio 6.1, progisp ή flash magic.
Διάγραμμα κυκλώματος και εξήγηση εργασίας
Η τάση στο JOYSTICK δεν είναι εντελώς γραμμική. θα είναι θορυβώδες. Για να φιλτράρετε τον θόρυβο τοποθετούνται πυκνωτές σε κάθε αντίσταση στο κύκλωμα όπως φαίνεται στο σχήμα.
Όπως φαίνεται στο σχήμα, υπάρχουν τέσσερα LED στο κύκλωμα. Κάθε LED αντιπροσωπεύει κάθε κατεύθυνση του JOYSTICK. Όταν το ραβδί κινείται προς μια κατεύθυνση, τότε το αντίστοιχο LED ανάβει.
Πριν προχωρήσουμε περισσότερο πρέπει να μιλήσουμε για ADC του ATMEGA8, Στο ATMEGA8, μπορούμε να δώσουμε αναλογική είσοδο σε οποιοδήποτε από τα τέσσερα κανάλια του PORTC, δεν έχει σημασία ποιο κανάλι επιλέγουμε καθώς όλα είναι ίδια, θα επιλέξουμε το κανάλι 0 ή το PIN0 του PORTC.
Στο ATMEGA8, το ADC έχει ανάλυση 10 bit, οπότε ο ελεγκτής μπορεί να ανιχνεύσει μια αίσθηση μιας ελάχιστης αλλαγής Vref / 2 ^ 10, οπότε αν η τάση αναφοράς είναι 5V λαμβάνουμε μια αύξηση ψηφιακής εξόδου για κάθε 5/2 ^ 10 = 5mV. Έτσι, για κάθε αύξηση 5mV στην είσοδο, θα έχουμε μια αύξηση στην ψηφιακή έξοδο.
Τώρα πρέπει να ορίσουμε το μητρώο ADC με βάση τους ακόλουθους όρους, 1. Πρώτα απ 'όλα πρέπει να ενεργοποιήσουμε τη δυνατότητα ADC στο ADC.
2. Εδώ θα λάβετε μια μέγιστη τάση εισόδου για μετατροπή ADC είναι + 5V. Έτσι μπορούμε να ρυθμίσουμε τη μέγιστη τιμή ή αναφορά του ADC σε 5V.
3. Ο ελεγκτής διαθέτει δυνατότητα μετατροπής σκανδάλης που σημαίνει ότι η μετατροπή ADC πραγματοποιείται μόνο μετά από εξωτερική σκανδάλη, καθώς δεν θέλουμε να χρειαστεί να ρυθμίσουμε τα μητρώα ώστε το ADC να λειτουργεί σε συνεχή λειτουργία ελεύθερης λειτουργίας.
4. Για κάθε ADC, η συχνότητα μετατροπής (αναλογική τιμή σε ψηφιακή τιμή) και η ακρίβεια της ψηφιακής εξόδου είναι αντιστρόφως ανάλογες. Έτσι, για καλύτερη ακρίβεια της ψηφιακής εξόδου πρέπει να επιλέξουμε μικρότερη συχνότητα. Για κανονικό ρολόι ADC ρυθμίζουμε την προπώληση του ADC στη μέγιστη τιμή (2). Δεδομένου ότι χρησιμοποιούμε το εσωτερικό ρολόι 1MHZ, το ρολόι ADC θα είναι (1000000/2).
Αυτά είναι τα μόνα τέσσερα πράγματα που πρέπει να γνωρίζουμε για να ξεκινήσουμε με το ADC.
Όλα τα παραπάνω τέσσερα χαρακτηριστικά ορίζονται από δύο καταχωρητές:
ΚΟΚΚΙΝΟ (ADEN): Αυτό το bit πρέπει να ρυθμιστεί για την ενεργοποίηση της δυνατότητας ADC του ATMEGA.
ΜΠΛΕ (REFS1, REFS0): Αυτά τα δύο bit χρησιμοποιούνται για τον καθορισμό της τάσης αναφοράς (ή της μέγιστης τάσης εισόδου που πρόκειται να δώσουμε). Επειδή θέλουμε να έχουμε τάση αναφοράς 5V, πρέπει να ρυθμιστεί το REFS0 από τον πίνακα.
ΚΙΤΡΙΝΟ (ADFR): Αυτό το bit πρέπει να ρυθμιστεί ώστε το ADC να λειτουργεί συνεχώς (λειτουργία ελεύθερης λειτουργίας).
PINK (MUX0-MUX3): Αυτά τα τέσσερα bits προορίζονται για το κανάλι εισόδου. Δεδομένου ότι πρόκειται να χρησιμοποιήσουμε ADC0 ή PIN0, δεν χρειάζεται να ορίσουμε bits όπως στον πίνακα.
BROWN (ADPS0-ADPS2): αυτά τα τρία bits είναι για τη ρύθμιση της προεπιλογής για ADC. Δεδομένου ότι χρησιμοποιούμε ένα πρόβατο 2, πρέπει να ορίσουμε ένα bit.
DARK GREEN (ADSC): αυτό το bit έχει ρυθμιστεί για να ξεκινήσει η μετατροπή το ADC. Αυτό το bit μπορεί να απενεργοποιηθεί στο πρόγραμμα όταν πρέπει να σταματήσουμε τη μετατροπή.