Faire durer longtemps une batterie dans un circuit à microcontrôleur


26

J'espère alimenter un ATtiny85V pendant longtemps sur une petite batterie, probablement une pile bouton.

J'ai regardé le côté logiciel, et mon code est piloté par une horloge de surveillance, les convertisseurs analogiques et numériques inutilisés sont éteints, la puce fonctionne à 1 MHz, etc. Bien sûr, étant à la fois occupé et nouveau, je ne suis pas sûr exactement combien de courant il consomme, mais j'espère que je l'ai essentiellement minimisé.

Toutes les quelques secondes, il se réveille, vérifie son niveau de tension sur les ADC, l'enregistre sur RAM et se rendort. S'il détecte qu'une ligne série est connectée, il rejette les données.

Cependant, maintenant je regarde le circuit dans son ensemble et je me demande s'il y a des choses que je devrais faire pour rendre le circuit dans son ensemble plus convivial pour la batterie?

Quelles sont les choses à faire et à ne pas faire quand il s'agit de concevoir un circuit (simple) de longue durée où un composant (le microcontrôleur) a une consommation de courant répétitive mais variable?

Par exemple:

  • Un indicateur LED est-il un gros problème? Utilise-t-il la batterie lorsqu'elle est lumineuse? Dois-je mettre une résistance géante dessus pour la diminuer, ou est-ce que cela fait simplement que la résistance utilise la batterie?
  • Dois-je utiliser des condensateurs de dérivation / découplage pour égaliser la consommation de courant de la batterie, ou le condensateur gaspillera-t-il simplement l'énergie de la batterie?
  • Le microcontrôleur n'a besoin que de 1,8 V, mais je n'ai pas de piles de 1,8 V. Dois-je utiliser deux piles 1.x et lui envoyer trop de tension? Puis-je prolonger la durée de vie de la batterie en "n'utilisant pas autant de volts"? Comment je fais ça?
  • Faut-il plus de puissance pour vérifier si une broche est HAUT ou BAS? Comme par rapport à un no-op ou à une arithmétique, y a-t-il beaucoup d'énergie supplémentaire pour vérifier l'état de l'une des broches d'E / S GP?

Je sais vaguement comment calculer (et plus vaguement comment mesurer) le courant, la tension, la puissance, mais je ne sais pas vraiment laquelle de ces choses équivaut à la durée de vie de la batterie. Est la mesure importante de la durée de vie de la batterie à Coulombs?

J'ai cette vague idée que les batteries sont pleines de trucs comme:

  • charge, comme en ampères-heures
  • énergie, comme en wattheures
  • puissance, comme en watts

mais je ne sais pas vraiment ce que mon circuit "mange" quand il tourne. J'ai lu pas mal de EE101 et de manuels de physique, mais je n'ai pas vraiment d'expérience en laboratoire. En d'autres termes, j'ai lu une tonne sur les batteries, mais je ne suis pas vraiment sûr de ce que cela signifie dans la pratique.

Les résistances utilisent-elles la durée de vie de la batterie? Est-ce que les condensateurs? Faire des diodes? Je soupçonne qu'ils le font tous, mais quels sont les chiffres qui comptent? Impédance? Dissipation de puissance? Courant? Tension?

Existe-t-il un moyen de réduire la tension sans gaspiller la batterie? Existe-t-il un moyen de réduire la tension tout en augmentant la durée de vie de la batterie?


6
C'est une question très très large. Vous devez presque poser plusieurs questions. Je pourrais donner une question complète pour la question d'alimentation LED.
Kortuk

1
Cool, je vais le diviser après les heures de bureau. Peut-être que celui-ci est juste à faire et à ne pas faire. Je pense que de telles réponses seraient utiles aux gens qui essaient simplement de tirer le meilleur parti d'une batterie, mais je suppose que donner n'importe quel type de réponse faisant autorité ou éducatif nécessite une question plus étroite.
Jack Schmidt

