Routeur photovoltaïque – Modes de régulation

Routeur Multi Source
Version V9.01_RMS

Principe de régulation du routeur photovoltaïque

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 la puissance active en entrée de la maison afin qu’elle soit nulle.

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 ne pas gaspiller cet excédent est de l’envoyer à un chauffe-eau électrique, un chauffage, une pompe de piscine…

Par exemple, si vous avez une production photovoltaïque de 2500 W et 1300 W consommés dans la maison, il vous reste 1200 W de disponible pour un chauffe-eau. Le routeur permet de fournir les 1200 W au chauffe-eau et pas plus bien que normalement, il absorbe 2400 W. Le routeur agit comme une vanne régulatrice du débit. Il s’assure que zéro watt sont soutirés ou injectés avec le réseau public.

Modes de régulation

Le routeur propose 3 types de régulation pour transférer, à la charge, la puissance disponible. Cela consiste à laisser passer durant un pourcentage du temps le signal du secteur. Les courbes ci-dessous représentent uniquement la tension ou le courant en sortie du routeur vers la charge. En entrée de maison, la tension est sinusoïdale et le courant, la somme de tous les courants consommés, sinusoïdaux ou non.

Tension ou courant côté charge résistive (chauffe-eau, radiateur …)

La « Découpe de Sinus », est une méthode employée par exemple sur des gradateurs de lumière. L’ESP32 donne l’ordre au Triac de conduire quelques ms après le passage à zéro de la tension. Le Triac s’arrête de conduire au prochain passage par zéro, 20 ms plus tard. Cela permet d’ajuster finement et rapidement la puissance moyenne transmise . On lui reproche la génération de parasites sur la ligne d’alimentation de la charge. Voir le simulateur et la vidéo plus bas.

Cela n’est réalisable qu’avec un Triac et non un relais SSR.

Le mode « Multi-Sinus » consiste à envoyer des séries courtes de 1/2 sinusoïdes complètes du secteur. On évite ainsi les montées brutales de la tension et du courant. Cela s’apparente à un clignotement rapide. Les trames sont espacées de 200 à 300ms en général suivant le pourcentage d’ouverture souhaitée. La réactivité de régulation est plus faible en raison du temps de cycle et de mesure.

Cela est réalisable avec un Triac ou un relais SSR.

Le mode « Train de Sinus » consiste à envoyer toutes les secondes le nombre de 1/2 sinusoïdes correspondant à l’ouverture souhaitée. En réalité, on répète cela toutes les 990 ms et non 1000 ms afin de démarrer chaque nouvelle trame sur un signe opposé pour ne pas avoir de composante continue de la tension sur le long terme. La réactivité de régulation est lente en raison du temps de cycle (1s) et le filtrage/moyennage des mesures de puissance.

Cela est réalisable avec un Triac ou un relais SSR.

Sur un même ESP32 ou un groupe d’ESP32, on peut choisir le mode que l’on souhaite pour le Triac et les relais. Ils ont des fonctionnements indépendants.

Calcul de la Puissance Active

Rappelons la convention de signe. On consomme en entrée de maison quand U la tension et I le courant sont de même signe. On injecte de la puissance vers ENEDIS lorsque U et I sont de signe opposé.

En entrée de maison, la mesure de puissance ne se fait pas sur une période de 20 ms mais sur un temps beaucoup plus long pour moyenner et prendre en compte toute variation. Comme le précise Wikipedia, le Linky fait sa mesure de la puissance sur une durée de 1s. Il doit faire la moyenne sur probablement 10000 produits UxI pour bien échantillonner la forme d’onde de la tension U et surtout du courant I. Cette moyenne sur 10000 échantillons inclus des périodes de consommation (courant en phase avec la tension) et des périodes d’injection (courant en opposition de phase avec la tension). Il en résulte une moyenne qui peut être nulle si le routeur a bien fait son travail en mode découpe de sinus, multi-sinus ou train de sinus. L’alternance consommation / injection se passe en moins d’une seconde.

Le Linky fait la moyenne arithmétique et ne vous compte pas cela séparément en Wh consommé et Wh injecté. Vous pouvez constater sur le compteur, en période de régulation par le routeur, les Wh que vous payez ou perdez ne tournent pratiquement pas.

