Baisser la consommation de courant, possible ?

Bonsoir,

ça fait quelques temps que je n'ai pas posté sur ce forum, le boulot et les projets font du sur-place.

Ces derniers temps je cherche à remplacer le circuit d'une horloge dont la spécificité devrait être de consommer le moins de courant possible.

A l'origine celle sur laquelle je travaille consommait moins de 10mA.

Elle était composée d'une partie électronique, qui produisait des impulsions alternatives +12v / -12v à 1Hz.

Ensuite une bobine compose un petit moteur électrique qui entraine un mécanisme qui fait tourner les aiguilles (c'est une horloge analogique).

J'ai remplacé la partie électronique par une arduino diecimila, mais la consommation est de 40mA, tombant à 30 mA lorsque je débranche la prise USB.

Avec 30 mA je suis encore loin du compte et j'aurais voulu savoir si il existe un moyen pour faire chuter le courant à 10mA ou moins.

Merci pour vos réponses.

je suis pas spécialiste et n'ai pas d'expérience dans le domaine mais le sujet je trouve est intéressant (du coup je suis décu que personne n'y réponde :-))). avec l'arduino ca prend peut etre pas mal de courant.
Mais si on regarde la datasheet de l'atmega168 tu peux voir que la consommation peut descendre très bas.
Les pistes :

  • moins de Vcc en entrée (pas du 5 volts mais moins)
  • moins de Mhz pour le crystal (ce qui me semble très jouable pour ton appli qui n'a pas bcp de haute fréquence)
    Tu as aussi tous les modes d'economie d'energie de l'atmega (qui ne sont pas accessible directement a partir de la référence arduino mais qui sont accessible au travers de la lib avr-libc.

Par exemple a 4Mhz/3Volt on a 3,5 ma max

Nicolas

Merci Nicolas pour ces pistes.

J'ai également trouvé un forum sur les µc atmel où quelqu'un utilise un quartz de 32678 kHz, il faut faire une correction ensuite de la fréquence dans la programmation, donc à ce niveau ça doit être jouable.

Sur le datasheet de l'atmega 168, il est carrément fait mention de 250 µA en 8MHz et ça tombe en nanoA sous 4MHz.

Pour la tension d'alimentation il est chaque fois fait mention d'une tension de 1,8 à 1,5 volts. Pour atteindre cette tension depuis 12 volts, il faut passer par un convertisseur de tension, je pense que le gros de la consommation va passer à cette endroit ainsi que dans le ou les condo qui servent de filtre en entrée.

Un petit régulateur de voltage ferais laffaire ou simplement l'utilisation d'une pile de montre (ou plusieurs en série) ne ferait-il pas l'affaire?

j'imagine que puisque tu exige une consomation inférieure c'est que le systeme d'horloge est intégré a un appareil?

j'ai trouvé les références d'un régulateur de tension "basse consommation", je ferai des essais.

Un régulateur de tension avec en entrée 12V pour avoir 1,5V, ça va chauffer pas mal ! Plutôt une alim à découpage, plus encombrant mais dissipe moins de chaleur. Sinon une pile AA de 1,5V avec une alim à découpage qui augmente un peu la tension.

les 1,5V ne sont pas une obligation, 5,5V sont possible pour autant que mon ensemble consomme moins de 8mA et ma source de courant est obligatoirement de 12V

Je fais un essai à vide avec un LM317, j'ai une tension de 5,1V et l'intensité est à 85 mA, déjà sans rien alimenter, la consommation est rop élevée.
Est-ce que la tension peut être plus élevée à vide qu'en charge ?

Est ce que ce genre de régulateur PWM converti directement le courant comme le LM317 ?

Celui ci ferait-il l'affaire :

MAX1658

dit moi que ta pas brancher directement ton testeur sur la sortie!!:o:O:O

tu sais que si ya aucune charge,les mA vont etre au max..et tres possiblement bruler ton testeur! (comme jai fait aek le mien XD)

parceque c comme un débit,toi ta brancher lentrée a la sortie sans aucune obstruction..c pr ca ;p

essaie qd tout est branché tu va voir,plus ya dla charge moin yen passe^^..eh..je croit ? :stuck_out_tongue:

Le LM317 sort 1,5A maximum et mon testeur supporte 10 ampères.

Par contre c'est logique pour le débit, sur le moment je n'y ai pas pensé, mais dans ce cas j'aurais du avoir 1,5A comme valeur :-?

Je me suis aperçu aujourd’hui que mes mesures étaient erronées.

En sortie du LM317, à vide j’ai 1,7 Ampères qui redescendent à 0,5 A au bout de 5 secondes.

Un petit mot au sujet de la consommation, les micro-contrôleurs ATMEL sont de technologie CMOS donc ne consomment quasiment rien, la major partie de la consommation ce fait lors des basculements des transistors donc plus ton horloges a une fréquence basse moins tu consommes, je sais que sous CVAVR en C tu peux modifier la valeur de ton horloge avec un diviseur de fréquence intégré donc tu peux créer un mode "basse conso" mais vu que tu changes ton horloge en cours de fonctionnement tout utilisation de "fonction du temps" (ex: delay) est à proscrire.

Attention tout de même faire tourner un uC a 32,78kHz est possible avec les nouveaux uC en utilisant l'horloge intégrée du watchdog mais du coup tu peux oublier certaines applications nécessitant une précision dans le temps, de plus tu devras surement paramétrer ton logiciel programmeur pour qu'il ne perde pas la connexion lors d'une programmation, le micro étant plus lent à répondre certain logiciel considère la connexion comme inexistante et l'interrompe.

Bon courage.

En faisant ce montage, mais en assurant l'alimentation par un LM317, j'ai une conso de 25 mA.

L'horloge elle même ne consomme que 500 µA.

Normalement la conso du M168 est inférieure à celle de l'horloge, donc je devrais avoir au maximum 1mA...

Cette conso viendrait-elle du LM317 ?

En "C" qu'est ce que je peux utiliser d'autre que la fonction "delay" ?

Est- ce possible de programmer le M168 avec un quartz de 16 MHz et ensuite de le remonter avec un quartz à plus basse fréquence, ainsi il n'y aurait pas de problème de coupure avec l'ordi ?

J'ai testé en alimentant mon circuit avec des piles sous 3,2 V, la consommation chute à 8mA, mais l'horloge n'avance plus, elle a juste des à coups.
Il faut peut-être que j'augmente le temps de mise sous tension de la bobine du fait de l'utilisation d'un voltage plus faible.

Maintenant j'ai une alimentation à base d'un Max1659, sa consommation est quasiment négligeable, de ce fait j'admets que la valeur mesurée correspond a la consommation du µC et de l'horloge.

  • Avec le quartz de 16MHz, et deux condensateurs de 22 pf, je consomme 22mA avec des pics à 25mA lors des impulsions.

  • Avec un quartz de 1 MHz, les mêmes condo, la consommation est de 8,5mA et des pics a 14,5mA, par contre on tourne moins vite...

  • Avec un quartz de 32,768 KHz et des condensateurs de 220 pf, la consommation est de 10mA avec des pics à 15,5mA, par contre ça va franchement moins vite.

J'ai remarqué que la capacité des condensateurs influence aussi sur la consommation, mais je ne sais pas dans quelles mesure on peut les changer pour que ça fonctionne et que ce soit sans sans dommage pour le quartz ou le µC

Dans le data-sheet du mega168, "ils" parlent de différents "sleep-mode" où on peut choisir les fonctions que l'on veut mettre en veille, est ce que quelqu'un pourrais me mettre sur la piste sur la façon de faire ça et quelles fonctions devraient être mises en veille ?

Avec un quartz de 1MHz, j'avais moins de 10mA de conso en laissant mon programme tel quel, mais l'horloge tournait 16 fois moins vite...

En modifiant mes delay() pour que mon horloge fonctionne à nouveau en concordance avec le temps réel la mesure oscille entre 9 et 10,5mA.

je me demande si en utilisant une fonction avec millis() la consommation serait moins grande qu'avec delay() ?

Après essai, la fonction millis() me fait exactement la même consommation qu'avec delay().

Il faut que je mette une partie du µC en veille pour faire descendre la consommation.

J'aimerais atteindre les 4-5 mA.

Dans la doc de avr_libc tu as ici
http://www.nongnu.org/avr-libc/user-manual/group__avr__power.html
en faisant un #include <avr/power.h> accès à ces macros pour limiter la conso de courant pour le 168 (en eteignant des périphériques qui te servent pas)

power_adc_disable()
power_spi_disable()
power_twi_disable()

Si tu n’as pas besoin de communiquer par l’usb
power_usart0_disable()

sur les 3 timers je pense que tu peux en éteindre 2 sans pb (mais il faut garder celui utilisé par millis ou delay).
power_timer0_disable()
power_timer1_disable()
power_timer2_disable()

Perso j’ai jamais essayé mais fais nous un retour sur les mesures de courant observées en éteignant chacun des modules.

Nicolas

tu as aussi ca avr-libc: <avr/sleep.h>: Power Management and Sleep Modes qui correspond plus a ce que tu veux faire.
Je suis un peu surpris que personne sur le forum en english ait essayé ça.

Nicolas

Merci pour tes réponses.

Est-ce que c'est possible de programmer ça directement depuis l'IDE Arduino ?

Je crois que Benoit Rousseau avait fait une horloge numérique qui utilise le mode interrupt(), mais j'ai pas trop compris ::slight_smile: