PV routeur sur Arduino - EcoPV



Jetblack
Messages : 857
Enregistré le : 06 oct. 2018 10:38
BDPV : jetblack
Departement/Region : 31
Professionnel PV : Non

PV routeur sur Arduino - EcoPV

Messagepar Jetblack » 22 sept. 2019 20:37

Bonjour à tous,

Avec president13 nous avons développé un PVrouteur dont le hardware et le software sont grandement inspirés des travaux de ce forum, et de ceux de Tignous en particulier. Nous avons surtout travaillé sur la partie logiciel pour améliorer l'acquisition et la régulation qui se font entièrement sur interruption. Cela permet de mesurer 8300 fois la puissance par seconde et de réaliser la régulation à chaque demi-cycle secteur (commande du SSR).
Nous avons ajouté une interface de configuration par liaison série et sauvegarde des paramètres dans l'EEPROM. Egalement, en option de compilation, le PVrouteur peut communiquer ses datas par le protocole Mysensors ou alors via une API http avec un shield ethernet.
Les résultats sont plutôt bons, on arrive à router le surplus de production photovoltaïque à une consigne d'importation de 10W, et le linky ne voit aucune exportation de puissance.

Tout est disponible ici : https://github.com/Jetblack31/EcoPV

Je vais faire mon possible pour compléter la documentation rapidement.

Le programme Arduino est quasiment compatible pin to pin avec les développements de Tignous.
N'hésitez pas à tester le code et faire vos retours !

Jetblack
Modifié en dernier par Jetblack le 29 juil. 2022 16:14, modifié 3 fois.
1650 Wc PV en autoconsommation et autoconstruction, double orientation Est et Ouest
3500 Wc solaire thermique pour chauffe-eau solaire, orientation Sud
BDPV : https://www.bdpv.fr/fr/ficheUtilisateur ... l=jetblack
Projet EcoPV : https://github.com/Jetblack31/EcoPV
Projet MaxPV! : https://github.com/Jetblack31/MaxPV
Domotique sous openHAB, IPX800, Ecodevices, 1wire et 2 lapins Karotz :D

Grubuntu
Messages : 663
Enregistré le : 28 avr. 2019 19:42
Departement/Region : 53
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar Grubuntu » 23 sept. 2019 07:05

Merci pour le partage.

Ça a l'air propre, bravo pour tout le boulot effectué.

La partie ampli est-elle indispensable ?

silicium81
Modérateur
Modérateur
Messages : 3665
Enregistré le : 04 mars 2009 01:00
BDPV : silicium81
Departement/Region : 81
Professionnel PV : non
Localisation : Albi

Re: PV routeur sur Arduino

Messagepar silicium81 » 23 sept. 2019 08:27

Le code est très bien écrit et aussi particulièrement commenté. Bravo !
Et avec statistiques, gestion des erreurs, exportation dans différents formats... :o
Je suis loin d'être capable d'écrire aussi bien du code arduino, je suis impressionné :sun:

Une petite question: en regardant le code, le triac du ssr ne semble pas commandé par une courte impulsion sur la gâchette ? Il semblerait que celle-ci soit maintenue à 1 jusqu'au zéro secteur suivant ?
(si j'ai compris le code concerné...). Perso j'envoi juste une impulsion de 200 uS. Quelle est la raison de cette commande ? Autoriser le déclenchement sur une charge inductive ? (retard du courant)
Remarque : L'ensemble de mes propos est personnel et mes interventions en tant que modérateur sont de couleur verte ou rouge
Producteur depuis le 17-08-2009 2940Wc en Rec Solar, SMA3000 TL-20, Intersole
+ 14,4kWc en Sunpower, SMA7000HV, Bac Acier (20 MWh produits par an)
3kWc: sujet
14,4kWc: sujet
autoconso: suivi
Mon petit forum technique https://vu.fr/yhka/
Toutes les infos utiles sur le PV https://vu.fr/pyDE

Jetblack
Messages : 857
Enregistré le : 06 oct. 2018 10:38
BDPV : jetblack
Departement/Region : 31
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar Jetblack » 23 sept. 2019 08:42

Bonjour,

Merci pour vos messages !
Le fonctionnement de la fonction routage entièrement sur interruptions permet dégager de le ressource pour implémenter toutes les fonctions d'affichage, de configuration et de communication.
Je ne suis pas encore aux limites de l'arduino, mais sa mémoire est bien remplie, en particulier la SRAM.

Dans la partie analogique, les amplis ne sont pas indispensables. Ils permettent toutefois :
- d'avoir une seule référence de bonne qualité pour la tension de point millieu 2.5 V qui sert au centrage des signaux I et V pour l'acquisition par l'arduino. Ainsi, le bias offset est exactement le même pour I et V et ca améliore un peu la précision des mesures de la puissance
- d'utiliser 22 ohms en résistance de burden, ce qui est la valeur avec laquelle le transfo de courant est le plus linéaire. Ensuite il y a un gain dans l'ampli pour gagner en sensibilité.

Ceci dit, le montage devrait fonctionner sans souci avec le hardware de Tignous : entrée V sur A3 et entrée I sur A5.
La seule chose à faire en plus, c'est de relier D3 et D4 physiquement pour que la détection du passage à 0 fonctionne (fonction auto trigger).
L'affectation des pins est configurable dans le code.

A bientôt,
Jetblack
1650 Wc PV en autoconsommation et autoconstruction, double orientation Est et Ouest
3500 Wc solaire thermique pour chauffe-eau solaire, orientation Sud
BDPV : https://www.bdpv.fr/fr/ficheUtilisateur ... l=jetblack
Projet EcoPV : https://github.com/Jetblack31/EcoPV
Projet MaxPV! : https://github.com/Jetblack31/MaxPV
Domotique sous openHAB, IPX800, Ecodevices, 1wire et 2 lapins Karotz :D

alexi92
Banni
Banni
Messages : 16308
Enregistré le : 04 août 2010 17:50
Departement/Region : 92

Re: PV routeur sur Arduino

Messagepar alexi92 » 23 sept. 2019 08:46

Bonjour

d'après ce que je crois comprendre la révolution du zéro injection et surtout l'auto consommation
n'en sera que plus productive :sun: :sun:

CDLT

B.T
Pro à confirmer...

Jetblack
Messages : 857
Enregistré le : 06 oct. 2018 10:38
BDPV : jetblack
Departement/Region : 31
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar Jetblack » 23 sept. 2019 09:19

Bonjour,

En effet, je vois 0 injection sur le linky après 3 mois de fonctionnement, environ 70 kWh redirigés vers le chauffe eau, et une consigne d'importation à 10 W (Margin).
Pour cela, il faut que le PVrouteur soit bien configuré, en particulier sur le calibrage de la phase, et les gains du correcteur PI.
Dès que j'ai un peu de temps, je complète la documentation.

Jetblack
1650 Wc PV en autoconsommation et autoconstruction, double orientation Est et Ouest
3500 Wc solaire thermique pour chauffe-eau solaire, orientation Sud
BDPV : https://www.bdpv.fr/fr/ficheUtilisateur ... l=jetblack
Projet EcoPV : https://github.com/Jetblack31/EcoPV
Projet MaxPV! : https://github.com/Jetblack31/MaxPV
Domotique sous openHAB, IPX800, Ecodevices, 1wire et 2 lapins Karotz :D

alexi92
Banni
Banni
Messages : 16308
Enregistré le : 04 août 2010 17:50
Departement/Region : 92

Re: PV routeur sur Arduino

Messagepar alexi92 » 23 sept. 2019 09:26

Moi je dis juste: BRAVO :D

CDLT

B.T
Pro à confirmer...

Grubuntu
Messages : 663
Enregistré le : 28 avr. 2019 19:42
Departement/Region : 53
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar Grubuntu » 23 sept. 2019 10:24

1er test non concluant :D

Sur Arduino avec montage sur la base du mkpvrouter du british :

J'ai ajuster les paramètres de V calib et I calib pour obtenir des valeurs cohérentes avec les mesures et modifié la pinout SSR sur la pin9 pour correspondre à ma config.

Je n'utilise pas mysensor ni ethernet.

Je n'ai pas de routage sur le SSR même en retournant la pince ampèremètrique.

Par contre si j'envoie la sortie de la Led ledpinrouting sur la pin 9 (où se trouve mon SSR) mon SSR s'active lorsque je retourne la pince.

Je vais creuser pour comprendre un peu mieux le code.

Encore merci et bravo. Pouvoir modifier les paramètres en ligne c'est top ;)

Jetblack
Messages : 857
Enregistré le : 06 oct. 2018 10:38
BDPV : jetblack
Departement/Region : 31
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar Jetblack » 23 sept. 2019 10:53

Bonjour Grubuntu,

Attention, le SSR doit être branché sur une pin comprise entre D0 et D7, sinon ca ne fonctionnera pas. En effet, dans le code, j'utilise des définitions particulières pour accélérer le temps de traitement de changement d'état des pins.
Donc D9 ne peut pas marcher pour le SSR, où alors il faut redéfinir TRIAC_ON et TRIAC_OFF autrement.
Voir le code :

// ***********************************************************************************
// *************** Définition de macros de manipulation des pins *****************
// *************** pour la modification rapide des états *****************
// ***********************************************************************************

// *** Définitions valables pour le PORTD, pins possibles :
// *** 0 = PIN D0 à 7 = PIN D7
// *** Cela concerne les pins pulseTriacPin et synchroOutPin
// *** Utilisation dans les interruptions pour réduire le temps de traitement

#define TRIAC_ON PORTD |= ( 1 << pulseTriacPin )
#define TRIAC_OFF PORTD &= ~( 1 << pulseTriacPin )
#define SYNC_ON PORTD |= ( 1 << synchroOutPin )
#define SYNC_OFF PORTD &= ~( 1 << synchroOutPin )
1650 Wc PV en autoconsommation et autoconstruction, double orientation Est et Ouest
3500 Wc solaire thermique pour chauffe-eau solaire, orientation Sud
BDPV : https://www.bdpv.fr/fr/ficheUtilisateur ... l=jetblack
Projet EcoPV : https://github.com/Jetblack31/EcoPV
Projet MaxPV! : https://github.com/Jetblack31/MaxPV
Domotique sous openHAB, IPX800, Ecodevices, 1wire et 2 lapins Karotz :D

EricS
Messages : 745
Enregistré le : 22 janv. 2018 09:49
Departement/Region : MG
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar EricS » 23 sept. 2019 10:59

Merci pour le travail et le partage.

J'ai un projet un peu différent, à savoir me faire un enregistreur de données (datalogger) longue durée du réseau (tension, fréquence) et de la consommation locale (pour future simulation PV/autoconsommation). Votre réalisation me fournit les briques qui vont bien. Petite question: pourquoi un ampli sur la pince ampérométrique?

Grubuntu
Messages : 663
Enregistré le : 28 avr. 2019 19:42
Departement/Region : 53
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar Grubuntu » 23 sept. 2019 11:19

Jetblack a écrit :Bonjour Grubuntu,

Attention, le SSR doit être branché sur une pin comprise entre D0 et D7, sinon ca ne fonctionnera pas. En effet, dans le code, j'utilise des définitions particulières pour accélérer le temps de traitement de changement d'état des pins.
Donc D9 ne peut pas marcher pour le SSR, où alors il faut redéfinir TRIAC_ON et TRIAC_OFF autrement.


Merci, ça m'a permis d'aller chercher l'information à propos de l'utilisation de PORTD.

Si j'ai bien compris la doc, dans mon cas il faut que j'utilise PORTB pour les pins de 8 à 13. Je testerai.

Photauconso
Messages : 307
Enregistré le : 20 juil. 2018 13:47
Departement/Region : 37
Professionnel PV : non

Re: PV routeur sur Arduino

Messagepar Photauconso » 23 sept. 2019 11:22

Jetblack a écrit :Bonjour à tous,

Le programme Arduino est quasiment compatible pin to pin avec les développements de Tignous.
N'hésitez pas à tester le code et faire vos retours !

Jetblack


Que veux-tu dire ? Que l'on peut mettre ton sketch dans l'atmega qui se trouve sur la petite carte hardware développée par Rolrider et Tignous qui se trouve elle-même dans le compteur "Tignous" ?
Et avoir donc un comportement meilleur( vis à vis de l'injection réseau avec un linky) que la version V6.ino qui est la dernière je crois...?

Avatar du membre
tignous84
Modérateur
Modérateur
Messages : 12995
Enregistré le : 11 avr. 2017 19:53
BDPV : tignous84
Departement/Region : 84
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar tignous84 » 23 sept. 2019 11:23

Bravo,tous les chemins mènent au routage :D
Mon installation en autoconstruction:
http://forum-photovoltaique.fr/viewtopi ... 25&t=36255

Ma fiche BDPV
https://www.bdpv.fr/fr/ficheUtilisateur ... =tignous84

Ma devise :Mesurer ,c'est connaître

Remarque : L'ensemble de mes propos est personnel et mes interventions en tant que modérateur sont vertes ou rouges

raimo
Messages : 109
Enregistré le : 22 oct. 2018 13:04
BDPV : raimo90
Departement/Region : 90
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar raimo » 23 sept. 2019 11:27

Bravo et merci pour le partage .

J'attend le complément de documentation avant une éventuelle réalisation.

Cdlt
Hervé

Jetblack
Messages : 857
Enregistré le : 06 oct. 2018 10:38
BDPV : jetblack
Departement/Region : 31
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar Jetblack » 23 sept. 2019 11:41

EricS a écrit :Merci pour le travail et le partage.

J'ai un projet un peu différent, à savoir me faire un enregistreur de données (datalogger) longue durée du réseau (tension, fréquence) et de la consommation locale (pour future simulation PV/autoconsommation). Votre réalisation me fournit les briques qui vont bien. Petite question: pourquoi un ampli sur la pince ampérométrique?


Merci,
L'ampli sur la pince ampéremétrique permet d'utiliser une résistance de burden faible, 22 ohms, et de récupérer de la sensibilité par le gain de l'ampli. Avantage : la linéarité de la pince est optimale à 22 ohms de burden
1650 Wc PV en autoconsommation et autoconstruction, double orientation Est et Ouest
3500 Wc solaire thermique pour chauffe-eau solaire, orientation Sud
BDPV : https://www.bdpv.fr/fr/ficheUtilisateur ... l=jetblack
Projet EcoPV : https://github.com/Jetblack31/EcoPV
Projet MaxPV! : https://github.com/Jetblack31/MaxPV
Domotique sous openHAB, IPX800, Ecodevices, 1wire et 2 lapins Karotz :D

Jetblack
Messages : 857
Enregistré le : 06 oct. 2018 10:38
BDPV : jetblack
Departement/Region : 31
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar Jetblack » 23 sept. 2019 12:50

Grubuntu a écrit :
Jetblack a écrit :Bonjour Grubuntu,

Attention, le SSR doit être branché sur une pin comprise entre D0 et D7, sinon ca ne fonctionnera pas. En effet, dans le code, j'utilise des définitions particulières pour accélérer le temps de traitement de changement d'état des pins.
Donc D9 ne peut pas marcher pour le SSR, où alors il faut redéfinir TRIAC_ON et TRIAC_OFF autrement.


Merci, ça m'a permis d'aller chercher l'information à propos de l'utilisation de PORTD.

Si j'ai bien compris la doc, dans mon cas il faut que j'utilise PORTB pour les pins de 8 à 13. Je testerai.


Oui c'est tout à fait ca, il faut redéfinir TRIAC_ON et TRIAC_OFF en manipulant le bit correspondant du portB au lieu du portD.
Pour un test, vous pouvez utiliser ces définitions :

#define TRIAC_ON digitalWrite ( pulseTriacPin, ON )
#define TRIAC_OFF digitalWrite ( pulseTriacPin, OFF )

Utilisez juste pour un essai car le temps d'exécution est critique dans les interruptions et l'utilisation de digitalWrite fait perdre des précieuses microsecondes !
1650 Wc PV en autoconsommation et autoconstruction, double orientation Est et Ouest
3500 Wc solaire thermique pour chauffe-eau solaire, orientation Sud
BDPV : https://www.bdpv.fr/fr/ficheUtilisateur ... l=jetblack
Projet EcoPV : https://github.com/Jetblack31/EcoPV
Projet MaxPV! : https://github.com/Jetblack31/MaxPV
Domotique sous openHAB, IPX800, Ecodevices, 1wire et 2 lapins Karotz :D

Jetblack
Messages : 857
Enregistré le : 06 oct. 2018 10:38
BDPV : jetblack
Departement/Region : 31
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar Jetblack » 23 sept. 2019 12:54

Photauconso a écrit :
Que veux-tu dire ? Que l'on peut mettre ton sketch dans l'atmega qui se trouve sur la petite carte hardware développée par Rolrider et Tignous qui se trouve elle-même dans le compteur "Tignous" ?
Et avoir donc un comportement meilleur( vis à vis de l'injection réseau avec un linky) que la version V6.ino qui est la dernière je crois...?


au niveau des branchements pour un fonctionnement en routage simple, les entrées de tension et de courant, ainsi que le sortie de commande du SSR occupent les mêmes pin de l'arduino que le système développé par Rolrider et Tignous. De ce point de vue, c'est compatible "pin to pin" : tension = A3, courant = A5 et SSR = D5
La seule chose à faire en plus, c'est relier ensemble D3 et D4, nécessaire pour la détection du passage à 0.
1650 Wc PV en autoconsommation et autoconstruction, double orientation Est et Ouest
3500 Wc solaire thermique pour chauffe-eau solaire, orientation Sud
BDPV : https://www.bdpv.fr/fr/ficheUtilisateur ... l=jetblack
Projet EcoPV : https://github.com/Jetblack31/EcoPV
Projet MaxPV! : https://github.com/Jetblack31/MaxPV
Domotique sous openHAB, IPX800, Ecodevices, 1wire et 2 lapins Karotz :D

Jetblack
Messages : 857
Enregistré le : 06 oct. 2018 10:38
BDPV : jetblack
Departement/Region : 31
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar Jetblack » 23 sept. 2019 12:59

raimo a écrit :Bravo et merci pour le partage .

J'attend le complément de documentation avant une éventuelle réalisation.

Cdlt
Hervé


Merci, la doc va venir sur GitHub !
1650 Wc PV en autoconsommation et autoconstruction, double orientation Est et Ouest
3500 Wc solaire thermique pour chauffe-eau solaire, orientation Sud
BDPV : https://www.bdpv.fr/fr/ficheUtilisateur ... l=jetblack
Projet EcoPV : https://github.com/Jetblack31/EcoPV
Projet MaxPV! : https://github.com/Jetblack31/MaxPV
Domotique sous openHAB, IPX800, Ecodevices, 1wire et 2 lapins Karotz :D

clyric
Messages : 2889
Enregistré le : 17 mars 2017 10:13
Departement/Region : 91
Professionnel PV : NON

Re: PV routeur sur Arduino

Messagepar clyric » 23 sept. 2019 13:04

c'est bon ça, encore un autre pv routeur qui se crée.
je vais regarder le code en profondeur, ça me permettra de faire évoluer encore un peu le mien ^^ et apprendre aussi d'autre choses.
-2550W en autoconsommation (220v) avec pv routeur wifi c_lyric à décharge distante ( opensource )
-100W en circuit fermé (12v)
-6m3 de cuves eau
- IOT et controle de la maison par HA
lien :https://ota.apper-solaire.org/
(si je met en Bleu sur mon topic c'est pour que ça soit plus facile pour suivre le topic pour ceux qui arrivent)

Jetblack
Messages : 857
Enregistré le : 06 oct. 2018 10:38
BDPV : jetblack
Departement/Region : 31
Professionnel PV : Non

Re: PV routeur sur Arduino

Messagepar Jetblack » 23 sept. 2019 13:07

silicium81 a écrit :Une petite question: en regardant le code, le triac du ssr ne semble pas commandé par une courte impulsion sur la gâchette ? Il semblerait que celle-ci soit maintenue à 1 jusqu'au zéro secteur suivant ?
(si j'ai compris le code concerné...). Perso j'envoi juste une impulsion de 200 uS. Quelle est la raison de cette commande ? Autoriser le déclenchement sur une charge inductive ? (retard du courant)


Vous avez bien analysé le code ! En effet, j'ai choisi de maintenir la commande triac ON pendant le reste de la demi-période après déclenchement. La commande repasse à 0 environ 0.5 ms avant le passage à 0 suivant, ce qui arrête la conduction du SSR.
Il n'y a pas d'inconvénient à faire cela. Ca permet d'améliorer quelque peu la fiabilité du déclenchement à faible courant lorsqu'on très proche du début ou de la fin de la demi-période, ou lorsque la charge commandée est de faible puissance. C'était en particulier le cas pendant les phases de test où j'utilisais une ampoule de 50 W.

Modifier le code pour travailler en impulsion courte ne serait pas très compliqué, ca se joue au niveau du chargement du compteur du timer dans les interruptions.
1650 Wc PV en autoconsommation et autoconstruction, double orientation Est et Ouest
3500 Wc solaire thermique pour chauffe-eau solaire, orientation Sud
BDPV : https://www.bdpv.fr/fr/ficheUtilisateur ... l=jetblack
Projet EcoPV : https://github.com/Jetblack31/EcoPV
Projet MaxPV! : https://github.com/Jetblack31/MaxPV
Domotique sous openHAB, IPX800, Ecodevices, 1wire et 2 lapins Karotz :D


Retourner vers « Electronique/Domotique/PV routeur »