- Απαιτούμενα στοιχεία και ρύθμιση υλικού
- Διάγραμμα κυκλώματος Nuvoton N76E003 για ανάγνωση αναλογικής τάσης
- Πληροφορίες για GPIO και αναλογικές καρφίτσες στο N76E003
- Πληροφορίες για ADC Peripheral στο N76E003
- Προγραμματισμός N76E003 για ADC
- Αναβοσβήνει ο κωδικός και η έξοδος
Ο αναλογικός σε ψηφιακός μετατροπέας (ADC) είναι η πιο συχνά χρησιμοποιούμενη δυνατότητα υλικού σε έναν μικροελεγκτή. Παίρνει αναλογική τάση και τη μετατρέπει σε ψηφιακή τιμή. Δεδομένου ότι οι μικροελεγκτές είναι ψηφιακές συσκευές και λειτουργούν με το δυαδικό ψηφίο 1 και 0, δεν θα μπορούσε να επεξεργαστεί τα αναλογικά δεδομένα απευθείας. Έτσι, ένα ADC χρησιμοποιείται για να αναλάβει την αναλογική τάση και να το μετατρέψει σε ισοδύναμη ψηφιακή τιμή που μπορεί να κατανοήσει ένας μικροελεγκτής. Αν θέλετε περισσότερα σχετικά με τον Αναλογικό σε Ψηφιακό Μετατροπέα (ADC), μπορείτε να δείτε το άρθρο που είναι συνδεδεμένο.
Υπάρχουν διάφοροι αισθητήρες διαθέσιμοι στα ηλεκτρονικά που παρέχουν αναλογική έξοδο, όπως οι αισθητήρες αερίου MQ, ο αισθητήρας επιταχυνσιόμετρου ADXL335 κ.λπ. Έτσι, χρησιμοποιώντας τον μετατροπέα αναλογικού σε ψηφιακό, αυτοί οι αισθητήρες μπορούν να διασυνδεθούν με μια μονάδα μικροελεγκτή. Μπορείτε επίσης να δείτε άλλα μαθήματα που αναφέρονται παρακάτω, για τη χρήση ADC με άλλους μικροελεγκτές.
- Πώς να χρησιμοποιήσετε το ADC στο Arduino Uno;
- Διασύνδεση ADC0808 με 8051 μικροελεγκτή
- Χρήση της μονάδας ADC του μικροελεγκτή PIC
- Εκμάθηση Raspberry Pi ADC
- Πώς να χρησιμοποιήσετε το ADC στο MSP430G2 - Μέτρηση αναλογικής τάσης
- Πώς να χρησιμοποιήσετε το ADC στο STM32F103C8
Σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε το ενσωματωμένο περιφερειακό ADC της μονάδας μικροελεγκτή N76E003, οπότε ας αξιολογήσουμε τι είδους ρύθμιση υλικού χρειαζόμαστε για αυτήν την εφαρμογή.
Απαιτούμενα στοιχεία και ρύθμιση υλικού
Για να χρησιμοποιήσουμε το ADC στο N76E003, θα χρησιμοποιήσουμε ένα διαχωριστικό τάσης χρησιμοποιώντας ένα ποτενσιόμετρο και θα διαβάσουμε την τάση που κυμαίνεται από 0V-5.0V. Η τάση θα εμφανίζεται στην οθόνη LCD χαρακτήρων 16x2, εάν είστε νέοι με LCD και N76E003, μπορείτε να ελέγξετε τον τρόπο διασύνδεσης της οθόνης LCD με το Nuvoton N76E003. Έτσι, το κύριο συστατικό που απαιτείται για αυτό το έργο είναι 16x2 LCD χαρακτήρων. Για αυτό το έργο, θα χρησιμοποιήσουμε τα παρακάτω στοιχεία-
- Χαρακτήρας LCD 16x2
- 1 k αντίσταση
- Ποτενσιόμετρο 50k ή κατσαρόλα
- Λίγα καλώδια Berg
- Λίγα καλώδια σύνδεσης
- Ψωμί
Για να μην αναφέρουμε, εκτός από τα παραπάνω στοιχεία, χρειαζόμαστε την πλακέτα ανάπτυξης με βάση τον μικροελεγκτή N76E003, καθώς και τον προγραμματιστή Nu-Link. Απαιτείται επίσης μια πρόσθετη μονάδα τροφοδοσίας 5V καθώς η LCD αντλεί επαρκές ρεύμα που δεν μπορούσε να προσφέρει ο προγραμματιστής.
Διάγραμμα κυκλώματος Nuvoton N76E003 για ανάγνωση αναλογικής τάσης
Όπως μπορούμε να δούμε στο σχήμα, η θύρα P0 χρησιμοποιείται για τη σύνδεση που σχετίζεται με την οθόνη LCD. Αριστερά αριστερά, εμφανίζεται η σύνδεση διεπαφής προγραμματισμού. Το ποτενσιόμετρο λειτουργεί ως διαχωριστής τάσης και αυτό ανιχνεύεται από την αναλογική είσοδο 0 (AN0).
Πληροφορίες για GPIO και αναλογικές καρφίτσες στο N76E003
Η παρακάτω εικόνα δείχνει τις ακίδες GPIO που είναι διαθέσιμες στη μονάδα μικροελεγκτή N76E003AT20. Ωστόσο, από τους 20 ακροδέκτες, Για τη σύνδεση που σχετίζεται με την LCD, χρησιμοποιείται η θύρα P0 (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6 και P0.7). Οι αναλογικές ακίδες επισημαίνονται με κόκκινα χρώματα.
Όπως μπορούμε να δούμε, η θύρα P0 έχει μέγιστες αναλογικές ακίδες, αλλά αυτές χρησιμοποιούνται για επικοινωνία που σχετίζεται με την οθόνη LCD. Έτσι, τα P3.0 και P1.7 είναι διαθέσιμα ως αναλογικοί ακροδέκτες εισόδου AIN1 και AIN0. Καθώς αυτό το έργο απαιτεί μόνο έναν αναλογικό πείρο, το P1.7 που είναι το αναλογικό κανάλι εισόδου 0, χρησιμοποιείται για αυτό το έργο.
Πληροφορίες για ADC Peripheral στο N76E003
Το N76E003 παρέχει 12-bit SAR ADC. Είναι ένα πολύ καλό χαρακτηριστικό του N76E003 που έχει μια πολύ καλή ανάλυση του ADC. Το ADC διαθέτει εισόδους 8 καναλιών σε λειτουργία ενός άκρου. Η διασύνδεση του ADC είναι πολύ απλή και απλή.
Το πρώτο βήμα είναι να επιλέξετε την είσοδο καναλιού ADC. Υπάρχουν είσοδοι 8 καναλιών διαθέσιμα στους μικροελεγκτές N76E003. Αφού επιλέξετε τις εισόδους ADC ή τους ακροδέκτες I / O, όλοι οι ακροδέκτες πρέπει να ρυθμιστούν για την κατεύθυνση στον κώδικα. Όλες οι ακίδες που χρησιμοποιούνται για την αναλογική είσοδο είναι ακίδες εισόδου του μικροελεγκτή, επομένως όλοι οι ακροδέκτες πρέπει να οριστούν ως λειτουργία μόνο εισόδου (υψηλή αντίσταση). Αυτά μπορούν να ρυθμιστούν χρησιμοποιώντας τον καταχωρητή PxM1 και PxM2. Αυτοί οι δύο καταχωρητές ορίζουν τις λειτουργίες I / O όπου το x αντιπροσωπεύει τον αριθμό θύρας (Για παράδειγμα, η θύρα P1.0 ο καταχωρητής θα είναι P1M1 και P1M2, για P3.0 θα είναι P3M1 και P3M2 κ.λπ.) Η διαμόρφωση μπορεί φαίνεται στην παρακάτω εικόνα-
Η διαμόρφωση του ADC γίνεται από δύο καταχωρητές ADCCON0 και ADCCON1. Η περιγραφή ADCCON0 Register εμφανίζεται παρακάτω.
Τα πρώτα 4 bit του καταχωρητή από το bit 0 έως το bit 3 χρησιμοποιούνται για τη ρύθμιση της επιλογής καναλιού ADC. Εφόσον χρησιμοποιούμε το κανάλι AIN0, η επιλογή θα είναι 0000 για αυτά τα τέσσερα bits.
Το 6ο και το 7ο κομμάτια είναι τα σημαντικότερα. Το ADCS απαιτείται να ορίσει 1 για την έναρξη της μετατροπής ADC και το ADCF θα παρέχει πληροφορίες σχετικά με την επιτυχή μετατροπή ADC. Πρέπει να οριστεί 0 από το υλικολογισμικό για να ξεκινήσει η μετατροπή ADC. Το επόμενο μητρώο είναι το ADCCON1-
Ο καταχωρητής ADCCON1 χρησιμοποιείται κυρίως για τη μετατροπή ADC που ενεργοποιείται από εξωτερικές πηγές. Ωστόσο, για κανονικές λειτουργίες που σχετίζονται με την ψηφοφορία, το ADCEN πρώτου bit απαιτείται να ρυθμίσει το 1 για ενεργοποίηση του κυκλώματος ADC.
Στη συνέχεια, η είσοδος του καναλιού ADC πρέπει να ελεγχθεί στο μητρώο AINDIDS όπου μπορούν να αποσυνδεθούν οι ψηφιακές είσοδοι.
Το n σημαίνει bit του καναλιού (Για παράδειγμα, το κανάλι AIN0 θα πρέπει να ελεγχθεί χρησιμοποιώντας το πρώτο bit P17DIDS του μητρώου AINDIDS). Η ψηφιακή είσοδος πρέπει να είναι ενεργοποιημένη, διαφορετικά, θα διαβαστεί ως 0. Όλα αυτά είναι η βασική ρύθμιση του ADC. Τώρα, μπορεί να ξεκινήσει η εκκαθάριση του ADCF και η ρύθμιση του ADCS της μετατροπής ADC. Η τιμή μετατροπής θα είναι διαθέσιμη στους παρακάτω καταχωρητές-
Και
Και οι δύο καταχωρητές είναι 8-bit. Καθώς το ADC παρέχει δεδομένα 12-bit, το ADCRH χρησιμοποιείται ως πλήρες (8-bit) και το ADCRL χρησιμοποιείται ως μισό (4-bit).
Προγραμματισμός N76E003 για ADC
Η κωδικοποίηση για μια συγκεκριμένη μονάδα κάθε φορά είναι μια ταραχώδης δουλειά, επομένως παρέχεται μια απλή αλλά ισχυρή βιβλιοθήκη LCD που θα είναι πολύ χρήσιμη για διασύνδεση LCD 16x2 χαρακτήρων με N76E003 Η βιβλιοθήκη LCD 16x2 διατίθεται στο αποθετήριο Github, το οποίο μπορείτε να κατεβάσετε από τον παρακάτω σύνδεσμο.
Κατεβάστε τη βιβλιοθήκη LCD 16x2 για το Nuvoton N76E003
Παρακαλούμε να έχετε τη βιβλιοθήκη (με κλωνοποίηση ή λήψη) και απλώς συμπεριλάβετε τα αρχεία lcd.c και LCD.h στο έργο Keil N76E003 για εύκολη ενσωμάτωση της οθόνης 16x2 LCD στην επιθυμητή εφαρμογή ή έργο. Η βιβλιοθήκη θα παρέχει τις ακόλουθες χρήσιμες λειτουργίες που σχετίζονται με την οθόνη-
- Αρχικοποιήστε την οθόνη LCD.
- Αποστολή εντολής στην οθόνη LCD.
- Γράψτε στην οθόνη LCD.
- Τοποθετήστε μια συμβολοσειρά στην οθόνη LCD (16 χαρακτήρες).
- Εκτυπώστε χαρακτήρα στέλνοντας δεκαεξαδική τιμή.
- Κύλιση μεγάλων μηνυμάτων με περισσότερους από 16 χαρακτήρες.
- Εκτυπώστε ακέραιους αριθμούς απευθείας στην οθόνη LCD.
Η κωδικοποίηση για ADC είναι απλή. Στη λειτουργία εγκατάστασης Enable_ADC_AIN0; χρησιμοποιείται για τη ρύθμιση του ADC για είσοδο AIN0 . Αυτό ορίζεται στο αρχείο.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
Έτσι, η παραπάνω γραμμή ορίζει τον πείρο ως είσοδο και διαμορφώνει τον καταχωρητή ADCCON0, ADCCON1 καθώς και τον καταχωρητή AINDIDS . Η παρακάτω συνάρτηση θα διαβάσει το ADC από την ADCRH και ADCRL μητρώο, αλλά με 12-bit ανάλυση.
unsigned int ADC_read (void) { register unsigned int adc_value = 0x0000; clr_ADCF; σύνολο_ADCS; ενώ (ADCF == 0); adc_value = ADCRH; adc_value << = 4; adc_value - = ADCRL; επιστροφή adc_value; }
Το bit μετατοπίζεται αριστερά 4 φορές και στη συνέχεια προστίθεται στη μεταβλητή δεδομένων. Στην κύρια λειτουργία, το ADC διαβάζει τα δεδομένα και εκτυπώνεται απευθείας στην οθόνη. Ωστόσο, η τάση μετατρέπεται επίσης χρησιμοποιώντας μια αναλογία ή τη σχέση μεταξύ τάσης διαιρεμένη με την τιμή bit.
Ένα 12-bit ADC θα παρέχει 4095 bit σε είσοδο 5.0V. Διαιρώντας έτσι το 5.0V / 4095 = 0.0012210012210012V
Έτσι, 1 ψηφίο αλλαγών bit θα είναι ίσο με τις αλλαγές στα 0,001V (περίπου). Αυτό γίνεται στην κύρια λειτουργία που φαίνεται παρακάτω.
void main (void) { int adc_data; ρύθμιση (); lcd_com (0x01); ενώ (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("Δεδομένα ADC:"); adc_data = ADC_read (); lcd_print_number (adc_data); τάση = adc_data * bit_to_voltage_ratio; sprintf (str_voltage, "Volt:% 0.2fV", τάση); lcd_com (0xC0); lcd_puts (str_voltage); Χρονόμετρο0_Delay1ms (500); } }
Τα δεδομένα μετατρέπονται από την τιμή bit σε τάση και χρησιμοποιώντας μια συνάρτηση sprintf , η έξοδος μετατρέπεται σε συμβολοσειρά και αποστέλλεται στην οθόνη LCD.
Αναβοσβήνει ο κωδικός και η έξοδος
Ο κωδικός επέστρεψε 0 προειδοποίηση και 0 σφάλματα και αναβοσβήνει χρησιμοποιώντας την προεπιλεγμένη μέθοδο αναβοσβήνει από το Keil, μπορείτε να δείτε το μήνυμα που αναβοσβήνει παρακάτω. Εάν είστε νέοι στο Keil ή το Nuvoton, ρίξτε μια ματιά στο ξεκίνημα με τον μικροελεγκτή Nuvoton για να κατανοήσετε τα βασικά και πώς να ανεβάσετε τον κώδικα.
Ξεκίνησε η ανακατασκευή: Project: timer Rebuild target 'Target 1' assembling STARTUP.A51… compiling main.c… compiling lcd.c… compiling Delay.c… linking… Program Size: data = 101.3 xdata = 0 code = 4162 δημιουργία δεκαεξαδικού αρχείου από ". \ Objects \ timer"… ". \ Objects \ timer" - 0 Error (s), 0 Warning (s). Χρόνος κατασκευής που έχει παρέλθει: 00:00:02 Φόρτωση "G: \\ n76E003 \\ Display \\ Objects \\ timer" Flash Erase Done. Flash Write Done: 4162 bytes προγραμματισμένο. Επαλήθευση Flash Έγινε: Επαληθεύτηκε 4162 byte. Το Flash Load ολοκληρώθηκε στις 11:56:04
Η παρακάτω εικόνα δείχνει το υλικό που είναι συνδεδεμένο στην πηγή τροφοδοσίας χρησιμοποιώντας έναν προσαρμογέα DC και η οθόνη δείχνει την έξοδο τάσης που έχει ρυθμιστεί από το ποτενσιόμετρο στα δεξιά.
Εάν γυρίσουμε το ποτενσιόμετρο, η τάση που δίνεται στον πείρο ADC θα αλλάξει επίσης και μπορούμε να παρατηρήσουμε την τιμή ADC και την αναλογική τάση που εμφανίζονται στην οθόνη LCD. Μπορείτε να δείτε το παρακάτω βίντεο για την πλήρη επίδειξη εργασίας αυτού του σεμιναρίου.
Ελπίζω να απολαύσατε το άρθρο και να μάθετε κάτι χρήσιμο, αν έχετε απορίες, αφήστε το στην παρακάτω ενότητα σχολίων ή μπορείτε να χρησιμοποιήσετε τα φόρουμ μας για να δημοσιεύσετε άλλες τεχνικές ερωτήσεις.