Πίνακας περιεχομένων:

Δημιουργήστε κύμα PWM με μικροελεγκτή PIC: 6 βήματα
Δημιουργήστε κύμα PWM με μικροελεγκτή PIC: 6 βήματα

Βίντεο: Δημιουργήστε κύμα PWM με μικροελεγκτή PIC: 6 βήματα

Βίντεο: Δημιουργήστε κύμα PWM με μικροελεγκτή PIC: 6 βήματα
Βίντεο: How does an Inverter work? | Sine wave Inverter 2024, Νοέμβριος
Anonim
Δημιουργήστε κύμα PWM με μικροελεγκτή PIC
Δημιουργήστε κύμα PWM με μικροελεγκτή PIC
Δημιουργήστε κύμα PWM με μικροελεγκτή PIC
Δημιουργήστε κύμα PWM με μικροελεγκτή PIC
Δημιουργήστε κύμα PWM με μικροελεγκτή PIC
Δημιουργήστε κύμα PWM με μικροελεγκτή PIC
Δημιουργήστε κύμα PWM με μικροελεγκτή PIC
Δημιουργήστε κύμα PWM με μικροελεγκτή PIC

ΤΙ ΕΙΝΑΙ ΤΟ 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
ΔΙΑΜΟΡΦΩΣΗ ΕΝΟΤΗΤΑΣ CCP
ΔΙΑΜΟΡΦΩΣΗ ΕΝΟΤΗΤΑΣ CCP
ΔΙΑΜΟΡΦΩΣΗ ΕΝΟΤΗΤΑΣ 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)

Διαμόρφωση μονάδας Timer2 (μητρώο TMR2)
Διαμόρφωση μονάδας 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 ο κώδικας δίνεται παρακάτω

Γράψτε το Sketch on You MPLAB X IDE ο κώδικας δίνεται παρακάτω
Γράψτε το 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 διαμόρφωσης.

Σας ευχαριστώ

Συνιστάται: