Table des matières:

Réduire la consommation d'énergie de la batterie pour Digispark ATtiny85 : 7 étapes
Réduire la consommation d'énergie de la batterie pour Digispark ATtiny85 : 7 étapes

Vidéo: Réduire la consommation d'énergie de la batterie pour Digispark ATtiny85 : 7 étapes

Vidéo: Réduire la consommation d'énergie de la batterie pour Digispark ATtiny85 : 7 étapes
Vidéo: BATTERIE ANDROID - L'optimiser pour doubler l'autonomie en 10 astuces ! 2024, Novembre
Anonim
Réduire la consommation d'énergie de la batterie pour Digispark ATtiny85
Réduire la consommation d'énergie de la batterie pour Digispark ATtiny85
Réduire la consommation d'énergie de la batterie pour Digispark ATtiny85
Réduire la consommation d'énergie de la batterie pour Digispark ATtiny85

ou: Exécuter un Arduino avec une pile bouton 2032 pendant 2 ans.

En utilisant votre carte Digispark Arduino prête à l'emploi avec un programme Arduino, elle consomme 20 mA à 5 volts.

Avec une banque d'alimentation de 5 volts de 2000 mAh, il ne fonctionnera que pendant 4 jours.

Étape 1: Réduire la tension d'alimentation en utilisant une batterie LiPo

Réduire la tension d'alimentation en utilisant une batterie LiPo
Réduire la tension d'alimentation en utilisant une batterie LiPo

En utilisant une batterie LiPo avec 3,7 volts comme alimentation, votre carte Digispark ne consomme que 13 mA.

Avec une batterie de 2000 mAh, il fonctionnera pendant 6 jours.

Étape 2: Réduisez l'horloge du processeur

Si vous n'utilisez pas de connexion USB, de calcul intensif ou d'interrogation rapide dans votre programme, réduisez la vitesse d'horloge. Par exemple. la bibliothèque de réception infrarouge à interrogation lourde IRMP fonctionne bien à 8 MHz.

A 1 MHz, votre Digispark consomme 6 mA. Avec une batterie de 2000 mAh, il fonctionnera pendant 14 jours.

Étape 3: Retirez le voyant d'alimentation intégré et le régulateur d'alimentation

Désactivez la LED d'alimentation en cassant le fil de cuivre qui relie la LED d'alimentation à la diode avec un couteau ou retirez/désactivez la résistance 102.

Étant donné que vous utilisez maintenant une batterie LiPo, vous pouvez également retirer le circuit intégré du régulateur de puissance intégré. Soulevez d'abord les broches extérieures à l'aide d'un fer à souder et d'une broche. Puis soudez le gros connecteur et retirez le régulateur. Pour les petits régulateurs, utilisez beaucoup de soudure et chauffez les 3 broches ensemble, puis retirez-les.

À 1 MHz et 3,8 volts, votre Digispark consomme maintenant 4,3 mA. Avec une batterie de 2000 mAh, il fonctionnera pendant 19 jours.

Étape 4: Déconnecter la résistance USB D-Pullup (marquée 152) de 5 volts (VCC) et la connecter à USB V+

Déconnecter la résistance USB D-Pullup (marquée 152) de 5 volts (VCC) et la connecter à USB V+
Déconnecter la résistance USB D-Pullup (marquée 152) de 5 volts (VCC) et la connecter à USB V+

Cette modification est compatible avec toutes les versions 1.x du chargeur de démarrage micronucleus. Si vous avez déjà un nouveau bootloader 2.x sur votre carte, vous devez passer à l'une des versions 2.5 avec "activePullup" dans son nom. Le moyen le plus simple de le faire est d'installer le nouveau package de la carte digispark et de graver le chargeur de démarrage avec la version recommandée (!!!pas la version par défaut ou agressive!!!).

Casser le fil de cuivre du côté de la résistance qui pointe vers l'ATtiny. Cela désactive l'interface USB et à son tour la possibilité de programmer la carte Digispark via USB. Pour le réactiver, tout en économisant de l'énergie, connectez la résistance (marquée 152) directement à l'USB V+ qui est facilement disponible sur le côté extérieur de la diode Shottky. La diode et ses côtés corrects peuvent être trouvés à l'aide d'un testeur de continuité. Un côté de cette diode est connecté à la broche 8 de l'ATtiny (VCC) et du Digispark 5V. L'autre côté est connecté à l'USB V+. Désormais, la résistance de rappel USB n'est activée que si la carte Digispark est connectée à l'USB, par ex. pendant la programmation.

Les 2 dernières étapes sont également documentées ici.

