Jetblack31 / EcoPV

Arduino based energy routing to maximize the use of PV production at home.
GNU Lesser General Public License v2.1
29 stars 17 forks source link

Vous aimez ce projet ? Vous pouvez faire une donation pour m'encourager grâce au bouton Sponsor dans la barre ci-dessus ! Merci à tous pour vos messages et votre soutien au projet !

Ce dépôt EcoPV n'évoluera plus. La suite des développements est menée dans le dépôt MaxPV : https://github.com/Jetblack31/MaxPV

EcoPV

EcoPV is a Arduino program (ATMega328P) that maximizes the use of PV production by monitoring home energy consumption and by diverting power to a resistive charge when needed.

EcoPV est un programme pour Arduino (ATMega328P) qui permet de gérer l'excédent de production photovoltaïque dans une installation d'autoconsommation en effectuant un routage de l'excédent vers une charge résistive, typiquement la résistance d'un chauffe-eau électrique. Ainsi l'autoconsommation est optimisée.
EcoPV est inspiré de réalisations précédentes dont des références sont données en fin de document.

La lecture de ces fils de discussion est plus que recommandée pour la mise en oeuvre :
Forum photovoltaïque, discussion sur EcoPV : https://forum-photovoltaique.fr/viewtopic.php?f=110&t=42721
Forum photovoltaïque, réalisation d'un PCB : https://forum-photovoltaique.fr/viewtopic.php?f=110&t=42874
Forum photovoltaïque, montage du PCB : https://forum-photovoltaique.fr/viewtopic.php?f=110&t=43197

Mise en garde

Les programmes et les schémas proposés ont une vocation informative et pédagogique. Ils ont été testés avec succès par les auteurs. Cependant les auteurs de ces programmes et de ces schémas déclinent toute responsabilité. Les auteurs ne pourraient être tenus pour responsables du fonctionnement et des conséquences de l'utilisation des programmes et des schémas mis à disposition.
Intervenir sur des circuits électriques est dangereux et nécessite le recours à une personne qualifiée et le respect strict des normes de sécurité et de protection en vigueur.

Fonctionnement

EcoPV mesure en permanence la puissance consommée par la maison. Lorsque la production photovoltaïque dépasse la consommation, cela est immédiatement détecté par EcoPV. EcoPV pilote alors un variateur électronique qui va alimenter finement une résistance électrique (chauffe-eau) pour équilibrer puissance consommée et puissance produite. Ainsi, l'excédent de production photovoltaïque est dirigé vers la résistance du chauffe-eau et valorisé en chaleur au lieu d'être cédé au réseau électrique extérieur.

Techniquement, EcoPV est basé sur :

Specifications de EcoPV

La partie matérielle

EcoPV nécessite plusieurs choses pour fonctionner :

Solid State Relay

De manière optionnelle, EcoPV peut être équipé de :

Le schéma général de branchement est le suivant :
EcoPV overview

Note concernant les pins d'entrées/sorties : Les pins analogiques et digitales sont largement configurables, toutefois des restrictions existent concernant des fonctions spécifiques à certaines pins, qui peuvent dépendre des options de compilations sélectionnées. Se référer aux commentaires du code pour plus de détails. Le tableau ci-dessous résume les associations possibles :

EcoPV overview

Les pins synchroACPin (D3) et synchroOutpuPin sont reliées ensemble sur la carte électronique afin de profiter de la fonction d'auto-détection du passage par zéro de la tension secteur.

Nouveau !! La pin d'entrée D2, en configuration pull-up, permet le comptage des impulsions d'un système externe, par exemple les impulsions générées par un compteur de production PV. La source des impulsions doit se comporter comme un contact passif qui s'ouvre et qui se ferme : contact sec de type relais ou sortie de type collecteur ouvert. Ce type d'impulsion est généré typiquement par la sortie 'Impulsions' d'un compteur d'énergie modulaire d'un tableau électrique. Si il y a une polarisation à respecter au niveau du compteur modulaire, il faut connecter le - à GND et le + à D2.

La programmation de l'Arduino

EcoPV nécessite l'installation de l'IDE Arduino disponible sur le site Arduino. Voir www.arduino.cc
Pour l'utilisation de l'écran oled, la bibliothèque SSD1306Ascii devra être installée via la gestion des bibliothèques de l'IDE Arduino.
Pour l'utilisation de la communication MYSENSORS, les bibliothèques correspondantes devront être installées. Elles sont disponibles via la gestion des bibliothèques de l'IDE Arduino. Voir www.mysensors.org
Pour l'utilisation de la communication Ethernet, les 2 bibliothèques EtherShield et ETHER_28J60 devront être installées manuellement. Elles sont disponibles dans le répertoire libraries.

