Réalisez un Routeur Solaire pour gérer la surproduction

Version V2
Remplacé par la version V8
Pilotage depuis un SmartPhone ou un PC (navigateur Web)

Avec les panneaux solaires, dans une installation en autoconsommation, il est fréquent d’avoir de la surproduction d’énergie dont on ne sait que faire et qui est envoyée sur le réseau public. Une solution pour stocker cet excédent est de l’envoyer au chauffe-eau électrique.

Un rapide calcul, pour un chauffe-eau de 200l, équipé d’une résistance chauffante de 2400W, montre qu’il faut près d’une heure de chauffe, soit 2.3 kWh pour monter l’eau de seulement 10°.

200l*1000gr*4.18Joule*10°/3600s=2322 Wh = 2.3kWh

Chaque jour, c’est plusieurs kWh qu’il faut fournir au chauffe-eau. Pour un système classique, on effectue cela de nuit à un tarif réduit. En cas de surproduction dans la journée des panneaux photovoltaïques, il faut envoyer cette énergie au chauffe-eau. C’est une superbe batterie de stockage d’énergie. Mais il est fréquent de n’avoir que quelque centaines de watts disponibles et non pas la puissance de 2400 w que demande la résistance du chauffe-eau en branchement classique.

Exemple de régulation. Puissance consommée -16W, ouverture 76 % du temps vers le chauffe-eau.

Tableau des Versions

Différentes versions de routeur ont été décrites :

VersionMesure courant / puissanceActionneursModulaireDomoticzMQTT / Home AssistantDescription
1Sonde AmpèremétriqueRelaisNonOuiNonRouteur Solaire. Mesure de Puissance avec un ESP32
2Sonde AmpèremétriqueTriac + RelaisNonOuiNonRéalisez un Routeur Solaire pour gérer la surproduction
3.04_UxISonde AmpèremétriqueTriac + RelaisOuiOuiOuiU x I : Routeur Solaire pour gérer la surproduction photovoltaïque
3.10 LinkyLinkyTriac + RelaisOuiOuiOuiRéalisez un Routeur Solaire avec un Linky

Ici, nous allons réaliser un système qui envoi uniquement la puissance excédentaire au chauffe-eau en surveillant la puissance qui entre ou sort de la maison afin qu’elle soit nulle à l’aide d’une sonde de courant branchée derrière le compteur. Ce système ne fonctionne que pour les chauffe-eaux électriques classiques dans lesquels se trouve une résistance électrique et un thermostat électro-mécanique pour contrôler la température.

Schéma du routage de l’énergie excédentaire vers un Chauffe-Eau

Le routeur solaire agit comme une vanne qui s’ouvre pour laisser passer la surproduction en surveillant le courant en entrée de la maison afin qu’il soit nul.

Matériels

Pour réaliser l’ensemble, il faut les matériels suivants:

Capteur du Courant

Transformateur de courant 100A/50mA

Pour mesurer le courant en entrée de la maison, on utilise un capteur de courant dans lequel on fait passer le fil de phase du secteur. En sortie, agissant comme un transformateur, il fournit un courant identique, mais 2000 fois plus faible. Ce courant est envoyé aux bornes d’une résistance et nous allons mesurer la tension générée.

Il existe différents modèles suivant le courant Max que l’on souhaite mesurer. La version 100A est adaptée à un domicile ayant une puissance max délivrée de 12kVA. On la trouve en Chine chez Aliexpress.

Capteur de la tension

Pour savoir si de l’énergie rentre ou sort de la maison, il faut de même mesurer la tension électrique. C’est en comparant la phase du courant I et de la tension U que l’on connaitra le sens du transfert d’énergie.

Transformateur 220V/6V (Aliexpress)

Pour mesurer la tension, on utilise un transformateur bobiné classique abaisseur de tension qui nous isole du secteur. Par exemple un 230v/6v. Il faut un modèle le plus petit possible, on ne prélève aucune puissance. Cela n’est plus très facile à trouver. Un transformateur, dit de sonnette, peut faire l’affaire.

Micro-Calculateur ou Microcontrôleur

ESP32 – Development Board

Pour effectuer les mesures de tension et les calculs, L’ESP32 est un microcontrôleur adapté à notre besoin. Il comprend :
– des entrées analogiques pour mesurer des tensions,
– des entrées/sorties numériques pour actionner un relais ou un triac si besoin,
– une bonne capacité de calcul
– une liaison WIFI pour faire du reporting à distance sur une page web ou un système de domotique.

Gradateur – Triac

Gradateur avec détection de zéro

Pour ajuster le courant à injecter vers le chauffe-eau, on utilise un gradateur de chez RobotDyn composé d’un Triac et d’un système de détection du passage à zéro de la tension. Il existe en 16A ou 24A et est disponible chez Aliexpress.
Attention, le refroidisseur d’origine du Triac est sous-dimensionné sachant qu’il devra fonctionner pendant plusieurs heures. Rajoutez des éléments d’aluminium ou remplacez-le par un plus-grand. De même les 2 pistes entre le connecteur 230V et le Triac sont un peu faibles. On peut, en rajout, souder une couche de fil de cuivre.

En plus d’un gradateur, on peut rajouter en option 1 ou 2 relais solide pour actionner d’autres dispositifs si besoin.

Présentation de la réalisation matérielle

Mesure Courant et Tension

La mesure des 2 tensions représentantes du courant et le la tension secteur se fait par les entrées analogiques de l’ESP32. Ces entrées acceptent une tension positive entre 0 et 3.3V et numérisent la valeur sur 12 bits, valeurs entre 0 et 4095. Pour s’adapter à la dynamique d’entrée, on crée une référence de tension au milieu de la plage à 1.65V =3.3V/2 à laquelle on rajoutera la tension en sortie du transformateur et de la sonde de courant.

On prélève le 3.3V de l’ESP32 qui en passant par un pont de 2 résistances (R6 et R7) de 4700 ohm connecté à la masse nous fourni au milieu une référence de 1.65V. Pour éviter du bruit de mesure, un condensateur de 470uF (C2) filtre le 3.3V et un autre de 10uF (C1) filtre le point milieu à 1.65V.

Afin de ne pas dépasser les 3.3V crête à crête des signaux à mesurer, ou 1.65V crête, on se fixe une limite de +-1V efficace maximum.

Pour la sonde de courant avec 80A et une résistance de 24 ohm , on arrive à peu près au 1V crête à crête.

24*80A/2000=0.96V efficcace ou 1.36V crête à crête.

Ainsi la tension à mesurer sera dans la plage 1.65V +/- 1.36V.

Chez moi, avec un abonnement de 12KVA, je ne devrai pas dépasser les 60A.

Pour la mesure de tension, il faut mettre un pont de résistances (R4 et R5) pour abaisser le 6V autour de 1V efficace et avoir ainsi un signal à mesurer entre 1.65V +/- 1.41V. Si la courbe rouge de tension sur l’affichage est plate en haut et en bas, il faut augmenter R4 ou diminuer R5.

Raccordement à l’ESP32

Schéma électrique – ESP32 Development Board 2*19 pins

Le jeu de piste avec ces cartes qui intègrent un ESP32, est de trouver les GPIO disponibles et non utilisés pour la programmation Flash etc.
Dans notre cas, on mesure les tensions suivantes:
– GPIO 35 : la tension de référence à 1.65V en théorie.
– GPIO 32 : la tension en sortie du transformateur réduite par le pont de résistances R4 et R5
– GPIO 33 : la tension représentant le courant à mesurer

2 LED sur les GPIO 18 et 19 clignotent toutes les 2s. La jaune si on consomme du courant, la verte si on fournit du courant, car nous sommes en surproduction.

