- Τι είναι το σήμα PWM;
- Πώς να μετατρέψετε το σήμα PWM σε αναλογική τάση;
- Διάγραμμα κυκλώματος:
- Προγραμματισμός του MSP για σήμα PWM:
- Έλεγχος φωτεινότητας LED με PWM:
Αυτό το σεμινάριο είναι μέρος μιας σειράς μαθημάτων εκκίνησης MSP430G2 στο οποίο μαθαίνουμε να χρησιμοποιούμε το MSP430G2 LaunchPad από την Texas Instruments. Μέχρι τώρα έχουμε μάθει τα βασικά του διοικητικού συμβουλίου και κάλυψαν πώς να διαβάσει αναλογική τάση, διεπαφή LCD με MSP430G2 κ.λπ. Τώρα προχωράμε στο επόμενο βήμα της μάθησης για PWM σε MSP430G2. Αυτό θα το κάνουμε ελέγχοντας τη φωτεινότητα ενός LED μεταβάλλοντας το ποτενσιόμετρο. Έτσι το ποτενσιόμετρο θα συνδεθεί σε έναν αναλογικό πείρο του MSP430 για να διαβάσει την αναλογική του τάση, επομένως συνιστάται να γνωρίζετε τον οδηγό ADC πριν συνεχίσετε.
Τι είναι το σήμα PWM;
Το Pulse Width Modulation (PWM) είναι ένα ψηφιακό σήμα που χρησιμοποιείται συχνότερα στα κυκλώματα ελέγχου. Αυτό το σήμα ρυθμίζεται υψηλό (3,3v) και χαμηλό (0v) σε προκαθορισμένο χρόνο και ταχύτητα. Ο χρόνος κατά τον οποίο το σήμα παραμένει υψηλό ονομάζεται "on time" και ο χρόνος κατά τον οποίο το σήμα παραμένει χαμηλό ονομάζεται "off time". Υπάρχουν δύο σημαντικές παράμετροι για ένα PWM όπως συζητείται παρακάτω:
Κύκλος λειτουργίας του PWM:
Το ποσοστό χρόνου στο οποίο το σήμα PWM παραμένει ΥΨΗΛΟ (στην ώρα) ονομάζεται κύκλος λειτουργίας. Εάν το σήμα είναι πάντα ΕΝΕΡΓΟ, βρίσκεται σε κύκλο λειτουργίας 100% και εάν είναι πάντα σβηστό, είναι κύκλος λειτουργίας 0%.
Κύκλος λειτουργίας = Χρόνος ενεργοποίησης / (Χρόνος ενεργοποίησης + χρόνος απενεργοποίησης)
Συχνότητα ενός PWM:
Η συχνότητα ενός σήματος PWM καθορίζει πόσο γρήγορα ένα PWM ολοκληρώνει μια περίοδο. Μια περίοδος είναι πλήρης ON και OFF ενός σήματος PWM όπως φαίνεται στο παραπάνω σχήμα. Στο σεμινάριό μας η συχνότητα είναι 500Hz καθώς είναι η προεπιλεγμένη τιμή που ορίζεται από το Energia IDE
Υπάρχει πληθώρα εφαρμογών για σήματα PWM σε πραγματικό χρόνο, αλλά για να σας δώσουμε μια ιδέα, το σήμα PWM μπορεί να χρησιμοποιηθεί για τον έλεγχο των σερβοκινητήρων και μπορεί επίσης να μετατραπεί σε αναλογική τάση που μπορεί να ελέγξει τη φωτεινότητα της φωτεινότητας ενός LED. Ας μάθουμε λίγο για το πώς θα μπορούσε να γίνει αυτό.
Ακολουθούν μερικά παραδείγματα PWM με άλλους μικροελεγκτές:
- Δημιουργία PWM χρησιμοποιώντας μικροελεγκτή PIC με MPLAB και XC8
- Servo Motor Control με Raspberry Pi
- Arduino LED Dimmer με χρήση PWM
Δείτε όλα τα σχετικά έργα PWM εδώ.
Πώς να μετατρέψετε το σήμα PWM σε αναλογική τάση;
Για σήματα PWM στην αναλογική τάση μπορούμε να χρησιμοποιήσουμε ένα κύκλωμα που ονομάζεται φίλτρο RC. Αυτό είναι ένα απλό και πιο συχνά χρησιμοποιούμενο κύκλωμα για το σκοπό αυτό. Το κύκλωμα περιλαμβάνει μόνο μια αντίσταση και έναν πυκνωτή σε σειρά όπως φαίνεται στο παρακάτω κύκλωμα.
Αυτό που ουσιαστικά συμβαίνει εδώ είναι ότι όταν το σήμα PWM είναι υψηλό, ο πυκνωτής φορτίζεται μέσω της αντίστασης και όταν το σήμα PWM πέσει χαμηλά, ο πυκνωτής εκφορτώνεται μέσω του αποθηκευμένου φορτίου. Με αυτόν τον τρόπο θα έχουμε πάντα μια σταθερή τάση στην έξοδο που θα είναι ανάλογη με τον κύκλο λειτουργίας PWM.
Στο γράφημα που φαίνεται παραπάνω, το κίτρινο χρώμα είναι το σήμα PWM και το μπλε χρώμα είναι η αναλογική τάση εξόδου. Όπως μπορείτε να δείτε, το κύμα εξόδου δεν θα είναι ένα καθαρό κύμα DC, αλλά θα πρέπει να λειτουργεί πολύ καλά για την εφαρμογή μας. Εάν χρειάζεστε καθαρό κύμα DC για άλλο τύπο εφαρμογής, θα πρέπει να σχεδιάσετε ένα κύκλωμα εναλλαγής.
Διάγραμμα κυκλώματος:
Το διάγραμμα κυκλώματος είναι αρκετά απλό. έχει απλώς ένα ποτενσιόμετρο και μια αντίσταση και έναν πυκνωτή για να σχηματίσουν ένα κύκλωμα RC και το ίδιο το Led. Το ποτενσιόμετρο χρησιμοποιείται για την παροχή αναλογικής τάσης βάσει της οποίας μπορεί να ελέγχεται ο κύκλος λειτουργίας σήματος PWM. Η έξοδος του δοχείου συνδέεται με το Pin P1.0 που μπορεί να διαβάσει αναλογικές τάσεις. Στη συνέχεια, πρέπει να παράγουμε ένα σήμα PWM, το οποίο μπορεί να γίνει χρησιμοποιώντας τον πείρο P1.2, αυτό το σήμα PWM αποστέλλεται στη συνέχεια στο κύκλωμα φίλτρου RC για να μετατρέψει το σήμα PWM σε αναλογική τάση που στη συνέχεια δίνεται στο LED.
Είναι πολύ σημαντικό να καταλάβουμε ότι δεν μπορούν όλοι οι ακροδέκτες στον πίνακα MSP να διαβάζουν αναλογική τάση ή να δημιουργούν ακίδες PWM. Οι συγκεκριμένες καρφίτσες που μπορούν να κάνουν τις συγκεκριμένες εργασίες φαίνονται στο παρακάτω σχήμα. Χρησιμοποιήστε το πάντα ως οδηγίες για να επιλέξετε τις καρφίτσες σας για προγραμματισμό.
Συναρμολογήστε το πλήρες κύκλωμα όπως φαίνεται παραπάνω, μπορείτε να χρησιμοποιήσετε μια πλακέτα ψωμιού και λίγα καλώδια βραχυκυκλωτήρα και να κάνετε εύκολα τις συνδέσεις. Μόλις ολοκληρωθούν οι συνδέσεις, ο πίνακας μου έμοιαζε όπως φαίνεται παρακάτω.
Προγραμματισμός του MSP για σήμα PWM:
Μόλις το υλικό είναι έτοιμο, μπορούμε να ξεκινήσουμε με τον προγραμματισμό μας. Το πρώτο πράγμα σε ένα πρόγραμμα είναι να δηλώσουμε τις καρφίτσες που πρόκειται να χρησιμοποιήσουμε. Εδώ πρόκειται να χρησιμοποιήσουμε τον αριθμό pin 4 (P1.2) ως τον ακροδέκτη εξόδου μας δεδομένου ότι έχει τη δυνατότητα δημιουργίας PWM. Δημιουργούμε λοιπόν μια μεταβλητή και εκχωρούμε το όνομα του πινέλου, ώστε να είναι εύκολο να το αναφέρουμε αργότερα στο πρόγραμμα. Το πλήρες πρόγραμμα δίνεται στο τέλος.
int PWMpin = 4; // Χρησιμοποιούμε τον 4ο πείρο στη μονάδα MSP ως πείρο PWM
Στη συνέχεια μπαίνουμε στη λειτουργία εγκατάστασης . Όποια και αν είναι κώδικας είναι γραμμένο εδώ θα εκτελεστεί μόνο μία φορά, εδώ έχουμε δηλώσει ότι είμαστε χρησιμοποιώντας αυτό το 4 ου pin ως pin εξόδου από το PWM είναι η λειτουργικότητα εξόδου. Σημειώστε ότι έχουμε χρησιμοποιήσει τη μεταβλητή PWMpin εδώ αντί για τον αριθμό 4, έτσι ώστε ο κώδικας να φαίνεται πιο σημαντικός
άκυρη ρύθμιση () { pinMode (PWMpin, OUTPUT); // Το PEMpin έχει οριστεί ως Outptut }
Τέλος μπαίνουμε στη λειτουργία βρόχου . Ό, τι γράφουμε εδώ εκτελείται ξανά και ξανά. Σε αυτό το πρόγραμμα πρέπει να διαβάσουμε την αναλογική τάση και να δημιουργήσουμε ένα σήμα PWM ανάλογα και αυτό πρέπει να συμβεί ξανά και ξανά. Ας ξεκινήσουμε λοιπόν διαβάζοντας την αναλογική τάση από τον πείρο A0 αφού έχουμε συνδεθεί με ποτενσιόμετρο σε αυτό.
Εδώ διαβάζουμε την τιμή χρησιμοποιώντας τη συνάρτηση AanalogRead , αυτή η συνάρτηση θα επιστρέψει μια τιμή από 0-1024 με βάση την τιμή της τάσης που εφαρμόζεται στον πείρο. Στη συνέχεια αποθηκεύουμε αυτήν την τιμή σε μια μεταβλητή που ονομάζεται "val" όπως φαίνεται παρακάτω
int val = analogRead (A0); // διαβάστε την τιμή ADC από τον πείρο A0
Πρέπει να μετατρέψουμε τις τιμές 0 έως 1024 από το ADC σε τιμές 0 έως 255 για να το δώσουμε στη συνάρτηση PWM. Γιατί πρέπει να το μετατρέψουμε; Θα το πω σύντομα, αλλά προς το παρόν απλώς θυμηθείτε ότι πρέπει να μετατρέψουμε. Για να μετατρέψετε ένα σύνολο τιμών σε ένα άλλο σύνολο τιμών, η Energia έχει μια λειτουργία χάρτη παρόμοια με το Arduino. Έτσι μετατρέπουμε τις τιμές 0-1204 σε 0-255 και τις αποθηκεύουμε ξανά στη μεταβλητή "val".
val = χάρτης (val , 0, 1023, 0, 255); // Το ADC θα δώσει τιμή 0-1023 να το μετατρέψει σε 0-255
Τώρα έχουμε μια μεταβλητή τιμή 0-255 με βάση τη θέση του ποτενσιόμετρου. Το μόνο που πρέπει να κάνουμε είναι, χρησιμοποιήστε αυτήν την τιμή στον ακροδέκτη PWM, αυτό μπορεί να γίνει χρησιμοποιώντας την ακόλουθη γραμμή.
analogWrite (PWMpin, val); // Γράψτε αυτήν την τιμή στον ακροδέκτη PWM.
Ας επιστρέψουμε στην ερώτηση γιατί το 0-255 γράφεται στην καρφίτσα PWM. Αυτή η τιμή 0-255 αποφασίζει τον κύκλο λειτουργίας του σήματος PWM. Για παράδειγμα, εάν η τιμή του σήματος είναι 0, αυτό σημαίνει ότι ο κύκλος λειτουργίας είναι 0% για 127 είναι 50% και για 255 είναι 100% ακριβώς όπως φαίνεται και εξηγείται στην κορυφή αυτού του άρθρου.
Έλεγχος φωτεινότητας LED με PWM:
Μόλις καταλάβετε το υλικό και τον κώδικα, είναι καιρός να διασκεδάσετε με τη λειτουργία του κυκλώματος. Ανεβάστε τον κωδικό στην πλακέτα MSP430G2 και γυρίστε το κουμπί ποτενσιόμετρου. Καθώς γυρίζετε το κουμπί, η τάση στον ακροδέκτη 2 θα ποικίλει, η οποία θα διαβαστεί από τον μικροελεγκτή και σύμφωνα με την τάση τα σήματα PWM θα δημιουργηθούν στον πείρο 4. Όσο μεγαλύτερη είναι η τάση, τόσο μεγαλύτερη θα είναι ο κύκλος λειτουργίας και το αντίστροφο.
Αυτό το σήμα PWM μετατρέπεται στη συνέχεια σε αναλογική τάση για να ανάψει ένα LED. Η φωτεινότητα του LED είναι ευθέως ανάλογη με τον κύκλο λειτουργίας σήματος PWM. Εκτός από το LED στο breadboard, μπορείτε επίσης να παρατηρήσετε ότι το smd LED (κόκκινο χρώμα) μεταβάλλει τη φωτεινότητά του παρόμοια με το breadboard led Αυτό είναι LED είναι επίσης συνδεδεμένο με τον ίδιο πείρο, αλλά δεν διαθέτει δίκτυο RC, οπότε στην πραγματικότητα τρεμοπαίζει πολύ γρήγορα. Μπορείτε να κουνήσετε τον πίνακα σε ένα σκοτεινό δωμάτιο για να ελέγξετε τη φύση του που τρεμοπαίζει. Η πλήρης εργασία φαίνεται επίσης στο παρακάτω βίντεο.
Αυτό είναι όλο για τους ανθρώπους, έχουμε μάθει πώς να χρησιμοποιούμε σήματα PWM στην πλακέτα MSP430G2, στο επόμενο σεμινάριό μας θα μάθουμε πόσο εύκολο είναι να ελέγχεις έναν σερβοκινητήρα χρησιμοποιώντας τα ίδια σήματα PWM. Εάν έχετε αμφιβολίες, δημοσιεύστε τα στην παρακάτω ενότητα σχολίων ή στα φόρουμ για τεχνική βοήθεια.