Bonjour,
Pour ceux qui utilisent la TIC pour la lecture, et qui ont un CACSI, la régulation en cas d'injection est plutôt lente, voir très lente si on baisse le seuil de régulation à une faible valeur (Pw=50W dans mon cas).
En cas d'injection, on ne voit donc que Consommation = 0.
Serait-il possible d'intégrer un bout de code qui permet d'estimer la puissance injectée?
Cela ne permettra pas de réduire le seuil de régulation (50W semble être un minimum), mais ça accélère fortement la régulation en cas d'injection.
L'algo que j'utilise est basé sur les informations Irms et Urms de la TIC. Irms étant en entier, l'erreur est de +- 0.5A (soit 115W).
L'algo ne s'active que si la on est dans un mode TIC/CACSI et que si consommation est à 0W (PuissanceS_M); l'estimation est donc transitoire car on régule sur 50W.
Les valeurs de puissance apparente SINSTS ne sont utilisées que pour tester si c'est == 0VA; dans ce cas, le calcul est fait avec les valeur Urms et Irms.
Si SINSTS == 0, alors une valeur de courant non nulle signifie de l'injection (on l'estime), sinon c'est de la consommation (on ne fait rien).
Cela fonctionne bien malgré l'imprécision relative aux mesures d'intensités (la marge de 150W réduit le risque de surestimation de l'injection).
Code "Source_Linky.ino" (v14):
https://drive.google.com/file/d/1xBa_XZP...5VJsiRg67K
Exemple du valeurs retournées (routage sur un radiateur de 1500W qui ne consomme pas tout):
On voit qu'en injection, les valeurs sont en "escalier" (car le courant est en valeurs entières).
Cela ne change pas la courbe bleue (puissance apparente)
Exemple de régulation avec des alternances de nuages et soleil (2 SSR, chacun sur son GPIO, pilotent des résistances de 1400W; le second SSR ne démarre que si le premier a % >= 95%):
Cordialement,
Pour ceux qui utilisent la TIC pour la lecture, et qui ont un CACSI, la régulation en cas d'injection est plutôt lente, voir très lente si on baisse le seuil de régulation à une faible valeur (Pw=50W dans mon cas).
En cas d'injection, on ne voit donc que Consommation = 0.
Serait-il possible d'intégrer un bout de code qui permet d'estimer la puissance injectée?
Cela ne permettra pas de réduire le seuil de régulation (50W semble être un minimum), mais ça accélère fortement la régulation en cas d'injection.
L'algo que j'utilise est basé sur les informations Irms et Urms de la TIC. Irms étant en entier, l'erreur est de +- 0.5A (soit 115W).
L'algo ne s'active que si la on est dans un mode TIC/CACSI et que si consommation est à 0W (PuissanceS_M); l'estimation est donc transitoire car on régule sur 50W.
Les valeurs de puissance apparente SINSTS ne sont utilisées que pour tester si c'est == 0VA; dans ce cas, le calcul est fait avec les valeur Urms et Irms.
Si SINSTS == 0, alors une valeur de courant non nulle signifie de l'injection (on l'estime), sinon c'est de la consommation (on ne fait rien).
Code :
int cacsi = false;
int pIRMS1, pIRMS2, pIRMS3 = -1, pURMS1, pURMS2, pURMS3, pSINSTS1=0, pSINSTS2, pSINSTS3, pPuissance;
....
if (!EAITvalid && Tm > 8000) { //Cas des CACSI ou EAIT n'est jamais positionné
EAITvalid = true;
cacsi = true;
StockMessage("Detection mode CACSI/TIC");
}
....
if (code.indexOf("IRMS1") == 0) {
pIRMS1 = val.toInt();
}
if (code.indexOf("IRMS2") == 0) {
pIRMS2 = val.toInt();
}
if (code.indexOf("IRMS3") == 0) {
pIRMS3 = val.toInt();
}
if (code.indexOf("URMS1") == 0) {
pURMS1 = val.toInt();
}
if (code.indexOf("URMS2") == 0) {
pURMS2 = val.toInt();
}
if (code.indexOf("URMS3") == 0) {
pURMS3 = val.toInt();
}
if (code.indexOf("SINSTS1") == 0) {
pSINSTS1 = val.toInt();
}
if (code.indexOf("SINSTS2") == 0) {
pSINSTS2 = val.toInt();
}
if (code.indexOf("SINSTS3") == 0) {
pSINSTS3 = val.toInt();
}
if (code == "SMAXSN") {
pPuissance = 0;
if (cacsi && PuissanceS_M == 0) { // estimation de la puissance d'injection si PuissanceS_M==0
pPuissance = 150 + (pSINSTS1 == 0?-1:1) * pURMS1 * pIRMS1; // marge de 150W, en mono pSINSTS1==0 si PuissanceS_M==0
if (pIRMS3 != -1) { // triphasé
pPuissance += (pSINSTS2 == 0?-1:1) * pURMS2 * pIRMS2;
pPuissance += (pSINSTS3 == 0?-1:1) * pURMS3 * pIRMS3;
}
}
if (pPuissance >= 0) { // pas d'estimation si l'écart est faible en prenant la marge de 150W
PuissanceI_M = 0;
} else {
PuissanceI_M = -pPuissance; // "-" car on donne la valeur injectée
}
}
Cela fonctionne bien malgré l'imprécision relative aux mesures d'intensités (la marge de 150W réduit le risque de surestimation de l'injection).
Code "Source_Linky.ino" (v14):
https://drive.google.com/file/d/1xBa_XZP...5VJsiRg67K
Exemple du valeurs retournées (routage sur un radiateur de 1500W qui ne consomme pas tout):
On voit qu'en injection, les valeurs sont en "escalier" (car le courant est en valeurs entières).
Cela ne change pas la courbe bleue (puissance apparente)
Exemple de régulation avec des alternances de nuages et soleil (2 SSR, chacun sur son GPIO, pilotent des résistances de 1400W; le second SSR ne démarre que si le premier a % >= 95%):
Cordialement,