Σε αυτό το σεμινάριο πρόκειται να συνδέσουμε τον αισθητήρα FLEX με τον μικροελεγκτή ATMEGA8. Στο ATMEGA8, χρησιμοποιούμε τη λειτουργία 10bit ADC (Αναλογική σε ψηφιακή μετατροπή) για να κάνουμε αυτήν τη δουλειά. Τώρα το ADC στο ATMEGA δεν μπορεί να λάβει είσοδο περισσότερο από + 5V.
Τι είναι ο αισθητήρας Flex;
Ένας αισθητήρας FLEX είναι ένας μορφοτροπέας που αλλάζει την αντίστασή του όταν αλλάζει το σχήμα του. Εμφανίζεται στο παρακάτω σχήμα.
Αυτός ο αισθητήρας χρησιμοποιείται για την ανίχνευση των αλλαγών στη γραμμικότητα. Έτσι, όταν ο αισθητήρας FLEX κάμπτεται, η αντίσταση κάμπτεται δραστικά. Αυτό φαίνεται στο παρακάτω σχήμα.
Τώρα για τη μετατροπή αυτής της αλλαγής στην αντίσταση σε αλλαγή τάσης, πρόκειται να χρησιμοποιήσουμε ένα κύκλωμα διαχωριστή τάσης. Σε αυτό το δίκτυο αντίστασης έχουμε μία σταθερή αντίσταση και άλλη μεταβλητή αντίσταση. Όπως φαίνεται στο παρακάτω σχήμα, το R1 εδώ είναι μια σταθερή αντίσταση και το R2 είναι ένας αισθητήρας FLEX που λειτουργεί ως αντίσταση. Το μεσαίο σημείο του κλαδιού μετράται. Όταν αλλάζει η αντίσταση R2, ο Vout αλλάζει γραμμικά. Έτσι με αυτό έχουμε μια τάση που αλλάζει με τη γραμμικότητα.
Τώρα σημαντικό που πρέπει να σημειωθεί εδώ είναι ότι η είσοδος που έχει ληφθεί από τον ελεγκτή για μετατροπή ADC είναι τόσο χαμηλή όσο 50 μAmp. Αυτό το φαινόμενο φόρτωσης του διαχωριστή τάσης με βάση την αντίσταση είναι σημαντικό καθώς το ρεύμα που αντλείται από το Vout του διαχωριστή τάσης αυξάνει το ποσοστό σφάλματος, προς το παρόν δεν χρειάζεται να ανησυχούμε για το φαινόμενο φόρτωσης.
Θα πάρουμε δύο αντιστάσεις και θα διαμορφώσουμε ένα κύκλωμα διαχωριστή έτσι ώστε για ένα VV 25Volts, θα έχουμε 5 Volt Vout. Επομένως, το μόνο που πρέπει να κάνουμε είναι να πολλαπλασιάσουμε την τιμή Vout με "5" στο πρόγραμμα για να λάβουμε την πραγματική τάση εισόδου.
Απαιτούμενα στοιχεία
ΥΛΙΚΟ: ATMEGA8, Τροφοδοσία (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16x2LCD), 100uF πυκνωτής, 100nF πυκνωτής (5 τεμάχια), 100KΩ αντίσταση.
ΛΟΓΙΣΜΙΚΟ: Atmel studio 6.1, progisp ή flash magic.
Διάγραμμα κυκλώματος και εξήγηση εργασίας
Στο κύκλωμα το PORTD του ATMEGA8 συνδέεται με τη θύρα δεδομένων LCD. Σε LCD 16x2 υπάρχουν 16 ακίδες πάνω από όλα αν υπάρχει οπίσθιο φως, εάν δεν υπάρχει πίσω φως θα υπάρχουν 14 ακίδες. Κάποιος μπορεί να τροφοδοτήσει ή να αφήσει τις πίσω ακίδες. Τώρα στις 14 ακίδες υπάρχουν 8 ακίδες δεδομένων (7-14 ή D0-D7), 2 ακροδέκτες τροφοδοσίας (1 & 2 ή VSS & VDD ή gnd & + 5v), 3ος ακροδέκτης για έλεγχο αντίθεσης (VEE-ελέγχει πόσο παχύς πρέπει να είναι οι χαρακτήρες φαίνεται) και 3 ακίδες ελέγχου (RS & RW & E).
Στο κύκλωμα, μπορείτε να παρατηρήσετε ότι έχω πάρει μόνο δύο ακίδες ελέγχου. Το bit αντίθεσης και το READ / WRITE δεν χρησιμοποιούνται συχνά, ώστε να μπορούν να βραχυκυκλωθούν στη γείωση. Αυτό θέτει την οθόνη LCD σε υψηλότερη αντίθεση και λειτουργία ανάγνωσης. Πρέπει απλώς να ελέγξουμε ENABLE και RS καρφίτσες για να στείλουμε ανάλογα χαρακτήρες και δεδομένα.
Οι συνδέσεις LCD με ATmega8 έχουν ως εξής:
PIN1 ή VSS στη γείωση
PIN2 ή VDD ή VCC σε ισχύ + 5v
PIN3 ή VEE στη Γείωση (δίνει τη μέγιστη αντίθεση καλύτερα για έναν αρχάριο)
PIN4 ή RS (Επιλογή καταχώρησης) στο PB0 του uC
PIN5 ή RW (Ανάγνωση / Εγγραφή) στη Γείωση (θέτει την οθόνη LCD σε λειτουργία ανάγνωσης διευκολύνει την επικοινωνία για τον χρήστη)
PIN6 ή E (Ενεργοποίηση) στο PB1 του uC
PIN7 ή D0 έως PD0 του uC
PIN8 ή D1 έως PD1 του uC
PIN9 ή D2 έως PD2 του uC
PIN10 ή D3 έως PD3 του uC
PIN11 ή D4 έως D4 του uC
PIN12 ή D5 έως PD5 του uC
PIN13 ή D6 έως PD6 του uC
PIN14 ή D7 έως PD7 του uC
Στο κύκλωμα μπορείτε να δείτε ότι χρησιμοποιήσαμε την επικοινωνία 8 bit (D0-D7), ωστόσο αυτό δεν είναι υποχρεωτικό, μπορούμε να χρησιμοποιήσουμε την επικοινωνία 4bit (D4-D7), αλλά με το πρόγραμμα επικοινωνίας 4 bit γίνεται λίγο περίπλοκο, οπότε πήγαμε με 8 bit επικοινωνία. (Ελέγξτε επίσης αυτό το σεμινάριο: διασύνδεση LCD 16x2 με μικροελεγκτή AVR)
Έτσι από απλή παρατήρηση από τον παραπάνω πίνακα συνδέουμε 10 ακίδες LCD με ελεγκτή, όπου 8 ακίδες είναι καρφίτσες δεδομένων και 2 ακίδες για έλεγχο.
Η τάση στο R2 δεν είναι εντελώς γραμμική. θα είναι θορυβώδες. Για να φιλτράρετε τους πυκνωτές θορύβου τοποθετούνται σε κάθε αντίσταση στο κύκλωμα διαχωριστή όπως φαίνεται στο σχήμα.
Το δοχείο 1K εδώ είναι να προσαρμόσετε την ακρίβεια του ADC. Τώρα ας συζητήσουμε για το 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 μπορεί να απενεργοποιηθεί στο πρόγραμμα όταν πρέπει να σταματήσουμε τη μετατροπή.
Η διασύνδεση αισθητήρα FLEX με ATmega8 εξηγείται βήμα προς βήμα στον κώδικα C που δίνεται παρακάτω.