Ouais, j'ai réalisé que j'allais devoir sectionner ma réponse par votre question et cela me prendrait une heure.
Kortuk

BTW ma femme a trouvé makezine.com/makeitlast qui pourrait éventuellement être utile, car il s'agit essentiellement d'un concours pour faire ce genre de chose. Je pense que cela commence aujourd'hui, donc ils n'ont aucun indice affiché sur la façon de le faire. En tout cas, mon projet est indépendant, et je doute que j'aurais quand même le temps de participer :) N'hésitez pas à attendre la fin du concours si vous n'aimez pas de telles choses.
Jack Schmidt

Réponses:


20

Juste une liste aléatoire, si vous postez votre schéma, ce serait probablement plus facile:

Les piles au lithium de 1,8 V sont très faciles à trouver, mais plus probablement votre interface série a besoin de 3,3 V? À moins que votre extrémité de réception ne traite de 1,8 V.

Le courant de fuite augmente généralement à mesure que votre tension augmente, il est donc généralement préférable de l'abaisser. Tenez également compte du point de coupure du système par rapport aux caractéristiques de la batterie. Les caractéristiques de «mort» de la batterie seront déterminées par la chimie de la batterie que vous utilisez. Par exemple, si votre uC passe à 1,7 V, vous souhaiterez peut-être utiliser une batterie à tension plus élevée, car avec certaines batteries, la tension de sortie diminuera lentement à mesure que la batterie s'éteint. Vous obtiendrez plus de vie avec une batterie de 3,3 V, car lorsqu'elle commence à mourir, sa sortie chutera lentement et vous pourrez fonctionner jusqu'à 1,8 V. Si vous utilisez une batterie de 1,8 V, vous allez vous arrêter assez rapidement à mesure que la batterie s'éteint. Tout cela suppose que votre interface série ou d'autres composants peuvent gérer une large plage de tension (je sais que l'AVR le peut).

Les LED consomment beaucoup d'énergie, à moins que vous n'utilisiez une LED de très faible puissance et que vous contrôliez sa consommation de courant, elle consomme probablement beaucoup plus de courant que l'AVR. S'il est juste là pour le débogage, ne le remplissez pas pour la production ou ne le faites clignoter que de temps en temps ou quelque chose pour minimiser son temps, et contrôlez définitivement son tirage actuel.

Si vous le pouvez, choisissez la polarité / l'état de repos de votre interface série pour consommer le moins d'énergie possible, son état de repos ne devrait pas être de l'alimentation. Si des tractions sont nécessaires, utilisez la plus grande résistance possible pour maintenir l'intégrité du signal mais minimiser l'utilisation actuelle. Si l'alimentation est une préoccupation majeure, utilisez un schéma de signaux qui favorise les bits qui ne consomment pas d'énergie. Par exemple, si vous avez des tractions, l'utilisation d'un protocole qui entraîne de nombreux 1 dans le signal laissera l'interface série dans un état qui ne consomme pas autant d'énergie la plupart du temps. De telles optimisations ne valent que si vous faites un usage intensif du bus série. Si son utilisation est très légère, assurez-vous simplement que son état de repos ne consomme pas d'énergie.

De manière générale, vous pouvez supposer que toutes les instructions (lecture de GPIO, etc.) nécessitent la même quantité d'énergie. Ce n'est pas vraiment vrai mais la différence de puissance est minime.

La consommation d'énergie dépend beaucoup plus du nombre / type de périphériques que vous avez allumés et du temps que le micro passe actif par rapport à dormir. Ainsi, l'ADC utilise plus d'énergie, les écritures EEPROM utilisent une bonne quantité d'énergie. Plus précisément, quelque chose comme les écritures EEPROM sont généralement effectuées en assez gros `` morceaux '', vous devez donc accumuler autant d'informations que possible avant de faire l'écriture dans l'EEPROM (si vous l'utilisez même bien sûr). Pour l'ADC, ce micro prend en charge la lecture de l'ADC pendant 2 de ses états de sommeil, car la conversion de l'ADC prend un temps relativement long, c'est un bon moment pour dormir.

Vous devriez probablement juste lire les sections sur la gestion de l'alimentation, les états de veille et la réduction de la consommation d'énergie dans la fiche technique du microcontrôleur: page 35 de liens sur. Gardez l'AVR dans l'état de sommeil le plus profond possible aussi longtemps que possible. La seule exception à cela est que vous devez tenir compte du temps de démarrage et d'arrêt. Cela ne vaut pas la peine de dormir pendant 10 cycles si le réveil prend 25, etc.

Les résistances utilisent-elles la durée de vie de la batterie? Est-ce que les condensateurs? Faire des diodes?

Ils le font tous dans une certaine mesure. Les résistances se dissipent le plus dans la plupart des applications:

P = V * I

P = V ^ 2 / R ou P = I ^ 2 * R (où V est la chute de tension aux bornes de la résistance)

Les diodes ont une chute de tension (relativement) fixe, de sorte que la dissipation de puissance est presque exclusivement liée au courant traversant la diode. Par exemple, une diode avec une chute de tension directe de 0,7 V, P = 0,7 * I si le courant se déplace vers l'avant à travers la diode. C'est une simplification bien sûr et vous devriez vérifier le mode de fonctionnement en fonction des caractéristiques IV de la diode.

Les condensateurs ne devraient théoriquement pas dissiper de puissance, mais en réalité, ils ont une résistance en série finie et un courant de fuite non nul, ce qui signifie qu'ils dissipent une certaine puissance, ce qui n'est généralement pas quelque chose dont vous devriez vous inquiéter avec des tensions aussi faibles. Cela étant dit, choisir des condensateurs avec un courant de fuite minimal et un ESR est un gain de puissance.

En ce qui concerne leur utilisation pour lisser la consommation de batterie, cela n'aide pas vraiment pour l'utilisation de l'énergie, c'est plus pour le filtrage. La chimie de la batterie entre également en jeu ici, certaines chimies seront plus heureuses avec un tirage constant, d'autres mieux avec des tirages actuels hérissés.


1
la partie importante de P = V ^ 2 / R est que lorsque R augmente avec une tension fixe, la consommation d'énergie diminue.
Kortuk

Cool, donc pour utiliser plus de la batterie, j'aurai probablement besoin d'une tension plus élevée (éventuellement en utilisant le régulateur suggéré par Andrew). Je ferai quelques expériences pour voir à quel point la tension série prendra. Je m'assurerai également de définir les broches inutilisées en sortie. La série n'est utilisée qu'occasionnellement, je vais donc vérifier l'état de repos. J'ai définitivement essayé d'arrêter tous les périphériques que je peux.
Jack Schmidt

Pour les condensateurs: je n'ai donc probablement pas besoin de condensateur pour aider la batterie. Vérifiez la chimie de la batterie, mais en supposant qu'elle puisse gérer le modèle de drain de courant que j'ai, alors pas besoin d'essayer de l'ajuster, non?
Jack Schmidt

Merci pour la chose P. Je pense que je comprends maintenant. P = I * V où V est la chute de tension, donc je peux mesurer la décharge de la batterie en P ou I (ou P-heures ou I-heures) tant que la tension ne peut pas être modifiée. Je ne sais toujours pas si je peux changer V "gratuitement".
Jack Schmidt

1
Le régulateur buck-boost andrew mentionné est vraiment la meilleure solution. Je ne l'ai pas mentionné car la disposition de tels circuits est généralement critique. Ils sont difficiles à tester sans performances géniales ou rayonnant de tonnes d'EMI. Lisez attentivement la fiche technique, des recommandations pour la mise en page et l'identification des chemins critiques sont généralement incluses. Il y aura également des contraintes plus strictes sur certaines des pièces utilisées. Condensateurs à faible ESR et autres.
Mark

12

Mark a donné une excellente réponse et a abordé bon nombre des points que j'allais faire valoir. Il y en a quelques-uns auxquels j'aimerais également contribuer.

Utilisez un oscilloscope avec une résistance basse ohm en série avec le retour à la batterie commun pour effectuer des mesures de courant. Le tirage actuel avec un microcontrôleur n'est pas simple et, en règle générale, les compteurs sont beaucoup trop lents pour vous donner une bonne idée de ce qui se passe. La signification de "faible ohm" dépend de la consommation de courant attendue. une résistance de 1 ohm développera 100 mV pour chaque 100 mA tirée, et c'est probablement trop pour vous. J'essaierais une résistance de 10 ohms à 1% ou 0,5%; vous verrez 100 mV pour chaque 10 mA de consommation de courant. 18 ohms vous donneraient 100 mV pour chaque 5,5 mA. Si vous optez VRAIMENT pour une faible puissance, vous pourrez peut-être vous en sortir avec 1k; I = V / R: vous verrez 100mV pour chaque 100uA de courant consommé. Attention cependant; si vous tirez suffisamment de courant, vous finirez par chuter trop à travers le shunt et vos mesures seront coupées, sans parler du circuit ne fonctionnera probablement pas. :-)

Avec l'oscilloscope connecté, essayez quelques fréquences de fonctionnement différentes pour le microcontrôleur. Vous serez peut-être surpris d'apprendre que vous consommez moins d'énergie avec une vitesse d'horloge plus élevée, car vous passez beaucoup moins de temps «éveillé».

Éliminez autant que possible les tractions / baisses. Vous ne devriez pas en avoir sur aucune sortie, car vous pouvez les conduire à un état inactif dans la plupart des cas. Les entrées doivent être liées à ce qui a du sens, en utilisant une valeur aussi élevée que possible, comme l'a dit Mark.

Assurez-vous que votre microcontrôleur est aussi éteint que possible. Transformez les broches inutilisées en sorties et mettez-les dans un état (élevé ou faible, peu importe). Ne laissez pas les LED allumées. Si vous pouvez éteindre d'autres composants ou arrêter leurs horloges, faites-le. Les mémoires Flash SPI, par exemple, ont souvent une commande de mise hors tension qui prendra la consommation d'énergie déjà faible et la réduira encore plus.

D'autres ont abordé l'aspect de la tension, et j'aimerais également le commenter. Vous vous retrouverez probablement avec une bien meilleure utilisation de la batterie si vous utilisez un régulateur buck / boost à haute efficacité entre la batterie et votre circuit. Le régulateur sera en mode abaissement (réduction de tension) lorsque le niveau de la batterie est supérieur au 1,8 V dont vous avez besoin, et passera en mode boost (augmentation de la tension) lorsque le niveau de la batterie descend en dessous de 1,8 V. Cela vous permettra de faire fonctionner le circuit jusqu'à ce que la batterie soit bel et bien morte, ce qui vaut bien les quelques pour cent de perte d'efficacité que vous obtiendrez en les utilisant. Assurez-vous de sélectionner le régulateur en fonction de son efficacité sur toute la plage que vous souhaitez utiliser et dimensionnez le régulateur de manière appropriée; un régulateur qui peut fournir 1A à 98% d'efficacité est probablement à 60% d'efficacité délivrant 50mA. Lisez attentivement les fiches techniques.


Cool. Je n'ai jamais utilisé de lunette auparavant, mais je soupçonne que notre laboratoire local sera heureux de me le montrer (en ce moment j'utilise en fait le multimètre en série pour mesurer le courant; pas très bon). - Aussi, recommanderiez-vous le régulateur même si je n'utilise que 1-10mA, en supposant que je puisse trouver une pièce appropriée? L'efficacité de 90% est-elle suffisante (je me souviens en avoir trouvé une bon marché dans cette gamme), ou utilise-t-elle plus de courant qu'elle ne me fait économiser?
Jack Schmidt

