Decodeur TIC Linky

Bonjour MicroQuettas

Pourquoi mono et tri : Je suis chez moi en Tri mais dans le chalets de mes parents il y a du mono (et chauffage elec avec un compteur 6kW donc je sens que quand linky va passer par là ça va être tendu)

Enedis vient de refaire entièrement l'installation (ligne + tableau et ils m'ont mis un ancien compteur). 3 semaines après ils m'appellent pour me passer en linky... Je joue la montre, c'est pas bien clair leur mode de coupure, il n'y a aucune infos. Sur les vieux compteurs ils expliquent l'obtention de la valeur IMAX et pas sur linky (et le disjoncteur est plus tolérant). En fait ce qui me freine c'est mon tour qui à un moteur de 10ch soit environ 20Amax par phase. Ma crainte : que se passera t'il avec linky pendant la phase de démarrage?? :o
J'ai essayé d'avoir des infos par ma tante qui bosse chez ENEDIS, son collègue m'a juste indiqué les docs que l'on trouve sur internet et m'a dis qu'il n'y avait aucun problème.
Notre ancien propriétaire vient de se voir faire changer son compteur pour un linky. il avait 2 PAC et depuis il a des problèmes de coupure intempestives. Il avait un abonnement 45A mono et peut être qu'il tirait parfois 48 ou 50A. Tout marchait bien maintenant il est tout le temps embêté.

pour répondre aux questions:

  • Délestage de 2 soties tri: je vais utiliser une grosse pompe triphasée pour mon jardin, donc si elle démarre à un moment inopportun je souhaite pouvoir la couper
  • Les entrées analogiques servent à mesurer avant la coupure le courant soustiré pour rearmer au plus tôt des que le delta entre l'intensité instantanée et l'intensité souscrite est superieur à la valeur mesurée au moment de la coupure. L'idée est par exemple si la machine à laver tourne sur un prog 90° et que le chauffe eau (charge resistive pure) tourne aussi de pouvoir le renclencher au plus tot quittte à le couper à nouveau dans un delais court (en le pilotant avec un relais statique synchrone et en veillant à ne pas creer d'harmonique si on faisait des commutation trop frequentes).
  • 8 niveaux de délestage en mono c'est pour pouvoir gérer presque au radiateur prêt une installation
  • Le ISOUSC : le rafraichissement n'est pas necessaire. Dans le code je l'avais traité dans le setup pour le relever une fois au boot de l'arduino
  • Dans le même esprit j'avais cherché aà savoir si le ADCO ne donnait pas le nombre de phase et le type de compteur pour adapter la com au compteur (ce dernier point est obsolete du fait de la com en mode historique du linky

Je suis d'accord pour l'algorithme plus malin mais je voulais commencer par quelque chose de facile avant d'aller plus loin... je suis un beginner en Arduino et en C/C++

