Scénario
J'ai créé une belle serrure électronique pour mon dortoir. Il s’agit actuellement d’un Arduino Diecimila avec un servo [déverrouillant] la porte. Il dispose d'un clavier numérique avec 3x4 boutons et 5 DEL (2 paires de série et une seule DEL). Il fonctionne également actuellement sur un chargeur de téléphone portable.
Je l'ai maintenant repensé pour fonctionner sur un Arduino autonome (ATmega328), mais j'aimerais vraiment qu'il soit alimenté par des piles AA ou même par une pile 9V.
Pour la partie logicielle, j’ai pensé que je pourrais insérer des sleep
appels à certains moments dans la méthode de boucle pour maintenir la consommation d’énergie de ATmega aussi basse que possible. Et laissez les DEL "clignoter" avec le temps d'arrêt le plus long possible.
question 1
Quand on appuie sur un bouton pendant les quelques millisecondes pendant lesquelles la planche dort, restera-t-il "mémorisé" / "maintenu" jusqu'à ce qu'il sorte du sommeil, puis soit repris en appuyant sur un bouton?
Quelle serait la meilleure façon de gérer cette pression sur un bouton en veille? Puis-je le coder pour me réveiller à l’activité du bouton, ou dois-je le laisser dormir pendant 10 m, par exemple?. dans chaque boucle?
question 2
Comment ferais-je pour calculer combien de piles AA sont nécessaires pour faire fonctionner cet appareil pendant 10 mois?
De plus, je ne sais pas comment mesurer la consommation moyenne d’énergie par minute, car elle alterne rapidement, etc.
J'ai actuellement sur mon bureau un Arduino Pro Mini fonctionnant avec 2 piles AA et pouvant durer plus d'un an si nécessaire.
Trois aspects de la conception ont permis d'atteindre cet objectif.
1. Un régulateur différent
J'utilise un régulateur boost LTC3525. Il a un très faible courant de repos (7uA) et une haute efficacité (> 90% à 0.2mA). Quelque chose comme cette carte sparkfun https://www.sparkfun.com/products/8999 devrait faire un travail similaire. Assurez-vous de le connecter à la broche 5V de l’Arduino, pas à celle du VIN, afin que le régulateur Arduino ne soit pas utilisé.
2. Sleeeeeeep
La proportion de temps pendant laquelle l'appareil est actif sera petite. Le reste du temps, l'appareil doit rester en veille dans SLEEP_MODE_POWER_DOWN. Vous pouvez baser vos routines de sommeil sur la bibliothèque Rocketscreem Low Power . Selon ce lien, vous devriez pouvoir le réduire à 1,7uA avec ADC, BOD et WDT désactivé et en mode hors tension.
3. interruptions
L'autre moitié du sommeil est interrompue pour le réveiller. En mode veille Power Down, seules les interruptions de niveau sur INT1 et INT2, correspondance TWI, et le WDT le réveille. Vous devez donc connecter un bouton à INT1 ou INT2 pour pouvoir le réactiver.
D'autres choses:
Éteignez toutes les LED sauf en cas d'absolue nécessité. Si le verrou est à l'intérieur, il n'est pas nécessaire que les DEL soient lumineuses pour économiser davantage d'énergie. De même, si vous avez besoin que la MCU exécute une tâche régulièrement, utilisez le minuteur de surveillance pour la réactiver périodiquement.
Modifier:
Une méthode qui peut fonctionner consiste à utiliser la bibliothèque Low Power ci-dessus et à dormir environ 60 ms par boucle grâce au minuteur de surveillance. Au réveil, vérifiez si vous appuyez sur un bouton. La fonction à appeler serait
la source
Tous ces commentaires sont sur place. J'aimerais ajouter quelques suggestions supplémentaires:
1) Pour les LED, utilisez des LED 20 mA à haut rendement. Voici la logique. Supposons que vous souhaitiez un voyant d'état d'atténuation qui clignote toutes les 8 secondes. Vous ne voulez pas que ce soit lumineux, vous utilisez donc des LED aléatoires. Le problème, c’est qu’une DEL de faible intensité utilise toujours 20 mA (ou plus) pour ne produire que 100 mcd. Au lieu de cela, obtenez une LED haute puissance qui est toujours nominale pour 20 mA mais peut produire 4000 mcd (assurez-vous de regarder l'angle de sortie, vous voulez toujours qu'il soit de 30 degrés ou plus). Avec cette LED de 4000 mcd, vous la connectez avec quelque chose comme une résistance de 3,3 k Ohm et vous obtenez environ 100 mcd de sortie de lumière, mais utilisez moins de 1 mA. Ainsi, au lieu d'utiliser 20 mA pour le voyant d'état, vous utilisez une fraction d'un seul mA. De plus, je règle généralement le temps de clignotement de la LED d'état pendant seulement 5 à 15 ms, ce qui peut également vous faire économiser beaucoup d'énergie si vous aviez déjà le temps de clignotement à 100 ms.
2) Mon régulateur de tension de choix est le Microchip MCP1700. Il utilise seulement 1,6 µA de courant de repos et est très bon marché (environ 0,30 USD en petites quantités). La seule limite est que la tension d'entrée maximale n'est que de 6 volts, vous ne pouvez donc pas utiliser une pile de 9 volts. Mais, il est parfait pour 4 piles AA, une pile LiPo ou deux piles bouton au lithium.
3) Pour alimenter un circuit ATmega avec 4 piles AA, j’utilise généralement une diode 1N4001 sur VCC pour réduire le maximum de 6 volts des 4 piles à 5,5 volts. De plus, la diode protège l’ATmega de la tension inverse, ce qui lui confère deux fonctions utiles. En faisant cela, je peux créer un circuit alimenté par batterie qui ne consomme que 0,1 µA en veille car aucun régulateur de tension ne consomme du courant tout le temps.
la source
J'ai fait un test sur un nu atmega328P-PU sur une carte de visite à l' aide de la bibliothèque RocketScream LowPower
Utilisé ce croquis:
Avec un uCurrent Gold, je mesurais 7,25 uA en mode hors tension.
la source
Il y a deux questions ici, mais seule la seconde fait vraiment partie du titre de la question, il est donc probablement préférable d’en ouvrir une autre pour la question de programmation Arduino. Je vais répondre à la deuxième question ici.
Une seule pile alcaline AA de 1,5 V haut de gamme a une capacité d’environ 2600mAh. Si vous optez pour des piles au lithium, vous pouvez obtenir environ 3 400 mAh si vous avez de la chance. Partons de ce chiffre comme base pour le meilleur des cas absolus.
La manière dont vous calculez la durée de fonctionnement maximale théorique d'une charge est tout simplement la capacité divisée par la charge. Si votre charge est 1mA, vous pouvez l'exécuter pendant 3400/1 = 3400 heures = 141 jours = ~ 5 mois. Cependant, il ne s'agit que d'un maximum théorique , car vous allez commencer à avoir une tension significative tombant autour de 65% au cours de cette période. Si vous réglez la sortie, vous obtiendrez un effet d'emballement: plus la tension de la batterie est basse, plus le courant nécessaire pour maintenir la tension régulée est élevé, ce qui draine la batterie plus rapidement. Je serais surpris si vous pouvez utiliser plus de 80% de la capacité annoncée avec une tension suffisamment élevée pour faire fonctionner votre appareil.
Donc, disons que vous obtenez 80% de ce temps après une chute de tension et une inefficacité du régulateur. Nous supposerons que vous utilisez 3,3 V à partir de trois batteries en série. Cela vous donnera toujours la même capacité, mais la tension sera suffisante pour un régulateur. Si votre appareil fonctionne à 15mA (c'est une estimation plutôt conservatrice), les chiffres ressemblent à ceci:
Il vous faut donc environ 144 piles au lithium (48 jeux de 3) pour le faire fonctionner pendant un an. Pas si bon!
Je suggérerais plutôt d'utiliser une alimentation CC régulée du secteur. Une batterie de secours peut être incluse, ce qui est facile à configurer avec un relais SPDT - il suffit de brancher la bobine au CC du secteur et de relier le contact "off" à la batterie. Lorsque le CC tombe en panne, le contact chute et la batterie est utilisée à la place.
la source
Quelque chose que personne n’a encore mentionné: Vous devez avoir un moyen de désactiver l’alimentation + 5V qui alimente le servo lorsque vous ne l’utilisez pas. Même lorsqu'il ne bouge pas, un servo consomme toujours de l'énergie.
Un FET dont la porte est contrôlée par une broche d’entrée / sortie de l’arduino est un bon moyen de le faire.
la source
Vous pourriez envisager d’utiliser un micro-contrôleur spécialement optimisé pour une consommation d’énergie faible lors de votre prochain projet. Pour une faible consommation d'énergie, il est nécessaire de prendre une très faible consommation d'énergie pendant le sommeil. Ce qui est souvent négligé, c'est qu'il est également important de savoir à quelle vitesse il peut se réveiller de ce sommeil.
Ce qui compte, c'est la charge que prend le sommeil le plus profond pour traiter une interruption le plus rapidement possible (car la puissance sera alors très courte) et pour se rendormir à nouveau.
Un exemple de ce type de micro-contrôleur est le MSP430 de Texas Instruments. Vous trouverez sur leur site Web des notes d'application sur la conservation de l'énergie et des applications de récupération d'énergie.
la source