La commande du gradateur se fait via le GPIO22 et la lecture de l’impulsion du passage à zéro « Zero Crossing » de la tension secteur sur le GPIO23. Cette impulsion est essentielle pour se synchroniser avec le secteur.

En option, on peut par exemple, connecter un relais solide pilotable en 3.3V au GPIO5.

Timing

Ouverture du Triac 50% du temps

Le signal « Zero Crossing » sert de synchronisation au micro-contrôleur pour ouvrir le Triac entre 0 et 100% du temps d’une demi-période de 10 ms suivant le niveau d’énergie à transférer au chauffe-eau.

Mesure

La mesure des 2 valeurs représentant la tension et le courant prend environ 150uS. En pratique, on prévoit sur une période de 20ms (1/50Hz) de prélever 100 couples de valeurs, ce qui donnera une bonne description de la tension à priori sinusoidale et du courant souvent chahuté par les alimentations à découpage.

Formules de calcul des puissances

Pour bien caler dans le temps chaque mesure, on utilise le signal « Zero Crossing » du gradateur. Il passe à 1 durant 500 µs toutes les 10 ms lorsque la tension en 230v est nulle.

Toutes les 40 ms, on effectue :
– la mesure des tensions et courants durant 20ms
– une moyenne sur les dernières mesures pour lisser et réduire le bruit de mesure
– le calcul du courant efficace Ieff
– le calcul de la tension efficace Ueff
– le calcul de la puissance apparente Pva en kVA
– le calcul de la puissance active Pw en kW
– le cosinus φ

Calibration

Un calibrage préalable doit être fait pour définir la constante multiplicative kV dans le programme qui permet la conversion de la tension mesurée en binaire vers la tension réelle. De même pour le courant, la constante kI . Utilisez un voltmètre, une pince ampèremétrique ou votre compteur Linky pour la calibration.

Tension en sortie du transformateur trop élevée. Courbe plate en haut et en bas. Il faut augmenter R4 ou diminuer R5.

Suivant le transformateur servant à la mesure de tension, il peut y avoir des ajustements à faire. Si la courbe rouge de tension est une belle sinusoïde, ne changez pas R4 et R5. Si la courbe est plate en haut ou en bas, il faut augmenter R4 ou baisser R5.

Ensuite, commencer par mesurer avec un voltmètre la tension exacte du secteur. Par exemple, si la valeur affichée par le montage est 10% en dessous de votre mesure, augmentez la valeur de kV de 10%. Pour le courant, si vous n’avez pas de pince ampèremétrique, utilisez le Linky qui affiche la puissance apparente de VA. Comparez avec la valeur donnée par le système et augmentez ou diminuez en conséquence la valeur de kI.

La convention prise est d’avoir Pw positif si l’on consomme du courant en provenance d’Enedis et Pw négatif en cas de surproduction. En cas d’inversion du signe, tournez d’un demi-tour la sonde de courant sur la phase du secteur ou inversez les fils.

Taux de distorsion harmonique

À la demande de réalisateurs de la version 1 du système, j’ai rajouté le « Taux de distorsion harmonique ». THD. C’est un peu technique, vous pouvez sauter ce paragraphe….

THD + N pour la tension et le courant


Une tension et un courant idéals sont définis par une forme sinusoïdale parfaite à 50 Hz. En pratique, les appareils (type alimentations à découpage ou autres) introduisent des courants non sinusoïdaux générant de nombreuses harmoniques à 100 Hz, 150 Hz, 200 Hz, 250 Hz……et perturbent le fonctionnement des générateurs, transformateurs etc. Le THD va mesurer l’énergie contenue dans les harmoniques (Énergie totale – Énergie du signal à 50 Hz) par rapport à l’énergie principale et donner un pourcentage.
0% = une sinusoïde parfaite à 50 Hz,
100% = toute l’énergie se trouve dans les harmoniques

Ici, pour des simplicités de calcul, le résultat inclus l’énergie du bruit N en plus des harmoniques.

Exemples harmoniques

Ci-dessous trois cas de consommation/production. Le point de mesure est au niveau du compteur de la maison. Attention les échelles en verticale ne sont pas les mêmes. Les courbes sont toujours calées au max du graphique.

Le courant en vert est fortement non sinusoïdal, la consommation de 556 W est un exemple de ce qui tourne dans la maison avec probablement beaucoup d’alimentations à découpage qui génèrent cette forme de courant.

Pas de production photovoltaïque (PV) et pas de Triac

Triac = ouvert à 0%

PV = 0 W

I = 3.05A

PW = 556W

PVA= 752 VA

THDI+N= 42%

Le courant est très chahuté, mais l’échange avec le monde extérieur est faible 12W. La régulation par le Triac est en cours. C’est le résultat d’une consommation importante non sinusoïdale (2400W) et de la réponse des onduleurs.

Régulation avec le Triac pour amener autour de zéro la consommation en W

Triac = ouvert à 60%

PV = 2400 W

I = 2.12 A

PW = 12 W

PVA = 522 W

THDI = 99%

Ici en légère surproduction, le Triac est ouvert à 100%, il ne génère plus un courant non sinusoïdal, mais la consommation totale (2739W) non sinusoïdale de la maison se fait toujours sentir. Avec plus de charges résistives consommatrices comme du chauffage, on peut retrouver un sinus en courant comme la tension.

Surproduction

Triac = 100%

PV =3000W

I = 1.89A

PW = -261W

PVA = 469 VA

THDI+N = 53%

Fonctionnement

Toutes les 40 ms, la tension et le courant sont mesurés sur 100 points durant 20 ms. Si la puissance active Pw est orientée vers le réseau public (Pw<0), le triac s’ouvre un peu plus pour favoriser le transfert vers le chauffe-eau. Ceci est répété jusqu’à atteindre le point d’équilibre ou Pw est proche de zéro.

Si la température est atteinte, le thermostat du chauffe-eau coupe l’alimentation de la résistance. Dans ce cas, le routeur va ouvrir au maximum le triac, mais aucune surproduction ne sera consommé. La valeur Pw va devenir fortement négative, du niveau de la surproduction. À partir d’une certaine valeur, on peut activer (en option) un relais pour consommer sur un autre appareil. On l’arrête si la surproduction cesse. Attention d’avoir une différence entre le seuil d’enclenchement et d’arrêt supérieur à la consommation de l’appareil afin de ne pas avoir une entrée en oscillation du relais.

La nuit, si le niveau de chauffe du ballon n’est pas atteint, on laisse le relais Jour/Nuit d’Enedis prendre le relais (s’il est conservé) ou l’on peut programmer le routeur pour qu’il ouvre le Triac (23h à 4h en hiver). Le routeur prend l’heure sur le réseau internet. Attention, en cas de coupure d’internet, il risque de se désynchroniser. Mettre une plage horaire d’activation qui couvre l’horaire d’hiver et d’été pour éviter les mises à l’heure.

Dans le code source, vous trouverez un reporting vers le système Domoticz. C’est un exemple, en option, pour envoyer des données vers l’extérieur si besoin. Si vous ne le souhaitez pas, passez en commentaire la ligne 435 :
// SendToDomoticz();
Si vous l’utilisez, mettez à jour les paramètres de votre serveur Domoticz autour de la ligne 90.

Dans un souci de simplification, j’ai limité à l’essentiel les fonctionnalités. Les personnes à l’aise dans la programmation peuvent rajouter d’autres Triacs ou relais. De même, il est possible de rajouter une sonde de courant de 20A pour mesurer et afficher le courant envoyé au chauffe-eau.

Page Web

Le code installé sur l’ESP32 comprend un serveur Web qui permet d’afficher sur une page, les différentes mesures ainsi que les courbes de la tension et du courant durant une période de 20 ms. Il suffit de rentrer l’adresse IP de l’ESP32 dans le champ d’adresse de votre navigateur web.

Tableau des mesures
Courbes Tension et Courant vers le chauffe-eau

En mode « Auto », le système ajuste l’injection vers le chauffe-eau afin de ne plus envoyer de la surproduction vers le monde extérieur. On peut forcer, à la main, d’autres niveaux d’injection.

Il est possible d’afficher à distance ces mêmes informations sur un petit écran défini ici: https://f1atb.fr/affichage-a-distance-consommation-ou-surproduction-electrique/

Montage

Montage

Dans une boite d’électricien, on installe :

  • La carte ESP32 (Development Board 2*19 pins) chez Aliexpress ou plus rapidement une carte 2*16 broches ESP 32 Wroom chez uPesy.fr)
  • Une alimentation 230V – 5V 1A DC pour l’ESP32
  • Un transformateur basse tension 230V – 6V AC pour mesurer la tension (Aliexpress)
  • Un gradateur 16A ou 24A de RobotDyn suivant la puissance du chauffe-eau (Aliexpress)
  • Sonde de courant 100A/50ma (Aliexpress)
    • Résistances R1 et R2 : entre 470 et 820 Ω 1/4 ou 1/8W
    • R3 : 24 Ω 1/4W
    • R4 : 24000 Ω 1/4 ou 1/8 W (À ajuster suivant transformateur)
      • R5 : 4700 Ω 1/4 ou 1/8W (À ajuster suivant transformateur)
      • R6 et R7 : 4700 Ω 1/4 ou 1/8W
  • Condensateur C1 : 10μF ou plus en 12V ou plus
  • Condensateur C2 : 220μF à 470μF en 12V ou plus
  • 2 LEDS en face avant
  • Du fil de câblage et une plaque à trou pour le montage
  • Un fusible (option) pour protéger l’arrivée 230V

Raccordé à cette boite, on a la sonde de courant à placer autour du fil de phase du secteur à mesurer. Relier le blindage à la masse pour éviter de capter du bruit électrique.

Dans le schéma ci-dessous, on garde le contacteur Jour/Nuit et on installe en parallèle le routeur.
Remarque: le routeur ne coupe pas le neutre mais la phase uniquement.

Schéma de principe contacteur et routeur en parallèle

Code Source

L’ensemble du code est écrit en utilisant l’IDE Arduino. Il est injecté dans un premier temps par la liaison série, puis une fois en place, on peut le modifier si besoin par le WIFI comme décrit ici. Il faut dans les préférences de l’IDE, faire appel au gestionnaire de carte de « Espressif » qui développe l’ESP32. Allez dans Fichier / Préférences et mettez l’adresse : https://dl.espressif.com/dl/package_esp32_index.json

Le code source est composé de 3 fichiers installés dans le même dossier :
– le fichier principal SolarRouter_v2.ino
– le fichier PageWebb.cpp qui contient le code HTML et Javascript de la page web
– le fichier PageWeb.h de déclaration

Le code source est disponible ici:

Dezipper l’ensemble et ouvrez dans l’IDE Arduino (version 2.xx) le fichier SolarRouter_v2.01.ino.
Vérifiez que vous avez les bibliothèques installées sur votre IDE Arduino :
– RemoteDebug
– NTPClient
Pour la compilation du fichier SolarRouter_v2.01.ino, veuillez sélectionner la carte ESP32 Dev Module. Avec certaines cartes, si le téléversement du code dans l’ESP32 ne se fait pas, il faut presser sur le bouton boot au début de la tentative de téléversement.

Personnalisation

Il est nécessaire de modifier les premières lignes du code afin de donner à l’ESP32 les caractéristiques de votre réseau ethernet à la maison.

//WIFI
const char* ssid = "nom_du_reseau_wifi"; //Put here your WIFI SSID
const char* password = "12345678"; //Put here the WIFI password
// Set your Static IP address
IPAddress local_IP(192, 168, 0, 208);
// Set your Gateway IP address
IPAddress gateway(192, 168, 0, 254);
IPAddress subnet(255, 255, 255, 0);
IPAddress primaryDNS(8, 8, 8, 8);    //optional
IPAddress secondaryDNS(8, 8, 4, 4);  //optional

À la première ligne, mettez le nom de votre réseau Wifi auquel l’ESP32 devra se connecter.

À la deuxième ligne, mettez le mot de passe de votre réseau Wifi.

Il faut ensuite donner une adresse IP (IPAddress local_IP) à votre ESP32 (c’est comme un numéro de téléphone). En général, les box internet ont un champ d’adresses dynamiques (qui peuvent changer à tout moment) qu’elles attribuent lorsque que quelqu’un se connecte au WIFI. Si c’est votre smartphone, c’est parfait, vous ne cherchez pas à communiquer avec lui. Pour l’ESP, il faut lui attribuer une adresse fixe. En allant faire un tour auprès de votre box à la rubrique réseau / DHCP, vous trouverez le champ des adresses dynamiques. Par exemple, souvent les Livebox d’Orange attribuent des adresses dynamiques DHCP entre 192.168.1.10 et 192.168.1.150. Il vous reste alors un champ libre pour attribuer vos propres adresses entre 192.168.1.151 et 192.168.1.253. Souvent les .254 et .255 sont réservés à autre chose. Vous pouvez ainsi donner comme adresse 192.168.1.200 à l’ESP32 si aucune autre machine sur le réseau occupe déjà cette adresse.

IPAddress gateway correspond à l’adresse IP de votre box. C’est elle qui fait la passerelle (gateway) avec le monde extérieur. Chez Orange, c’est en général 192.168.1.1. Chez Free, c’est plutôt 192.168.0.254. Les trois premiers chiffres 192.168.0 ou 192.168.1 doivent être les mêmes pour la box et votre ESP. C’est ce qui est traduit par le masque subnet (255,255,255,0) qui dit que les 3 premiers chiffres sont fixes sur le réseau et le dernier peut changer d’une machine à l’autre.

Toutes ces adresses sont au format IPV4, ancien format bien pratique mais qui sature et est en cours de remplacement par IPV6. Si vous avez un PC sous windows, tapez cmd dans le moteur de recherche en bas, puis dans la page à fond noir vous tapez ipconfig . Vous en saurez un peu plus sur votre réseau et l’adresse IP de votre PC

Les primaryDNS et secondaryDNS correspondent aux « Domain Name Server » ceux qui veut dire les serveurs d’annuaires. Quand vous tapez une adresse http://ToTo.com, ces serveurs convertissent le nom en adresse IP, seule compréhensible par les machines. Ainsi votre ESP quand il doit chercher l’heure chez « fr.pool.ntp.org », il peut trouver un serveur. Ne les changé pas.

Forçage de nuit

Le code comprend un forçage de nuit de 23h à 4h. Si vous voulez le retirer, passez le en commentaire en mettant en début de ligne //

//if (hour >= 23 || hour <= 4) {               //Force water Heater ....
//    ModeHeater = 5;
//    retard = 0;
//    retardF = 0;
//  }
// if (LastHour == 4 && hour == 5) { ModeHeater = 0; }  // Back to Automatic mode

Bugs Soft

Attention, si vous n’arrivez pas à communiquer entre votre PC et l’ESP32, c’est qu’il vous manque le driver pour l’interface USB. En général, c’est le CP2102 qui se trouve sur la carte ESP32. De nombreux Tutos sur internet expliquent comment l’installer. Exemple: https://techexplorations.com/guides/esp32/begin/cp21xxx/

L’IDE Arduino va vous demander un mot de passe lors de la compilation. Répondez n’importe quoi, 1 lettre minimum.

Parfois avec l’IDE Arduino en fin de transfert, l’icone reste jaune et vous n’avez plus la main. Fermez l’IDE et le relancer.

Sur certaines configurations, lors de la compilation, il y a une erreur de librairie inexistante :…..include <hwcrypto/sha.h>
Avec un editeur de texte, ouvrez le fichier dans vos bibliothèques Arduino C:\Users\Utilisateur\Documents\Arduino\libraries\RemoteDebug\src\utility\Websockets.cpp
Le début de l’adresse peut changer suivant l’utilisateur. Retrouvez le dossier Arduino pour localiser le fichier dans les sous-dossiers.

A la ligne 42, remplacez :
#include <hwcrypto/sha.h>
par
#include <esp32/sha.h>

Ne me demandez pas pourquoi, sur mon PC de bureau, je n’ai pas besoin de faire cette modification, sur mon PC portable, j’ai besoin.

Diagramme fonctionnel

Le gradateur avec le signal Zero Crossing toute les 10ms, permet de synchroniser l’ensemble en activant une interruption sur l’ESP32. Un timer fourni une interruption interne toute les 100μs permettant de générer un retard de 0 à 10ms par pas de 100μs pour déclencher l’ouverture du triac à l’instant défini par le logiciel.

Toutes les 40ms et durant 20ms, 100 valeurs de tensions et 100 valeurs de courants sont prélevés et stockés. Ensuite, les calculs de puissance sont effectués et peuvent être envoyés au client web qui les demande.

Présentation du logiciel

Heure de la douche

Maintenant que vous avez je l’espère bien compris le fonctionnement, vous remarquerez qu’il faut prendre sa douche le matin les jours de grand soleil afin de profiter de la surproduction à midi.

Exemple de routage

Dans cet exemple, il y a une légère surproduction. L’ouverture du triac vers le chauffe-eau est de 76% du temps. Le système se régule pour avoir une puissance échangée avec le réseau public autour de 0 (ici -16W). Sur une durée de sinusoïde de 20 ms, on a des périodes en orange où l’on consomme (produit U*I >0) sur le réseau public et des périodes en vert (produit U*I<0) où l’on injecte sur le réseau. Le somme des 100 mesures du produit U*I sur la période de 20 ms donne un résultat proche de zéro (-16 W). Par contre, pour le calcul de la puissance apparente qui est le produit de la tension et du courant efficaces qui ne tient pas compte du signe (voir formules ci-dessus), on a une valeur importante (776 VA).

Cette courbe est chahutée pour 2 raisons :
– le triac n’est ouvert que 76% du temps. Dans une demi-période de 10 ms, on envoie du courant au chauffe-eau en dents de scie (voir courbe ci-dessus) ce qui se traduit à l’entrée de la maison par des phases de consommation et d’injection suivant la réponse des onduleurs. Avec un bilan de puissance active (W) proche de zéro
– nombre d’appareils (comme les chargeurs, les alimentations d’appareils électroniques.) ne consomment pas un courant sinusoïdal et cela ressort plus lorsqu’il n’y a pas une grosse charge résistive qui consomme.

Votre fournisseur d’électricité vous facture en fonction des W ou Wh et non pas sur le VA (puissance apparente).

Sécurité

En travaillant sur ce projet en 230V, vous acceptez d’assumer la responsabilité de votre propre sécurité et de prendre toutes les précautions nécessaires pour éviter les accidents électriques.

Responsabilité

Articles sur le photovoltaïque

F1ATB André

Radio Amateur - Domotique - Photovoltaïque

Vous aimerez aussi...

871 réponses

  1. VENANT Eric dit :

    Bonjour Andre
    Superbe travail, je réalise votre routeur pour chauffer un ballon ECS de 1200w
    J’ai pu apercevoir que vous avez ajouter un fusible, et je voulais connaitre la référence de ce dernier.
    Merci et vivement la V3
    Cordialement

  2. Stef D dit :

    Bonjour à tous,

    Est-ce que quelqu’un a ajouter une boucle de mesure de la puissance envoyée au chauffe eau ? Si tel est le cas, pouvez-vous partager le montage et le code svp ?
    L’idée est de suivre la conso du chauffe eau sur Domoticz.
    D’avance merci !

    • Samuel BURG dit :

      vous devirez reprendre le code qui lit et qui calcul la puissance sur le TC 1/2000 (le 100A/50mA) pour en controller un second de la même façon.
      vous intégrez le résultat sur la durée voulue et ça vous donne la consommation du chauffe eau (il faut mettre le second TC sur le câble de phase qui alimente le chauffe eau, sinon vous allez mesurer n’importe quoi au hasard)
      si vous exécuter trop d’interuption en même temps il va par contre falloir envisager d’utiliser le second core du CPU du ESP32 et modifier assez profondément l’architecture du programme.
      cordialement,

  3. JACOLET dit :

    Bonjour a tous, arrivez vous a mètre l’Arduino 2.1.0 en Français. même après redémarrage il n’est toujours pas en français ?

  4. Charles L dit :

    Bonjour
    Merci pour votre travail et votre partage.
    J’ai quasiment terminé mon routeur, et j’aurais 2 questions car je n’ai pas de grande connaissances en programmation:
    J’ai besoin( car contrat en Heures Super Creuses la nuit) de modifier les horaires de forçage, j’ai rentré les valeurs de 3 à 5 Heures
    du coup le ligne de code:
    if (LastHour == 4 && hour == 5) { ModeHeater = 0; } // Back to Automatic mode
    Doit aussi être modifiée (les termes LastHour et == ne me parlent pas!) du coup ce serait:
    if (LastHour == 5 && hour == 6) { ModeHeater = 0; } // Back to Automatic mode
    Le wifi de ma box est coupé de 23H à 6H, est-ce un soucis pour l’ESP32, qui doit avoir l’heure en permanence?
    Merci pour votre réponse
    Cordialement

    • F1ATB André dit :

      Je ne vois pas bien quelle plage horaire, vous voulez forcer. Si c’est de 3h00 à 5h59 , vous devez mettre:
      if (hour >= 3 && hour <= 5) { //Si l'heure est supérieure ou egal à 3 et inférieure ou égal à 5 ModeHeater = 5; //Mode forcée retard = 0; //Plus de retard à l'ouverture du Triac retardF = 0; //Plus de retard en nombre flottant } if (LastHour == 5 && hour == 6) { ModeHeater = 0; } // Si l'heure précédente (lors du dernier passage dans ce programme était égale 5 et l'heure actuelle est egale à 6. On met un double égal pour une comparaison de valeurs. On revient en mode automatique Modheater=0. LastHour = hour; on met l'ancienne heure égale à l'heure actuelle Si vous coupez le WIFI pendant quelques heures, il faudra faire l'essai. Je ne sais pas comment se comporte le programme (la bibliothèque) de gestion de l'heure en l'absence de réponse. Je pense que l'heure continu à se calculer, en utilisant l'horloge interne à l'ESP32. Cdlt

    • Samuel BURG dit :

      Bonjour,

      au vu du code de ce routeur, si vous coupez le WiFi, il va rebooter en continu et lors du reboot il va vautrer par ce qu’il ne pourra pas toucher un serveur NTP pour avoir l’heure.

      donc
      choix 1 :
      laissez la box avec le WiFi ‘on’

      choix 2 :
      modifier le code pour ne pas déclencher de reboot cpu soft (désactiver les « ESP.restart(); »)
      modifier le setup pour ne pas checker le WiFi pendant plus de 30 sec au démarrage
      absolument booter le ESP32 de jour pour qu’il se synchronize avec un NTP
      modifier le code pour que le client NTP ne cherche pas à se synchroniser toutes les 5 minutes pendant les heures ou le WiFi est ‘OFF’

      le choix 2 me semble cependant difficile pour vous.
      cordialement,

      • F1ATB André dit :

        J’avais oublié le test du Wifi toutes les 30s.
        sur la ligne 416
        if (millis() – previousWifiMillis > 30000) {
        mettez par exemple
        if (millis() – previousWifiMillis > 3600000) {
        Le systeme fera un test toutes les heures seulement. Vous avez droit à 20 erreurs (20h) avant qu’il ne reset.

        Cdlt

  5. Marconnet dit :

    Bonjour,

    Super travail ,merci beaucoup !
    Auriez vous une version en triphasé car j’ai tout en triphasé (chauffe eau, resistance appoint PAC,et surtout production photovoltaique)
    Merci de votre collaboration.

    Alain

  6. Pat dit :

    Bonjour,

    Great Job,
    je me suis inspirer de votre montage pour en faire un a moi , mais le Gradateur – Triac de chez Robotdyn ne semble pas fonctionner correctement , je n’arrive pas à faire une puissance graduelle celle ci ne fonctionne qu’a partir de 80%.

    J’ai fait des mesures à l’oscilloscope et je ne trouve pas la sortie ZeroCross en phase avec le zéro du secteur ( 2.4 ms de différence) ….avez-vous fait ces mesures car sur votre diagramme elle sont en phase ?

    Merci d’avance

    • F1ATB André dit :

      De mémoire, j’ai un peu galéré parce que le pulse est court et je savais pas s’il fallait un front montant ou descendant pour gérer l’interruption. Je n’ai pas noté de décalage entre un passage par zero de V et Zc.
      Faite un petit programme qui va de 1 à 100 pour les retards par pas de 1 toutes les secondes pour voir.
      Cdlt

      • Samuel BURG dit :

        Bonjour,

        j’ai le même problème de synchro avec mon gradateur Robodyn, j’ai un décalage de au moins 1ms pour le pulse ZeroCross.
        je n’ai pas encore eu le temps d’explorer ceci avec précision.

        Cordialement,

      • Pat dit :

        Je vais essayé , et je vous tiens au courant.

        • Samuel BURG dit :

          Bonjour,

          Donc j’ai fait de multiples essais avec mon gradateur RobotDyn et la version 2 du routeur solaire de André/F1ATB.
          J’ai utilisé la version logicielle sans modification telle que téléchargé sur ce site et une version que j’ai modifiée mois même.

          J’ai tester les différentes options de paramétrage de la bibliothèque Arduino/Espressif/ESP32 : attachInterrupt(), digitalPinToInterrupt() : RISING, FALLING, CHANGE.
          J’ai testé différent échantillonnage temporel pour le relevé de la courbe tension/intensité et différents format de donnée pour aussi mesurer et tester le nombre de points de mesure que l’on peut atteindre par cycle de 20ms.
          J’ai vérifié la fréquence des horloges de l’ESP32 et la fréquence de fonctionnement du CPU(): CPU getCpuFrequencyMhz(); // 240MHz —XTAL getXtalFrequencyMhz(); // 40 MHz — APB getApbFrequency(); // 80MHz

          Dans toutes les situations je retrouve toujours exactement le même résultat :
          – je plafonne à 103-105 mesures par cycle de 20ms (190ms par boucle)
          – j’ai exactement 1ms de décalage entre le point zero de la courbe de tension et le pulse zerocross du gradateur RobotDyn, avec une variation du décalage qui est inférieure à 0.1ms

          En l’état ce décalage, dans la version actuelle du logiciel, induit une limitation de l’ouverture du gradateur à 90%.
          Je n’ai pas comparer ce résultat avec un autre ESP32 ou un autre gradateur.
          Je n’ai pas d’osiloscope sous la main pour faire une mesure comparative.
          Je n’ai pas de charge sur la sortie du gradateur pendant cette mesure.

          Quelle peuvent êtres les cause d’un décalage aussi stable et aussi nette du zero cross ?
          – défaut logiciel ? – défaut du gradateur ? – défaut du montage électrique ? – position d’une capacité qui a un effet de filtre et de décalage ?
          Si je suis raisonnablement compétent en programmation, je ne pense pas avoir les compétences en électronique pour plus démêler ce problème en l’état.

          Cordialement,

          • F1ATB André dit :

            Sur la version 3 du routeur, https://f1atb.fr/index.php/fr/2023/05/18/realisez-un-routeur-solaire-avec-un-linky-diy/ , j’ai mis le relevé à l’oscilloscope du signal Zc et de la tension secteur. Il n’y a pas de décalage sur le plan électrique. Le front montant du signal Zc est bien en phase avec le zéro de la tension secteur. Pour les ouvertures, j’ai également mesuré le courant en sortie du Triac. A 100%, on est bien au maxi.
            Cdlt
            André

          • Samuel BURG dit :

            Bonjour,

            j’ai continuer de regarder ce problème.

            j’ai trouvé que la précision du zero cross est attendue à +/- 0.1ms (-0.1ms sur le front ‘rising’ et +0.1ms en ‘falling’), donc un délaçage de 1ms ne correspond pas à ce décalage.

            j’ai vérifier ma fréquence de courant par rapport à l’orloge du ESP32, j’ai du 49.9988 Hz, ceci entraine donc un décalage progressif du zero cross de 0.4723usec par cycle par rapport à un cycle de 20ms, ce qui n’est là aussi pas du tout 1ms.

            je vais désassembler mon montage pour le refaire et vérifier si il y a un faux contact qui pose problème.
            je vais faire un mini programme de lecture analogique sur les différents pins concernées du ESP32 pour enregistrer ~512 valeurs consécutives sur chaque pins et reconstituer des courbes « pseudo oscilloscope » et voir ce que ca me sort.

            Cordialement,

  7. Michael54 dit :

    Bonjour,

    Super routeur.
    Il est en service depuis peu et j’ai modifier le code pour le piloter via home assistant. Par contre je le lance quand ma batterie est pleine mais il pompe ma batterie en décharge. je voudrais modifier la consigne de régulation, de 0W a -100W. Quel ligne je dois toucher ? j’ai beau chercher je ne trouve pas…. Merci !

    • F1ATB André dit :

      Ouvrir la page action et cliquez sur « Seuil Pw : 0W » en dessous de Triac. Une fenetre s’ouvre et mettez la valeur de seuil qui correspond à votre besoin.
      Cdlt

      Excusez moi je me suis trompé de routeur, vous avez la version V2.01.
      Dans ce cas ouvrez le code à la ligne 278 et mettez
      retardF = retardF + (PW+100) / 200;
      si vous voulez réguler autour de -100W (légère injection)
      Cdlt

  8. Philippe63 dit :

    Bonjour André,
    J’ai un panneau solaire et j’ai installé le routeur solaire qui fonctionne très bien. Je voudrai ajouter un 2eme panneau solaire sur le toit de mon garage qui est séparé de la maison (meilleur exposition). La maison et le garage possèdent chacun un tableau électrique avec chacun un différentiel et une terre indépendante. Le capteur de courant est installé sur l’alimentation du tableau de la maison. Donc la consommation du garage (faible) n’est pas vue par le capteur car le garage a sa propre alimentation. Après le disjoncteur EDF situé dans la maison une boite de dérivation permet d’alimenter le tableau de la maison et celui du garage. Donc si je branche un panneau solaire sur une prise du garage, le courant produit par le panneau va remonter jusqu’à la boite de dérivation et la il a deux possibilités soit il est consommé par la maison soit il est réinjecté sur le réseau EDF, voilà ma question. Je pense que comme le courant prend le chemin le plus court il sera consommé par la maison mais je n’en suis pas sure. Si la nouvelle version du routeur permet d’avoir le capteur de courant déporté je le déplacerai dans la boite de dérivation ce qui permettra de prendre en compte la consommation du garage. D’avance merci pour votre réponse.

    • F1ATB André dit :

      OK, je vois votre problème avec le point de mesure qui n’est pas au bon endroit. Il y a 2 solutions :
      1) vous optez pour la nouvelle version V3.00_Linky avec un ESP32 et un coupleur optique près du Linky et le même ou l’ESP32 avec le Triac que vous avez déjà installé près du chauffe-eau je suppose.
      2) Vous déplacez votre sonde de courant près du Linky et attendez que je fasse une nouvelle version V2, qui reprendra les nouvelles possibilités comme la modularité de la version V3.00_Linky. Mais laissez moi un peu de temps pour souffler, la V3.00_Liky avec près de 3000 ligne de code m’a pris 3 mois à développer.
      Cdlt

      • Philippe63 dit :

        Merci André, je découvre avec votre message que la version V3.00 Linky est en ligne.
        Je regarde.
        Merci encore pour votre aide.

      • Philippe63 dit :

        Bonjour André, mon Linky est à l’entrée de mon terrain dans le coffret gris EDF et loin de la maison, donc sans alimentation 230V. Je vais d’abord faire un test pour relier la sonde de courant avec un câble réseau en utilisant une des 4 paires torsadées pour la connecter dans la boite de dérivation, ce qui permettra de voir l’injection des 2 panneaux solaire. Il me faut environ 5/6 mètres de câble réseau, le test me dira si cela fonctionne ou pas. Si cela ne fonctionne pas j’ai la solution d’alimenter l’ESP32 avec le coupleur optique avec le câble HC/HP (2 fils 1.5mm²) qui n’a plus d’utilité avec le routeur solaire et qui arrive dans le coffret gris EDF et qui est branché actuellement sur le Linky. Une autre solution serait de remonter l’info en sortie du coupleur optique via le câble HC/HP en modifiant un peu le circuit.
        Bravo encore pour cet énorme travail et merci pour l’aide que vous nous apportez.

        • F1ATB André dit :

          Très bonnes idées pour résoudre le problème de l’alimentation. Avec un câble blindé, type câble réseau, on doit pouvoir faire 20m au moins.
          J’aime beaucoup l’idée de reprendre les câbles HC/HP.
          Si on a des soucis avec de trop longs câbles, on peut modifier les 2 valeurs de résistance autour du LTV-814. Mais il faut un oscilloscope pour vérifier que le signal est bien carré à l’entrée de l’ESP32.
          Cdlt

  9. JACOLET dit :

    v2.0 problème pour les valeurs a indiquer dans la partie wifi /de la ligne 34 à 43 et a quoi elle correspondes expl: ip du modem ip : du esp32 , ip: smartphone ici en Belgique il y a des différences je dois les modifiés. je suis un peux perdu merci

    • F1ATB André dit :

      Les adresses IP en interne sur votre réseau, c’est comme les numéros de téléphone internes d’un réseau d’entreprise.
      C’est votre box internet qui les attribue. Mais pour un système de domotique, il vaut mieux forcer une adresse.
      Votre box attribue des adresses, par exemple dans la plage:
      192.168.0.1 à 192.168.0.254
      ou bien
      192.168.1.1 à 192.168.1.254

      Dans cette page d’adresse il y a une sous plage de valeurs dites dynamiques, attribuées par la box ex 192.168.0.10 à 192.168.0.100
      Les autres sont des adresses statiques. Vous pouvez prendre une adresse pour votre ESP ex 192.168.0.200
      Dans les paramètres réseaux DHCP vous trouvez ces informations.
      En genéral on ne prend pas celles qui se terminent par 1 ou 254, elles sont utilisées par les box.
      A la ligne gateway, mettez l’adresse de votre box.
      subnet et primaryDNS ou secondary DNS ne changé rien.

      Vous pouvez installer sur votre PC un logiciel comme Angry IP scanner, qui va vous faire la carte des adresses utilisées sur votre réseau.
      Je peux, si vous n’y arrivé pas prendre la main sur votre PC pour tout configurer. Ecrivez moi sur f1atb.fr@gmail.com
      Cdlt
      André

      • JACOLET dit :

        Bonjour, et merci pour les explications et la proposition de tout configuré, mais je vais essayer de configuré seul, il faux que je me débrouille pour apprendre. Cordialement Jean

  10. smiechowski dit :

    bonjour André , j’ai remarqué que le compteur (kwh) de la page web du routeur ne correspondait pas à la conso facturée (edf). J’en déduit que l’injection sur le réseau est soustrait du compteur de la page web.
    Est-il possible de paramétrer le routeur pour ne comptabiliser que les Kwh consommer du réseau ?

    • F1ATB André dit :

      Dans le tableau
      La puissance Apparente en VA affichée est la valeur instantanée du Linky sans modification.
      La puissance active en W est une moyenne estimée recalée sur les valeurs reçues en Wh du Linky quand elles évoluent.
      L’énergie Active du jour est la valeur du Linky – la valeur du Linky à 0h.
      L’energie Active Totale est la valeur du Linky

      Le premier graphe sur 10mn donne les valeurs en VA et en W comme dans le tableau.

      Le deuxième graphe en W sur 48h donne bien la différence Soutirée – Injectée. Pour des questions de mémoire de stockage, je stocke uniquement la différence et pas chaque valeur.

      Le troisième graphe sur 1 an donne également l’energie Soutirée – Injectée. Je ne peux pas stoker les valeurs séparément par manque de place en ROM.

      Cdlt

      Excusez moi, plus haut j’ai répondu pour un routeur en version V3.00_Linky. Vous m’avez posé la question pour une version V2.
      Cette version fait la mesure algébrique entre les Wh soutirés et les Wh injectés. Dans la prochaine version V3.00_Sonde , je ferai la séparation afin de retrouver les valeurs d’EDF.
      Attendez un peu, dans quelque temps, elle sera en ligne.
      Cdlt

      • christophe smiechowski dit :

        Bonjour André ,il y a un quiproquo . On est bien sur le fil du routeur V2 ? J’ai l’impression que vous parlez de la version 3.(linky)

        Merci d’avance de prendre le temps de me répondre.

        • F1ATB André dit :

          Vous avez raison, je me suis trompé de fil de discussions. J’ai tellement de messages par jour entre le site F1ATB et youtube.com/@f1atb
          Merci
          Cdlt
          André

          • Smiechowski dit :

            Pas de problème, vous en faites déjà beaucoup pour nous tous et je vous en remercie. J’attendrai la nouvelle version bien que la v2 fonctionne très bien. Merci et bonne soirée.

  11. Nutta dit :

    Oui, vous en avez déjà fait énormément et je crois bien que nous sommes vraiment très nombreux à vous remercier.
    >>>Pour remercier de façon plus concrète F1ATB, notons qu’il est possible de soutenir son travail en effectuant un don (en haut de page).

  12. Serge 11 dit :

    Bonjour,
    Pouvez vous me dire s’il est possible de contrôler la sortie du triac. J’ai une ouverture à 100 % mais pas de tension en sortie. Il y a bien 230 V en entrée.
    D’avance merci.
    Cdt
    Serge

    • F1ATB André dit :

      Vérifiez que votre Triac est bien branché. Dans ce cas si vous êtes à 100%, vous devez avoir autour de 3.3V sur l’entée Psm du Triac.
      En sortie, on peut mesurer la tension, sauf que s’il n’y a pas de charge, même sans excitation de l’entrée, on a une tension résiduelle sur le 230V. Le Triac n’est pas un interrupteur parfait.
      Cdlt

      • Serge 11 dit :

        Ce que vous appelez Psm est la gachette? la patte du triac qui n’est ni sur l’entrée ni sur la sortie 230 V.
        Le 3.3 V est entre la masse et la gachette?

        • F1ATB André dit :

          C’est le signal de commande qui sort du GPIO 22 et va sur le module Gradateur/Triac

          • Serge 11 dit :

            OK merci pour la précision.
            Je viens de voir que la led bleue du dimmer est allumée alors que j’ai une ouverture à 0 %.
            C’est normal?

          • F1ATB André dit :

            En gros à partir de 5% d’ouverture, la Led bleu s’allume. Si vous êtes à 0% et elle s’allume, il y a un problème. Débranchez le fil de commande pour voir si cela s’arrête.
            Cdlt

          • Serge 11 dit :

            Je viens de déposer le dimmer. Le triac a flashé sur la patte Load alors que j’avais sensiblement augmenter la surface du radiateur.
            Nouvelle commande mais je vais déporter le triac avec un gros radiateur.

  13. Anthony F dit :

    Bonjour,

    J’ai suivi le tuto (merci pour tous ces details),
    J’ai deux lampe a incandescence pour mes tests une en sortie de triac et l’autre pour la mesure du courant que j’ai installé en sortie d’un gradateur de lampe halogène du bon vieux temps …
    – mais j’ai un pb pour la mesure de tension : reste vers 0
    – et le courant n’est pas sinusoidale … (mais je mesure le courant du gradateur sur une ample de 60 w)

    PS : je ne suis pas certain d’avoir mis le capteur de courant ni le transformateur dans le bon sens, mais a-priori ca va ne jouer que sur le signe, correcte ?

    Une idée pour m’aider a trouver le pb, j’ai de la tension au secondaire du transformateur (220v – 6v), mais pas correcte en entree du esp …

    • F1ATB André dit :

      En premier, il faut une belle courbe rouge pour la sinusoide de la tension. Quel que soit le sens du transfo. Si ce n’est pas correcte entrée ESP, il doit y avoir un problème de câblage.
      Cdlt

  14. JACOLET dit :

    après le téléversement dans l’esp j’obtient ceci dans le monitor série: [108392][I][WiFiClient.cpp:253] connect(): select returned due to timeout 3000 ms for fd 53
    connection failed
    ets Jun 8 2016 00:22:57

    rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0xee
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:DIO, clock div:2
    load:0x3fff0030,len:1184
    load:0x40078000,len:13192
    load:0x40080400,len:3028
    entry 0x400805e4
    Booting
    [ 311][I][ArduinoOTA.cpp:141] begin(): OTA server at: esp32-943cc6384620.local:3232
    IP address: 192.168.0.200
    [ 315][W][esp32-hal-timer.c:226] timerAttachInterruptFlag(): EDGE timer interrupt is not supported! Setting to LEVEL…
    [ 44359][E][WiFiUdp.cpp:172] beginPacket(): could not get host from dns: 11
    01:00:45
    Power:740.00
    [ 48390][I][WiFiClient.cpp:253] connect(): select returned due to timeout 3000 ms for fd 53
    connection failed

    • F1ATB André dit :

      Vous n’avez pas configuré correctement l’adresse IP, le gateway, le nom du réseau WIFI, le mot de passe.
      Comme vous n’êtes pas le premier, je vais un chapitre là-dessus, les commentaires au début du code ne suffisent pas.
      Cdlt
      André

      • JACOLET dit :

        Bonjour, j’ai bien vérifié mais il y a surement un truc qui est a changer quelque part et au quel je ne pense pas?

        • F1ATB André dit :

          Tout le monde y arrive en ajustant les résistances. A moins que votre transfo sorte des signaux non sinusoidaux .

  15. Pierre M dit :

    Bonjour André,

    Tout d’abord merci pour votre travail et surtout votre partage.
    J’ai réalisé un premier montage de votre version V2. Celle-ci à fonctionné à merveille pendant 1 mois.
    J’ai suite à cela voulu refaire mon montage au propre. Et c’est la que les ennuis sont arrivés.
    Depuis les courbes I et V ne s’affiche plus sur la page web. La tension, l’intensité et le reste des informations sont bien affichées mais pas de courbe.
    Auriez vous une idée pour m’orienter dans mes recherches ?

    En vous remerciant,

    • F1ATB André dit :

      Si la tension est correcte (autour de 230V) , je ne me le’xplique pas bien. Si elle n’est pas correcte, il doit y apoir un problème au niveau des 3 entrées de mesure.
      Certains ont eu des problèmes avec les GND (masse) de la carte qui n’étaient pas tous reliés ensemble.
      Cdlt

  16. Serge 11 dit :

    Bonjour,
    J’utilise la version V2 qui répond a mes attentes avec une sortie sur CE et une vers SSR pour un moteur. Ce moteur étant distant, je souhaite le piloter en WiFi.
    J’ai lu votre sujet sur SonOff Mini R2 qui doit pouvoir répondre a mon besoin mais je n’arrive pas à intégrer les lignes de programmation dans la version routeur V2.
    Si vous pouvez m’aider sur ce sujet.
    Cordialement.
    Serge

    • F1ATB André dit :

      Trois solutions.

      Pour commander à distance, inspiré vous de
      SendToDomoticz() à la ligne 160

      Ouvrez la version V3.00_Linky, que j’ai publié récemment qui fait cela, mais avec le Linky comme capteur et non la sonde de courant

      Cet été, je publierai une nouvelle version V2 qui s’appelera V3.00_Sonde. Elle inclura les commandes à distance.
      Cdlt

  17. steph031 dit :

    Bonjour,
    j’ai lu sur un routeur du commerce clé en main, l’incompatibilité avec des résistances en stéatite

    Est-ce le cas pour votre système ?

    cdt
    merci

    • F1ATB André dit :

      Je ne connais pas la raison de l’incompatibilité de la stéatite. Il y a des articles sur le sujet sur le web pas clairs.
      Le mien fait de la découpe du réseau à 50Hz.

      Cdlt
      André

      • Philippe63 dit :

        Pour info, sur mon ballon d’eau chaude de 200W j’ai une anode Titane. Il y a une petite carte électronique avec un accumulateur 9V pour alimenter l’anode (10mA environ) quand le chauffe-eau n’est pas alimenté. Lorsque le chauffe-eau est alimenté la carte recharge l’accumulateur 9V. Cette carte est alimentée en 220V et ne peut pas fonctionner correctement avec le découpage du 220V.
        J’ai donc déconnecté l’arrivée 220V sur la carte électronique et j’ai amené une alimentation séparée 220V en soudant les deux fils sur le connecteur d’arrivée 220V côté cuivre. J’ai ensuite enlevé l’accumulateur 9V qui ne sert plus à rien car la carte est alimentée en permanence.

    • christophe smiechowski dit :

      Bonjour ,je l’utilise depuis plusieurs mois sur un ballon stéatite. Aucun problème.

  18. Samuel BURG dit :

    Bonsoir,

    Après quelques jours de test, je reviens sur le sujet du délai des impulsions ZeroCross du Gradateur RobotDyn.

    Au vu de mes mesures, il est vraisemblable que mon exemplaire comporte un défaut et présente ainsi un décalage du Zero cross de 1.1ms.

    Pour la réactivité du ESP32, avec les bibliothèques « classiques », une interruption a un retard de ~ 2.5us +/- 0.7us.
    Il est possible de réduire ce délais à 0.08 us en utilisant un code en assembleur pour se rapprocher de la limite matérielle du ESP32 qui est bien meilleur que ce qui est implémenté dans la bibliothèque par défaut. Je n’ai cependant pas explorer cette voie car 2.5us de retard sur une interruption quand mon gradateur se prend 1.1ms … c’est pas un problème.

    Lors de mes différents test j’ai aussi exploré les possibilités des 8 canaux de numérisation du ADC1 pour chercher à augmenter la fréquence d’échanttillonage. Je n’ai pas exploité le ADC2 et ses 10 canaux par ce que celui ci est utilisé par le WiFi or la majorité de projets utilisent justement le WiFi.
    En outre il existe un mode « DMA » très intéressant mais justement exploitable uniquement avec le ADC1.
    Le but de cette recherche était de contourner le fait que je ne dispose pas d’un oscilloscope et que l’échentillonga par défaut du ESP32+Arduino est trop lent.
    A noter que sur les Dev Board utilisant un ESP32 WROOM seul 6 canaux ADC1 (channels 0,3,4,5,6,7) sont connectés sur des gpio utilisables.

    J’ai ainsi identifié 4 méthodes pour utiliser le ADC1 avec des possibilités variables de fréquence d’échatillonage :
    – ADC en mode ‘classique’ avec les bibliothèques Arduino: max 11kHz réparti sur les canaux activés parmi les 8 disponibles
    – ADC en mode ‘classique’ avec les bibliothèques Espressif: max 22kHz réparti sur les canaux activés parmi les 8 disponibles
    – ADC en mode ‘DMA’ avec l’interface du 2IS prévu pour l’audio: max 277kHz mais sur un seul canal à la fois parmi les 8 disponibles
    – ADC en mode ‘DMA’ sans 2IS (besoin de reformater les données obtenues): max 2MHz (!!) réparti sur les canaux activés parmi les 8 disponibles

    J’ai implémenté les 4 méthodes et les résultat de la version ‘ADC-DMA’ sont très utiles.
    En plus de donner un bien meilleur échantillonnage; celui ci se fait sans charge CPU car c’est le contrôleur qui fait le boulot et qui met les données en RAM via le DMA.

    Sur mon problème initial de décalage du ZeroCross, celui ci est donc confirmé.
    Ceci m’a aussi permis de mesurer la forme de l’impulsion du Zero cross qui en fait est assez large. J’ai une FWHM de 400us, un front ascendant de 200us, un plateau de 100us, un front descendant de 200us.
    Je note aussi que la forme de l’onde de courant est un peu bizarre. Je suis en train de préparer un outil de correction de la linéarité du ADC, bien que je doute que ceci en soit la cause.

    Je partage le code ici : https://burg.myqnapcloud.com:9443/share.cgi?ssid=c2807e20982a450289a5251d512906c2

    Cordialement,

    • Samuel BURG dit :

      Correctif de dénomination :
      – ADC en mode ‘one-shoot’ avec les bibliothèques Arduino: max 11kHz réparti sur les canaux activés parmi les 8 disponibles
      – ADC en mode ‘one-shoot’ avec les bibliothèques Espressif: max 22kHz réparti sur les canaux activés parmi les 8 disponibles
      – ADC en mode ‘continuous 2IS’ DMAx1 via l’interface de la bibliothèque 2IS prévu pour l’audio: max 277kHz mais sur un seul canal à la fois parmi les 8 disponibles
      – ADC en mode ‘continuous DMA’ DMAx8 via une bibliothèque dédiée (2IS en sousjacent mais besoin de reformater les données obtenues): max 2MHz (!!) réparti sur les canaux activés parmi les 8 disponibles

  19. Samuel BURG dit :

    Bonjour,

    J’ai écris un outil de calibration du DAC et du ADC pour l’ESP32 qui permet de calibrer l’ADC de son ESP32 à partir du DAC interne et d’un simple voltmètre (+ un calcul de fit linéaire dans un tableur).
    L’outil génère une LUT directement utilisable dans un programme.
    L’utilisation de la LUT est plus rapide et plus précise que les corrections implémentées dans la bibliothèque Espressif et Arduino.
    Le mode d’emploir est mis en commentaire au début du code.

    La référence sous jacente est : https://github.com/e-tinkers/esp32-adc-calibrate

    J’ai mis mon code à disposition au même endroit que pour les précédents:
    https://burg.myqnapcloud.com:9443/share.cgi?ssid=c2807e20982a450289a5251d512906c2

    Je n’ai pas encore testé pour évaluer selon quelle amplitude ceci améliore les mesures de tension, d’intensité ou de puissance.

    Cordialement,

  20. BARRES dit :

    Bonjour André

    Félicitations pour vos connaissances et d’accorder votre temps pour les non initiés.
    Je reconnais n’avoir pas lu l’ensemble de vos réponses aux commentaires très nombreux car vous avez peut être déjà répondu a cette question.
    Avant de construire votre routeur, avez vous mesuré le taux de réinjection résiduelle dans le réseau EDF en Wh moyen ainsi que la consommation EDF injecté dans le ballon ECS en Wh moyen lié au temps de réaction de la régulation sur les perturbations de consommation électrique.

    Merci pour votre réponse

    Christophe

    • F1ATB André dit :

      J’avoue ne jamais avoir fait les mesures avec précision. J’ai les deux types de routeur à la maison. Avec la sonde ampèremétrique qui réagit très vite. Une mesure toutes les 40 ms et l’autre avec le Linky, une mesure toute les 2s. Un peu lent, mais plus facile à réaliser. Je suis plus préoccupé par les watts perdus lorsque qu’il y a beaucoup trop d’énergie, les routeurs sont à 100% vers leur charge, mais il reste des Watt qui partent vers Enedis.

      • BARRES dit :

        Merci pour le retour André.

        Généralement les routeurs du marché sont plutôt calé pour être certain de ne pas avoir d’injection dans le réseau EDF donc le talon se situe au environ de 10w lorsque il y a transfert d’énergie vers le ballon ECS. On peut donc considérer que ces 10W chauffe aussi le ballon mais sont prélevés sur Enedis et non sur les panneaux.
        Votre routeur offre potentiellement des performances encore plus intéressantes, cela serait peut être intéressant de faire une mesure plus précise pour comparer.

        Bien cordialement

        Christophe

        • Samuel BURG dit :

          Bonjour,
          votre commentaire a attiré mon attention car je suis justement en train de travailler à une recalibration des pins ADC (convertisseur analogique -> digitale) du ESP32 couplé à une éventuelle modification des fonctions de lecture des sondes ampèremétriques et sondes de courant pour essayé d’amméliorer la précision des mesures, pas vraiment pour gratter 10W, mais plus pour le concept de voir jusqu’où est ce que l’on peut pousser le routeur présenté par André Buhart avec un ESP32.
          Cordialement,

        • F1ATB André dit :

          On peut régler le seuil de déclenchement comme on le souhaite. Néanmoins il faut bien réaliser que les consommations sont bruitées. Il y a sans arrêt de d’importantes variations, mise en marche de moteurs, découpage d’une plaque à induction etc.. qui font que l’on ne suit pas à 10w près. Les routeurs essayent de s’approcher de l’équilibre, mais sont sans arrêt perturbés.
          Cdlt