Sur certaines configurations, exemple UxIx2 et train de Sinus, vous aurez parfois un affichage simultané de Watt injectés et de Watt consommés. Cela vient du capteur de puissance qui mesure sur moins d’une seconde et sort des résultats séparés. Comme derrière, on lisse et moyenne, on a ce phénomène pas gênant, car on prend la différence Consommé – Injecté pour piloter le routeur.

Mode Synchrone ou Asynchrone au secteur

En présence d’un Gradateur/Triac qui fournit un signal Zc (Zéro Crossing de la tension) sur le GPIO23, le fonctionnement de l’ESP32 est parfaitement synchrone avec le secteur. Ainsi, on peut caler les instants d’ouverture et de fermeture dans le temps par rapport à la sinusoïde de la tension secteur. Dans le cas du triphasé, pour une charge monophasée, il faut que le relais soit sur la même phase que le Triac.

En l’absence de Triac, n’ayant pas de signal Zc, on utilise l’horloge interne de l’ESP32 pour générer une impulsion de synchronisation toutes les 10 ms, mais elle est asynchrone par rapport au secteur. L’ouverture et la fermeture des relais ne se fait pas nécessairement au bon moment, le passage par zéro de la tension. Cela peut amener légèrement plus d’échauffement des relais.

Avec les relais, on peut les commander également en On/Off classique suivant l’état de la consommation /injection en entrée de maison en définissant un seuil pour passer à On et un seuil pour passer à Off. Cela est utile pour les moteurs par exemple que l’on ne peut pas commander avec une tension variable.

Simulateur de Signal et Spectre

Ci-dessous un simulateur du signal envoyé au chauffe-eau ou chauffage suivant le mode de régulation et le pourcentage d’ouverture. Comme ces charges sont résistives, il représente aussi bien la tension que le courant en aval du routeur (U=R*I).

Une Transformée de Fourier donne la représentation spectrale de ce même signal. En mode « Découpe de Sinus », le spectre est composé de raies spectrales, multiples impaires du 50 Hz du secteur. En « Multi-Sinus » ou « Train de Sinus », l’énergie parasite générée se concentre plus dans les basses fréquences. Ce qui en limite le rayonnement.

Choisissez le mode et déplacez le curseur d’ouverture

Vidéo comparative des courants d’alimentation

Quelques objets classiques chez soi, et leur courant d’alimentation loin d’être sinusoïdal pour éviter la génération de parasites. On y retrouve beaucoup de similarités avec le routeur en mode « Découpe de Sinus » comme avec l’aspirateur de 2000W.

Exemple de Régulation en mode Train de Sinus

En mode « Train de Sinus » ou le cycle d’alimentation fait près d’une seconde, la mesure de puissance peut être faussée suivant l’instant de mesure dans le cycle de la seconde. Le logiciel de régulation doit alors moyenner sur une longue période afin d’avoir une bonne estimation de l’échange de puissance consommée / injectée et un résultat similaire au Linky, juge de paix servant à la facturation.

Régulation entre -6 et – 10mn faite par un système UxIx2 (JSY-MK-194T) alimentant un chauffe-eau en « Train de Sinus ». On remarque une mesure des Watt en rouge légèrement chahutée. Le JSY-MK-194T fait semble t’il sa mesure en moins d’une seconde, mais le logiciel du routeur moyenne légèrement pour ne pas introduire trop de retard.

En mode Multi-Sinus on est plus lisse.

Même période à celle ci-dessus avec la mesure de puissance moins chahutée avec un capteur UxI .

Même période à la première ou la régulation est faite par un système UxIx2. Le Linky a une courbe rouge plate à zéro entre -6 et – 10mn. Cela traduit bien que les Wh (facturés par le Linky) n’ont pas tourné.

Attention le Linky ne fournit pas les Watt directement, mais uniquement les Wh en nombre entier. Il faut faire un saut de 1 Wh pour voir la courbe rouge évoluer. En dessous, on ne voit pas les décimales.

Exemple de régulation en mode Multi-Sinus

Ici nous avons un ESP32 avec une mesure de puissance de type UxIx2 qui alimente un chauffe-eau avec la surproduction. Depuis 10mn, on fournit 600w environ au chauffe-eau. Énergie transférée = 600W * 10*60/3600 = 100 Wh

ESP32 en mode UxIx2 alimentant un chauffe-eau avec l’excédant en Multi-Sinus

Durant la même période, le Linky qui sert à l’établissement de la facture est monté de 1 Wh. La régulation n’est jamais parfaite. Dans la maison, il y a des appareils dont la consommation varie et le routeur doit compenser.

ESP32 connecté au Linky

Le bilan économique est ici très bon. 100Wh-1Wh = 99Wh = 0.025€ d’économiser en 10mn. Nous sommes en Février…

Puissance apparente négative?

On remarque que durant les phases de régulation, la puissance apparente est très importante et chahutée. C’est un comportement normal. Durant une demi-sinusoïde de 10 ms, on consomme et on injecte de la puissance pour avoir un bilan nul de puissance active. Cela se traduit par de la puissance apparente élevée. Il n’y a pas de somme algébrique signée, c’est une somme de carrés. Voir la vidéo sur les unités électriques https://youtu.be/xHhURisycmA . Il y a néanmoins un paradoxe. Une puissance apparente n’a pas de signe d’après sa définition mathématique. Elle est toujours positive : le résultat d’une somme de carrés pour la tension et le courant. Le Linky ou d’autre capteur de puissance lui donne le signe de la puissance active en Watt. C’est pour cela que vous la voyez osciller fortement en positif et négatif pour suivre le signe des Watt.

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

