Nouveau montage électronique pour décodage trame TIC
14 février 2024Bonjour à tous,
Aujourd’hui, je voudrais vous présenter un nouveau montage pour le détramage des données issues de la prise TéléInfoClient du compteur Linky.
Pour information, le but de cet article est purement exploratoire, car il existe déjà un montage qui fonctionne super bien et qui a pour créateur Charles Hallard dont le principe repose sur l’utilisation d’un octocoupleur et d’un mosfet. Je vous conseille d’aller faire un tour sur son site http://hallard.me/demystifier-la-teleinfo/.
Pour information, comme pour celui de Charles, le montage présenté est sous licence CC-BY-NC-ND SA.
Partie 0: Un peu d’explication et d’histoire
Pour faire un peu d’histoire en 2019, avec Aymeric mon stagiaire de l’époque, nous avions commencé à travailler sur la thématique de récupération des données du compteur Linky. Or comme nous n’avions pas accès à l’époque à des compteurs Linky, car récent à l’époque et encore en déploiement, nous avions utilisé un GBF pour simuler les trames (Ce qui a bien fait rigoler un génie de l’électronique des années plus tard, mais ceci est une autre histoire). Heureusement, Charles nous avaient donné un coup de main et super bien expliqué son montage au lieu de se moquer. Je vous laisse relire cet article dont je récupère un extrait pour expliquer les signaux issues du Linky.
Les signaux d’informations
Pour envoyer des données, le Linky utilise une liaison série asynchrone. Les données sont codées sur 7 bits, vient ensuite un bit de parité paire et un bit de stop, avec un débit de 1200 bauds dans sa configuration par défaut (il existe un autre mode de fonctionnement où le débit est de 9600 bauds).
En revanche, les signaux sont modulés en amplitude (modulation AM) avec une porteuse sinusoïdale à 50kHz. Il va donc falloir démoduler nos trames pour le micro-contrôleur :
Il faut aussi savoir que la logique de codage du Linky est négative. Ça veut dire que lorsque aucun signal n’est présent en sortie de la TIC, il s’agit d’un ‘1’ logique (donc on voudra une tension de 5V en entrée du micro-contrôleur). Inversement, lorsqu’un signal est présent, cela représente un ‘0’ logique (soit 0V pour notre micro-contrôleur).
Maintenant que le contexte est mis en place, je vous invite à lire l’article de Charles qui explique bien sa méthode –> http://hallard.me/demystifier-la-teleinfo/ puis nous pouvons passer à la théorie puis à la pratique de notre montage utilisant la démodulation par détection d’enveloppe.
Partie 1: Modulation et Démodulation AM théorie
Les travaux expliqués ici sont issus des recherches en partie des sources ci-dessous:
REF1: Bouaicha Arafet, Dép. GE, ISET Kairouan Tunisie –> https://zenodo.org/records/4413448/files/Chapitre%20modulation%20demodulation%20AM.pdf
REF2: Université de LAVAL –> http://wcours.gel.ulaval.ca/2017/a/GEL3006/default/5notes/notes_GEL3006_2017_10_modulation_amplitude.pdf
REF3: Frédéric LAGARDE et Hélène LEYMARIE –> http://materiel-physique.ens-lyon.fr/Logiciels/CD%20N%C2%B0%203%20BUP%20DOC%20V%204.0/Disk%201/TEXTES/1999/08120407.PDF
REF4: Anne Luttringer http://aluttrin.free.fr/Lycee/Contenu%20lycee/sp%E9cialit%E9/Corrections/Ph_3.2_Modulation/Ph_3.2_modulation_amplitude_prof.htm Que je vous conseille de lire car super clair.
Dans la théorie, pour démoduler un signal AM, on peux utiliser une détection d’enveloppe (REF1,REF2, REF3 et REF4) composé de 3 éléments (1 diode, 1 résistance et 1 condensateur) suivi d’un filtre passe haut.
Schéma issue de la REF4
Pour notre montage électronique, je n’utiliserai que la partie détecteur d’enveloppe de ce schéma pui je le couplerai à une détection de seuil.
Partie 2 : La pratique
- La première partie de la démodulation qui consiste à la détection de l’enveloppe est ici assurée via l’utilisation d’un pont de diodes. J’ai choisi cette solution, car elle a l’avantage par rapport à la solution simple diode de redresser la partie négative et donc d’avoir un signal moins ondulatoire avant le filtrage. Je suis aussi partie sur des diodes schottky qui ont l’avantage d’avoir un seuil bas de 0,3V.
- Le filtrage ensuite se fait grâce à un couple RC pour choisir la valeur, il faut faire un compromis sur le temps de décharge du condensateur doit être grand devant la période de la porteuse afin de limiter l’ondulation, mais aussi de façon à ce que la décharge ne doit pas être trop lente, car la tension aux bornes de C1 pourrait quitter l’enveloppe et donner ainsi une image fausse du modulant. (CF REF3 et REF4). Pour ce montage, j’ai choisi le couple R=1k et C=100nF. Nous avons le résultat suivant. Je referai un travail sur le couple RC plus fin par la suite.
- Pour finir, on utilise un simple amplificateur opérationnel (AOP) en mode comparateur et capable de fonctionner en 0-3.3V et ayant une pente rapide afin de finir par rendre carré notre signal démodulé. Ici j’ai choisi un LM393 avec une détection de seuil à 0,98V mais que j’abaisserai à 0,5V plus tard. Nous finissons par avoir un résultat avec un créneau exploitable par le µcontrôleur.
- Afin de protéger le tout avec une isolation galvanique, j’ai rajouté un transformateur à impulsion avec un rapport 1:1 en entrée du montage
Ici vous pouvez voir la théorie à l’état brute ^^ et les différentes étapes du traitement du signal.
Ici, je vous présente le premier test
Ici, le test de communication utilisant une liaison TTL<-> USB
Et pour finir, nous avons le montage sur plaque à trous couplé avec la recharge de supercapa utilisé sur les xKY pour vérifier la compatibilité de la solution.
Partie 3: Le montage Final
Maintenant que la théorie et la pratique sont finies, vous pouvez retrouver ce schéma et ses futures évolutions sur le repostiory du Gricad sous licence CC-BY-NC-ND SA à l’adresse suivante:
Je vous remercie pour votre lecture et n’hésitez pas à poser des questions ou dire des suggestions
Bonne continuation,
Jérôme
Bonjour,
Je passe à côté de 2 sujets dans votre dernière version.
Je comprends pas comment cela peut marcher avec un 033CC0 sur la carte 2, étant donné qu’il lui faut 4V en entrée pour commencer à fonctionner correctement et que le MCP1702 remplit la super capa avec du 3.3V. Je croyais qu’il était là pour compenser le temps de remplissage de la super capa, mais en voyant cette tension nécessaire de 4V sur le datasheet, je suis un peu perdu.
D’autre part, je ne vois plus la capa qui jouait le rôle de filtre passe bas entre I1 et I2 sur la carte 1 du décodage, et vu la vitesse de commutation de l’ampli op (en comparateur 0,2V), le signal du TIC ne me parait pas filtré du tout de la porteuse avant l’entrée dans le µcontroleur. J’ai surement loupé quelque chose, si vous pouviez me dire comment est filtrée la porteuse 0-6V en 100kHz ?
Bien cordialement,
Shibida
Bonjour,
merci d’avoir pointé le manque de la capacité sur le schéma final, j’ai fait le copier/coller de la mauvaise version (normalement c’est corrigé maintenant ^^).
En ce qui concerne le 033CC0 la supercapa avec le MPC1702 il existe plusieurs version 3.3V, 4V ici je prend une 4v pour arriver à la bonne tension.
J’espère avoir répondu a vos questions.
Jérôme
Désolé de reparler du sujet, je n’y suis toujours pas.
Quand vous dites une version 4V, vous parlez de la version du MPC1702 ?
Si l’objectif du 033CC0 est de stabiliser la tension de la supercapa à 3.3V pour le µC, et que sa tension de départ doit être de 4V. Le MPC1702 qui conviendrait le mieux est un 5V non ? la supercapa aurrait plus depuissance enmagasiné et le temps avant d’atteindre les 4V de coupure du 0033CC0.
De plus le KA75330ZTA qui déclenche au 3.3V devrait être placé en sortie du 033CC0, sinon il va activer le enable alors que les 4V ou 5V du 0033CC0 n’est pas atteint et le µcontroleur, démarre en mode dégradé, et en cas de coupure pareil, il va avoir le enable déclenché trop tard (bien après que la tension chute en dessous de 3.3V, ne pensez vous pas ?
Bien cordialement
Oui exactement, actuellement sur les versions C6, on utilise une version 5V du MPC1702, la version 4V étaient utilisée sur les version ESP8266 et fonctionne aussi mais comme vous le dites la supercapacité n’était pas chargée à fond mais avec le code optimisé pour l’utilisation du wifi, on peux se permettre d’avoir soit du 4V soit du 5V.
Jérôme
Je n’arrive pas à trouver des cours qui expliquent comment un circuit RC parallèle arrive à faire un filtre passe bas. Avez vous la possibilité de m’expliquer comment vous avez choisi les valeurs de la résistance et de la capa ? Comment maîtrisez vous la consommation de ce circuit RC ?
Bien cordialement
Les formules sont dans les documents de références que j’ai mis en début d’article. le circuit RC sert seulement de détecteur d’enveloppe.
Pour reprendre ce qui est dit dans la REF 3
Le choix de RC repose sur un compromis:
– le temps de décharge du condensateur doit être grand devant la période de la porteuse
(on veut limiter l’ondulation),
– la décharge ne doit pas être trop lente car la tension aux bornes de C pourrait quitter
l’enveloppe, et donner ainsi une image fausse du modulant.Le choix de RC repose sur un compromis :
– le temps de décharge du condensateur doit être grand devant la période de la porteuse
(on veut limiter l’ondulation),
– la décharge ne doit pas être trop lente car la tension aux bornes de C pourrait quitter
l’enveloppe, et donner ainsi une image fausse du modulant.
La formule est page 413
D’accord, j’ai bien compris le principe.
Par contre je n’explique pas la vitesse de décharge de la capa (quand le TIC vaut 1) en regardant vos courbes d’oscilloscope. Vous semblez avoir une décharge de 40µs soit on va dire le temps de 4 thau. Cela fait un thau de 10µs = RC, pour atteindre cela il faudrait une résistance de 100ohms au lieu de 1000. Mais en même temps avec 100ohms on se rapproche de la vitesse de la porteuse donc c’est pas bon …
Votre calcul a l’air et le choix des valeurs ont l’air bon mais je ne comprends pas la vitesse du front descendant (avant le comparateur).
Si vous arrivez à l’expliquer je suis preneur de l’information.
Bien cordialement
J’ai bien relu le REF 4, REF 3, et la spec EDF, il me semble y avoir 2/3 problèmes.
Ce que j’ai compris de la spec EDF, c’est que obtenir les 0 n’est pas un problème car la capa se charge très vite (grâce au redresseur et au fait qu’on n’a pas de résistance bloquant la charge) et donc on a pas de risque d’avoir une montée de tension > à 50µs (c’est le temps qu’une valeur est tenue par le TIC lu dans la spec EDF).
Donc le challenge est plutôt de détecter les 1.
Pour que le détecteur d’enveloppe suive bien la modulation (donc que la capa se décharge assez vite pour atteindre le seuil du 1), dans l’implémentation actuelle, il faut descendre jusqu’a 0,2V (valeur du comparateur dans le schéma). Cette valeur est atteinte si la capa est chargée en 3.4V au bout de 2.9 thau, ce qui fait 290µs. Beaucoup trop long on peut perdre des 0 (en tout cas en mode standard à 9600bauds). Même avec un seuil à 1V comme dis dans le descriptif de l’article ça fait une décharge de 130µs, ça reste trop long.
J’ai aussi passé mon TIC à l’oscillo, je remarque 3 choses (j’ai sur mon TIC le ballon d’eau chaude avec une activation sur heure creuse):
Premièrement le voltage de la porteuse monte jusqu’à 3.5V chez moi (valeur haute de l’enveloppe).
Deuxièmement la porteuse se coupe quand le TIC envoi du 1.
Troisièmement à réception d’un 1 la tension baisse rapidement (en 20µs) à 1V puis progressivement jusqu’à 0,4V.
On cherche à décoder du binaire, donc la modulation qu’on cherche à reconstruire n’a pas besoin d’être super propre sur les intermédiaires.
Donc pour moi la valeur de seuil du comparateur doit être à 1V mais pas besoin d’aller plus bas.
Le seuil du comparateur doit être atteint par le condensateur en 40µs pour ne pas louper de 1 et pour rester loin de la porteuse. Si on prend de la marge sur le voltage haut de la TIC (5V comme dans la spec) cela demande de descendre à 20% de charge (1V sur 5V) soit 1.61 thau, donc thau = 40µs / 1.61 = 24µs. Donc RC = 24µs. Si on garde le même condo de 100nF. 24µ/100n = 240. La résistance doit être de 240ohm, on va trouver que des 220ohms, ce qui va faire une décharge au seuil en 220*100n*1.61=35.42µs.
Si je regarde pour mon cas de 3.5V de tic, j’atteins le seuil de 1V en dessous de 28,57% de charge soit à 1.25 thau donc en 27,5µs. Ce temps est largement supérieur au 5µs max que doit passer le voltage en dessous 1V à cause de la modulation que l’ont a redressé.
Avec cette approche, les diodes n’ont même pas besoin d’être avec un seuil faible, puisque le seuil est à 1v.
PS : sur le schéma il me semble que la diode D8 ne sert à rien vu qu’elle fait la même chose que D6, et il y a un court circuit entre D5 et D6.
PS2 : je suis preneur de la référence du transfo que vous imaginez mettre.
PS3 : pour le pont diviseur avec des résistances facile à trouver je vois 2.7Kohms et 1.2Kohms à 1% pour ne pas trop s’écarter du seuil.
Qu’en pensez vous ?
Je me réponds à moi même en corrigeant quelques erreurs de compréhension.
Pour mon PS, c’est moi qui ait mal compris le pont de diode, mais il y a quand même un croisement de fil en trop sur le schéma même si c’est mineur. D’ailleurs pour le pont de diodes de l’alim j’ai trouvé une référence sympa : MSB56L qui déclenche à 0,1V pour 30mA et il est à moins de 50 centimes donc ça me parait bien je voulais vous en faire profiter.
Pour le PS2: il me semble que mettre ce genre de transformateur sans résistances sur le primaire, va mettre le TIC en court circuit et j’ai cru comprendre qu’il ne fallait surtout pas descendre en dessous de 200ohms dans la specification.
Pour le choix de la capa et la résistance et dans l’objectif de respecter la spec il me semble que 20nF et 1200ohms me paraissent plus adapté à ce que je proposais initialement.
Bonjour,
désolé je n’avais pas vu que vous aviez reposté des questions. (Le site me remonte que les notifications lorsque c’est un premier commentaire)
Merci pour les informations. Oui, il faut faire l’adaptation d’impédance avec le Linky.
L’article a surtout été écrit pour mettre le schéma de principe en licence CC-BY-NC-ND et je dois faire maintenant les ajustements.
J’essaierai la semaine prochaine de faire des tests avec les valeurs que vous proposé.
En tout cas merci pour votre contribution et votre regard critique sur ce projet, c’est vraiment cool de voir quelqu’un partager ces connaissances.
Bonne journée,
Jérôme
J’avais peur d’être trop insistant. N’hésitez pas à me dire si il y a un moyen plus facile pour échanger sur le sujet (discord ou autre).
Questions sur les charges du circuit: Je regarde l’alimentation et je vois que la supercapa est donc derrière le MCP1702. Au démarrage la super capa va tirer bien plus que les 250mA du MCP, mais on va jamais y arriver car le linky ne peut pas envoyer beaucoup plus que 25mA de ce que j’ai compris (130mW avec 6Vrms). Comment gère t on cet appel de courant ? il y a un limiteur de courant côté linky sur la sortie d’alim ? Je n’ai rien lu de tel dans la spec ?
Je sais qu’il existe aussi des DCDC limiteur de courant, mais je ne sais pas ce qui est le plus adapté pour tout ca.
Bonjour,
que pensez-vous de cette reference pour le transfo d’isolation.
https://shorturl.at/NmyXL
Si on se trouve apres l’isolation galvanique, plus besoin de se préoccupé de I1~A on peux utiliser l’alim de notre board ESP en 3,3V n’est-ce pas ?
Bonjour,
Il faudrait voir ses dimensions mais oui tant qu’il est en 1:1 cela est ok. Exactement, cela permet de découpler l’info et la puissance.
Bonne journée,
Jérôme
Sur le meme sujet,
https://fumeebleue.fr/demodulation-signal-tic-la-pratique/
Bonjour,
Merci, oui c’est Tristan qui m’avait demandé s’il pouvait utilisé le montage que l’on a fait afin de l’appliquer sur ses boards.
Bonne journée,
Jérôme