Outils pour utilisateurs

Outils du site


electronique:micro_controleurs:esp8266:wemos_battery_shield

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 :

wemos_battery_shield.jpgwemos_battery_shield_schematic.jpg

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 :

20160811_220058.jpg20160811_220106.jpg20160811_220130.jpg

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 MAX17043PIN Wemos
SDAD1
SCLD2

Avec arduino, on peut toujours changer l'attribution de pins I2C avec Wire.begin([SDA], [SCL])

Une photo pour illustrer tout ça :
20160829_221558.jpg

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:

ChargeDé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 ..


electronique/micro_controleurs/esp8266/wemos_battery_shield.txt · Dernière modification : 2020/09/17 20:27 de florian