- Τεχνικές εξοικονόμησης ενέργειας για μικροελεγκτές
- 1. Λειτουργίες ύπνου
- 2. Δυναμική τροποποίηση της συχνότητας του επεξεργαστή
- 3. Δομή υλικολογισμικού Interrupt Handler
- 4. Υλικολογισμικό Firmware
- συμπέρασμα
Ακριβώς όπως το αέριο (βενζίνη / ντίζελ) είναι σημαντικό για τη μεταφορά ποδηλάτων, φορτηγών και αυτοκινήτων (ναι, εκτός από τον Teslas!), Το ίδιο ισχύει και για τις περισσότερες από τις ηλεκτρονικές εφαρμογές και για τις ενσωματωμένες εφαρμογές που είναι συνήθως μπαταρίες περιορισμένης ενέργειας), από τα κανονικά κινητά τηλέφωνα έως τις έξυπνες οικιακές συσκευές, μεταξύ άλλων.
Ο περιορισμένος χαρακτήρας της ισχύος της μπαταρίας συνεπάγεται την ανάγκη να διασφαλιστεί ότι ο ρυθμός κατανάλωσης ενέργειας αυτών των συσκευών θα πρέπει να είναι λογικός για να ενθαρρύνει την υιοθέτηση και τη χρήση τους. Ειδικά με συσκευές που βασίζονται σε IoT όπου μια συσκευή αναμένεται να διαρκέσει για 8 - 10 χρόνια με μία μόνο φόρτιση χωρίς αντικατάσταση μπαταρίας.
Αυτές οι τάσεις έχουν κάνει την υλοποίηση παραμέτρων χαμηλής ισχύος στο σχεδιασμό ενσωματωμένων συστημάτων και με την πάροδο των ετών, σχεδιαστές, μηχανικοί και κατασκευαστές σε πολλά σημεία έχουν αναπτύξει αρκετούς έξυπνους τρόπους αποτελεσματικής διαχείρισης της ισχύος που καταναλώνουν τα προϊόντα, για να διασφαλιστεί ότι διαρκούν περισσότερο σε ένα μία χρέωση. Πολλές από αυτές τις τεχνικές εστιάζονται στον μικροελεγκτή, που είναι η καρδιά των περισσότερων συσκευών. Στο σημερινό άρθρο, θα διερευνήσουμε μερικές από αυτές τις τεχνικές και πώς μπορούν να χρησιμοποιηθούν για την ελαχιστοποίηση της κατανάλωσης ισχύος σε μικροελεγκτές. Παρόλο που ένας Μικροεπεξεργαστής καταναλώνει λιγότερη ισχύ, αλλά μπορεί να χρησιμοποιηθεί σε τοποθετημένο σε Μικροελεγκτή παντού, ακολουθήστε τον σύνδεσμο για να μάθετε πώς ο Μικροεπεξεργαστής διαφέρει από τον Μικροελεγκτή.
Τεχνικές εξοικονόμησης ενέργειας για μικροελεγκτές
1. Λειτουργίες ύπνου
Οι λειτουργίες αδράνειας (γενικά αναφέρονται ως τρόποι χαμηλής ισχύος) είναι αναμφισβήτητα η πιο δημοφιλής τεχνική για τη μείωση της κατανάλωσης ισχύος σε μικροελεγκτές. Περιλαμβάνουν γενικά απενεργοποίηση συγκεκριμένων κυκλωμάτων ή ρολογιών που οδηγούν ορισμένα περιφερειακά των μικροελεγκτών.
Ανάλογα με την αρχιτεκτονική και τον κατασκευαστή, οι μικροελεγκτές συνήθως έχουν διαφορετικό τρόπο λειτουργίας ύπνου, με κάθε λειτουργία να έχει τη δυνατότητα απενεργοποίησης περισσότερων εσωτερικών κυκλωμάτων ή περιφερειακών σε σύγκριση με τον άλλο. Οι λειτουργίες ύπνου κυμαίνονται συνήθως από βαθύ ύπνο ή απενεργοποίηση, έως τις λειτουργίες αδράνειας και ύπνου.
Μερικές από τις διαθέσιμες λειτουργίες εξηγούνται παρακάτω. Πρέπει να σημειωθεί ότι τα χαρακτηριστικά καθώς και το όνομα αυτών των τρόπων λειτουργίας μπορεί να διαφέρουν από κατασκευαστή σε κατασκευαστή.
Εγώ. Λειτουργία αδράνειας / ύπνου
Αυτή είναι συνήθως η απλούστερη από τις λειτουργίες χαμηλής ισχύος που μπορούν να εφαρμόσουν οι σχεδιαστές. Αυτή η λειτουργία επιτρέπει στον μικροελεγκτή να επιστρέψει σε πλήρη λειτουργία με πολύ γρήγορο ρυθμό. Επομένως, δεν είναι η καλύτερη λειτουργία, εάν ο κύκλος ισχύος της συσκευής απαιτεί την έξοδο από τη λειτουργία αναμονής πολύ συχνά, καθώς αντλείται μεγάλη ποσότητα ισχύος, όταν ο μικροελεγκτής βγαίνει από τη λειτουργία αναστολής λειτουργίας. Η επιστροφή στην ενεργή λειτουργία από την κατάσταση αναμονής βασίζεται συνήθως σε διακοπές. Αυτή η λειτουργία εφαρμόζεται στον μικροελεγκτή απενεργοποιώντας το δέντρο ρολογιών που οδηγεί το κύκλωμα CPU ενώ το πρωτεύον ρολόι υψηλής συχνότητας MCU συνεχίζει να λειτουργεί. Με αυτό, η CPU μπορεί να συνεχίσει τις λειτουργίες αμέσως μόλις ενεργοποιηθεί η ενεργοποίηση αφύπνισης. Το ρολόι ρολογιού έχει χρησιμοποιηθεί εκτενώς για την αποκοπή σημάτων σε λειτουργίες χαμηλής ισχύος για μικροελεγκτές και αυτή η λειτουργία ενεργοποιεί αποτελεσματικά σήματα ρολογιού σε όλη την CPU.
ii. Λειτουργία αναμονής
Η κατάσταση αναμονής είναι μια άλλη λειτουργία χαμηλής κατανάλωσης, εύκολη για την εφαρμογή των σχεδιαστών. Είναι πολύ παρόμοιο με τη λειτουργία αδράνειας / αδράνειας, καθώς περιλαμβάνει επίσης τη χρήση ρολογιού στην CPU, αλλά μια σημαντική διαφορά είναι ότι επιτρέπει την αλλαγή του περιεχομένου του κριού που δεν συμβαίνει συνήθως με τη λειτουργία αδράνειας / αδράνειας. Σε κατάσταση αναμονής, περιφερειακά υψηλής ταχύτητας όπως το DMA (άμεση πρόσβαση στη μνήμη), τα σειριακά λιμάνια, τα περιφερειακά ADC και AES συνεχίζουν να λειτουργούν για να διασφαλιστεί ότι είναι διαθέσιμα αμέσως μετά την εγρήγορση της CPU. Για ορισμένα MCU, η μνήμη RAM διατηρείται επίσης ενεργή και μπορεί να προσεγγιστεί από το DMA επιτρέποντας την αποθήκευση και λήψη δεδομένων χωρίς παρέμβαση CPU. Η ισχύς που αντλείται σε αυτήν τη λειτουργία μπορεί να είναι τόσο χαμηλή όσο 50uA / MHZ για μικροελεγκτές χαμηλής ισχύος.
iii. Λειτουργία βαθύ ύπνου
Η λειτουργία βαθιάς ύπνου, γενικά περιλαμβάνει την απενεργοποίηση ρολογιών υψηλής συχνότητας και άλλων κυκλωμάτων εντός του μικροελεγκτή αφήνοντας μόνο το κύκλωμα ρολογιού που χρησιμοποιείται για την οδήγηση κρίσιμων στοιχείων όπως ο χρονοδιακόπτης παρακολούθησης, η ανίχνευση καφέ έξω και η ισχύς στο κύκλωμα επαναφοράς. Άλλες MCU μπορούν να προσθέσουν άλλα στοιχεία σε αυτό για να βελτιώσουν τη συνολική απόδοση. Η κατανάλωση ισχύος σε αυτήν τη λειτουργία μπορεί να είναι τόσο χαμηλή όσο 1uA ανάλογα με το συγκεκριμένο MCU.
iv. Λειτουργία Stop / OFF
Ορισμένοι μικροελεγκτές έχουν διαφορετικές παραλλαγές αυτού του πρόσθετου τρόπου. Σε αυτήν τη λειτουργία, τόσο οι υψηλοί όσο και οι χαμηλοί ταλαντωτές συνήθως απενεργοποιούνται αφήνοντας μόνο μερικούς καταχωρητές διαμόρφωσης και άλλα κρίσιμα στοιχεία ενεργοποιημένα.
Τα χαρακτηριστικά όλων των λειτουργιών ύπνου που αναφέρονται παραπάνω διαφέρουν από MCU σε MCU, αλλά ο γενικός κανόνας είναι: όσο βαθύτερος είναι ο ύπνος, τόσο περισσότερος αριθμός περιφερειακών απενεργοποιείται κατά τη διάρκεια του ύπνου και τόσο χαμηλότερη είναι η κατανάλωση ενέργειας, αν και αυτό συνήθως σημαίνει επίσης. Όσο υψηλότερη είναι η ποσότητα ενέργειας που καταναλώνεται για να επαναφέρει το σύστημα. Εναπόκειται λοιπόν στον σχεδιαστή να εξετάσει αυτήν την παραλλαγή και να επιλέξει το σωστό MCU για την εργασία χωρίς συμβιβασμούς που επηρεάζουν τις προδιαγραφές του συστήματος.
2. Δυναμική τροποποίηση της συχνότητας του επεξεργαστή
Αυτή είναι μια άλλη ευρέως δημοφιλής τεχνική για αποτελεσματική μείωση της ποσότητας ισχύος που καταναλώνεται από έναν μικροελεγκτή. Είναι μακράν η παλαιότερη τεχνική και λίγο πιο περίπλοκη από τους τρόπους ύπνου. Περιλαμβάνει το υλικολογισμικό που κινεί δυναμικά το ρολόι του επεξεργαστή, εναλλάσσοντας μεταξύ υψηλής και χαμηλής συχνότητας καθώς η σχέση μεταξύ της συχνότητας του επεξεργαστή και της ποσότητας ισχύος που καταναλώνεται είναι γραμμική (όπως φαίνεται παρακάτω).
Η εφαρμογή αυτής της τεχνικής ακολουθεί συνήθως αυτό το μοτίβο. όταν το σύστημα βρίσκεται σε κατάσταση αδράνειας, το υλικολογισμικό ρυθμίζει τη συχνότητα του ρολογιού σε χαμηλή ταχύτητα επιτρέποντας στη συσκευή να εξοικονομήσει κάποια ενέργεια και όταν το σύστημα πρέπει να κάνει μεγάλους υπολογισμούς, η ταχύτητα του ρολογιού επανέρχεται.
Υπάρχουν αντιπαραγωγικά σενάρια τροποποίησης της συχνότητας του επεξεργαστή που συνήθως οφείλονται σε ανεπαρκώς ανεπτυγμένο υλικολογισμικό. Τέτοια σενάρια προκύπτουν όταν η συχνότητα του ρολογιού διατηρείται σε χαμηλά επίπεδα ενώ το σύστημα εκτελεί μεγάλους υπολογισμούς. Μια χαμηλή συχνότητα σε αυτό το σενάριο σημαίνει ότι το σύστημα θα χρειαστεί περισσότερο χρόνο από ό, τι είναι απαραίτητο για την εκτέλεση της καθορισμένης εργασίας και έτσι θα καταναλώσει σωρευτικά την ίδια ποσότητα ισχύος που οι σχεδιαστές προσπαθούσαν να εξοικονομήσουν. Επομένως, πρέπει να ληφθεί επιπλέον προσοχή κατά την εφαρμογή αυτής της τεχνικής σε κρίσιμες εφαρμογές χρόνου.
3. Δομή υλικολογισμικού Interrupt Handler
Αυτή είναι μια από τις πιο ακραίες τεχνικές διαχείρισης ισχύος στους μικροελεγκτές. Αυτό γίνεται εφικτό από λίγους μικροελεγκτές όπως, τους πυρήνες ARM cortex-M που έχουν ένα bit sleep-on-exit στον καταχωρητή SCR. Αυτό το bit παρέχει στον μικροελεγκτή τη δυνατότητα να κοιμάται μετά την εκτέλεση μιας ρουτίνας διακοπής. Ενώ υπάρχει ένα όριο στον αριθμό εφαρμογών που θα λειτουργούν ομαλά με αυτόν τον τρόπο, αυτό θα μπορούσε να είναι μια πολύ χρήσιμη τεχνική για αισθητήρες πεδίου και άλλες, μακροπρόθεσμες, βασισμένες στη συλλογή δεδομένων εφαρμογές.
Οι περισσότερες από τις άλλες τεχνικές κατά τη γνώμη μου είναι παραλλαγές από αυτές που έχουν ήδη αναφερθεί παραπάνω. Για παράδειγμα, η επιλεκτική τεχνική περιφερειακού χρονισμού είναι ουσιαστικά μια παραλλαγή των τρόπων ύπνου στις οποίες ο σχεδιαστής επιλέγει τα περιφερειακά για ενεργοποίηση ή απενεργοποίηση. Αυτή η τεχνική απαιτεί βαθιά γνώση του μικροελεγκτή στόχου και μπορεί να μην είναι πολύ φιλική προς τους αρχάριους.
4. Υλικολογισμικό Firmware
Ένας από τους καλύτερους τρόπους για τη μείωση της ποσότητας ενέργειας που καταναλώνεται από έναν μικροελεγκτή είναι να γράφετε αποτελεσματικό και καλά βελτιστοποιημένο υλικολογισμικό. Αυτό επηρεάζει άμεσα την ποσότητα εργασίας που εκτελείται από τη CPU ανά ώρα και αυτό, κατ 'επέκταση συμβάλλει στην ποσότητα ισχύος που καταναλώνεται από τον μικροελεγκτή. Πρέπει να καταβληθούν προσπάθειες κατά τη σύνταξη του υλικολογισμικού για να διασφαλιστεί το μειωμένο μέγεθος κώδικα και οι κύκλοι καθώς εκτελείται κάθε περιττή εντολή, είναι ένα μέρος της ενέργειας που αποθηκεύεται στην μπαταρία που σπαταλάται. Ακολουθούν μερικές κοινές συμβουλές με βάση το C για βελτιστοποιημένη ανάπτυξη υλικολογισμικού.
- Χρησιμοποιήστε την κλάση "Static Const" όσο το δυνατόν περισσότερο για να αποφύγετε την αντιγραφή συστοιχιών, δομών κλπ. Που καταναλώνει χρόνο εκτέλεσης.
- Χρησιμοποιήστε δείκτες. Είναι πιθανώς το πιο δύσκολο κομμάτι της γλώσσας C που κατανοείται για αρχάριους, αλλά είναι το καλύτερο για αποτελεσματική πρόσβαση σε δομές και συνδικάτα.
- Αποφύγετε το Modulo!
- Τοπικές μεταβλητές έναντι καθολικών μεταβλητών όπου είναι δυνατόν. Οι τοπικές μεταβλητές περιέχονται στην CPU, ενώ οι καθολικές μεταβλητές αποθηκεύονται στη μνήμη RAM, η CPU αποκτά πρόσβαση στις τοπικές μεταβλητές γρηγορότερα.
- Οι τύποι δεδομένων χωρίς υπογραφή είναι ο καλύτερος φίλος σας όπου είναι δυνατόν.
- Υιοθετήστε "αντίστροφη μέτρηση" για βρόχους όπου είναι δυνατόν.
- Αντί για πεδία bit για μη υπογεγραμμένους ακέραιους αριθμούς, χρησιμοποιήστε μάσκες bit.
Οι προσεγγίσεις για τη μείωση της ποσότητας ισχύος που καταναλώνεται από έναν μικροελεγκτή δεν περιορίζονται στις προαναφερόμενες προσεγγίσεις βάσει λογισμικού, υπάρχουν προσεγγίσεις βάσει υλικού όπως η τεχνική ελέγχου τάσης πυρήνα, αλλά για να διατηρήσουμε το μήκος αυτής της ανάρτησης σε λογικό εύρος, θα εξοικονομήσουμε τους για άλλη μια μέρα.
συμπέρασμα
Η εφαρμογή προϊόντος χαμηλής ισχύος ξεκινά από την επιλογή του μικροελεγκτή και μπορεί να είναι αρκετά συγκεχυμένο όταν προσπαθείτε να εξετάσετε τις διάφορες επιλογές που διατίθενται στην αγορά. Κατά τη σάρωση, το φύλλο δεδομένων μπορεί να λειτουργήσει καλά για τη λήψη της γενικής απόδοσης των MCU, αλλά για εφαρμογές κρίσιμης ισχύος, μπορεί να είναι μια πολύ δαπανηρή προσέγγιση. Για να κατανοήσουν τα αληθινά χαρακτηριστικά ισχύος ενός μικροελεγκτή, οι προγραμματιστές πρέπει να λάβουν υπόψη τις ηλεκτρικές προδιαγραφές και τις λειτουργίες χαμηλής ισχύος που διαθέτει ο μικροελεγκτής. Οι σχεδιαστές δεν πρέπει να ανησυχούν μόνο για την τρέχουσα κατανάλωση από καθεμία από τις λειτουργίες ισχύος που διαφημίζονται από το δελτίο δεδομένων της MCU, αλλά θα πρέπει να εξετάζουν τον χρόνο αφύπνισης, τις πηγές αφύπνισης και τα περιφερειακά που είναι διαθέσιμα για χρήση κατά τη λειτουργία χαμηλής κατανάλωσης.
Είναι σημαντικό να ελέγξετε τις δυνατότητες του μικροελεγκτή που σκοπεύετε να χρησιμοποιήσετε για να εξακριβώσετε τις επιλογές που έχετε για εφαρμογή χαμηλής ισχύος. Οι μικροελεγκτές υπήρξαν ένας από τους μεγαλύτερους δικαιούχους της τεχνολογικής προόδου και τώρα υπάρχουν αρκετοί μικροελεγκτές εξαιρετικά χαμηλής ισχύος που διασφαλίζουν ότι έχετε πόρους που θα σας βοηθήσουν να παραμείνετε εντός του προϋπολογισμού ισχύος σας. Ορισμένα από αυτά παρέχουν επίσης διάφορα εργαλεία λογισμικού ανάλυσης ισχύος, τα οποία μπορείτε να εκμεταλλευτείτε, για αποτελεσματικό σχεδιασμό. Ένα προσωπικό αγαπημένο είναι η γραμμή μικροελεγκτών MSP430 από το Texas Instrument.