Powerbank Anti-sleep
Vous avez besoin d'alimenter un projet à partir d'une banque d'alimentation USB, mais celle-ci s'éteint toute seule parce que la consommation de courant est trop faible ?
Avec ce projet contenant un microcontrôleur, un transistor MOSFET et quelques autres éléments pour créer une source de courant constant délivré par impulsions, il devient possible d'alimenter tout circuit peu gourmant en énergie.
Je me suis inspiré pour cette réalisation de plusieurs projets apparus sur le net ainsi que de l'article écrit par Pascal RONDANE paru dans la revue Elektor Hors-Série n° 6H d'Août 2024, page 27 et suivantes. Le sien a été conçu à partir d'Arduino mais ne disposant pas de cette plateforme de développement, j'ai entrepris de reprendre ce projet à partir d'un PIC12F683 que j'ai programmé en mikroC. J'aurais pu bien évidement utiliser un NE555 comme timer mais je voulais recréer à mon goût personnel...
J'ai dessiné le circuit imprimé sous KiCAD afin qu'il puisse tenir dans le petit coffret accueillant à l'origine un isolateur USB que je m'étais procuré chez "Ali..." L'avantage de ceci est que j'ai bien sûr pu également récupérer les deux connecteurs USB-A (mâle et femelle) ce qui m'a singulièrement simplifié la tâche car la version mâle est difficile à trouver, d'où mon choix. Il existe cependant des petits coffrets translucides mais j'ignore s'ils possèdent les mêmes dimensions que celui utilisé dans mon projet.
Fonctionnement
Le principe est assez simple, le microcontrôleur génère une impulsion (pour ma batterie externe INIUT Bi-B6 10000mAh / 37Wh, j'ai définit après plusieurs manipulations 2s toutes les 5s) qui pilote une source de courant composée du transistor MOSFET T1 (NVD6824NL) ainsi que de 3 résistances CMS (0805) de 150 Ω / 1% / 125 mW placées en mode parallèle, soit une résistance équivalente de 50 Ω / 375 mW. Ce transistor possédant une résistance interne max. (RDS(on)) de 23 mΩ, le courant absorbé (mesuré avec un USB Tester Ruideng AT35) lors de la production de l'impulsion est d'environ 110 mA. La puissance dissipée par les 3 résistances est dans ce cas d'environ 550 mW et compte tenu de la durée de cette impulsion, il n'y a pas de risque potentiel de destruction, la température maxi mesurée à la surface des résistances est de 33,9 °C. Une LED s'illumine en présence de cette impulsion pour signaler le bon fonctionnement de l'appareil.
J'avais au départ prévu l'emplacement pour 6 résistances et le courant absorbé était alors de 213 mA ce qui portait leur puissance dissipée à 1W. Après d'autres manipulations, j'ai pu réduire ce courant à la moitié et la batterie externe semble s'en accomoder. Ne disposant pas de caractéristiques précises sur le courant minimal avant la mise en veille, l'on ne peut que procéder par tatonements pour parvenir à un système parfaitement fonctionnel.
J'aurais certainement dù prévoir des versions CMS 1206 pouvant absorber chaucune 250 mW...
Il est à noter que l'USB Tester AT35 à mesuré dans cette configuration une résistance de charge globale de 46,4 Ω pour une puissance absorbée de 567 mW (voir Figure 5), alors qu'avec les 6 résistances installées la résistance de charge globale était de 24,1 Ω pour une puissance absorbée de 1,098 W (voir Figure 6).
INFOS PROJET | ||
Types de composants : CMS | ||
Niveau : ◆◆◆◇◇ | ||
Temps de construction : env. 1 h | ||
Coût : env. 16 € |
Schéma de principe
Circuit imprimé
Réalisation
Il va sans dire que compte tenu de la taille de cet appareil la technologie CMS est incontournable. Tous les condensateurs et résistances sont de taille 0805 (2.0 mm × 1.25 mm), le microcontrôleur possède un boîtier SOIC-8 broches et le transistor Power MOSFET un boîtier TO-252 (DPAK).
J'ai dessiné le schéma cette fois sous KiCAD v8.0 et non plus sous Eagle. Non pas que je n'apprécie plus ce logiciel de DAO mais il faut tout de même bien reconnaître que KiCAD est très complet et vraiment performant !
Certains voire la plupart d'entre vous vont se demander pourquoi les 5 pastilles du connecteur J3 (ICSP) ne sont pas correctement alignées... En fait depuis quelques temps je n'instale plus de "header" sur mes circuits car je trouve la "dépense" inutule. Donc pour connecter mon programmateur PICkit j'utilise un câble en nappe d'une dizaine de centimètres que j'ai fabriqué afin de pouvoir justement l'embrocher à même le circuit imprimé. Pour obtenir un bon maintien ainsi que de bons contacts j'ai procédé selon une idée de SparkFun et décallé les pastilles les unes par rapport aux autres avec un pas de ±0,254 mm.
Je n'ai jamais rencontré de défaut en mode programmation depuis que je procède ainsi.
Firmware
J'ai développé sous mikroC un petit bout de programme très simple qui réalise les impulsions nécessaires au maintien de l'alimentation en cas de très faible consommation d'une charge. Cette impulsion calibrée est produite toutes les 5 secondes, durée pendant laquelle le microcontrôleur se trouve en état de sommeil (Sleep mode), ceci afin de réduire notablement toute consommation de courant inutile. La fréquence d'horloge du microcontrôleur est de 1 MHz, ceci afin d'en diminuer sa consommation électrique au maximum.
Lors de la production de l'impulsion, le circuit global consomme environ 110 mA alors qu'en mode veille le courant n'est plus mesurable. D'après les abaques contenues dans la Datasheet du PIC12F683, le courant consommé par le microcontrôleur serait légèrement supérieur à 400 µA sous VDD=5.0V (valeur typique) alors qu'en mode de veille sa consommations ne serait plus que de 350 nA.
Le temps de conduction du MOSFET est défini par la variable "T_ON_BATT2" en ligne 38 du programme. La durée de repos est elle définie à la ligne 71 par le régistre "WDTCON" paramétrant le Watchdog (1:1024). Ce régistre ainsi configuré implique un temps de repos de 5 secondes. Le transistor MOSFET provoquera donc une imulsion de 2s toutes les 5 secondes. Ceci a été déterminé par approches successives sur la batterie externe (INIU BI-B6 10000mAh / 37Wh) que je possède. Cela peut bien sûr être très différent selon le type de batterie que vous avez à votre disposition.
Quelques photos