Réalisez un Routeur Solaire pour gérer la surproduction
Version V2
Remplacé par la version V8
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.
Tableau des Versions
Différentes versions de routeur ont été décrites :
Version | Mesure courant / puissance | Actionneurs | Modulaire | Domoticz | MQTT / Home Assistant | Description |
---|---|---|---|---|---|---|
1 | Sonde Ampèremétrique | Relais | Non | Oui | Non | Routeur Solaire. Mesure de Puissance avec un ESP32 |
2 | Sonde Ampèremétrique | Triac + Relais | Non | Oui | Non | Réalisez un Routeur Solaire pour gérer la surproduction |
3.04_UxI | Sonde Ampèremétrique | Triac + Relais | Oui | Oui | Oui | U x I : Routeur Solaire pour gérer la surproduction photovoltaïque |
3.10 Linky | Linky | Triac + Relais | Oui | Oui | Oui | Ré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.
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
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.
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
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
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.
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
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
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.
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.
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….
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.
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%
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%
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.
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
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.
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.
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
- Routeur photovoltaïque V12 – Affichage et paramétrage
- Routeur Photovoltaïque – Raccordement à un chauffe-eau
- Routeur Photovoltaïque – Installation rapide du logiciel
- Routeur photovoltaïque piloté via MQTT
- Capteur SmartGateways / Siconia pour routeur photovoltaïque
- Routeur photovoltaïque – Modes de régulation
- Routeur photovoltaïque – Affichage et paramétrage
- Routeur photovoltaïque – Réalisation matérielle
- Réalisation d’un Routeur photovoltaïque Multi-Sources Multi-Modes et Modulaire
- Routeur photovoltaïque – Installation manuelle du logiciel
- Capteur Shelly Em™ – Shelly Pro Em™ pour routeur photovoltaïque
- Exemples Montage Routeur Photovoltaïque F1ATB
- Capteur Enphase – Envoy-S Metered™ pour routeur photovoltaïque
- Routeur photovoltaïque simple à réaliser
- Capteur UxIx2 ou UxIx3 pour routeur photovoltaïque
- Triacs gradateurs pour routeur photovoltaïque
- Capteur Linky pour routeur photovoltaïque
- Capteur UxI pour routeur photovoltaïque
- Programmation de l’ESP32 – Application au routeur Photovoltaïque
- Chauffer votre piscine avec l’excédent d’énergie Photovoltaïque
- U x I : Routeur Solaire pour gérer la surproduction photovoltaïque (DIY)
- Panneaux Photovoltaïques Intégrés Au Bâti (IAB) d’un abri voiture
- Réalisez un Routeur Solaire avec un Linky (DIY)
- Câblage de panneaux Photovoltaïques à des Micro-Onduleurs en Autoconsommation (DIY)
- Démarches Administratives pour le Photovoltaïque
- Affichage à distance consommation ou surproduction électrique
- Réalisez un Routeur Solaire pour gérer la surproduction
- Câblage de panneaux Photovoltaïques à un onduleur en Autoconsommation (DIY)
- Panneaux Photovoltaïques Intégrés Au Bâti (IAB)
- Routeur Solaire. Mesure de Puissance avec un ESP32
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
C’est un tout petit fusible pour protéger/couper l’alimentation de l’ESP32 qui consomme seulement 1 ou 2 W.
Cdlt
merci et bon WE
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 !
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,
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 ?
Oui, fonctionne chez moi en Fr. Testé à l’instant
oui super , vous avez bien l’arduino IDE 2.1.0 Il faux assez longtemps pour démarrer aussi chez vous ?
Oui, pourtant mon PC n’est pas un escargot mais Arduino IDE est bien long !
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
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
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,
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
Bonjour, Merci pour vous réponses.
Bon Week-end
Cdlt
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
En triphasé, il y a la version avec le Linky comme source de mesure : https://f1atb.fr/index.php/fr/2023/05/18/realisez-un-routeur-solaire-avec-un-linky-diy/
Cdlt
André
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
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
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,
Je vais essayé , et je vous tiens au courant.
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,
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é
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,
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 !
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
Super merci ! Ca fonctionne
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.
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
Merci André, je découvre avec votre message que la version V3.00 Linky est en ligne.
Je regarde.
Merci encore pour votre aide.
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.
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
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
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é
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
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 ?
Dans le tableauLa 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.CdltExcusez 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
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.
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é
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.
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).
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
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
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?
C’est le signal de commande qui sort du GPIO 22 et va sur le module Gradateur/Triac
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?
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
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.
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 …
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
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
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é
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?
Tout le monde y arrive en ajustant les résistances. A moins que votre transfo sorte des signaux non sinusoidaux .
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,
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
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
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
Merci, je vais attendre la version v3.00 Sonde.
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
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é
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.
Petite erreur de frappe, Chauffe eau de 200 litres et non 200W (il fait 2400W).
Bonne information pour qui serait dans le même cas.
Bonjour ,je l’utilise depuis plusieurs mois sur un ballon stéatite. Aucun problème.
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,
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
Intéressant le mode DMA. Pour le routeur les 100 mesures sur 10 ms, cela suffit amplement.
Cdlt
Je n’ai pas précisé quelques éléments important :
– le code est écris avec Eclipse + Sloeber, donc c’est compatible Arduino et MSVS+PlatformIO
– pour le mode DMA, mon code est juste un exemple comparatif des modes one-shoot et continuous, mais c’est bcp plus intéressant d’utiliser le mode DMA continuous avec une gestion d’interuption pour complètement décharger le CPU. cette option est bien documenté sur le site de Espressif :
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/adc_continuous.html#register-event-callbacks
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,
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
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.
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
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,
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