141 réponses

  1. Marcos83 dit :

    Bonjour André,
    Je constate depuis deux ou trois jours et sans interventions ni changement de paramètres des écarts importants entre l’énergie soutirée affichée par le routeur et mon Shelly EM. Jusqu’à présent je n’avais qu’une petite centaine de watts/h d’écart entre les deux mais les valeurs de l’un et l’autre étaient cohérentes. Par exemple ce matin, le Shelly indiquait 2KWH et le routeur 205WH. Hier c’était d’autres valeurs mais autant d’écart. Pour mémoire, j’ai eu deux fois des indications farfelues de l’énergie active du jour (toujours affichée sur la courbe jaune) avec une fois ~50000 et ~16000 c’était juste après l’update de la V3.03 vers la V8.06.
    L’affichage des valeurs en temps réels des Watts soutirés et injectés coïncident pourtant à 1 ou 2 Watt prés entre le Shelly et le routeur. On dirait un problème de totalisation ou de cumul avec le temps de fonctionnement du routeur ?
    Avez-vous déjà eu ce genre de cas ?
    Ma config: V8.06 découpe sinus avec triac.
    ESP On depuis : 550h 45mn
    Source des mesures : UxI
    Niveau WiFi : -66 dBm
    Point d’accès WiFi : ——————
    Adresse MAC ESP32 : —————-
    Réseau WiFi : ——————-
    Adresse IP ESP32 : 192.168.0.209
    Adresse passerelle : 192.168.0.254
    Masque du réseau : 255.255.255.0
    Charge coeur 0 (Lecture RMS) Min, Moy, Max : 1, 3, 25 ms
    Charge coeur 1 (Calcul + Wifi) Min, Moy, Max : 0, 1, 303 ms
    Espace mémoire EEPROM utilisé : 43 %
    Nombre d’interruptions en 15ms du Gradateur (signal Zc) : Filtrés/Brutes : 1/2
    Synchronisation 10ms au Secteur ou asynchrone horloge ESP32 Secteur
    Messages
    05/04/2024 22:43:12 : Réception de l’heure
    06/04/2024 01:43:12 : Réception de l’heure
    06/04/2024 04:43:12 : Réception de l’heure
    06/04/2024 07:43:12 : Réception de l’heure

    • Marcos83 dit :

      Je viens de vérifier à nouveau. La valeur de Energie Active du jour n’a pas changée depuis mon précédent message il y a une heure pourtant j’ai consommée et le Shelly indique 2,16KWH.ce qui est cohérent avec ma consommation depuis une heure. …Les Watts injectés fonctionnent correctement..
      Energie Active du jour 205 1 Wh
      Bien à vous.

    • F1ATB André dit :

      Si le Wh est faible, c’est qu’il y a eu un reset de l’ESP32. Les valeurs ne sont pas stockées en ROM, le nombre d’écritures est limité sur un ESP32. Elles sont stockées en RAM et à chaque reset cela part de zéro. Le reset est probablement du à une coupure momentanée du Wifi.
      Les valeurs aberrantes, normalement le bug a été corrigé.

      Cdlt

  2. Marcos83 dit :

    Merci pour la réponse André. J’ai aussi pensé à un reset, mais l’ESP affiche « ESP On depuis : 550h 45mn »… Il me semble que cette info repart à zéro à chaque reset, Non ?

    • F1ATB André dit :

      Le routeur fonctionne avec le Shelly comme source ou une autre source de mesure de puissance?

      Cdlt

      • Marcos83 dit :

        Le routeur et le Shelly sont au même endroit mais sont indépendants l’un de l’autre. Le routeur n’a que son transfo et ses résistances comme source (Version UxL depuis 1 an). Le Shelly transmet 2 informations à Home Assistant. Il me sert juste de référence pour la consommation (soutirée) en entrée de la propriété (je n’ai pas de Linky) et l’autre voie du Shelly mesure la production solaire.
        Habituellement le routeur et le Shelly mesurent des valeurs à 2 ou 3 Watt prés ce qui fait un petit écart en fin de journée mais pas plus de 100 à 200WH. Ce matin encore, le Shelly à mesuré 1284WH depuis minuit et le routeur affiche 259WH à l’heure ou j’écris. Le compteur horaire de fonctionnement du routeur affiche ce matin 574h 23mn (donc pas de reset cette nuit à priori).
        Le niveau du signal wifi est de -62 dBm.
        Peut-être un lien avec la durée de fonctionnement du routeur (accumulation ou débordement d’une variable liée au bugg cité précédemment ?) . Je suis presque sûr qu’en faisant un reset ça va rentrer dans l’ordre mais je souhaitais investiguer et vous transmettre les infos avant.
        Le bugg ne me gène pas plus que ça car j’utilise les données du routeur et du shelly juste pour confirmer que l’énergie reste bien chez moi et que je consomme la totalité.
        Cdlt.

        • F1ATB André dit :

          Oui pas impossible un débordement. Ce n’est pas le classique dû au décomptage du temps en ms qui déborde toutes les 49 jours. Vous êtes à 24 jours environ.
          De mon côté, je ne vois pas un éventuel débordement car je n’arrête pas de développer le programme et d’essayer de nouvelles versions sur mes 4 routeurs en fonction.

          Cdlt

          • Marcos83 dit :

            Si d’autres utilisateurs ont constaté la même chose, il serait intéressant de connaître leur durée de fonctionnement de leur ESP histoire de procéder par élimination notamment de la durée. J’ai constaté aussi que la valeur Energie Active Totale affichait 122 964WH suite au bugg. Il se peut que ça déborde quelque part dans cette zone de calcul ? La durée n’étant pas la cause mais ne contribuant qu’a faire augmenter le total de cette valeur…Si le reset ne règle pas le problème, ça confirmerait cette théorie. Qu’en pensez-vous ?

          • Marcos83 dit :

            Il est 19h:30 min et Juste pour info. Je viens de faire un reset car les valeurs étaient toujours incohérentes avec le shelly.
            Après le reset :
            Energie Active Totale soutirée est reparti à zero alors que la courbe jaune n’a pas changée.. Est-ce le fonctionnement normal ? En revanche, Energie Active Totale injectée a conservé ses valeurs… (j’avais fait une copie d’écran ce matin).
            Bien à vous

          • F1ATB André dit :

            Bizarre que l’Énergie Totale Soutirée soit =0 et l’Énergie Totale Injectée soit conservée. Les 2 sont stockées en ROM, toutes les 24h.

            Cdlt

  3. Marcos83 dit :

    Bonjour André,
    Ce matin le routeur affiche des valeurs cohérentes avec le Shelly. En revanche j’ai un pic supplémentaire de -120000 WH sur la courbe jaune. Je suppose que le second bug des écarts Shelly/routeur sont liées à ce bug du pic négatif. Ça expliquerait le possible débordement de cette valeur au bout d’un certain temps de cumul selon la grandeur du pic. Et ça pourrait aussi être cohérent avec la mise à zéro de l’Energie Total soutirée suite à un débordement de l’espace mémoire alloué pour la variable Énergie Totale soutirée ? D’ailleurs j’ai pensé que la valeur de l’Energie Totale Soutirée devrait être affichée et stockée en mémoire en KW/H plutôt qu’en WH. Ça donne de la marge. Qu’en pensez-vous ?

  4. loick dit :

    Bonsoir,

    Après une première lecture, je me suis dis: « et pourquoi pas moi »…

    Donc je me suis lancé.

    J’y ai passé des heures et des heures mais je n’y arrive pas…

    A mon sens, le montage est bon et le code aussi… après de multiples essais, j’ai fini par emprunter un oscilloscope pour vérifier les signaux.

    Mon probleme : le signal sur la commande du Triac me parait bon mais la tension de sortie ne varie pas…. J’ai même acheté un second Triac en pensant que cela venait d’un défaut du Triac…. bilan: même comportement!

    La seule différence à mon sens est que je pilote les IO d’un Raspberry et non d’un ESP.

    J’ai pris une photo de mon oscillo… Je vous laisse mon adresse mail en espérant que vous accepterez de m’aider. Dès votre mail reçu, je vous envoie une photo de l’oscillo.

    Merci à vous.
    Loïck

    • F1ATB André dit :

      Je ne comprends pas comment vous faites avec un Raspberry sachant qu’il faut piloter le Triac avec une précision de 100 micro secondes. Pas facile avec un OS classique.
      Vous pouvez m’envoyer vos photo à f1atb@gmail.com

      Cdlt

      • loick dit :

        L’adresse mail semble ne pas fonctionner. Deux refus via mon adresse gmail

        • F1ATB André dit :

          excusez moi f1atb.fr@gmail.com

          • loick dit :

            Bonjour,

            je reviens vers vous. J’ai enfin un programme qui fonctionne! Je pilote correctement le triac ==> Une boucle principale pour le relevé Envoy + un thread pour l’info vers Jeedom + un thread pour le pilotage du Triac!
            Le tout sur le Raspberry!

            Je pense que j’ai eu un problème de Setup. La sonde de oscilloscope mesurée correctement le signal envoyé au Triac mais la liaison physique entre mon fil et la broche de la borne Triac ne devait pas être suffisamment bonne!

            Bref, ça fonctionne après 30 ou 40h à chercher!

            J’en arrive à la suite: Est ce possible de faire fonctionner le routeur solaire en étant configuré en profil « sans injection ». Effectivement, j’ai signé la convention CACSI lors de l’installation de mon installation l y a 2 ans….

            Merci de votre aide

          • F1ATB André dit :

            Mettez un seuil à 50W au lieu de 0.
            Cdlt

  5. Jean-Lou dit :

    Bonjour,
    Je me pose une question :
    Le gros du raisonnement se fait côté linky ou l’intégration sur une période longue de phases absorption et d’injection permet
    d’atteindre un bilan égal à 0. À première vue le mode de régulation ne devrait pas avoir d’impact sur le fonctionnement de l’onduleur
    et de ses MPPT, vous confirmez même dans le cas d’harmoniques élevées?
    Autre question:
    J’utilise déjà un ESP32 pour monitorer le fonctionnement de mes micro-onduleurs HM800 via OpenDTU, j’envisage d’intégrer votre
    routeur sur la même plateforme mais cela a déjà du être fait ou démontré non faisable, avez-vous déjà adressé la question?

    Je vous adresse tous mes compliments pour votre site très instructif,
    Jean-Lou

    • F1ATB André dit :

      Je pense que le mélange routeur+Open DTU sera difficile, voire impossible.
      – 91% de la mémoire programme utilisé par le routeur
      – aspect temps réel avec des interruptions à gérer toutes les 100 micro secondes et 10ms

      Cdlt

  6. Joseph S. dit :

    Bonjour André,
    merci infiniment pour cet excellent travail !
    j’ai monté un système UxI et ça fonctionne vraiment très bien avec a version 8.07.
    j’aimerais savoir s’il est possible d’ajouter une sonde de courant comptabiliser l’énergie envoyée au chauffe-eau.
    Est-il possible d’adapter facilement le programme pour prendre en charge cette fonctionnalité : je ne voudrais pas avoir à passer à la version matérielle UxIx2.
    Salutations,
    Joseph

  7. Tupolev dit :

    Bonjour André, juste une petite question.
    J’ai fabriquer un routeur triphasé suivant vos conseils, celui ci fonctionne parfaitement, en mode découpe sinus, sur un triac robodyn 40A.
    Mais une chose m’intrigue, lorsque le thermostat de mon ballon coupé l’alimentation des résistances quand la température est atteinte.
    A ce moment je passe donc en surproduction, et donc le triac s’ouvre à 100% vu que la carte de contrôle des phases s’aperçoit de l’injection, alors que le ballon ne consomme plus rien à ce moment là.
    Du coup le ventilateur du triac se met à tourner à fond
    et la diode d’injection clignote,.
    Je précise que j’ai fait le montage avec le transistor et la résistance pour faire varier la vitesse du ventilateur et que cela fonctionne parfaitement bien.
    Du coup y’a t’il une possibilité pour arrêter le ventilateur autre que de forcer le triac à off.
    Du genre plus de conso le triac passe à off tout seul ?
    Je suis en version 8.08 carte jsy lk 333, esp avec antenne wifi et triac 40A.
    Je vous remercie d’avance pour votre réponse.
    Cordialement

    • F1ATB André dit :

      Je vois que tout fonctionne bien. Non il n’y a pas à ce jour de possibilité d’arreter le ventilo. A moins de rajouter un relais qui coupe si forte injection.

      Cdlt

      • Tupolev dit :

        Merci de votre réponse, cela pourrait être une bonne solution, avez vous un schéma pour le câblage de ce relais ?
        Je pourrais essayer le montage.
        Merci d’avance,
        Cordialement

  8. Matthias GOUJON dit :

    Bravo pour le travail réalisé.

  9. stephdes dit :

    Bonjour et encore merci pour votre travail !

    Je suis passé de la version 3.03 à la dernière et j’ai mis un peu de temps à la faire fonctionner correctement.

    Par exemple, sous Domoticz en MQTT si l’on met une vitesse de rafraîchissement <60s ça plante et l'on est obligé de redémarrer le routeur pour que les données soient à nouveau envoyées.

    Le routage sur un relais externe nécessite le codage des espaces en "%20" ce n'est pas nouveau car c'était également le cas sur les versions précédentes mais si cela peu aider quelqu'un…

    J'ai toujours un doute concernant le fonctionnement de la temporisation pour le délestage sur le relais… Je vais surveiller.

    Je route sur un chauffe eau de 2400W. J'ai choisi le mode multi-sinus (en peu au hasard) et le routage me semble perturbé. Est-ce que cela vous semble OK ?

    https://ibb.co/rpcK3SV

    Merci

    • F1ATB André dit :

      Votre courbe rouge est bonne. Probablement que vous n’utilisez pas le Linky en source de mesure qui intègre les données pendant plus d’une seconde. Les autres capteurs pour la mesure de puissance intégrant sur une courte période sont un peu chahutés suivant le moment d’intégration et la sortie des pulses multi-sinus.
      Cdlt

  10. Nicolas dit :

    Bonjour, concernant les relais ssr je sais qu il existe deux types le random et le zero crossing. Dans quel cas prendre l une ou l’autre version.
    Merci

  11. Simonella dit :

    Bonjour André,
    Mon triac Robotdyn vient de lâcher, il reste ouvert à 100%. Ne peut-on pas mettre une alarme/notification si z/c=0 ou si puissance envoyée au cumulus incohérente par rapport au pourcentage d’ouverture du triac ?
    Encore bravo pour tout ce travail passionné.
    Régis