je vais réflechir au mode de délestage (un cascadocyclique un peu custom du fait que l'on connaitra les intensités soutirées via les entrées analogiques pourrait être sympa)

Cordialement

Bonsoir,

Merci pour toutes les précisions. C’est beaucoup plus clair maintenant.

Tout d’abord en vrac, plusieurs informations puisées dans le doc ENEDIS http://www.enedis.fr/sites/default/files/Enedis-NOI-CPT_54E.pdf :

  • identification du type de compteur dans le groupe ADCO : §2.2
  • intensité de coupure : § 6.1.2

Le contrôle de dépassement de puissance souscrite
(ADPS) est effectué phase par phase en comparant l’intensité efficace
instantanée à l’intensité de référence (déduite de la puissance de référence). L’intensité de référence est calculée de la façon suivante : IR = P Référence en VA / 200
V / 3 phases.

Le calcul ENEDIS avec 200V au lieu des 230V nominaux donne environ 10% de marge. Ce n’est pas beaucoup. Il faut jouer serré car on peut craindre que le Linky ne coupe au moindre dépassement de l’intensité IR… Les disjoncteurs différentiels électromécaniques anciens étaient plus tolérants et moins rapides… Les mauvaises langues diront que c’est un moyen pour les fournisseurs de vendre l’abonnement supérieur.
Circonstance aggravante : il faut être sur place pour réarmer le Linky.

Pour vos délesteurs, je ferais 2 projets.

Projet mono
L’avantage de l’Arduino est que l’on connait l’intensité en temps réel. Pas besoin de capteur analogique. On peut aussi programmer en paramètre les intensités correspondant à chacun des 8 circuits, ce qui permet de délester intelligemment.
Vous pourriez faire un projet mono avec les 8 sorties et un algorithme tournant avec des relais statiques pour délester avec des cycles courts (1 à 2 minutes). Cela revient à baisser la puissance des radiateurs et non à les couper complètement.

Pour votre installation tri, c’est plus coton. Seule l’expérience vous dira comment le Linky réagit aux appels de jus des moteurs lorsqu’ils démarrent…
On peut toujours faire un délesteur simple à 2 sorties par phase.

Encore une fois, ne vous précipitez pas sur le code. Les projets sont assez complexes. Cela vaut le coup de passer du temps à définir exactement ce que l’on va faire.

En PJ, la version tri avec capture de l’ISOUS.

Bonne bidouille et tenez moi au courant,

Frédéric de MicroQuettas

LinkyRx_V 06b tri.zip (5.79 KB)

Bonsoir
Whaouu super merci pour cette partie de code que je vais m’empresser de lire pour essayer de bien la comprendre.
J’essayerais demain soir car je rentre à la maison.
Comme vous me l’avez recommandé je ne me suis pas encore précipité sur le code.
Je suis encore en pleine reflexion et je me posais la question en Tri de voir la possibilité de commuter une charge resistive sur une autre phase par un jeu astucieux de relais (monté à l’enver pour faire office d’aiguillage et pour assurer de ne jamais avoir 2 phases en court circuit. Cela permettrai un equilibrage dynamique des phases si une phase etait sous utilisée à un instant t… On pourrait utiliser 2 sorties via un code binaire de gray 00 phase 1, 01 phase 2, 11 phase 3 et 10 delesté. On pourrait affecter en decimal 1 pour la phase 1, 2 pour la phase 2, 3 pour la phase 3 et 4 pour la phase 4. Si on retranche 1 et on converti les valeurs en binaire de gray alors on a le pilotage des relais.

Peut être que j’ai fumé ou qu’il y a une facon plus simple. J’ai mis le schema Elec en doc du switch de phase avec fonction delesteur :confused:

Olivier

Switch phases.doc (60 KB)

Un dernier point le fait de mettre la mesure analogique de l'intensité des lignes délestées permet de mesurer à l'instant t l'intensité réelle de la ligne (par exemple s'il y a 2 gros chauffes eau, ils ne sont pas forcement en marche en même temps). Dans notre maison j'aimerai implementer de petit chauffe eau (10 à 15l) au plus près des point d'eau pour avoir de l'eau chaude instantanée ou des chauffes eau instantanés types dafi pour chauffer l'eau près du robinet. Cela fait partie integrante de mon projet de délesteur. J'ai déjà fait une maquette avec un capteur de température qui coupe le chauffe eau instantané une fois l'eau chaude arrivée (le chauffe eau instantané est piloté par le débit seulement, donc pas d'arret de chauffe une fois l'eau chaude arrivée).

j’avais bien fumé … :confused:
en Pj le switch pilotable en binaire

Switch phases1.doc (63.5 KB)

Bonjour Olivier,

Merci pour ce schéma. Attention, si vous branchez après les petits différentiels de protection et que ceux-ci sont monophasés, il vous faudra aussi commuter les neutres, car autrement les différentiels vont faire leur travail et tout couper dès que les intensités phase et neutre seront différentes... Si vous branchez avant, vous n'avez plus de protection :cry:

Bref, votre projet est plutôt complexe.

Vous allez peut-être faire face à des problèmes de communication si tout n'est pas faisable depuis le tableau électrique.
Pensez également que tout doit être testable pour la mise au point sans perturber l'installation électrique.
Il vous faudra également penser aux modes de panne : que se passe-t-il si un relais ne commute pas ou reste bloqué dans une position, par suite de panne du relais ou de plantage du programme ?
Ne supprimez en aucun cas les thermostats des appareils de chauffage et raccordez toujours vos bidouilles en série avec les dispositifs de commande d'origine, jamais en parallèle ! C'est du bon sens, mais on voit tant de choses...

Ma recommandation serait de commencer petit et simple et de rajouter des fonctions au fur et à mesure. Il vaut mieux plusieurs petits systèmes simples qu'un gros sensé tout faire...

Bon courage et bonne bidouille,

MicroQuettas

Bonsoir Klapoutz,

J’ai terminé la version “tempo”. Je l’ai testée, mais pas en vraie grandeur car je peux pas lui envoyer de vraies trames “tempo”.

Dites moi si ça marche.

Merci et bonne bidouille

MicroQuettas

Linky_Rx_07b_tempo.zip (6.53 KB)

Bonsoir,

Un grand merci.

Je n’ai pas beaucoup de temps ce soir mais je n’ai pas pu résister à faire l’essai…

Ci joint une copie du résultat.

Cordialement

LkyRx_tpo07b_tempo.txt (19.4 KB)

Bonsoir MicroQuettas
Oui je vais y aller par étapes.
Pour le tableau Elec je vais mettre un differentiel tri spécifique pour toutes les phases délestées, puis le selecteur de phase pour chaque appareil et enfin en dessous la protection magneto thermique. J’avais pensé à mettre le neutre sur 1 contact des 2 relais pour couper à la fois la phase et le neutre en cas de délestage complet.
j’ai une petite erreur :

Arduino: 1.8.5 (Windows 7), Board: "Arduino/Genuino Uno"

Build options changed, rebuilding all
C:\Users\XXXXXXX\Documents\Perso\XXXXXXX\delesteur arduino\LinkyRx_V 06b tri\LkyRx_tri06b\LkyRx_tri06b.ino:20:23: fatal error: Streaming.h: No such file or directory

 #include <Streaming.h>

                       ^

compilation terminated.

exit status 1
Error compiling for board Arduino/Genuino Uno.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

J’espère que c’est comme ça qu’on presente les erreurs dans le forum
Je suppose qu’il me manque streaming.h?? pourquoi ça j’en sais rien??
je vais chercher
Olivier

Bonsoir à tous,

@Olivier : la bibliothèque “streaming” vient de là Arduino - Libraries, rubrique utilities. Suivez le lien, chargez la bibliothèque, dézippez la et placez son contenu dans un répertoire “Streaming” du répertoire “Libraries” de votre répertoire de travail Arduino. Ca devrait ensuite compiler sans problème.

@Klapoutz : ca a l’air de marcher pile-poil. A l’usage, les légendes des différents index qui sont répétées à chaque changement sont lassantes. Vous pouvez les virer sans inconvénients du programme de test .ino.

Bonne bidouille à tous,

MicroQuettas

Le problème du streaming.h est resolu

@MicroQuettas:
voici la trame recue dans le moniteur série:
Bonjour
I Phase 2 = 6 A
I Phase 3 = 1 A
I Phase 3 = 13 A
I Phase 3 = 16 A
I Phase 3 = 15 A
I Phase 3 = 6 A
I Phase 3 = 12 A
I Phase 3 = 15 A
I Phase 3 = 11 A
I Phase 3 = 1 A
I Phase 2 = 7 A
I Phase 2 = 6 A
I Phase 1 = 1 A
ISOUSCrite = 20 A
I Phase 1 = 0 A
ISOUSCrite = 20 A
I Phase 1 = 1 A
ISOUSCrite = 20 A
I Phase 1 = 0 A
ISOUSCrite = 20 A
I Phase 3 = 0 A

j'ai enlevé Base et Papp mis en commentaire
I souscrite n'est apparue qu'après l'évolution de la phase 1.
Donc j'ai modifié l'initialisation des I à -1 afin qu'elles soient actualisées au démarrage au moins une fois et j'obtiens cela :
Bonjour
I Phase 2 = 6 A
I Phase 3 = 0 A
I Phase 1 = 0 A
ISOUSCrite = 20 A

Merci
Olivier

Re Bonsoir
@MicroQuettas
Est ce que vous savez au bout de combien de cycle de dépassement d'intensité le linky coupe?
Ce serait intéressant de connaitre le temps de réaction et s'il varie en fonction de la surintensité. Cela pourrait me donner une info pour le programme de déléstage. pour moi pas de problème je peux dépasser allègrement de 5 à 7A avant que le disjoncteur saute.
en pleine bidouille :slight_smile:
Olivier

Bonjour MicroQuettas
le I souscrit apparait à chaque changement de valeur I de la phase 1, peut etre est-ce parce que j'ai modifié Iinst_=0 par Iinst*=-1?*_
Olivier

Bonjour Olivier,

Tout d’abord un mot d’explication sur le fonctionnement du décodeur.
Il est écrit sous forme d’objet et, une fois instancié (construit)

LinkyHistTIC_tri Linky(pin_LkyRx, pin_LkyTx);

et initialisé

Linky.Init();

il vit sa vie. A chaque passage dans la boucle principale (loop()), il est appelé

Linky.Update();

et fait ce qu’il a faire, si un ou des caractères ont été reçus. S’il n’y a rien à faire, il ne fait rien, mais n’attend jamais, pour ne pas bloquer le reste du programme.

Les fonctions xxxIsNew et Iinst() etc. sont des “propriétés” de l’objet, c-à-d des fonctions d’accès qui rendent accessibles à l’extérieur les données présentes dans l’objet. Elles n’ont aucune action sur la lecture des données dans les trames.
En d’autres mots, que vous récupériez ou non les intensités en appelant Iinst(n), celles-ci sont lues sur les trames et la fonction IIinstIsNew(n) retournera true au prochain appel s’il y a eu un changement entre deux valeurs.

Si, comme je le comprends, vous avez initialisé les _iinst[n] à -1 dans le constructeur, cela ne change pas le fonctionnement, sauf si la première trame contient une intensité nulle, en tel cas elle sera signalée immédiatement par IinstIsNew() à true. La modif est intéressante, gardez la. Pour la cohérence des types (on est en non-signé 8 bits) remplacez le “-1” par un 255, mais le compilateur est un bon bougre qui n’a pas protesté…

Si vous voulez savoir si la 1ère trame a été reçue, testez plutôt Isousc(). Si elle retourne une valeur non nulle (ISOUSC) c’est que la première trame a été reçue et traitée. Il suffit d’écrire :

if(Isousc())
  {
  ...

Pour l’écriture de ISOUSC avec les changements d’intensité sur la phase 1, je l’y ai mise là sur le programme de test, mais cela n’est absolument pas obligatoire.

      if (i == Linky.Phase_1)
        {
        Serial << F("ISOUSCrite = ") << Linky.Isousc() \
               << F(" A") << endl;
        }

On peut la mettre n’importe où, ou ne pas la mettre du tout, de toutes façons ISOUSC a été lue et est dans l’objet. C’est absolument sans relation avec la modif que vous avez effectuée.

Maintenant sur le fonctionnement du Linky, de ce que j’ai compris de la doc et en comparant avec les valeurs du mien, ISOUSC est la valeur de coupure calculée par Puissance_souscrite /200.
Il faut donc délester avant, par ex. à Puissance_souscrite / 230, car si on attend de dépasser la limite on risque de se retrouver dans le noir.

Ceci dit, je n’ai pas fait l’essai -et n’ai pas envie de le faire…

Voilà, bon courage et bonne bidouille

MicroQuettas

PS : si vraiment vous n’utilisez pas Papp() et Base(), il faudra à terme les supprimer de l’objet pour éviter de gaspiller des ressources.

Bonsoir MicroQuettas
Merci pour toutes ces infos je vais essayer d’avancer la semaine prochaine. Je serais en Chine donc si vous avez peu de message cela ne voudra pas dire que j’ai laché le morceau :slight_smile:
Pour le linky cela veut dire que mon projet de délestage n’est pas viable et qu’il faut mesurer l’intensité sur les 3 phases et agir sitôt la valeur atteinte en analogique… C’est vachement restrictif comparé aux ancien compteurs :confused: . Je ne suis pas prêt de les laisser rentrer pour le changer ! >:( Ils avaient qu’à mettre le bon du premier coup.
Olivier

Olivier,

Je ne vois pas pourquoi ça ne marcherait pas avec un Linky ?
Vous avez l'intensité instantanée sur les 3 phases et le max (ISOUSC).
Pour chaque phase, il vous suffit de programmer une intensité de délestage à 0.87*ISOUSC arrondi à l'ampère inférieur et de délester dès que vous dépassez. (200/230 = 0,87).
Pas besoin de mesure analogique.
Vous pouvez connaître les intensités délestées en comparant avant et après le délestage.
Vous réenclenchez quand Intensité + Intensité délestée repasse sous l'intensité de délestage, avec une petite tempo (15 trames = environ 30s) et une marge pour éviter le pompage.

Si j'ai le temps, je vous écrirai un petit bout de code, mais sans promesse...

Où allez vous en Chine ? J'y suis allé à plusieurs reprises pour le pro. C'était toujours trop court, mais fascinant à chaque fois.

Bonne bidouille

Frédéric

Bonsoir
Je vais à Pekin c'est aussi pro. Pour valider une nouvelle machine.
Desolé ce soir j'ai dû reparer mon tracteur dont le relevage etait en panne.
Merci pour le code, mais ne vous prenez pas la tete... j'avais effectivement pas vu la chose comme cela. Neamoins linky fait perdre un paquet de watt par rapport aux anciens compteurs. Je commence à mieux cerner le fond du probleme et les raisons d'une telle oppositions.
Olivier

bonjour
ha, il me semblait avoir lu que sur le linky en tri l'information disponible était seulement le total des trois phases et non pas une information par phase.
Décidément il aura fait couler beaucoup d'encre ce merveilleux compteur communiquant que l'on attendait temps :confused:

Bonjour,

D'après la documentation Enedis-NOI-CPT_54E V2, en tri, le Linky sort les intensités par phase (IINST1, 2 et 3), comme les anciens compteurs, mais seulement la somme des puissances instantanées (PAPP). Pour un délesteur, les intensités suffisent...

Maintenant, il faudra confirmer tout cela avec un vrai Linky.

Bonne bidouille,

MicroQuettas

bonjour
oui, cela a l'air d'etre cela.

Pour un délesteur, les intensités suffisent...

oui, mais, la résolution c'est 1Amp soit une résolution de 235W.
PAPP démarre a 60Wh ou 90Wh selon les compteurs cela aurait été plus précis.
Décidément je ne l'aime pas ce compteur!!!
d'un autre coté si l'on cherche plus de précision, rien n'empêche de placer en série un compteur électronique divisionnaire.
C'est facile a trouver sur le coincoin pour moins de 30€.
Perso j'en ais trouvé 3 dont un de première génération qui a l'avantage d'avoir plus de contact de sortie.
En tout cas la routine pour le Linky, je me la met au chaud.
sinon si cela vous est utile car les docs sur le linky ne sont pas nombreuse j'ai réunit:

4_ziv_linky_data_sheet_french_rev_2
Enedis-NOI-CPT_02E
hw28_linky
Sequelec_GP15_Linky_2017_03_01
Enedis-NOI-CPT_54E