Πίνακας περιεχομένων:
- Βήμα 1: Τι είναι το ADC;
- Βήμα 2: Πώς λειτουργεί το ADC στο AVR- Μικροελεγκτή
- Βήμα 3: Τύπος μετατροπής ADC
- Βήμα 4: Πώς να διαμορφώσετε το ADC στο ATmega8;
- Βήμα 5: Επιλογή ADLAR
- Βήμα 6: Επιλογή ADCSRA
- Βήμα 7: Αν θέλετε να λάβετε την αξία ADC πρέπει να χρειαστείτε κάποια εργασία που παρατίθεται παρακάτω
- Βήμα 8: Ορίστε την τιμή ADC
- Βήμα 9: Διαμόρφωση πείρου LED εξόδου
- Βήμα 10: Διαμόρφωση υλικού ADC
- Βήμα 11: Ενεργοποίηση ADC
- Βήμα 12: Έναρξη αναλογικών προς ψηφιακές μετατροπές
- Βήμα 13: ΕΝΩ Για πάντα
- Βήμα 14: Στο τέλος Ο πλήρης κώδικας είναι
Βίντεο: Εισαγωγή στο ADC στον μικροελεγκτή AVR - για αρχάριους: 14 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Σε αυτό το σεμινάριο θα γνωρίζετε τα πάντα ADC στον μικροελεγκτή avr
Βήμα 1: Τι είναι το ADC;
Ένα ADC, ή Αναλογικό σε Digitalηφιακό Μετατροπέα, επιτρέπει σε κάποιον να μετατρέψει μια αναλογική τάση σε μια ψηφιακή τιμή που μπορεί να χρησιμοποιηθεί από έναν μικροελεγκτή. Υπάρχουν πολλές πηγές αναλογικών σημάτων που κάποιος θα ήθελε να μετρήσει. Υπάρχουν διαθέσιμοι αναλογικοί αισθητήρες που μετρούν τη θερμοκρασία, την ένταση του φωτός, την απόσταση, τη θέση και τη δύναμη, για να αναφέρουμε μερικά.
Βήμα 2: Πώς λειτουργεί το ADC στο AVR- Μικροελεγκτή
Το AVR ADC επιτρέπει στον μικροελεγκτή AVR να μετατρέπει αναλογικές τάσεις σε ψηφιακές τιμές με ελάχιστα έως καθόλου εξωτερικά μέρη. Το ATmega8 διαθέτει 10-bit διαδοχική προσέγγιση ADC. Το ATmega8 διαθέτει ADC 7 καναλιών στο PortC. Το ADC διαθέτει ξεχωριστό αναλογικό πείρο τάσης τροφοδοσίας, AVCC. Το AVCC δεν πρέπει να διαφέρει περισσότερο από ± 0.3V από το VCC. Η αναφορά τάσης μπορεί να αποσυνδεθεί εξωτερικά στον πείρο AREF. Το AVCC χρησιμοποιείται ως αναφορά τάσης. Το ADC μπορεί επίσης να ρυθμιστεί ώστε να λειτουργεί συνεχώς (η λειτουργία ελεύθερης λειτουργίας) ή να πραγματοποιεί μόνο μία μετατροπή.
Βήμα 3: Τύπος μετατροπής ADC
Όπου Vin είναι η τάση στον επιλεγμένο πείρο εισόδου και Vref η επιλεγμένη αναφορά τάσης
Βήμα 4: Πώς να διαμορφώσετε το ADC στο ATmega8;
Τα ακόλουθα Μητρώα χρησιμοποιούνται για την εφαρμογή του ADC στο ATmega8
Επιλογή ADP Multiplexer
Βήμα 5: Επιλογή ADLAR
Αποτέλεσμα αριστερής προσαρμογής ADC Το bit ADLAR επηρεάζει την παρουσίαση του αποτελέσματος μετατροπής ADC στο μητρώο δεδομένων ADC. Γράψτε ένα στο ADLAR προς τα αριστερά προσαρμόστε το αποτέλεσμα. Διαφορετικά, το αποτέλεσμα ρυθμίζεται σωστά
Όταν ολοκληρωθεί μια μετατροπή ADC, το αποτέλεσμα βρίσκεται στο ADCH και ADCL Όταν διαβάζεται το ADCL, το μητρώο δεδομένων ADC δεν ενημερώνεται μέχρι να διαβαστεί το ADCH. Κατά συνέπεια, εάν το αποτέλεσμα παραμείνει προσαρμοσμένο και δεν απαιτείται ακρίβεια άνω των 8 bit, αρκεί η ανάγνωση του ADCH. Διαφορετικά, πρέπει πρώτα να διαβαστεί το ADCL και μετά το ADCH. Μπιτ επιλογής αναλογικού καναλιού Η τιμή αυτών των δυαδικών ψηφίων επιλέγει ποιες αναλογικές είσοδοι είναι συνδεδεμένες στο ADC.
Βήμα 6: Επιλογή ADCSRA
• Bit 7 - ADEN: ADC Ενεργοποίηση Η εγγραφή αυτού του δυαδικού ψηφίου σε ένα ενεργοποιεί το ADC. Γράφοντας το στο μηδέν, το ADC απενεργοποιείται
• Bit 6 - ADSC: ADC Έναρξη μετατροπής Στη λειτουργία Single Conversion, γράψτε αυτό το bit σε ένα για να ξεκινήσει κάθε μετατροπή. Στη λειτουργία δωρεάν εκτέλεσης, γράψτε αυτό το bit σε ένα για να ξεκινήσει η πρώτη μετατροπή.
• Bit 5 - ADFR: ADC Free Running Select Όταν αυτό το bit έχει οριστεί (ένα), το ADC λειτουργεί σε λειτουργία ελεύθερης εκτέλεσης. Σε αυτήν τη λειτουργία, το ADC δοκιμάζει και ενημερώνει συνεχώς τους Καταχωρητές Δεδομένων. Η εκκαθάριση αυτού του bit (μηδέν) θα τερματίσει τη λειτουργία δωρεάν εκτέλεσης.
• Bit 4 - ADIF: ADC Interrupt Flag Αυτό το bit ορίζεται όταν ολοκληρωθεί μια μετατροπή ADC και ενημερωθούν οι καταχωρητές δεδομένων. Η πλήρης διακοπή μετατροπής ADC εκτελείται εάν οριστεί το bit ADIE και το bit του SREG. Το ADIF διαγράφεται από υλικό κατά την εκτέλεση του αντίστοιχου Διανύσματος Διαχείρισης διακοπών. Εναλλακτικά, το ADIF διαγράφεται γράφοντας ένα λογικό στη σημαία.
• Bit 3-ADIE: ADC Interrupt Enable Όταν αυτό το bit είναι γραμμένο σε ένα και έχει οριστεί το I-bit στο SREG, ενεργοποιείται το ADC Conversion Complete Interrupt.
• Bits 2: 0 - ADPS2: 0: ADC Prescaler Select Bits Σύμφωνα με το φύλλο δεδομένων, αυτό το prescalar πρέπει να ρυθμιστεί έτσι ώστε η συχνότητα εισόδου ADC να είναι μεταξύ 50 KHz και 200 KHz. Το ρολόι ADC προέρχεται από το ρολόι συστήματος με τη βοήθεια ADPS2: 0 Αυτά τα δυαδικά ψηφία καθορίζουν τον συντελεστή διαίρεσης μεταξύ της συχνότητας XTAL και του ρολογιού εισόδου στο ADC.
Βήμα 7: Αν θέλετε να λάβετε την αξία ADC πρέπει να χρειαστείτε κάποια εργασία που παρατίθεται παρακάτω
- Ορίστε την τιμή ADC
- Διαμόρφωση πείρου LED εξόδου
- Διαμόρφωση υλικού ADC
- Ενεργοποίηση ADC
- Έναρξη αναλογικών προς ψηφιακές μετατροπές
- ΕΝΩ Για πάντα
IF ADC Value Higher (Υψηλότερη τιμή) και, στη συνέχεια, ορισμός τιμής, Ενεργοποιήστε το LED ELSE Απενεργοποιήστε το LED
Βήμα 8: Ορίστε την τιμή ADC
Κωδικός: uint8_t ADCValue = 128;
Βήμα 9: Διαμόρφωση πείρου LED εξόδου
Κωδικός: DDRB | = (1 << PB1);
Βήμα 10: Διαμόρφωση υλικού ADC
Διαμόρφωση υλικού ADC
Αυτό γίνεται μέσω της ρύθμισης bit στα μητρώα ελέγχου για το ADC. Αρχικά, ας ορίσουμε το prescalar για το ADC. Σύμφωνα με το φύλλο δεδομένων, αυτό το prescalar πρέπει να ρυθμιστεί έτσι ώστε η συχνότητα εισόδου ADC να είναι μεταξύ 50 KHz και 200 KHz. Το ρολόι ADC προέρχεται από το ρολόι συστήματος. Με συχνότητα συστήματος 1MHz, ένας προ -ζυγοστάτης 8 θα έχει ως αποτέλεσμα μια συχνότητα ADC 125 Khz. Η προεπιλογή ρυθμίζεται από τα bit ADPS στο μητρώο ADCSRA. Σύμφωνα με το φύλλο δεδομένων, και τα τρία δυαδικά ψηφία ADPS2: 0 πρέπει να ρυθμιστούν σε 011 για να αποκτήσετε την προεπιλογή 8.
Κωδικός: ADCSRA | = (0 << ADPS2) | (1 << ADPS1] | (1 << ADPS0];
Στη συνέχεια, ας ορίσουμε την τάση αναφοράς ADC. Αυτό ελέγχεται από τα bit REFS στο μητρώο ADMUX. Τα παρακάτω ορίζουν την τάση αναφοράς σε AVCC.
Κωδικός: ADMUX | = (1 << REFS0];
Για να ρυθμίσετε το κανάλι που διέρχεται από τον πολυπλέκτη στο ADC, τα bit MUX στον καταχωρητή ADMUX πρέπει να ρυθμιστούν ανάλογα. Δεδομένου ότι χρησιμοποιούμε το ADC5 εδώ
Κωδικός: ADMUX & = 0xF0; ADMUX | = 5;
Για να θέσετε το ADC σε λειτουργία ελεύθερης λειτουργίας, ορίστε το εύστοχα ονομαζόμενο bit ADFR στο μητρώο ADCSRA:
Κωδικός: ADCSRA | = (1 << ADFR);
Μια τελευταία αλλαγή ρυθμίσεων θα γίνει για να γίνει πιο απλή η ανάγνωση της τιμής ADC. Αν και το ADC έχει ανάλυση 10 bits, αυτές οι πολλές πληροφορίες συχνά δεν είναι απαραίτητες. Αυτή η τιμή των 10 bit χωρίζεται σε δύο καταχωρητές 8 bit, ADCH και ADCL. Από προεπιλογή, τα χαμηλότερα 8 bit της τιμής ADC βρίσκονται στο ADCL, με τα δύο πάνω να είναι τα χαμηλότερα δύο bits του ADCH. Ρυθμίζοντας το bit ADLAR στον καταχωρητή ADMUX, μπορούμε να ευθυγραμμίσουμε αριστερά την τιμή ADC. Αυτό τοποθετεί τα υψηλότερα 8 bit της μέτρησης στον καταχωρητή ADCH, ενώ τα υπόλοιπα στον καταχωρητή ADCL. Εάν διαβάσουμε στη συνέχεια τον καταχωρητή ADCH, λαμβάνουμε μια τιμή 8 bit που αντιπροσωπεύει τη μέτρηση 0 έως 5 volt ως αριθμό από 0 έως 255. Βασικά μετατρέπουμε τη μέτρηση ADC των 10 bit σε 8 bit. Ακολουθεί ο κώδικας για να ορίσετε το bit ADLAR:
Κώδικας:
ADMUX | = (1 << ADLAR); Αυτό ολοκληρώνει τη ρύθμιση του υλικού ADC για αυτό το παράδειγμα. Δύο ακόμη bits πρέπει να ρυθμιστούν προτού το ADC αρχίσει να λαμβάνει μετρήσεις.
Βήμα 11: Ενεργοποίηση ADC
Για να ενεργοποιήσετε το ADC, ορίστε το bit ADEN στο ADCSRA:
Κωδικός: ADCSRA | = (1 << ADEN);
Βήμα 12: Έναρξη αναλογικών προς ψηφιακές μετατροπές
Για να ξεκινήσετε τις μετρήσεις ADC, το bit ADSC στο ADCSRA πρέπει να οριστεί:
Κωδικός: ADCSRA | = (1 << ADSC);
Σε αυτό το σημείο, το ADC θα ξεκινούσε συνεχώς τη δειγματοληψία της τάσης που παρουσιάζεται στο ADC5. Ο κώδικας σε αυτό το σημείο θα μοιάζει με αυτόν:
Βήμα 13: ΕΝΩ Για πάντα
Το μόνο που απομένει είναι να ελέγξετε την τιμή ADC και να ρυθμίσετε τις λυχνίες LED να εμφανίζουν ένδειξη υψηλής / χαμηλής ένδειξης. Δεδομένου ότι η ένδειξη ADC στο ADCH έχει μέγιστη τιμή 255, επιλέχθηκε μια τιμή δοκιμής του th για να προσδιοριστεί εάν η τάση ήταν υψηλή ή χαμηλή. Μια απλή δήλωση IF/ELSE στους βρόχους FOR θα μας επιτρέψει να ενεργοποιήσουμε το σωστό LED:
Κώδικας
εάν (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Ενεργοποιήστε το LED
}
αλλού
{
PORTB & = ~ (1 << PB0); // Απενεργοποιήστε το LED
}
Βήμα 14: Στο τέλος Ο πλήρης κώδικας είναι
Κώδικας:
#περιλαμβάνω
int main (άκυρο)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Ορίστε το LED1 ως έξοδο
ADCSRA | = (0 << ADPS2) | (1 << ADPS1] | (1 << ADPS0]; // Ρυθμίστε το ADC prescalar σε 8 - // 125KHz ρυθμός δείγματος 1MHz
ADMUX | = (1 << REFS0]; // Ορίστε την αναφορά ADC στο AVCC
ADMUX | = (1 << ADLAR); // Αριστερή ρύθμιση του αποτελέσματος ADC για εύκολη ανάγνωση 8 bit
ADMUX & = 0xF0;
ADMUX | = 5; // Οι τιμές MUX έπρεπε να αλλάξουν για τη χρήση του ADC0
ADCSRA | = (1 << ADFR); // Ορίστε το ADC σε λειτουργία ελεύθερης εκτέλεσης
ADCSRA | = (1 << ADEN); // Ενεργοποίηση ADC
ADCSRA | = (1 << ADSC); // Έναρξη μετατροπών A2D ενώ (1) // Loop Forever
{
εάν (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Ενεργοποιήστε το LED1
}
αλλού
{
PORTE & = ~ (1 << PB1); // Απενεργοποιήστε το LED1
}
}
επιστροφή 0?
}
Πρώτη δημοσίευση αυτού του σεμιναρίου Κάντε κλικ εδώ
Συνιστάται:
Εισαγωγή στον μικροελεγκτή CloudX: 3 βήματα
Εισαγωγή στον μικροελεγκτή CloudX: Ο μικροελεγκτής CloudX είναι ένα υλικό και λογισμικό ανοιχτού κώδικα μικροϋπολογιστής που σας επιτρέπει να δημιουργήσετε τα δικά σας διαδραστικά έργα. Το CloudX είναι ένας μικρός πίνακας τσιπ που επιτρέπει στους χρήστες να του πουν τι πρέπει να κάνει πριν προβεί σε οποιαδήποτε ενέργεια, δέχεται διαφορετικά k
Εισαγωγή στον προγραμματισμό του Raspberry Pi χωρίς κωδικοποίηση χεριών: 3 βήματα
Εισαγωγή στον προγραμματισμό του Raspberry Pi χωρίς χειροκίνητη κωδικοποίηση: Γεια, αυτό το διδακτικό θα σας δείξει πώς να μετατρέψετε το Raspberry Pi σε μια πλήρως προγραμματιζόμενη συσκευή αυτοματισμού συμβατή με γραφικά προσανατολισμένη γλώσσα προγραμματισμού για PLCs που ονομάζεται Function Block Diagram (μέρος του προτύπου IEC 61131-3). Αυτό μπορεί να είναι
AVR Μικροελεγκτή Fuse Bits Διαμόρφωση. Δημιουργία και μεταφόρτωση στη μνήμη flash του μικροελεγκτή του προγράμματος αναβοσβήνει LED .: 5 βήματα
AVR Μικροελεγκτή Fuse Bits Διαμόρφωση. Δημιουργία και μεταφόρτωση στο Flash Memory of Microcontroller του LED Blinking Program: Σε αυτή την περίπτωση θα δημιουργήσουμε απλό πρόγραμμα σε κώδικα C και θα το γράψουμε στη μνήμη του μικροελεγκτή. Θα γράψουμε το δικό μας πρόγραμμα και θα μεταγλωττίσουμε το εξάγωνο αρχείο, χρησιμοποιώντας το Atmel Studio ως ολοκληρωμένη πλατφόρμα ανάπτυξης. Θα διαμορφώσουμε την ασφάλεια bi
Πώς να φτιάξετε ένα ρομπότ ελεγχόμενο από κινητά - Με βάση το DTMF - Χωρίς μικροελεγκτή & προγραμματισμό - Έλεγχος από οπουδήποτε στον κόσμο - RoboGeeks: 15 βήματα
Πώς να φτιάξετε ένα ρομπότ ελεγχόμενο από κινητά | Με βάση το DTMF | Χωρίς μικροελεγκτή & προγραμματισμό | Έλεγχος από οπουδήποτε στον κόσμο | RoboGeeks: Θέλετε να φτιάξετε ένα ρομπότ που μπορεί να ελεγχθεί από οπουδήποτε στον κόσμο, Ας το κάνουμε
Εισαγωγή προσαρμοσμένων τρισδιάστατων μοντέλων στον κόσμο του Minecraft: 9 βήματα (με εικόνες)
Εισαγάγετε προσαρμοσμένα μοντέλα 3D στον κόσμο του Minecraft: Αυτός είναι ένας πλήρης οδηγός για να εξηγήσετε τη διαδικασία εισαγωγής μοντέλων 3D στον κόσμο του Minecraft. Υπάρχουν τρία βασικά μέρη στα οποία θα αναλύσω τη διαδικασία: Ρύθμιση του Minecraft, εισαγωγή/εξαγωγή του τρισδιάστατου μοντέλου σας και μεταφορά του μοντέλου