À 1 MHz et 3,8 volts, votre Digispark consomme maintenant 3 mA. Avec une batterie de 2000 mAh, il fonctionnera pendant 28 jours.

Étape 5: utilisez le mode veille au lieu de délai ()

Utiliser le mode veille au lieu de délai ()
Utiliser le mode veille au lieu de délai ()

Au lieu de longs délais, vous pouvez utiliser la mise en veille du processeur à économie d'énergie. Les sommeils peuvent durer de 15 millisecondes à 8 secondes par pas de 15, 30, 60, 120, 250, 500 millisecondes et 1, 2, 4, 8 secondes.

Étant donné que le temps de démarrage à partir de la veille est de 65 millisecondes avec les paramètres de fusible digispark d'usine, seuls les retards supérieurs à 80 ms peuvent être remplacés par la veille.

Pendant le sommeil, votre Digispark consomme 27 µA. Avec une pile bouton 200 mAh 2032, il dormira pendant 10 mois.

Pour être correct, le Digispark doit se réveiller au moins toutes les 8 secondes, fonctionner pendant au moins 65 millisecondes et consommer environ 2 mA de courant. Cela conduit à un courant moyen de 42 µA et 6 mois. Dans ce scénario, cela ne fait presque aucune différence si votre programme s'exécute pendant 10 millisecondes (toutes les 8 secondes).

Le code pour utiliser le sommeil est:

#include #include volatile uint16_t sNumberOfSleeps = 0; externe volatile non signé long millis_timer_millis; void setup() { sleep_enable(); set_sleep_mode(SLEEP_MODE_PWR_DOWN); // mode de veille le plus profond … } void loop(){ … sleepWithWatchdog(WDTO_250MS, true); // veille pendant 250 ms … sleepWithWatchdog(WDTO_2S, true); // sleep for 2 s … } /* * aWatchdogPrescaler peut être de 0 (15 ms) à 3 (120 ms), 4 (250 ms) jusqu'à 9 (8000 ms) */ uint16_t computeSleepMillis(uint8_t aWatchdogPrescaler) { uint16_t tResultMillis = 8000; for (uint8_t i = 0; j'économise 200 uA // utilise wdt_enable() car il gère que le bit WDP3 est dans le bit 5 du registre WDTCR wdt_enable(aWatchdogPrescaler); WDTCR |= _BV(WDIE) | _BV(WDIF); // Activer l'interruption du chien de garde + réinitialiser l'indicateur d'interruption -> nécessite ISR (WDT_vect) sei (); // Activer les interruptions sleep_cpu (); // L'interruption du chien de garde nous réveillera du sommeil wdt_disable (); // Parce que la prochaine interruption sera autrement conduire à une réinitialisation, puisque wdt_enable() définit WDE / Watchdog System Reset Enable ADCSRA |= ADEN; /* * Étant donné que l'horloge de la minuterie peut être désactivée, ajustez les millis uniquement si vous ne dormez pas en mode IDLE (SM2…0 bits sont 000) */ si (aAdjustMillis && (MCUCR & ((_BV(SM1) | _BV(SM0)))) != 0) { millis_timer_millis += computeSleepMillis(aWatchdogPrescaler); } } /* * Cette interruption sort le cpu du sommeil */ ISR(WDT_vect) { sNumberOfSleeps++; }

Étape 6: Modifier les fusibles

22 mA des 27 mA sont prélevés par le DBO (BrownOutDetection/détection de sous-tension). Le BOD ne peut être désactivé qu'en reprogrammant les fusibles, ce qui ne peut être fait qu'avec un programmeur FAI. En utilisant ce script, vous pouvez réduire le courant jusqu'à 5,5 µA et également réduire le temps de démarrage du mode veille à 4 millisecondes.

5 des 5,5 µA restants sont prélevés par le compteur de chien de garde actif. Si vous pouvez utiliser des réinitialisations externes pour le réveil, la consommation de courant peut descendre jusqu'à 0,3 µA comme indiqué dans la fiche technique.

Si vous ne parvenez pas à atteindre cette valeur, la raison peut être que le courant inverse de la diode Schottky entre VCC et le pullup est trop élevé. Gardez à l'esprit qu'une résistance de 12 MOhm consomme également 0,3 µA à 3,7 volts.

Cela se traduit par une consommation de courant moyenne de 9 µA (2,5 ans avec une pile bouton 200 mAh 2032) si vous par ex. traiter les données toutes les 8 secondes pendant 3 millisecondes comme ici.

Étape 7: Informations complémentaires

Dessin actuel d'une planche Digispark.

Projet en utilisant ces instructions.

Conseillé: