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

Μείωση κατανάλωσης ισχύος μπαταρίας για Digispark ATtiny85: 7 βήματα
Μείωση κατανάλωσης ισχύος μπαταρίας για Digispark ATtiny85: 7 βήματα

Βίντεο: Μείωση κατανάλωσης ισχύος μπαταρίας για Digispark ATtiny85: 7 βήματα

Βίντεο: Μείωση κατανάλωσης ισχύος μπαταρίας για Digispark ATtiny85: 7 βήματα
Βίντεο: 10+1 tips για να μην ξελιγώνεις την μπαταρία του iPhone 2024, Νοέμβριος
Anonim
Μείωση κατανάλωσης ισχύος μπαταρίας για Digispark ATtiny85
Μείωση κατανάλωσης ισχύος μπαταρίας για Digispark ATtiny85
Μείωση κατανάλωσης ισχύος μπαταρίας για Digispark ATtiny85
Μείωση κατανάλωσης ισχύος μπαταρίας για Digispark ATtiny85

ή: Εκτέλεση Arduino με κελί νομίσματος 2032 για 2 χρόνια.

Χρησιμοποιώντας το Digispark Arduino Board έξω από το κουτί με ένα πρόγραμμα Arduino, αντλεί 20 mA στα 5 volt.

Με τροφοδοτικό 5 volt 2000 mAh θα λειτουργεί μόνο για 4 ημέρες.

Βήμα 1: Μείωση της τάσης τροφοδοσίας χρησιμοποιώντας μπαταρία LiPo

Μείωση της τάσης τροφοδοσίας χρησιμοποιώντας μπαταρία LiPo
Μείωση της τάσης τροφοδοσίας χρησιμοποιώντας μπαταρία LiPo

Χρησιμοποιώντας μια μπαταρία LiPo με τάση 3,7 volt ως τροφοδοσία, η πλακέτα Digispark σας αντλεί μόνο 13 mA.

Με μπαταρία 2000 mAh θα λειτουργεί για 6 ημέρες.

Βήμα 2: Μειώστε το ρολόι της CPU

Εάν δεν χρησιμοποιείτε σύνδεση USB, βαριά μαθηματικά ή γρήγορη ψηφοφορία στο πρόγραμμά σας, μειώστε την ταχύτητα του ρολογιού. Π.χ. Η βαριά βιβλιοθήκη λήψης υπερύθρων ψηφοφορίας IRMP λειτουργεί καλά στα 8 MHz.

Στα 1 MHz το Digispark αντλεί 6 mA. Με μπαταρία 2000 mAh θα λειτουργεί για 14 ημέρες.

Βήμα 3: Αφαιρέστε το ενσωματωμένο LED ισχύος και τον ρυθμιστή ισχύος

Απενεργοποιήστε το LED τροφοδοσίας σπάζοντας το χάλκινο σύρμα που συνδέει το LED τροφοδοσίας με τη δίοδο με ένα μαχαίρι ή αφαιρέστε / απενεργοποιήστε την αντίσταση 102.

Δεδομένου ότι χρησιμοποιείτε μπαταρία LiPo τώρα, μπορείτε επίσης να αφαιρέσετε το IC του ρυθμιστή ισχύος επί του σκάφους. Πρώτα σηκώστε τους εξωτερικούς πείρους με τη βοήθεια ενός συγκολλητικού σιδήρου και ενός πείρου. Στη συνέχεια κολλήστε τη μεγάλη υποδοχή και αφαιρέστε τη ρυθμιστική αρχή. Για μικρούς ρυθμιστές, χρησιμοποιήστε πολύ κόλλα και ζεστάνετε και τις 3 ακίδες μαζί και αφαιρέστε το.

Σε 1 MHz και 3,8 volt το Digispark σας αντλεί τώρα 4,3 mA. Με μπαταρία 2000 mAh θα λειτουργεί για 19 ημέρες.

Βήμα 4: Αποσύνδεση του USB D-Pullup Resistor (με σήμανση 152) Από 5 Volt (VCC) και Συνδέστε το σε USB V+

Αποσύνδεση του USB D-Pullup Resistor (με σήμανση 152) Από 5 Volt (VCC) και σύνδεση με USB V+
Αποσύνδεση του USB D-Pullup Resistor (με σήμανση 152) Από 5 Volt (VCC) και σύνδεση με USB V+

Αυτή η τροποποίηση είναι συμβατή με τις εκδόσεις all1.x του bootloader micronucleus. Εάν έχετε ήδη έναν νέο φορτωτή εκκίνησης 2.x στον πίνακα, πρέπει να αναβαθμίσετε σε μία τις εκδόσεις 2.5 με το "activePullup" στο όνομά του. Ο ευκολότερος τρόπος για να γίνει αυτό, είναι να εγκαταστήσετε το νέο πακέτο της πλακέτας digispark και να κάψετε το bootloader με τη συνιστώμενη (!!! όχι την προεπιλεγμένη ή επιθετική !!!) έκδοση.

Σπάστε το χάλκινο σύρμα στο πλάι της αντίστασης που δείχνει στο ATtiny. Αυτό απενεργοποιεί τη διεπαφή USB και με τη σειρά του τη δυνατότητα προγραμματισμού της πλακέτας Digispark μέσω USB. Για να την ενεργοποιήσετε ξανά, αλλά και πάλι να εξοικονομήσετε ενέργεια, συνδέστε την αντίσταση (με σήμανση 152) απευθείας στο USB V+ που είναι εύκολα διαθέσιμο στην εξωτερική πλευρά της διόδου. Η δίοδος και οι σωστές πλευρές της μπορούν να βρεθούν χρησιμοποιώντας έναν ελεγκτή συνέχειας. Η μία πλευρά αυτής της διόδου συνδέεται με τον ακροδέκτη 8 του ATtiny (VCC) και του Digispark 5V. Η άλλη πλευρά είναι συνδεδεμένη στο USB V+. Τώρα η αντίσταση τράβηγμα USB ενεργοποιείται μόνο εάν η πλακέτα Digispark είναι συνδεδεμένη σε USB π.χ. κατά τη διάρκεια του προγραμματισμού.

Τα τελευταία 2 βήματα είναι επίσης τεκμηριωμένα εδώ.

Σε 1 MHz και 3,8 volt το Digispark σας αντλεί τώρα 3 mA. Με μπαταρία 2000 mAh θα λειτουργεί για 28 ημέρες.

Βήμα 5: Χρήση ύπνου αντί καθυστέρησης ()

Χρήση ύπνου αντί καθυστέρησης ()
Χρήση ύπνου αντί καθυστέρησης ()

Αντί για μεγάλες καθυστερήσεις, μπορείτε να χρησιμοποιήσετε τον ύπνο CPU εξοικονόμησης ενέργειας. Ο ύπνος μπορεί να διαρκέσει από 15 χιλιοστά του δευτερολέπτου έως 8 δευτερόλεπτα σε βήματα των 15, 30, 60, 120, 250, 500 χιλιοστών του δευτερολέπτου και 1, 2, 4, 8 δευτερολέπτων.

Δεδομένου ότι ο χρόνος εκκίνησης από τον ύπνο είναι 65 χιλιοστά του δευτερολέπτου με τις εργοστασιακές ρυθμίσεις ασφάλειας digispark, μόνο οι καθυστερήσεις μεγαλύτερες από 80 ms μπορούν να αντικατασταθούν από τον ύπνο.

Κατά τη διάρκεια του ύπνου το Digispark αντλεί 27 μA. Με ένα κελί κουμπιού 200 mAh 2032 θα κοιμάται για 10 μήνες.

Για να είναι σωστό, το Digispark πρέπει να ξυπνά τουλάχιστον κάθε 8 δευτερόλεπτα, να λειτουργεί για τουλάχιστον 65 χιλιοστά του δευτερολέπτου και να αντλεί ρεύμα περίπου 2 mA. Αυτό οδηγεί σε μέσο ρεύμα 42 μΑ και 6 μήνες. Σε αυτό το σενάριο δεν έχει σχεδόν καμία διαφορά εάν το πρόγραμμά σας λειτουργεί για 10 χιλιοστά του δευτερολέπτου (κάθε 8 δευτερόλεπτα).

Ο κωδικός για τη χρήση του ύπνου είναι:

#include #include volatile uint16_t sNumberOfSleeps = 0; εξωτερικά πτητικά ανυπόγραφα μακριά millis_timer_millis? void setup () {sleep_enable (); set_sleep_mode (SLEEP_MODE_PWR_DOWN); // βαθύτερος τρόπος ύπνου…} void loop () {… sleepWithWatchdog (WDTO_250MS, true); // ύπνος για 250 ms… sleepWithWatchdog (WDTO_2S, true); // ύπνο για 2 δευτερόλεπτα…}/ * * aWatchdogPrescaler μπορεί να είναι 0 (15 ms) έως 3 (120 ms), 4 (250 ms) έως 9 (8000 ms) */ uint16_t computeSleepMillis (uint8_t aWatchdogPrescaler) {uint16_t tResultMillis = 8000? για (uint8_t i = 0; i εξοικονομεί 200 uA // χρήση wdt_enable () αφού χειρίζεται ότι το bit WDP3 βρίσκεται στο bit 5 του μητρώου WDTCR wdt_enable (aWatchdogPrescaler); WDTCR | = _BV (WDIE) | _BV (WDIF); // Διακοπή παρατηρητή ενεργοποίηση + επαναφορά σημαίας διακοπής -> χρειάζεται ISR (WDT_vect) sei (); // Ενεργοποίηση διακοπών sleep_cpu (); // Η διακοπή φύλακα θα μας ξυπνήσει από τον ύπνο wdt_disable (); // Επειδή η επόμενη διακοπή θα γίνει διαφορετικά οδηγεί σε επαναφορά, αφού το wdt_enable () ορίζει WDE / Watchdog System Reset Ενεργοποίηση ADCSRA | = ADEN; / * * Δεδομένου ότι το ρολόι του χρονοδιακόπτη μπορεί να απενεργοποιηθεί, ρυθμίστε το millis μόνο εάν δεν κοιμάστε σε λειτουργία IDLE (SM2… 0 bit είναι 000) * / εάν (aAdjustMillis && (MCUCR & ((_BV (SM1) | _BV (SM0))))! = 0) {millis_timer_millis += computeSleepMillis (aWatchdogPrescaler);}} / * * Αυτή η διακοπή αφυπνίζει τον επεξεργαστή από τον ύπνο * / ISR (WDT_vect) {sNumberOfSleeps ++;}

Βήμα 6: Τροποποιήστε τις ασφάλειες

Τα 22 mA από τα 27 mA αντλούνται από το BOD (ανίχνευση BrownOutDetection/undervoltage). Το BOD μπορεί να απενεργοποιηθεί μόνο με επαναπρογραμματισμό των ασφαλειών, κάτι που μπορεί να γίνει μόνο με προγραμματιστή ISP. Χρησιμοποιώντας αυτό το σενάριο, μπορείτε να μειώσετε το ρεύμα στα 5,5 μA και επίσης να μειώσετε τον χρόνο εκκίνησης από τον ύπνο σε 4 χιλιοστά του δευτερολέπτου.

5 από τα υπόλοιπα 5,5 μA αντλούνται από τον ενεργό μετρητή φύλακα. Εάν μπορείτε να χρησιμοποιήσετε εξωτερικές επαναφορές για αφύπνιση, η τρέχουσα κατανάλωση μπορεί να μειωθεί στα 0,3 μA όπως αναφέρεται στο φύλλο δεδομένων.

Εάν δεν μπορείτε να φτάσετε σε αυτήν την τιμή, ο λόγος μπορεί να είναι ότι το αντίστροφο ρεύμα της διόδου schottky μεταξύ VCC και pullup είναι πολύ υψηλό. Λάβετε υπόψη ότι μια αντίσταση 12 MOhm αντλεί επίσης 0,3 μA στα 3,7 volt.

Αυτό έχει ως αποτέλεσμα μια μέση κατανάλωση ρεύματος 9 μA (2,5 χρόνια με ένα κελί κουμπιού 200 mAh 2032) εάν π.χ. επεξεργάζεστε δεδομένα κάθε 8 δευτερόλεπτα για 3 χιλιοστά του δευτερολέπτου όπως εδώ.

Βήμα 7: Περισσότερες πληροφορίες

Τρέχον σχέδιο μιας σανίδας Digispark.

Έργο χρησιμοποιώντας αυτές τις οδηγίες.

Συνιστάται: