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. Richard FOULON dit :

    Bonjour Monsieur, tout d’abord merci pour votre partage et toutes ces explications. J’ai néanmoins une question en prévisions de réaliser votre routeur que je trouve génial. Admettons que j’ai 500W de production excédentaire et que mon ballon d’eau chaude fait 2000W. Quid des 1500W supplémentaire nécessaire au fonctionnement puisque la résistance va demander cette puissance totale de 2000W ? les 1500W vont être pris du compteur et au coût du kWh d’EDF, non ? En effet, il existe une solution de chez APSystems, l’ECU-C, mais cela ne marche pas si la puissance dispo est inférieure à la puissance du chauffe-eau. C’est peut-être la subtilité de votre système ? Désolé si je n’ai pas pu déceler celle-ci :-). Dans l’attente de votre retour. cordialement, Richard.

    • F1ATB André dit :

      Lorsque vous n’avez que 500w, mon routeur ne fournira au chauffe eau que ces 500w même s’il peut en absorber 2000w. Ainsi au niveau du compteur EDF, il n’y aura aucune consommation.
      Cdlt

      • Richard FOULON dit :

        Merci André pour votre réponse. C’est sans doute le Triac qui ajuste la puissance, j’y ai pensé après. Et quid des batteries, avez vous essayé des systèmes de passer au travers d’une batterie ou alors de charge une batterie plutôt que de chauffer l’eau ? Ou alors au cas où le chauffe eau est à T°C, de pouvoir basculer dans une batterie ? Encore merci, Richard.

        • Richard FOULON dit :

          Pardon, après relecture, j’ai vu dans la version 3 que l’on pouvait avoir aussi une sortie sur relais statique. Comment on gère les priorités, je veux dire que si le ballon est à T°C, comment on dit à l’ESP32 de commuter un relais ?
          Aussi, quel modification doit-on faire sur le ballon ou comment s’assurer qu’il est compatible avec le routeur ?
          Merci encore pour votre aide. Je trouve que votre site, vidéo et conseil sont TOP !

          • F1ATB André dit :

            Vous mettez par exemple le seuil du Triac à 0 (W). Le seuil du relais à -50 (W). Le triac demarre en premier, quand le ballon s’arrête là puissance va passer fortement négative ,le relais va s’enclencher.

        • F1ATB André dit :

          Jouez avec les seuils de déclenchement du Triac et des relais pour créer un scénario de charge.

  2. Anatole dit :

    Bonjour,
    bravo pour tout votre travail, concernant la calibration comment peut on faire si on n’a aucun appareil de mesure a part un vieux Metrix MX 462 ?

    • F1ATB André dit :

      Utilisez l’afficheur du Linky. En premier, calibrez la tension , ensuite pour régler l’intensité, prenez plutôt les VA affiché par le Linky et le routeur.

  3. Andre dit :

    bonjour, André,
    encore merci pour ce routeur qui fonctionne a merveille ici .j’ai juste espacé les verif du wifi qui faisait reboot je ne sais pas pourquoi.
    par contre les variations du triac me produisent un peu de qrm sur la bande 80m(j’ai pas verifié ailleurs!)existe t il un module triac avec filtre incorporé? ou avez vous une solution a me proposer?merci beaucoup ,joel F1JUA

  4. Mac.c dit :

    Bonjour André,
    je voulais savoir si je pouvais avoir 2 esp qui chacun pilote un triac?
    Un pour chauffer l’eau chaude sanitaire et quand celui-ci est chaud chauffé l’eau du ballon tampon, en utilisant un seuil de déclenchement plus bas pour ce dernier.
    merci

    • F1ATB André dit :

      Oui bien sûr, c’est tout l’intérêt de ce système modulaire. Vous ajustez les seuils suivant le scénario.
      Cdlt

      • Smiechowski dit :

        Bonjour André,
        Dans le cas de 2 esp, peut-on utiliser la sonde et le transfo du premier esp ? Ou faut-il 2 circuit complètement dissocié ?
        Merci

        • F1ATB André dit :

          Excusez-moi, je ne comprends pas ce que vous voulez faire avec 2ESP sur la même sonde.
          Cdlt

          • Smiechowski dit :

            Ce n’est pas pour une utilisation simultané. Un esp pour le ballon et un autre pour une prise sur la quelle est branché une bouilloire. Au vu de votre réponse, je ferais 2 montage.
            Merci et bonne vacances

  5. F6FXW dit :

    Bonjour,
    Après quelques ratés de mise en route,
    J’observe depuis 2 jours maintenant, le fonctionnement tout-à-fait correct du routeur (Version 2)
    Mais il y a un mais,
    au vu des différents commentaires j’avais de suite remplacé le mini-radiateur du dimmer par un plus grand. (110x60x15).
    En utilisation standard, le retard évolue entre 0 et 25% selon le soleil du moment, et donc le radiateur reste tiède à chaud (au doigt)
    Mais en mode forçage à 100% de conduction ce radiateur devient brûlant !!!

    Mais question est:
    Parmi ceux qui ont réalisé ce routeur, y a-t-il quelqu’un qui a pu tester le bon fonctionnement en mode nuit avec le forçage actif de 23h à 4h du matin ???
    J’ai vraiment beaucoup de peine à imaginer que le dimmer avec son radiateur d’origine puisse y résister !…
    Pour infos, mon chauffe-eau absorbe 13A (3kW) lorsqu’il est alimenté sous 230V

    Merci de partager ce que vous avez constaté.
    Cordialement,
    Michel.

    • F6FXW dit :

      Oupsss,
      je viens seulement de visionner la vidéo sur youtube relative à la nouvelle version V3 !
      Et donc, ma question ci-dessus n’a plus vraiment d’intérêt, F1ATB ayant rappelé la nécessité d’y mettre un refroidisseur bien plus conséquent.
      Mon chauffe-eau faisant 3kW, il me reste à trouver le radiateur qui conviendra.
      Je reviendrai ici plus tard avec le choix qui aura fonctionné.
      Cdlt

  6. F6FXW dit :

    Forçage de nuit (Attention il y a un effet de bord dont il faut se méfier)
    (Voir la ligne 299 if (hour >= 23 || hour = 17 || hour <= 19) { … et aussi en L304 if (LastHour == 17 && hour == 19) { ModeHeater = 0; }

    Et là, Patatra !
    Le chauffe-eau semble être forcé en permanence. En effet "|| hour = 17 && hour < 19) { //Force water Heater On during the night. Values OK for Summer and Winter even if one hour error
    ModeHeater = 5;
    retard = 0;
    retardF = 0;
    }
    if (LastHour == 17 && hour == 19) { ModeHeater = 0; } // Back to Automatic mode
    LastHour = hour;

    Notez bien le changement de '||' en '&&' et "<=" en "<"

    • F6FXW dit :

      Erreur ! Le message ci-dessus à été tronqué à l’enregistrement.

      Si l’on teste (L299) if (hour >= 17 || hour <= 19) {
      alors comme "hour = 17 && hour < 19) { pour obtenir un forçage de 5 à 7 de l'après-midi

      Le code d'origine fonctionne bien, mais pour les premières heures de la journée

      • F6FXW dit :

        Message à André F1ATB
        Merci de supprimer mes deux derniers messages qui visiblement ne sont pas enregistrés tels que je les écrit. !!
        Je renvoie par email, pour clarifier le truc.
        73
        F6FXW

  7. Julien Chavant dit :

    Bonjour et merci pour cet excellent et ce travail article très bien expliqué.

    J’essaye de mettre en œuvre le routeur (v2.01) mais pour l’instant je n’arrive pas à obtenir de valeurs cohérentes et surtout semble-t-il linéaires.

    C’est à dire que le routeur fonctionne bien lorsque la production est « élevée » (800w) mais moins bien lorsqu’elle est faible (200w). Lorsque faible production j’importe alors que les mêmes kV kI semblent corrects avec une plus forte production. Cela ce traduit également par le fait que les coef kV kI sont ok pour un certaine puissance VA vérifié au compteur Linky, mais inférieur par exemple en marche forcé du chauffe-eau.

    J’ai vu dans le commentaire de Samuel BURG que potentiellement le zeroCross du triac pouvait être décalé et je me demandais comment corriger cela ? Est-ce que vous auriez une piste à me fournir ?

    Je vais également creuser la question pour essayer de générer une LUT pour mon ESP32 et ensuite l’appliquer.

    Merci par avance pour votre réponse et encore un grand merci pour votre travail partagé !

    • F1ATB André dit :

      En premier je vous conseille de passer à la version ultérieure
      Version V3.03_UxI
      https://f1atb.fr/index.php/fr/2023/07/07/u-x-i-routeur-solaire-pour-gerer-la-surproduction-photovoltaique-diy/
      Ensuite, vérifiez que votre sinusoïde de tension est bien belle et pas aplatie en haut et en bas. Dans ce cas, il faut reprendre le pont de résistances diviseur de tension.
      Le Zc décalé, je n’y crois pas trop et cela serait compensé par le logiciel et l’instant d’ouverture.
      Les valeurs Kv et ki sont peu importantes. Le seul point est le signe de la puissance.
      Avec la version 3 vous pourrez modifier le seuil en W de déclenchement de l’ouverture du Triac.
      Cdlt

  8. Nigg31 dit :

    Bonjour André, Bonjour à tous,
    Je découvre votre site , quel boulot !!
    Felicitations!
    Je suis très intéressé par le routeur solaire, je butte pour le moment sur la liste des courses.
    En effet l’ESP 32 est décliné en de si nombreuses versions que je crains de me tromper …
    Pour le moment je penche vers celui la : https://fr.aliexpress.com/item/1005001636295529.html?spm=a2g0o.cart.0.0.202b378d8ZeIfd&mp=1&gatewayAdapt=glo2fra
    Carte de développement ESP32 WiFi + Bluetooth consommation d’énergie ultra-faible touristes Core ESP-32S ESP32-WROOM-32D ESP32-WROOM-32U ESP 32 1 pièce
    Qu’en pensez vous ?
    Merci pour votre réponse .
    Cdt,
    Gérard

  9. Nigg31 dit :

    Merci, c’est bien celui que j’avais dans le viseur.
    Je vous tiendrai au courant de l’avancement de mon projet .

  10. Alexandre dit :

    Bonjour André,
    Ayant fait le montage de la V2, et après avoir fait mes branchements au 220V comme sur ton schéma de principe, j’ai le différentiel raccordé au chauffe-eau qui saut lors de la période heures creuses. Pouvez-vous me confirmer que je peux raccorder la sortie du montage ( donc la sortie du gradiateur de chez Robodyn) directement en //sur mon chauffe-eau, et ce même avec un relais jour/nuit?
    Restant à votre écoute.
    Alexandre

    • F1ATB André dit :

      Si cela saute, 2 possibilités
      Vous n’êtes pas sur le même réseau. Derrière le même disjoncteur pour alimenter le Triac et chauffe eau/relais jour-nuit.
      La phase et le neutre ont été croisés.
      Cdlt

  11. Deroche Guy dit :

    Bonjour Andre et à tous
    Merci pour ce remarquable travail ; je suis à construire ce routeur et je viens de recevoir mon materiel donc j’attaque et ne manquerais pas de faire vous faire part de mes aventures
    J’ai 2 choses à éclaircir : supposons que je dispose de 2 capteurs de 400 Cretes donc 800 avec 2 , je pense qu’on peut raisonnablement avoir 500w effectifs dans de bonnes conditions ;ma conso talon etant 200w il va me rester 300w que je vais router sur un chauffe eau dont la puissance est 1200w ; je ne vois pas comment chauufer mon eau à 60° puisque ma resistance sera toujours plus ou moins tiede mais bien au dessous de 60 °
    D’autre part je ne comprends pas l’histoire du déphasage entre courant sortant et entrant ;est ce l’onduleur qui fait ce déphasage ?
    Merci de vos infos
    Cordialement

    • F1ATB André dit :

      Vote eau chauffera aussi longtemps que vous fournissez de la puissance. Comme seulement 300W sont disponibles, il est probable qu’en fin de journée vous ne soyez pas à 60°. Ce qu’il faut, c’est forcer à ON le contact la nuit pendant le tarif heure creuse pour faire le complément avec EDF/Enedis. Et, il vaut mieux prendre sa douche le matin….

      Pour le dépahase, crée par la charge et non l’onduleur, regardez : https://youtu.be/xHhURisycmA

      Cdlt

      • Deroche Guy dit :

        Merci André pour votre réponse rapide et efficace
        Je me mets au boulot dès ce We que je vous souhaite agréable
        Merci encore

  12. NPascaud dit :

    Bonjour à tous, j’ai mis en place ce routeur il y a quelques mois et c’est top ! Merci pour ce tuto
    Mais aujourd’hui j’ai un problème, mon ballon vient de percer, bon il a fait son temps, je devais m’en douter ça aller arriver.
    Je cherche un nouveau ballon, en horizontal (pas bcp de choix) et classique, pas simple non plus. Est ce que ce genre de ballon fonctionnera ? J’ai un doute à cause de la charge de la batterie (https://www.leroymerlin.fr/produits/chauffage-et-ventilation/chauffe-eau-et-ballon-eau-chaude/chauffe-eau-electrique/chauffe-eau-electrique-equation/chauffe-eau-electrique-horizontal-equation-titane-200-l-82929913.html?src=clk)
    Ou celui là (https://www.leroymerlin.fr/produits/chauffage-et-ventilation/chauffe-eau-et-ballon-eau-chaude/chauffe-eau-electrique/chauffe-eau-200l/chauffe-eau-electrique-horizontal-mural-sorties-de-cote-200-l-80128693.html?src=clk)
    Mais franchement vu le prix, j’ai un doute (trop cher pour la qualité me semble t il )
    Merci pour vos réponses

  13. Fred dit :

    Bonjour,
    Quelque chose m’échappe dans les graphiques « Timing »… Il est écrit à propos du gradateur « système de détection du passage à zéro de la tension »… autrement dit, il fonctionne en burst fire control… dans ce cas, on laisse passer des sinusoides enières, à la limite des demies.. mais en aucun cas on tronconne en dehors du passage à zéro…
    J’ai râté quelque chose ?!?

    • F1ATB André dit :

      Si vous regardez les courbes au chapitre Timing, vous voyez qu’au niveau de la tension, il y a, à chaque fois un bout de sinusoïde toutes les 10ms.
      Cdlt

  14. Nicolas dit :

    Bonjour,
    J’ai un ballon thermodynamique, je pense rajouter une sonde de température pour stopper le routage avec une température défini par exemple 70°.
    Avez-vous déjà été confronté à cette configuration ?
    Cdt,
    Nico

    • F1ATB André dit :

      La version qui sera publiée dans les jours à venir intégrera un capteur de température permettant de stopper le routage si la température est au-dessus d’un seuil. Attention avec un ballon thermodynamique de ne pas inclure l’électronique de régulation dans le routage.
      Cdlt

  15. Alain V dit :

    Bonjour
    Merci pour votre réalisation.
    Je voudrais passer en autoconsommation, avec des panneaux câblés en mono-phasé sur mon installation électrique en tri-phasé.
    Est ce possible? De plus je n’ai de compteur linky.
    D’avance merci pour votre réponse
    Alain

    • F1ATB André dit :

      Pas de souci, vous pouvez avoir du photovoltaique manophasé sur du triphasé.
      Par contre si vous mettez beaucoup de panneaux et vous utilisez des micro-onduleurs, vous pouvez les répartir sur chaque phase. exemple 12 panneaux. Vous en mettez 4 par phase.
      Le compteur Linky n’est pas nécessaire.
      Cdlt

      • Alain V dit :

        Bonjour
        Concernant le routeur , ou met on le capteur de courant ?
        Cordialement

        • F1ATB André dit :

          Comme mentioné:
          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.

          On le met en général en sortie du disjoncteur principal qui alimente le tableau électrique. C’est le fil de phase par lequel passe tout le courant électrique de la maison.
          Cdlt

  16. cri29 dit :

    Bonjour. Très satisfait de ce routeur. Tellement satisfait que j’ai voulu mettre un radiateur, puisqu’il commence à faire froid, à la place du chauffe eau et le gradateur n’a pas aimé. C’est de ma faute, je n’avais pas modifié le radiateur du triac. J’en ai commandé un autre avec du délai forcément. Dans l’attente, je souhaite pouvoir réparer. J’ai trouvé un triac sur un vieux radiateur btb16 au lieu de bta24, il faudra donc faire attention au 240 présent sur le radiateur du triac. Mais il me manque la valeur de deux résistances qui ont été pulvérisées. Les deux en parallèle en haut à gauche à côté de celle de 1k. Si une personne pouvait relever les valeurs sur son robotdyn et me les donner. Merci d’avance

    • F1ATB André dit :

      Les résistances sont marquées 124. Ce qui correspond je crois à 120kOhm.
      A l’ohmmètre monté sur le CI, on 59.9kohm
      cdlt

  17. STÉPHANE CHARRIER dit :

    Bonjour, je suis toujours avec cette V2 modifier avec 3 Triacs. Je pense que je passerai à la V6 quand l’option 3 Triacs y sera intégrée.
    En attendant, est il possible d’ajouter l’option d’envoie de donnée à Home Assistant dans cette version V2 ? Je ne suis pas un pro dans ce domaine et je débute juste avec HA également.
    Merci.

  18. zoubir ARIBI dit :

    Bonjour
    j’ai juste essaye de vérifier le fichier .ino et j’ai une série d’erreurs impossible a faire quoi que ce soit.
    j’ai un esp32_wroom-32 générique et voici un exemple d’erreurs
    In file included from C:\Users\Zoubir\Documents\Arduino\Lecture_Linky_Historique_v1_10\Lecture_Linky_Historique_v1_10.ino:21:
    C:\Users\Zoubir\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\libraries\WebServer\src/WebServer.h:177:15: error: cannot declare field ‘WebServer::_server’ to be of abstract type ‘WiFiServer’
    WiFiServer _server;
    ^~~~~~~
    In file included from C:\Users\Zoubir\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\libraries\WiFi\src/WiFi.h:32,
    from C:\Users\Zoubir\Documents\Arduino\Lecture_Linky_Historique_v1_10\Lecture_Linky_Historique_v1_10.ino:18:
    C:\Users\Zoubir\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\libraries\WiFi\src/WiFiServer.h:31:7: note: because the following virtual functions are pure within ‘WiFiServer’:
    class WiFiServer : public Server {
    ^~~~~~~~~~
    In file included from C:\Users\Zoubir\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\cores\esp32/Arduino.h:182,
    from C:\Users\Zoubir\AppData\Local\Temp\arduino\sketches\A61E2BE68C1852C06383B9BE90058AD7\sketch\Lecture_Linky_Historique_v1_10.ino.cpp:1:
    C:\Users\Zoubir\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\cores\esp32/Server.h:28:18: note: ‘virtual void Server::begin(uint16_t)’
    virtual void begin(uint16_t port=0) =0;
    ^~~~~
    In file included from C:\Users\Zoubir\Documents\Arduino\Lecture_Linky_Historique_v1_10\Lecture_Linky_Historique_v1_10.ino:21:
    C:\Users\Zoubir\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\libraries\WebServer\src/WebServer.h: In member function ‘virtual size_t WebServer::_currentClientWrite_P(const char*, size_t)’:
    C:\Users\Zoubir\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\libraries\WebServer\src/WebServer.h:151:83: error: ‘class WiFiClient’ has no member named ‘write_P’; did you mean ‘write’?
    virtual size_t _currentClientWrite_P(PGM_P b, size_t l) { return _currentClient.write_P( b, l ); }

    merci d’avance

    • F1ATB André dit :

      Pour avoir autant d’erreurs, vous avez peut être selectionné la mauvaise carte ou il vous manque beaucoup de bibliothèques.
      Cdlt

  19. Fabrice dit :

    Bonjour
    est il possible de récupérer les données de la journée sous format texte ?
    car le graphe est intéressant mais je souhaiterais pouvoir exporter ses donnees qui ne sont plus visibles dans le graphique ?
    Merci pour votre aide et merci de votre partage

    • F1ATB André dit :

      On peut uniquement, faire la demande comme une page Web, et on récupère une trame série de valeurs.
      Sur votre navigateur vous faites Ctrl+Maj+I, puis onglet réseau et vous voyez les messages que vous pouvez intercepter.
      Vous pouvez aussi, vous connectez à un broker MQTT
      Il n’y a ps d’autres possibilités d’extraction.
      Cdlt

  1. 18 juillet 2023

    […] F1ATB […]