mardi 21 janvier 2020

Un logger analogique et digital (version WEB)



 Un logger analogique et digital

(version WEB)



Cet article d'août 2019 décrivait un logger analogique et digital :

https://riton-duino.blogspot.com/2019/08/un-logger-analogique-et-digital.html

Cet outil a une limitation : si l'on veut observer l'évolution des sorties d'un montage sur table à proximité d'un PC tout va bien, mais dans le cas d'un montage éloigné, il est difficile d'utiliser un câble USB de grande longueur. Et tout le monde ne possède pas un PC portable que l'on peut dédier à cette tâche.

Et si l'on étudiait une version WIFI ?

Ce projet est assez vaste et les sujets abordés sont plutôt variés :
  • sujet ESP32 :
    • serveur et client WEB
    • utilisation d'un INA226
    • créer un formulaire WEB
    • envoi de données à un serveur
  • sujet PC ou RASPBERRY PI : 
    • serveur WEB en PYTHON avec CHERRYPY
    • génération d'une page WEB à partir d'une template
    • utilisation de graphes HICHARTS
    • génération d'un fichier CSV et export

1. Le besoin

Mes besoins concernent principalement la mesure de différentes grandeurs :
  • tension d'alimentation et courant
  • sorties digitales
  • tensions diverses
Le système doit être capable de faire des relevés de mesures et de permettre la visualisation de graphes via un navigateur.

Il ne s'agit pas ici de bâtir un analyseur logique. Cet outil n'est pas fait pour observer des variations rapides de signaux, mais plutôt de tracer des variations sur la durée :
  • charge ou décharge d'une batterie
  • allumage d'une LED
  • activation d'un relais
  • etc.
La première idée qui vient à l'esprit est d'utiliser un ESP32, celui-ci possédant un grand nombre d'entrées / sorties et en particulier plusieurs canaux analogiques.

1.1. Mesure de la tension d'alimentation et du courant

Il s'agit ici de suivre l'évolution de la tension et du courant d'alimentation d'un montage, qu'il s'agisse d'une alimentation secteur ou d'une batterie.

Le système doit être capable de mesurer des tensions supérieures à celle de la tension 3.3V d'alimentation de l'ESP32.

Il doit également être capable de mesurer le courant circulant dans une batterie, aussi bien en décharge qu'en charge, ce qui implique une capacité à mesurer un courant négatif.

Pour réaliser cette opération un module INA226 est un bon choix :
C'est un composant I2C capable de mesurer une tension jusqu'à 36V et un courant positif ou négatif.
Généralement le shunt soudé sur la carte est un 10mΩ (marquage R010). Le courant maximal mesurable sera de 8A. Avec un shunt de 100mΩ (marquage R100) il sera de 800mA.

Avec un shunt de 100mΩ on obtiendra plus de résolution pour mesurer des courants faibles.
La tension maximale aux bornes du shunt est de 81.92mV, ce qui correspond avec un shunt de 100mΩ à un courant maximal mesurable arrondi de 820mA.
La résolution est donc de 820 / 32768 = 25µA.
Avec un shunt de 10mΩ elle sera 10 fois supérieure (250µA).
Tout dépend donc de ce que l'on cherche à mesurer. Personnellement je ne mesure jamais de courants forts, donc je remplace systématiquement le shunt 10mΩ par un 100mΩ (résistances CMS 2010 ou 2512).

A noter : le premier module INA226 que j'ai utilisé mesurait une tension de 4.3V sur une batterie LITHIUM-ION, pour une tension réelle de 4.1V. Je l'ai remplacé et j'ai bien obtenu 4.1V avec un deuxième module. Le premier exemplaire est probablement défectueux.

Afin de minimiser le bruit le temps de conversion choisi est de 8.144ms.
Une moyenne sur 16 échantillons est effectuée.

1.2. Entrées / sorties digitales

La surveillance de signaux logiques se fera à l'aide des entrées digitales de l'ESP32. Attention certaines ne sont pas libres. Voir le schéma plus bas.

1.3. Entrées analogiques

Les entrées analogiques de l'ESP32 pourront être utilisées pour la surveillance de tensions diverses.