Dans l'IDE de l'Arduino, ouvrir le programme EcoPV.ino.
Choisir au début du code les options de compilation souhaitées.
Compiler le programme et le télécharger dans la carte Arduino.
Le programme démarrera automatiquement avec des paramètres par défaut.
L'accès à l'interface utilisateur par liaison série se fait par défaut à la vitesse de 500 000 bauds.

Voici un exemple d'écran disponible par le terminal série (d'autres exemples dans le répertoire screenshots) :
EcoPV Screenshot Statistiques Note : en absence du circuit analogique fonctionnel, le programme ne détectera pas la synchronisation secteur et entrera dans un mode d'erreur.

Exemple de réalisation pratique

Voici la réalisation de la partie analogique sur une plaquette d'expérimentation. Le transformateur de tension occupe une place importante. Il est généreusement dimensionné pour être bien linéaire et améliorer l'acquisition de la tension :

EcoPV analog_PCB

Et l'ensemble du montage, incluant l'alimentation, l'Arduino Nano avec un shield ethernet, le SSR et son radiateur, les protection par fusible, un interrupteur, un bouton reset, les LEDs et également un circuit ESP8266 programmé pour faire le lien entre la liaosn série de l'Arduino et le wifi :

EcoPV System

Calibrage et paramétrage

Pour un fonctionnement optimal, EcoPV nécessite le calibrage d'un certain nombre de paramètres en fonction de votre installation et des particularités des composants du circuit élecronique analogique. Ce calibrage des paramètres doit être fait une fois que votre réalisation est terminée, prête à être installée. Réalisez le calibrage dans l'ordre des étapes ci-dessous !

Note 1 concernant le logiciel : Le logiciel EcoPV est configuré avec des paramètres par défaut. A la première exécution du programme, ces paramètres par défaut seront stockés dans la mémoire non volatile de l'Arduino. Par la suite, l'ajustement des paramètres se réalise grâce à l'interface de configuration et leur sauvegarde s'effectue par l'option 13 du menu. Si vous souhaitez revenir aux paramètres par défaut, formatez l'EEPROM (option 82) et réalisez un reset matériel de l'Arduino en appuyant sur le bouton reset. EcoPV redémarrera alors avec les paramètres par défaut.

Note 2 concernant la pince ampéremétrique : La pince ampéremétrique ou transformateur de courant se clipse autour du fil de phase. Lorsque la pince se referme, il est important que les 2 demi-tores de ferrite se positionnent correctement et soient bien alignés l'un vis-à-vis de l'autre. Un mauvais positionnement provoque une dégradation de la qualité de la mesure.

Note 3 : Sauvegarde des paramètres. N'oubliez pas de sauvegarder les paramètres modifiés par l'option 13 du menu, sinon ils seront perdus au prochain démarrage.

Note 4 : Certains paramètres nécessitent un redémarrage de EcoPV pour être définitivement pris en compte par toutes les fonctions du programme. Ce redémarrage s'effectue par l'option 99 du menu ou en provoquant un reset matériel du routeur. Les paramètres concernés sont : P_OFFSET, P_MARGIN, E_RESERVE et tous les paramètres relatifs au relais secondaire de délestage.

Note 5 : A la première utilisation, une mise à zéro des index est nécessaire. Cela se réalise par l'option 23 du menu.

Indication de fonctionnement par les LEDs

Deux LEDs indiquent le fonctionnement de EcoPV. Il s'agit de la LED de statut, branchée du D6, et de la LED de routage, branchée sur D7.

Lorsque les 2 LEDs clignotent très rapidement en alternance : anomalie sévère du système, redémarrage automatique dans une minute.

Ecran oled

De manière optionnelle, un écran oled peut être connecté à EcoPV. Il s'agit d'un écran oled 128x64 pixels, muni d'une puce SSD1306 et communiquant via le port I2C. Au niveau du programme, l'option de compilation OLED_128X64 doit être activée et l'écran se branche sur l'alimentation électrique et les pins A4 (SDA) et A5 (SCK ou SCL). La bibliothèque SSD1306Ascii devra être installée via le gestionnaire de bibliothèque de l'IDE Arduino.
Par défaut, l'adresse I2C de l'écran est configurée à 0x3C. Au besoin, si votre écran dispose d'une autre adresse, celle-ci es modifiable dans le code au niveau de la ligne :

Note : Si vous activez l'option OLED_128X64 et que l'écran est absent, mal connecté, ou que son adresse I2C est mal configurée, alors le programme EcoPV sera bloqué et le routeur ne démarrera pas.

EcranOled

Communication Ethernet

