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 !
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 |
SCL | 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 ..