1.4. Stockage des mesures

Afin de ne pas encombrer la FLASH de l'ESP32, et ne pas être limité en capacité de stockage,  la tâche de stockage des mesures est confiée à un serveur écrit en PYTHON. Ce logiciel peut être exécuté sur tout ordinateur : PC, MAC ou RASPBERRY PI.
Les données sont stockées en mémoire RAM. Une fonction d'export vers un fichier CSV existe.

Ce serveur de stockage et visualisation est appelé HOST dans la suite de l'article.

L'intérêt d'utiliser une RASPBERRY PI pour héberger ce serveur est assez clair : pouvoir enregistrer des mesures sur la durée sans monopoliser un PC, gros consommateur d'énergie.
Le PC pourra être utilisé uniquement pour la visualisation.

Les tâches sont donc réparties comme suit :

ESP32 :
  • serveur de mesure
  • interface homme machine
    • sélection adresse IP et port du serveur de stockage
    • choix de la période de mesure
    • sélection des mesures à effectuer
    • lancement des mesures
  • envoi des informations au host
HOST :
  • serveur de stockage
  • interface homme machine
    • visualisation des graphes
    • remise à zéro des données
    • export vers un fichier CSV
Comme on le voit l'ESP32 est donc implémenté sous la forme d'un serveur et d'un client WEB.

1.5. Visualisation des mesures

La visualisation se fait via un navigateur.

Si le serveur host tourne sur le même PC on utilisera l'URL 127.0.0.1:80.
S'il tourne sur un autre PC ou une RASPBERRY PI on utilisera l'adresse IP de cette machine.

Côté host l'affichage des graphes est confié à des objets HighCharts. Il s'agit d'une librairie JavaScript que j'utilise depuis pas mal d'années avec beaucoup de satisfaction.

Attention : cette librairie est gratuite pour les particuliers mais pas pour les entreprises.

Cette librairie a déjà été présentée dans cet article :
https://riton-duino.blogspot.com/2019/02/un-web-server-sur-ethernet.html

1.6. Conservation des mesures

Le logiciel est capable d'exporter les résultats sous forme de fichier CSV. Ils seront donc stockés sur le PC sur lequel est lancé le navigateur.

2. Le schéma


Le schéma est réalisé à l'aide de KICAD.

Pour récupérer le projet voir plus bas :  9. Téléchargements.

Le connecteur P1 permet le raccordement d'un convertisseur USB / série pour la programmation du module et les boutons EN et BOOT doivent être utilisés pour effectuer le chargement.

Le bornier P2 permet la mesure tension / courant via l'INA226, et le connecteur P3 regroupe les entrées / sorties du module ESP32.

3. Le matériel

Ce projet peut être réalisé soit avec un module ESP32 soudé sur PCB ou avec une carte ESP32.
Pour cette réalisation le matériel nécessaire est le suivant :
  • solution sur PCB :
    • 1 module ESP32-WROOM
    • 2 boutons poussoirs 6x6
    • 2 résistances de 10KΩ
    • 3 condensateurs film polyester de 100nF
    • 1 condensateur électrochimique 10µF 10V 
    • 1 connecteur 3 points au pas de 2.54
    • 1 connecteur JACK d'alimentation 
    • 1 LM3940
    • 1 condensateur film polyester de 470nF
    • 1 condensateur électrochimique 33µF 10V
  • ou
    • 1 carte ESP32
  • 1 module INA226
  • 1 condensateur film polyester de 100nF
  • 1 connecteur 20 points au pas de 2.54
  • 1 bornier 4 points au pas de 5.08

3.1. Solution avec PCB :

Si l'on désire réaliser un PCB il est préférable d'utiliser un module ESP32-WROOM :
Il est assez peu judicieux de choisir une carte ESP32 pour l'implanter sur un PCB car il existe une quantité de modèles importante et leur pérennité n'est pas forcément assurée.

Un montage sur plaquette à pastilles est parfaitement envisageable. Dans ce cas on peut utiliser une carte adaptatrice :
Si la solution PCB ou plaquette  à pastilles est choisie un convertisseur USB / série 3.3V ou 5V / 3.3V sera nécessaire :

3.2. Solution avec carte ESP32

On peut choisir une carte du type ESP32-DEVKIT :
Dans ce cas le schéma sera réduit à sa plus simple expression :
  • carte ESP32 (ESP32-DEVKIT, WEMOS D1, etc.)
  • module INA226
  • connecteurs P1 à P3.

3.3. Alimentation

L'énergie est fournie au montage par un adaptateur secteur 5V à 9V 1A grâce à la présence d'un connecteur JACK et d'un régulateur 3.3V.

3.3.1. Adaptateur secteur 5V
Le LM3940 est un régulateur Low Drop Out (sa tension de chute est de 800mV). Un LM7833 ne conviendra pas (sa tension de chute est de 2V).
Un MCP1827S ou un LF33CV peuvent convenir également.

3.3.2. Alimentation par batterie
Sur ce même JACK on peut raccorder aussi une ou plusieurs batteries 18650 en parallèle ou une batterie LIPO. Il faudra compter 2000mAH par journée de fonctionnement, ce qui est plutôt conséquent.

3.3.3. Adaptateur secteur 6V à 9V
Si l'on désire alimenter avec un adaptateur secteur de plus de 5V le LM3940 ne suffira pas (il supporte 5.5V maxi). Il faudra le remplacer par un LM7833 par exemple.

3.3.4. Adaptateur par USB
Si l'on adopte une carte ESP32 on pourra l'alimenter directement par le cordon USB.

4. La réalisation

Si l'on envisage d'utiliser une carte ESP32 on peut d'abord essayer très facilement ce montage sur breadboard, et passer ensuite sur une plaquette à pastilles.

Attention : pas mal de module INA226 sont mal sérigraphiés (SDA et SCL sont inversés).

Si l'on préfère la version PCB, il sera difficile de faire des essais sur breadboard, les cartes adaptatrices, avec leurs doubles rangées de broches, étant inadaptées :

Les modèle dual-in-line (deux rangées de 15 broches) existent mais sont plus difficiles à dénicher :
Par défaut il reste toujours la solution de faire les essais avec une carte ESP32 et de réaliser la solution finale avec un module nu sur PCB.

5. IDE ARDUINO

Il faudra installer la bibliothèque suivante :
Librairie INA226 : https://github.com/jarzebski/Arduino-INA226

Dans l'IDE ARDUINO on devra sélectionner les options suivantes :
  • Outils : type de carte : ESP32 Dev Module
  • Outils : Partition Scheme : Minimal (2MB FLASH)
On peut être amené à choisir une autre carte, WEMOS D1 par exemple, en fonction du modèle acheté.

6. Le code

Pour récupérer le projet voir plus bas : 9. Téléchargements.

Le code de l'ESP32 est situé dans le répertoire arduino qui contient deux fichiers source :
  • un sketch
  • un fichier HTML
Avant de charger le sketch il faudra modifier quelques constantes :
  • ssid : le SSID de la box
  • password : le mot de passe WIFI
  • INA226_I2CADDR : l'adresse I2C de l'INA226 
  • INA226_OHM : la valeur du shunt en ohms
  • INA226_AMP : le courant maximal mesurable
  • INA226_OFFSET :  l'offset de l'INA226
Il se peut que l'adresse I2C de l'INA226 (0x40) ne convienne pas. Pour la déterminer facilement je conseille d'exécuter ce sketch :
https://gist.github.com/tfeldmann/5411375

La valeur du shunt peut être ajustée en modifiant INA226_SHUNT. Lorsque l'on a affaire à un module équipé d'un shunt de 10mΩ la résistance des soudures intervient fortement. Il vaut mieux comparer la valeur mesurée à celle affichée par un multimètre.

Le courant maximal mesurable est dépendant du shunt soudé sur le module :
8A pour un shunt de 10mΩ (marquage R010).
0.8A pour un shunt de 100mΩ (marquage R100).

L'offset de l'INA226 à vide peut être obtenu en effectuant une mesure sans charge (voir plus loin : 8.3. Offset de l'INA226).

Le fichier HTML pourra être chargé à l'aide du menu :
Outils / ESP32 Sketch Data Upload

Le plugin permettant cette opération se trouve ici :
https://github.com/me-no-dev/arduino-esp32fs-plugin/releases/tag/1.0
Les explications :
https://github.com/me-no-dev/arduino-esp32fs-plugin

7. Le HOST

La repository BitBucket contient également un répertoire raspberry :
  • deux scripts PYTHON : index.py et template.py
  • un fichier HTML
  • un fichier favicon

7.1. Les templates

Une petite explication pour ceux qui ne connaissent pas les templates s'impose, bien que ce ne soit pas indispensable à la mise en service du serveur.
Cela peut intéresser certaines personnes pour le développement de leurs propres applications.

Le fichier template.py permet de générer une page WEB à partir d'un fichier HTML template, c'est à dire un fichier contenant des identifiants (voir le fichier HTML) :
  • $XDATA : les données de l'axe des X
  • $CURRENT_DATA : les données de mesures de courant
  • $VOLTAGE_DATA : les données de mesures de tension
  • $GPIO_SERIES : les données de mesures de GPIOs
  • $ADC_SERIES : les données de mesures de ADC
Lorsque le serveur rencontre un mot clé commençant par $ il remplace cet identifiant par les données correspondantes. En d'autres termes il s'agit de générer des listes JavaScript :
Dans le code si le serveur trouve ceci :

        {
          name: 'Voltage',
          type: 'spline',
          data: [$VOLTAGE_DATA],
          yAxis: 0,
          tooltip: {
              valueSuffix: 'V'
          }
        }


Après interprétation on obtiendra ceci :

        {
          name: 'Voltage',
          type: 'spline',
          data: [4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08],
          yAxis: 0,
          tooltip: {
              valueSuffix: 'V'
          }
        }


8. Installation et utilisation

8.1. L'ESP32

8.1.1. Chargement et configuration
Une carte ESP32 se charge via son connecteur USB.
Le module ESP32 nu nécessite d'être chargé via un convertisseur USB / série.
Pour le branchement du convertisseur USB / série voir plus bas :  11. Photos

Comme sur une carte ESP32 le sketch est chargé en utilisant la séquence habituelle :
  • appuyer sur le bouton BOOT
  • appuyer brièvement sur le bouton EN
  • relâcher le bouton BOOT
  • charger le sketch
Après avoir chargé le sketch dans l'ESP32 celui-ci affiche sur la console l'adresse IP par laquelle on va pouvoir communiquer avec lui :

Connected to ROUTER_XXXX
IP address: 192.168.1.18
MAC address: 3C:71:BF:47:A5:B0
MDNS responder started
HTTP server started 


Grâce à l'adresse MAC il est possible de fixer une adresse IP statique par configuration de la box internet. On sera ainsi certain de conserver toujours la même adresse. Sur une LiveBox : voir "Configuration Avancée".

8.1.2. La page de configuration
Dans le navigateur entrons l'URL : http://192.168.1.18/index.html en remplaçant 192.168.1.18 par la vraie adresse IP de l'ESP32 :

Cette page permet de sélectionner les valeurs à mesurer :
  • Power Monitor (INA226)
  • GPIOs
  • canaux ADC
A noter : lorsqu'une GPIO est cochée, le sketch de l'ESP32 configurera cette entrée en entrée avec PULLUP :

      pinMode(gpioNumber, INPUT_PULLUP);

Attention : si l'on a des sorties de microcontrôleur 5V à surveiller il est préférable de passer par des ponts diviseurs afin de ne pas risquer de griller les entrées de l'ESP32.

8.1.3. Le montage de test
Voici le montage de test utilisé :

Pour cet exemple j'ai raccordé une alimentation 5V sur la GPIO35 à travers un pont diviseur de tension 10KΩ + 10KΩ.

J'ai également relié GPIO26 à la broche 3.3V et GPIO27 à la broche GND.
On peut également connecter deux boutons poussoirs entre les GPIOs et GND pour faire varier les valeurs mesurées.

Les entrées de l'INA226 sont raccordées comme suit :
  • VBUS et V+: le pôle + d'une batterie 3.7V
  • V- : une résistance de charge entre V- et GND
  • GND : le pôle - de la batterie
R3 et RV1 forment une résistance de charge ajustable pour la batterie et il sera possible de jouer avec le potentiomètre pour faire varier le courant.

Le shunt de l'INA226, situé sur le module entre V+ et V-, est placé côté VBUS (high-side) sur le schéma ci-dessus. L'INA226 offre la possibilité de placer son shunt côté GND (low-side) :
Cela revient strictement au même.
8.1.4. Le formulaire
Dans le formulaire affiché par l'ESP32 nous allons devoir entrer certaines informations :
  • l'adresse IP du HOST et le port d'écoute (8080 dans mon cas)
  • la période de mesure
  • l'unité de temps (millisecondes, secondes, minutes)
  • Power Monitor : indique si l'on désire utiliser l'INA226
  • GPIOS :
    • cocher les GPIOs à surveiller
    • on peut entrer un libellé (ALIAS)
  • ADC
    • cocher les GPIOs à surveiller
    • on peut entrer un libellé (ALIAS)
    • renseigner le rapport de division éventuel
Les alias permettront de mieux se repérer dans les graphes produits. Plutôt que d'afficher GPIO26 et GPIO27, les libellés utilisés seront LED et RELAY, ce qui est plus parlant.

Le rapport de division est le coefficient multiplicateur à utiliser si l'on mesure une tension à travers un pont diviseur. Dans mon cas je mesure une tension de 5V à travers un pont diviseur 10KΩ + 10KΩ, donc un rapport de division de 2.
Si l'on n'utilise pas de pont diviseur on peut laisser ce champ vide.

Malgré qu'il soit alimenté en 3.3V l'INA226 n'a pas besoin de pont diviseur sur ses entrées. Il est capable de mesurer des tensions jusqu'à 36V.

8.1.5. Lancement des mesures
Après validation par le bouton OK le serveur est démarré :

On peut observer le déclenchement des mesures sur le moniteur série :

INA226: 4.100V, 3.400mA
ADC: 2953
DIVIDER: 2.00
GET /log?VOLTAGE=4.1&CURRENT=3.40&GPIO_RELAY=1&GPIO_LED=0&ADC_VCC=5.06& HTTP/1.1
Host: 192.168.1.121
Connection: close  


192.168.1.121:8080: unable to connect to host

Tant que le host n'est pas démarré, l'ESP32 ne parviendra pas à se connecter à lui. Le message "unable to connect to host" sera affiché, mais ce n'est pas important, on le lancera plus tard.

Voilà c'est tout pour l'ESP32.

8.2. Le HOST

8.2.1. Installation et configuration
On pourra installer les différents fichiers du répertoire raspberry dans un répertoire quelconque du PC ou de la RASPBERRY PI.

Le script PYTHON utilise le framework CHERRYPY. Il sera donc nécessaire d'installer ce module.

Sous DEBIAN ou UBUNTU c'est facile :
$ sudo aptitude install python-cherrypy

Sous Windows il faut télécharger l'archive et l'installer manuellement.

Le script PYTHON est configurable. Il est facile par exemple de changer le N° de port d'écoute dans le fichier web-power-monitor.conf :

[global]
server.socket_host = "0.0.0.0"
server.socket_port = 8080
server.thread_pool = 10


L'adresse IP 0.0.0.0 permet l'accès depuis n'importe quel poste du réseau.
Un serveur APACHE occupe déjà le port 80 sur mon PC. J'ai donc choisi 8080.

8.2.3. Lancement
Ensuite il suffit de lancer le script :

python ./index.py

8.2.4. Visualisation
Il ne reste plus qu'à lancer un navigateur pour visualiser les résultats. Si le script python tourne sur le même PC l'URL est 127.0.0.1:80 ou 127.0.0.1:8080 suivant le port choisi.

Au début - tant qu'il n'aura pas reçu de données de l'ESP32 - le navigateur va afficher une page pratiquement vide. Seul un titre et le bouton RESET apparaissent.
Lorsque l'on estime qu'il a reçu suffisamment de données, il suffit de rafraîchir la page :

Pour cet essai la période de mesure est de 2 secondes. L'axe des X représente le temps en secondes.

Si le Power Monitor n'a pas été sélectionné dans l'interface de l'ESP32, le premier graphe est absent.
Il en est de même pour les graphes GPIOs et ADC.

Cette image est incomplète. Un bouton d'export vers un fichier CSV est ajouté dans la version définitive :
Le nom du fichier, s'il n'est pas renseigné est "log.csv".
Lorsque l'on clique sur le bouton export, une boîte de dialogue apparaît :


On peut ainsi directement visualiser les données avec un tableur ou enregistrer le fichier.

En plaçant la souris sur un graphe on obtient les informations conçernant un point du graphe :

Il est possible également de zoomer en sélectionnant une zone :


En relâchant le bouton de la souris on obtient ceci :


Pour revenir à l'affichage précédent, utiliser le bouton "Reset Zoom".

Ces diverses possibilités sont offertes par la librairie HighCharts.

8.3. Offset de l'INA226

La mesure de courant de l'INA226 présente un offset faible de quelques 100µA.
On peut mesurer cet offset en effectuant une mesure sans charge. Il suffit ensuite de modifier la valeur de INA226_OFFSET dans le sketch, puis de le recharger dans l'ESP32.
On obtiendra ainsi une mesure plus exacte.

8.4. Vitesse de l'INA226

Comme dit plus haut :
Afin de minimiser le bruit le temps de conversion choisi est de 8.144ms.
Une moyenne sur 16 échantillons est effectuée.
Cela veut dire clairement que le temps de mesure est assez important, environ 260ms.

Si l'on désire diminuer le temps de mesure il est possible de modifier cette ligne de configuration dans le sketch ESP32 :

ina226.configure(INA226_AVERAGES_16, INA226_BUS_CONV_TIME_8244US, INA226_SHUNT_CONV_TIME_8244US, INA226_MODE_SHUNT_BUS_CONT);

Si l'on désire un temps de mesure inférieur à 5ms on pourra configurer l'INA226 comme ceci :

ina226.configure(INA226_AVERAGES_4, INA226_BUS_CONV_TIME_588US, INA226_SHUNT_CONV_TIME_588US, INA226_MODE_SHUNT_BUS_CONT);

Cela se fera cependant au détriment du bruit.

La datasheet de l'INA226 sera utile, en particulier le paragraphe :
7.4.1 Averaging and Conversion Time Considerations.

9. Téléchargements

Pour télécharger le projet :
https://bitbucket.org/henri_bachetti/web-power-monitor.git

Cette page vous donne toutes les informations nécessaires :
https://riton-duino.blogspot.com/p/migration-sous-bitbucket.html

10. Essais

Voici un petit essai réalisé avec une batterie 28650 et un chargeur TP4056 suivi d'un convertisseur step-up :
Voici les branchements :


L'INA226 mesure donc la tension de la batterie et le courant circulant entre la broche B- du TP4056 et la borne -  de la batterie.
La broche GPIO35 mesure la tension de sortie du convertisseur 5V à travers un pont diviseur.

Voici un zoom de la première partie :


Première partie de la manipulation (de 0 à 90 secondes) :
  • le port USB du TP4056 n'est pas branché
  • la sortie du convertisseur est chargée avec une résistance de 10Ω
Le convertisseur débite donc 500mA.
La tension batterie est de 3.7V et elle débite 780mA, ce qui est normal étant donné quelle doit fournir :
5V x 0.5A = 2.5W
2.5W / 3.7V = 0.675A
C'est en dessous de 780mA, mais le rendement du convertisseur n'est pas de 100%. Il a donc un rendement de 86%.

Deuxième partie de la manipulation (de 100 à 160 secondes) :
  • la sortie du convertisseur n'est plus chargée
Le convertisseur ne débite plus que 250µA dans le pont diviseur.
La tension batterie remonte à 3.97V puis à 4.01V. Elle ne débite que 600µA dans le convertisseur.

Troisième partie de la manipulation (à partir de 170 secondes) :
  • le port USB du TP4056 est branché
  • la sortie du convertisseur reste non chargée
Le convertisseur débite toujours 250µA dans le pont diviseur.
Au début de la charge la tension de la batterie est à 4.12V et le courant est de 255mA.
La tension batterie remonte lentement, et le courant diminue progressivement.
A la fin de la charge la tension de la batterie est à 4.2V et le courant est de 98mA.

Lorsque le TP4056 coupe la charge (à 1530 secondes) la tension de la batterie chute à 4.15V et celle-ci débite 500µA. La tension chute à 4.12V et se stabilise.

Quelques premières constatations à propos de cette manipulation :

Après avoir rafraîchi la page au bout d'une heure, la tension de la batterie est de 4.11V. Il va falloir attendre très longtemps pour que le TP4056 démarre une nouvelle charge de la batterie.
Le but de la manipulation est justement de déterminer la valeur de tension pour laquelle la charge va être déclenchée, ainsi que le temps que cela va prendre.

On peut remarquer que lorsque le convertisseur est chargé sa tension de sortie est au dessus de 5.5V, contre 5.3V sans charge.

Le courant de repos du convertisseur est faible ce qui confirme ce que j'ai déjà constaté ici au paragraphe 1.10 :
https://riton-duino.blogspot.com/2019/11/convertisseurs-stepup-stepdown.html
Ce courant est encore plus faible avec un pont diviseur 100KΩ + 100KΩ : 200µA.

Voici donc le genre de manipulation que l'on peut effectuer en très peu de temps avec cet outil de mesure. C'est extrêmement pratique et précis.

11. Photos

Voici une photo de la carte :


Ce prototype est réalisé sur un PCB simple face, ce qui est assez problématique pour les soudures de l'ESP32. Pour ce faire j'ai utilisé des broches fines traversantes soudées sur les pastilles sous le PCB et sur l'ESP32. L'ESP32 est rehaussé à l'aide d'une petite plaquette d’époxy :


C'est assez peu recommandable je l'avoue. Mais cela fonctionne.
Que l'on se rassure, dans le dossier KICAD, le routage est bien fait en double face avec trous métallisés.


Quelques petites étiquettes pour s'y retrouver dans les futurs branchements et les boutons.


Le bornier de raccordement INA226 est à gauche. Les branchements sont décrits aux paragraphes suivants :
  • 8.1.3. Le montage de test
  • 10. Essais.
Le connecteur de chargement de l'ESP32 est à droite. Les branchement sont les suivants (de gauche à droite) :
  • TX de l'ESP32 -> RX du convertisseur USB / série
  • RX de l'ESP32 -> TX du convertisseur USB / série
  • GND 
Bien entendu il faut un convertisseur 3.3V :

Câble FTDI TTL-232R-3V3


Ou un modèle supportant 5V et 3.3V :
FT232RL 5V / 3.3V
CH340 5V / 3.3V

12. Conclusion

Il n'y a plus qu'à installer le serveur sur la RASPBERRY PI où il tournera en permanence.
La première application envisagée est la surveillance d'une carte UPS DFRobot DFR0494, d'une UPS RPI PowerPack et d'autres solutions UPS, afin de vérifier leur comportement, en particulier le courant débité ou reçu par la batterie lorsque le secteur est présent.

Trois cas peuvent se présenter :
  • la batterie subit une recharge permanente (peu recommandé)
  • la batterie débite un courant plutôt faible et elle est rechargée périodiquement (c'est mieux)
  • la batterie ne débite aucun courant - ou celui-ci est extrêmement faible - et elle est rechargée très rarement (c'est encore mieux)
Voilà qui promet des séances de mesures longues et pleines d'enseignement.


Cordialement
Henri

13. Mises à jour

25/01/2020 : petite correction de schéma : le connecteur d'alimentation P5
                     était inversé (pôle - au milieu du JACK)
26/01/2020 : 10. Essais

Aucun commentaire:

Enregistrer un commentaire