De manière optionnelle, EcoPV peut se connecter à votre réseau local (LAN) câblé en RJ45. Celà permet d'avoir accès à une API HTTP. Des requêtes http permettent alors de récupérer les informations de fonctionnement de EcoPV. Pour mettre en oeuvre la communication Ethernet, il suffit d'enficher l'Arduino Nano sur un shield ethernet RJ45 à base de puce ENC28J60 comme celui ci-dessous :

EthernetShield

Au niveau du programme, l'option de compilation ETHERNET_28J60 devra être activée au début du code et les 2 bibliothèques EtherShield et ETHER_28J60 devront être installées manuellement dans l'IDE Arduino. Elles sont disponibles dans le répertoire libraries de ce dépôt.
Par défaut, EcoPV a une adresse IP statique : 192.168.2.250 et le port est 80. Vous pouvez modifier ces valeurs dans le programme pour correspondre à votre réseau LAN :

L'utilisation de l'API peut se faire simplement par requête http à l'aide de n'importe quel navigateur, ou alors dans des scripts sous différents langages en utilisant curl par exemple.
Une requête du type http://adresseIP:port/GetXX renverra une réponse au format json : {"value":"xxxxx"}. Par exemple http://192.168.1.250:80/Get01 renverra {"value":"230"} car Get 01 correspond à la lecture de la tension secteur.

La liste des commandes disponible actuellement est GetXX où :

ParXX permet de lire les param§tres de calibrage :

Et aussi SetXX=yyyy.zzz qui permet de changer les paramètres et d'écrire la valeur yyyy.zzz pour le paramètre XX :

Une réponse au format json : {"value":"ok"} est donnée si succès de l'opération.

Communication MySensors

De manière optionnelle, EcoPV peut se connecter à votre système IoT MySensors comme un noeud de capteur. Celà permet de récupérer les informations de fonctionnement de EcoPV sur un système de domotique via une gateway MySensors. Pour mettre en oeuvre la fonctionnalité MySensors, il suffit de connecter un module radio NRF 2.4 GHz comme celui ci-dessous :

NRF24

Au niveau du programme, l'option de compilation MYSENSORS_COM devra être activée au début du code et la bibliothèque MySensors devra être installée via le gestionnaire de bibliothèque de l'IDE Arduino. La connexion du module radio à l'Arduino Nano est décrite sur la site MySensors : www.mysensors.org
Par défaut, le numéro du noeud de capteur créé par EcoPV est 30. Il possède deux capteurs :

Vous pouvez modifier certains paramètres de configuration du noeud de capteur dans le code :

Déport de la liaison série de l'Arduino en Wifi

La liaison série de l'Arduino Nano permet le monitoring du fonctionnement de EcoPV et également la modification des paramètres pour le calibrage. En fonction de l'accessibilité de l'Arduino, il peut être pratique de déporter la liaison série au travers du Wifi. Pour cela, il faut connecter un composant Wemos ou ESP8266 sur la liaison série de l'arduino (D0, D1, GND) en prenant garde à l'adaptation des niveaux logiques (5V pour l'Arduino, généralement 3.3V pour l'ESP8266). Le programme SerialBridge.ino doit être chargé dans le Wemos/ESP8266 à l'aide de l'IDE Arduino. De nombreux sites Web expliquent comment utiliser l'IDE de l'Arduino pour programmer un Wemos/ESP8266. Une fois le montage réalisé et les composants programmés, un réseau Wifi nommé EcoPV sera disponible. Pour s'y connecter, le mot de passe 123456789 est nécessaire. Une fois connecté, la liaison série de l'Arduino Nano est disponible en telnet à l'adresse 192.168.4.1 sur le port 23. Par exemple, vous y accédez sur MacOS dans un terminal en tapant :
nc 192.168.4.1 23
Vous pourrez alors avoir accès au monitoring de fonctionnement de EcoPV et aux réglages des paramètres.

Variante : le programe serialBridgePortal.ino pour Wemos/ESP8266 est une variante au programme précédent. Ce programme crée d'abord un réseau Wifi avec un portail captif qui vous invite à vous connecter au réseau Wifi de votre box. Une fois cette étape réalisée, le Wemos/ESP8266 se connectera automatiquement à votre réseau Wifi et votre box lui attribuera une adresse IP dynamique par DHCP. Ainsi, pour pourrez accéder à la console série (monitoring, paramétrage), à partir de votre réseau local, ce qui vous permettra d'utiliser un PC relié par câble à ce réseau.

Sources et liens

Forum photovoltaïque, discussion sur EcoPV : https://forum-photovoltaique.fr/viewtopic.php?f=110&t=42721
Forum photovoltaïque, travaux de tignous84 et rolrider - PV Routeur : https://forum-photovoltaique.fr/viewforum.php?f=110
Site Openenergy monitor : https://openenergymonitor.org
PV Routeur pour les nuls : http://pvrouteur.free.fr

A compléter...