Ceci est une ancienne révision du document !
Table des matières
Wemos Battery Shield & Fuel Gauge
Battery Shield
Afin de rendre le wemos un peu autonome j'ai commandé quelques shields sur aliexpress de ce type :
On plug une batterie lithium et on la charge via usb.
J'ai un peu retouché le shield en lui collant une petite batterie de C=150mAh avec un interrupteur à glissière.
La résistance R3 est ajustée en conséquence de la batterie, le jumper J1 courcircuité.
L'idée est de charger avec un courant d'environ 0,7*C soit environ 100mA. J'ai donc positionné R3 à 7,5kΩ d'après la datasheet du TP5410.
Quelques photos pour finir :
Simple et pratique !
Add-On MAX17043 - LIPO Fuel Gauge
Présentation
Étant bien parti sur ma lancée et suite à la commande du MAX17043 de Maxim, je décide d'ajouter la fonction “Fuel Gauge” à ce petit shield.
En plus d'avoir une batterie, on va savoir ce qu'il reste dedans.
Le MAX17043 ressemble à cela sur son shield vendu chez nos amis de l'est :
![]() ![]() | ![]() |
En gros il arrive à calculer ce qu'il reste dans la batterie en fonction du temps et de la tension à ses bornes.
Maxim doit utiliser des abaques génériques bien que chaque lipo doit avoir ses propres courbes de décharge. Au besoin Maxim fait du sur-mesure, mais il faut les contacter.
En tout cas, pour une estimation, c'est déjà pas mal et rapidement exploitable avec sa connexion I2C.
Il propose même de signaler à notre uC si il est temps de passer en mode “je sauvegarde et je m'arrête” avant la panne d'électricité.
\\ ==== Câblage ====
Pour utiliser ce joujou, rien de plus simple, on le colle sur le flan de notre batterie et on câble le tout tel que :
Pin I2C MAX17043 | PIN Wemos |
---|---|
SDA | D1 |
SDL | D2 |
Avec arduino, on peut toujours changer l'attribution de pins I2C avec Wire.begin([SDA], [SCL])
Code Arduino avec Blynk
Un bibliothèque arduino est disponible pour ce composant : Lucadentella
Pour le teste j'ai utilisé le code suivant :
blynk_battery_monitor.ino
#include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> // Fuel Gauge #include "MAX17043.h" #include "Wire.h" // #### VARIABLES #### // Blink char auth[] = "*****************************************"; // Put your Auth Token here. (see Step 3 above) // Fuel Gauge MAX17043 batteryMonitor; void setup() { // Run Blynk Blynk.begin(auth, "mon_ssid", "mon_mot_de_passe"); while (Blynk.connect() == false) { //Wait until connected } Wire.begin(); //batteryMonitor.reset(); //batteryMonitor.quickStart(); delay(1000); } void loop() { Blynk.run(); Blynk.virtualWrite(0, batteryMonitor.getVCell()); Blynk.virtualWrite(1, batteryMonitor.getSoC()); delay(1000); }
Attention à bien lire la datasheet sur les fonctions reset() et quickstart().
Couplé à l'excellent Blynk (pour avoir des courbes rapidement et profiter des fonctions d'export csv) le résultat est intéressant:
Charge | Décharge |
---|---|
![]() | ![]() |
Pour la décharge j'ai joué avec quelques résistances qui expliquent la variation de tension de la batterie, le SOC reste globalement linéaire.
La dernière mesure à 0% est erronée, d'où les décroché en fin de décharge, le Wemos s'est éteint avant la décharge complète de la batterie ..