Πίνακας περιεχομένων:
- Βήμα 1: Επιλογή μικροελεγκτή
- Βήμα 2: ΔΙΑΜΟΡΦΩΣΗ ΕΝΟΤΗΤΑΣ CCP
- Βήμα 3: Διαμόρφωση μονάδας Timer2 (Μητρώο TMR2)
- Βήμα 4: Διαμόρφωση PR2 (Timer2 Period Register)
- Βήμα 5: Διαμόρφωση μονάδας CCPR1l
- Βήμα 6: Γράψτε το Sketch on You MPLAB X IDE ο κώδικας δίνεται παρακάτω
Βίντεο: Δημιουργήστε κύμα PWM με μικροελεγκτή PIC: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
ΤΙ ΕΙΝΑΙ ΤΟ PWM;
Το PWM STANDS FOR PULSE WIDTH MODULATION είναι μια τεχνική με την οποία το πλάτος του παλμού μεταβάλλεται.
Για να κατανοήσετε αυτήν την έννοια, λάβετε υπόψη έναν παλμό ρολογιού ή οποιοδήποτε σήμα τετραγωνικού κύματος έχει 50% κύκλο λειτουργίας που σημαίνει ότι η περίοδος Ton και Toff είναι η ίδια. Η συνολική διάρκεια για την οποία το σήμα ήταν υψηλή και η διάρκεια για την οποία το σήμα ήταν χαμηλό ονομάζεται συνολική χρονικό διάστημα.
Για την εικόνα που φαίνεται παραπάνω αυτό το κύμα έχει κύκλο λειτουργίας 50%
Κύκλος λειτουργίας = (Χρόνος ενεργοποίησης / Συνολικός χρόνος)*100
ON ώρα - χρόνος για τον οποίο το σήμα ήταν υψηλό
ΧΡΟΝΟΣ OFF - χρόνος εχθρός που το σήμα ήταν χαμηλό Συνολικός χρόνος - Συνολική χρονική περίοδος του παλμού (χρόνος ON και OFF)
Βήμα 1: Επιλογή μικροελεγκτή
Επιλέγοντας τον κατάλληλο μικροελεγκτή για το έργο αυτό είναι το ουσιαστικό μέρος του έργου Τα σήματα PWM μπορούν να δημιουργηθούν σε μικροελεγκτές με κανάλια PWM (καταχωρητές CCP). Για αυτό το έργο σκοπεύω να κολλήσω με το pic16f877. μπορείτε να κατεβάσετε τον σύνδεσμο του φύλλου δεδομένων που δίνεται παρακάτω
Φύλλο δεδομένων PIC16F877a κάντε κλικ εδώ
Η μονάδα CCP είναι υπεύθυνη για την παραγωγή σήματος PWM. ΤοCCP1 και το CCP2 είναι πολυπλεξικά με το PORTC. Το PORTC είναι μια θύρα διπλής κατεύθυνσης 8 bit. Ο αντίστοιχος καταχωρητής κατεύθυνσης δεδομένων είναι TRISC. Η ρύθμιση του bit TRISC (= 1) θα κάνει την είσοδο του αντίστοιχου πείρου PORTC. Η εκκαθάριση ενός bit TRISC (= 0) θα κάνει την αντίστοιχη ακίδα PORTC έξοδο.
TRISC = 0; // Η εκκαθάριση αυτού του bit θα κάνει το PORTC ως έξοδο
Βήμα 2: ΔΙΑΜΟΡΦΩΣΗ ΕΝΟΤΗΤΑΣ CCP
CCP - ΜΟΝΑΔΕΣ CAPTURE/COMPARE/PWM
Κάθε μονάδα Capture/Compare/PWM (CCP) περιέχει έναν καταχωρητή 16-bit ο οποίος μπορεί να λειτουργήσει ως:
• Καταγραφή καταγραφής 16-bit
• 16-bit Σύγκριση καταχωρητή
• PWM Master/Slave Duty Cycle μητρώο
Διαμορφώστε το μητρώο CCP1CON στη λειτουργία PWM
Εγγραφή Περιγραφή
CCPxCON Αυτός ο καταχωρητής χρησιμοποιείται για τη διαμόρφωση της μονάδας CCP για λειτουργία Capture/Compare/PWM.
CCPRxL Αυτός ο καταχωρητής περιέχει τα 8-Msb bits του PWM, τα χαμηλότερα 2-bit θα είναι μέρος του καταχωρητή CCPxCON.
TMR2 Δωρεάν μετρητής λειτουργίας ο οποίος θα συγκριθεί με τον CCPR1L και τον PR2 για τη δημιουργία της εξόδου PWM.
Τώρα θα χρησιμοποιήσω το δυαδικό για να αναπαραστήσω τα bits για να διαμορφώσω τον καταχωρητή CCP1CON.
ανατρέξτε στην παραπάνω εικόνα.
CCP1CON = 0b00001111;
Μπορείτε επίσης να κάνετε εξάγωνη μορφή
CCP1CON = 0x0F; // διαμόρφωση μητρώου CCP1CON για λειτουργία PWM
Βήμα 3: Διαμόρφωση μονάδας Timer2 (Μητρώο TMR2)
Το χρονόμετρο2 είναι ένα χρονόμετρο 8-bit με έναν προκαθοριστή και έναν postcaler. Μπορεί να χρησιμοποιηθεί ως χρονική βάση PWM για τη λειτουργία PWM της (των) μονάδας (-ων) CCP. Ο καταχωρητής TMR2 είναι αναγνώσιμος και εγγράψιμος και διαγράφεται σε οποιαδήποτε Επαναφορά συσκευής.
Εμφανίζεται ο καταχωρητής T2CON
Η προκαταρκτική και η μετα -κλίμακα θα προσαρμόσουν τη συχνότητα εξόδου του δημιουργούμενου κύματος PWM.
Συχνότητα = συχνότητα ρολογιού/(4*prescaler*(PR2-TMR2)*Postcaler*count)
Όπου Tout = 1/συχνότητα
T2CON = 0b00000100;
Αυτό θα δημιουργήσει κρύσταλλο 2,5 KHz @ 1Mhz ή 100KHz @ 4MHz (πρακτικά υπάρχει περιορισμός για αυτήν τη συχνότητα PWM ανατρέξτε σε συγκεκριμένο φύλλο δεδομένων για περισσότερες λεπτομέρειες)
εξαγωνική αναπαράσταση
T2CON = 0x04; // ενεργοποιήστε το T2CON χωρίς διαμόρφωση Prescaler και Postcale
Βήμα 4: Διαμόρφωση PR2 (Timer2 Period Register)
Η μονάδα Timer2 διαθέτει έναν καταχωρητή περιόδου 8 bit, PR2. Ο χρονοδιακόπτης αυξάνεται από τις 00h έως ότου ταιριάζει με το PR2 και στη συνέχεια επανέρχεται σε 00h στον επόμενο κύκλο αύξησης. Το PR2 είναι ένα μη αναγνώσιμο και εγγράψιμο μητρώο. Ο καταχωρητής PR2 αρχικοποιείται σε FFh κατά την επαναφορά.
Ο καθορισμός ενός κατάλληλου εύρους για PR2 θα επιτρέψει τη χρήση για να αλλάξετε τον κύκλο λειτουργίας του δημιουργούμενου κύματος PWM
PR2 = 100; // Ρυθμίστε τον χρόνο Κύκλου σε 100 για την αλλαγή του κύκλου λειτουργίας από 0-100
Για απλότητα χρησιμοποιώ PR2 = 100 κάνοντας CCPR1L = 80. Μπορεί να επιτευχθεί κύκλος λειτουργίας 80%.
Βήμα 5: Διαμόρφωση μονάδας CCPR1l
Δεδομένου ότι το PR2 = 100 CCPR1l μπορεί να ρυθμιστεί οπουδήποτε μεταξύ 0-100 για να επιτευχθεί ο επιθυμητός κύκλος λειτουργίας.
Βήμα 6: Γράψτε το Sketch on You MPLAB X IDE ο κώδικας δίνεται παρακάτω
#περιλαμβάνω
void delay (int a) // συνάρτηση για τη δημιουργία καθυστέρησης {
για (int i = 0; i <a; i ++)
{
για (int j = 0; j <144; j ++);
}
}
κενό κεντρικό ()
{TRISC = 0; // Η εκκαθάριση αυτού του bit θα κάνει το PORTC ως έξοδο.
CCP1CON = 0x0F; // διαμόρφωση μητρώου CCP1CON για λειτουργία PWM
T2CON = 0x04; // ενεργοποιήστε το T2CON χωρίς διαμόρφωση Prescaler και Postcale.
PR2 = 100; // Ρυθμίστε τον χρόνο Κύκλου σε 100 για την αλλαγή του κύκλου λειτουργίας από 0-100
ενώ (1) {
CCPR1L = 75; // δημιούργησε καθυστέρηση κύκλου εργασίας 75% (1).
}
}
Έκανα επίσης μια μικρή τροποποίηση στον κώδικα, έτσι ώστε η συχνότητα του δημιουργούμενου κύματος PWM
Αυτός είναι ο κώδικας που προσομοιώνεται σε proteus και το κύμα εξόδου PWM εμφανίζεται παρακάτω Για να το ανεβάσετε στους πίνακες ανάπτυξης εικόνας, χρησιμοποιήστε το #include με κατάλληλα bits διαμόρφωσης.
Σας ευχαριστώ
Συνιστάται:
Ρολόι LED χωρίς μικροελεγκτή: 12 βήματα
Ένα ρολόι LED χωρίς μικροελεγκτή: Όπως φαίνεται, μου αρέσει να φτιάχνω διαφορετικά ρολόγια. Έχω κατασκευάσει και σχεδιάσει πολλά ηλεκτρονικά και μηχανικά ρολόγια και αυτό είναι ένα άλλο. Το πρώτο μου ηλεκτρονικό ρολόι απαιτούσε αρκετές επαναλήψεις και έμαθα πολλά. Το σχέδιο που παρουσιάζεται είναι αυτοσχέδιο
Digitalηφιακό ρολόι αλλά χωρίς μικροελεγκτή [Hardcore Electronics]: 13 βήματα (με εικόνες)
Digitalηφιακό ρολόι αλλά χωρίς μικροελεγκτή [Hardcore Electronics]: Είναι αρκετά εύκολο να φτιάξετε κυκλώματα με μικροελεγκτή, αλλά ξεχνάμε εντελώς τον τόνο της δουλειάς που χρειάστηκε να περάσει ένας μικροελεγκτής για να ολοκληρώσει μια απλή εργασία (ακόμη και όταν αναβοσβήνει ένα led). Λοιπόν, πόσο δύσκολο θα ήταν να φτιάξεις ένα ψηφιακό ρολόι
Ρομποτικός βραχίονας βασισμένος σε μικροελεγκτή PIC: 6 βήματα (με εικόνες)
Ρομποτικός βραχίονας βασισμένος σε μικροελεγκτές PIC: Από τη γραμμή συναρμολόγησης των βιομηχανιών κατασκευής αυτοκινήτων έως τα τηλεχειρουργικά ρομπότ στο διάστημα, τα Robotic Arms βρίσκονται παντού. Οι μηχανισμοί αυτών των ρομπότ είναι παρόμοιοι με έναν άνθρωπο ο οποίος μπορεί να προγραμματιστεί για παρόμοια λειτουργία και αυξάνει
AVR Μικροελεγκτή Fuse Bits Διαμόρφωση. Δημιουργία και μεταφόρτωση στη μνήμη flash του μικροελεγκτή του προγράμματος αναβοσβήνει LED .: 5 βήματα
AVR Μικροελεγκτή Fuse Bits Διαμόρφωση. Δημιουργία και μεταφόρτωση στο Flash Memory of Microcontroller του LED Blinking Program: Σε αυτή την περίπτωση θα δημιουργήσουμε απλό πρόγραμμα σε κώδικα C και θα το γράψουμε στη μνήμη του μικροελεγκτή. Θα γράψουμε το δικό μας πρόγραμμα και θα μεταγλωττίσουμε το εξάγωνο αρχείο, χρησιμοποιώντας το Atmel Studio ως ολοκληρωμένη πλατφόρμα ανάπτυξης. Θα διαμορφώσουμε την ασφάλεια bi
Skateboard Με μικροελεγκτή PIC και LED: 8 βήματα (με εικόνες)
Skateboard Με μικροελεγκτή PIC και LED: Τι παίρνετε όταν ένας Ηλεκτρολόγος Μηχανικός κατασκευάζει ένα Skateboard από το μηδέν για το χριστουγεννιάτικο δώρο ενός 13χρονου; Παίρνετε ένα skateboard με οκτώ λευκές λυχνίες LED (προβολείς), οκτώ κόκκινες λυχνίες LED (πίσω άκρα) όλα ελεγχόμενα μέσω μικροελεγκτή PIC! Και μεταναστεύω