1
très bon point pour jouer avec la fréquence, me rappelle comment la radio wifi de mon téléphone portable utilise plus d'énergie que le modem cellulaire mais le wifi est tellement plus rapide qu'il peut dormir plus et finit par être globalement meilleur en puissance à cause de cela.
Mark

2
Une autre astuce pour estimer l'utilisation actuelle moyenne du microcontrôleur dans des scénarios où la consommation de courant sera "explosive" consiste à charger un très gros condensateur et à le faire alimenter un régulateur à faible courant de repos pour simuler la tension de la batterie. Un condensateur de 100 000 uF baissera de 0,01 volts par milliampère-seconde. S'il chute de 0,3 volt en cinq minutes (300 secondes), votre consommation de courant moyenne est de 100 µA.
supercat

Le point de l'efficacité des régulateurs est très important. Vous devez donc estimer votre plage de consommation actuelle pour sélectionner un régulateur approprié dans cette plage
gustavovelascoh

4

Avec votre circuit, je recommanderais d'utiliser un multimètre sur la gamme des microampères pour mesurer la consommation de courant. Ensuite, compte tenu des caractéristiques de la batterie, vous pouvez calculer la longévité. Ce n'est pas nécessairement des ampères-heures / courant, car la batterie aura des caractéristiques de décharge différentes pour différentes charges. Mais, cela peut être utile comme approximation.

À 1 MHz, je pense que vous aspirerez un peu de puissance - au moins 100µA, si les micros PIC sont comparables. Mais cela va être submergé par les 5 à 20 mA qui traversent votre LED, vous devez donc vous en débarrasser en premier.


Cool, LED effacée. Ayant du mal à obtenir une mesure précise. Ressemble à 0,9 mA en ce moment, alors peut-être que mon logiciel ne s'éteint pas autant que je le pensais. Avec Arduino (et LED de rythme cardiaque) impliqué, cela ressemble plus à 8-9mA, donc au moins le petit aide.
Jack Schmidt

1

De nos jours, il existe des kits de développement et des cartes de dérivation facilement disponibles qui sont extrêmement pratiques pour effectuer des mesures de courant précises, dans certains cas jusqu'à la gamme nA. Si vous n'avez pas encore définitivement vérifié le µCurrent Gold . C'est bon pour les mesures statiques, mais moins pour l'enregistrement des mesures dans le temps.

Vous pouvez toujours utiliser le µCurrent pour raccorder un amplificateur différentiel à la sortie. Ensuite, vous pouvez alimenter cela vers un oscilliscope ou un analyseur logique avec des entrées analogiques. J'ai rédigé un didacticiel complet sur les écrous et les boulons à ce sujet, j'ai l'impression que cela peut aider les gens à petit budget qui n'ont pas tout à fait les bons outils.

C'est incroyable ce que vous pouvez apprendre non seulement de ce que fait la tension à l'intérieur de votre circuit, mais aussi de la façon dont elle réagit à chaque petit pic de courant. Cela m'a fait économiser quelques fois lors du choix des technologies de batterie et des tests de validation. 😎


0

Toutes les réponses ont déjà des points importants. J'en ajouterai un de mon expérience.

Lorsque je développais des appareils avec une consommation inférieure à 10uA, voire inférieure à 1uA en mode veille profonde, le nettoyage de la carte faisait une différence. Une fois, j'avais 7 cartes sur 10 avec la consommation actuelle attendue. Tout était pareil et tout fonctionnait bien. Après les avoir nettoyés dans un nettoyeur à ultrasons, toutes les planches sont arrivées au résultat attendu.

Et enfin, estimez votre consommation attendue / ciblée en vérifiant les fiches techniques de tous vos éléments. Si vous les gérez bien, vous atteindrez votre estimation. Cela inclut toutes les broches inutilisées du microcontrôleur. Même si vous éteignez votre ADC, assurez-vous que la configuration des broches éteinte est la meilleure en fonction de votre connexion externe.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.