Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
ΤΙ ΕΙΝΑΙ ΤΟ 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 διαμόρφωσης.
Σας ευχαριστώ