10

Démystifier le décodage Téléinformation et l’optocoupleur SFH620

Pour ceux d’entre-vous qui ont l’habitude de suivre mes articles, vous avez certainement remarqué que les montages à base de téléinformation sont monnaie courante. J’en utilise sur la carte Arduipi ainsi que sur des adaptateurs dédiés tels que MicroTeleinfo ou PiTinfo.

Le montage utilisé jusqu’à présent était le classique à base d’optocoupleur SFH620 de chez Vishai. Il se découple en plusieurs versions telles que SFH620A,  ou SFH6206 (chacun en 3 versions notées de 1 à 6 en fonction du courant de fuite entre le collecteur et l’émetteur).

Edit du 13/10/2015 : en fin d’article.

Le montage de base

Montage de base

Montage de base

Le montage de base est relativement bien connu, mais il existe en plusieurs variantes de valeurs de résistances. Je vais détailler dans cet article les influences de ces résistances.

Pourquoi cet article ?

Je n’avais jamais eu de problème de fonctionnement avec ce montage. Mais cette semaine j’ai eu des fonctionnement très aléatoires avec la nouvelle puce Wifi très tendance l’ESP8266. Il y a d’ailleurs un post ouvert sur le forum d’esp8266 à ce sujet car je n’étais pas le seul à rencontrer des soucis.

Choix des résistances

La première question est pourquoi dans mes montages j’ai choisi R1 à 3.3K et non pas 1.2K comme vu un peu partout sur le NET ? Et bien tout simplement en lisant la spécification ERDF, celle-ci précise que pour tout appareil connecté à la sortie Téléinfo du compteur, la composante parallèle résistive doit être entre 750 et 5000 Ω et qu’afin de faciliter la connexion de plusieurs récepteurs de télé-information sur la même liaison, on demande aux constructeurs de récepteurs de se rapprocher le plus possible de la limite haute de la composante parallèle résistive. C’est-à-dire 5K. Ce qui est curieux c’est que dans la nouvelle version du document ERDF (Version 5 Mars 2015) la valeur sur laquelle se rapprocher est 2K. Bref ce n’est pas bien grave tant que nous restons au dessus du minimum. Plus on sera “haut” plus nous pourrons brancher d’appareils en parallèle sur la sortie Téléinfo du compteur en gardant un signal correct. Mais alors pourquoi je n’ai pas choisi à l’époque des 4.7K plus proches de la spécification ? Et bien parce çà ne fonctionnait pas. Je n’ai pas cherché plus loin à l’époque, j’aurai peut être du prendre le temps à ce moment là.

Rôle des résistances

  • R1 sert à limiter le courant le courant passant dans l’opto, plus sa valeur est basse plus le courant passant dans l’opto est fort, et donc plus la sortie de l’opto est “puissante” et plus le signal en sortie est “propre”.
  • R2 est une résistance de pull up pour maintenir l’état der sortie à vide (transistor de l’opto non passant) à VCC. Sur un périphérique de réception série 5V (Arduino 5V par exemple) on reliera cette résistance au 5V et sur un périphérique de réception série 3.3V (Raspberry Pi, ESP8266, Spark Core) on reliera cette résistance au 3.3V

A noter que comme la liaison série impose au repos l’état haut à VCC, la plupart du temps les périphériques on déjà une résistance de pull up intégrée sur la ligne RXD et dans la plupart des cas, R2 peut être omise (testé et vérifié sur un Raspbery, Arduino et module FTDI). Seulement parfois leur valeur est assez élevée et même parfois non connue. Donc il est plus sain d’en positionner une (en plus c’est moins sensible aux parasites), une 10K est très bien adaptée.

Influence des résistances

Afin de comprendre ce qui n’allait pas avec mon ESP8266 j’ai du jouer avec R1 et R2 et mon oscilloscope pour comprendre ce qu’il se passait. Dans les graphiques suivant les mesures ont été prise sur les pattes 1 (courbe jaune) et 4 (bleue) de l’optocoupleur.

  • La courbe jaune est réglée à 2V/division
  • La bleue à 1V/division
  • Le 0V est centré au milieu pour les 2 courbes

Je vais donc commencer par le cas le plus défavorable (ok j’ai triché je l’ai su qu’après mes mesures) C’est à dire, R1 à 4.7K (pour se rapprocher de la spécification) et R2 à 1K pour que çà consomme le plus de courant possible, tout est relatif, 3.3mA en 3.3V

R1=4.7K, R2=1K

SFH620 R1=4K7 R2=1K

SFH620 R1=4K7 R2=1K

En absence de modulation le sortie RXD est bien à 3.36V mais en présence de modulation il n’arrive pas à descendre en dessous de 3.08V, Ok on va tester autre chose diminuons R1 à 2.2.K

R1=2.2K, R2=1K

SFH620 R1=2K2 R2=1K

SFH620 R1=2K2 R2=1K

Ah, ce n’est toujours pas çà, mais c’est mieux, Le signal en présence de modulation descends jusque 2.56V. descendons encore R1

R1=1.2K, R2=1K

SFH620 R1=1K2 R2=1K

SFH620 R1=1K2 R2=1K

Pas mieux, Le signal en présence de modulation descends jusque 2.28V mais il oscille. Il est temps d’augmenter R2 à une valeur de pull up plus descente, soit 10K

R1=1.2K, R2=10K

SFH620 R1=1K2 R2=10K

SFH620 R1=1K2 R2=10K

Impeccable, çà fonctionne, le signal descend bien jusque 0.2V, mais çà m’embette un peu, 1.2K sur R1 nous sommes assez loin de la spécification, tachons de la remonter pour voir.

R1=4.7K, R2=10K

SFH620 R1=4K7 R2=10K

SFH620 R1=4K7 R2=10K

Mince, çà ne fonctionne plus, le signal n’est pas terrible mais en plus il ne descend pas en dessous de 2V, que faire ?

Dans de nombreux cas, nous arrivons bien à distinguer le signal mais il ne varie pas entre 0V et 3.3V et n’est donc pas reconnu par les entrées RXD des périphériques. Un transistor ayant sont seuil de déclenchement vers le 0.6V (en gros !!!) lui devrait pouvoir voir le changement donc petit essai vite fait avec ce que j’ai sous la main

Variante à transistor

Un bon MOSFET N en inverseur, toujours une pull up extrême de 1K mais 4.7K sur l’entrée Téléinfo pour se conformer à la spécification. Comme le transistor inverse le signal, j’ai pris soin de l’inverser à la sortie de l’opto. R3 permet à Q1 de ne pas être passant en absence de signal sur sa source. R2 vaut 1K pour la mesure (le pire cas) mais dans le montage final  sa valeur doit être de 10K. J’ai pris un BS170 car j’avais çà sous la main mais n’importe quel mosfet N devrait faire l’affaire.

Montage à transistor

Montage à transistor

Ensuite dans le graphique suivant, la courbe jaune représente le signal en patte 3 (donc avant le transistor) et la bleue toujours RXD

SFH620 R1=4K7 R2=1K + Transistor

SFH620 R1=4K7 R2=1K + Transistor

Bingo !!!! Comme prévu le signal jaune n’est pas assez péchu, 1.24V max (souvenez vous nous l’avons inversé, donc c’est un problème de seuil haut et non pas bas cette fois-ci), mais suffisant pour rendre le transistor passant, du coup, le signal de sortie, lui, varie bien de 0V à 3.3V et çà fonctionne avec une pull up de 1K sur RXD et 4.7K en entrée téléinfo.

Voilà l’objectif et atteint et avec cette version çà fonctionne à tous les coups quels que soit l’entrée de votre périphérique RXD. Attention bien remettre R2 à 10K, cette valeur de 1K était juste pour le pire test !!!

Autre Variante, changer d’optocoupleur LTV-814

J’ai aussi fait des tests avec un autre optocoupleur, le LTV-814 de chez LiteOn qui est bien moins cher en plus. Les tests se sont fait sur la même carte avec les mêmes composants que pour les tests précédents. J’ai enlevé l’étage à transistor de la variante précédente.

R1=4.7K R2=1K

On reprend les tests, souvenez vous avec le SFH620x, le signal de sortie variait entre 3.08V et 3.36V,

SFH620 R1=4K7 R2=1K

SFH620 R1=4K7 R2=1K

LTV-814 R1=4K7 R2=1K

LTV-814 R1=4K7 R2=1K

Regardez, maintenant avec le LTV-814 il varie entre 2.68V et 3.36V, ça ne fonctionne toujours pas, mais c’est mieux et il est possible qu’avec une 10K de pull up, ce soit mieux, faisons ce test immédiatement

R1=4.7K R2=10K

Allez, mettons une pull up plus classique sur la sortie : 10K, encore une fois souvenez vous avec un SFH620

SFH620 R1=4K7 R2=10K

SFH620 R1=4K7 R2=10K

Et maintenant avec le LTV-814

LTV-814 R1=4K7 R2=10K

LTV-814 R1=4K7 R2=10K

Re-Bingo !!!!!, non seulement cet optocoupleur est moins cher, mais en plus il fonctionne mieux pour notre cas, à même courant d’entrée il commute bien mieux et son signal de sortie est bien plus propre.

Conclusion

Nous arrivons à la fin de cet article, et je pense que les graphiques parlent d’eux-mêmes. Pour pallier à tout problème potentiel du décodage de la Téléinfo, remplacez ce bon vieux SFH620x par un LTV-814, c’est mieux et moins cher !!!! Et si vous rencontrez encore des soucis (ce dont je doute) la solution ultime est d’ajouter l’étage à MOSFET derrière le LTV-814. Bien que ne rencontrant aucun soucis, par mesure de sécurité et de coût, les nouvelles versions des cartes MicroTeleinfo et PiTinfo, tout comme le nouveau bébé à base d’ESP8266 seront dorénavant équipée de cet optocoupleur.

J’ai vraiment souhaiter faire cet article afin que passionnés que nous sommes, puissions enfin comprendre (enfin pour ceux qui comme moi ne maîtrisions pas) les différentes variantes du décodage de le Téléinfo avec un optocoupleur. Si j’ai pu en éclairer ne serait-ce que quelques-un, l’objectif est atteint.

N’hésitez pas à venir en discuter sur la communauté dédié ici

Edit du 06 Juillet 2015

Aujourd’hui j’ai encore rencontré le problème de réception aléatoire, même avec un LTV-814 et R1=4.7K et R2=10K.

C’est assez curieux, çà va bien marché pendant des heures puis après, ça se met à délirer pendant un certain temps avant de redevenir normal. J’ai même réussi une capture on voit parfaitement le problème qui est relativement furtif, c’est environ 2% du temps durant lequel la sortie ne descend pas à 0V.

Problème avec LTV-814 R1=4K7 R2=10K

Problème avec LTV-814 R1=4K7 R2=10K

Un autre utilisateur (@Overcrash86) n’a pas eu le moindre soucis avec un SFH620 et un ESP8266 (quoiqu’il faut le voir ce foutu problème), c’est super curieux. En fait, je fais clignoter une LED RGB entre la fin de trame (ETX) et le début de la suivante (STX) et je me suis rendu compte que parfois le clignotement n’était pas régulier et voir la LED clignotait 2 fois. Sans cet indicateur visuel, je n’aurais rien détecté. Peut être que ça vient de ma breadboard, de mes fils, de mauvaise connexions ou autres, je ne sais pas ;-(

Quoi qu’il en soit, j’applique la méthode du risque minimal, ce sera étage à transistor derrière l’opto parce que çà fonctionne à tous les coups.

Edit du 13/10/2015 : Il s’est avéré que dans plusieurs cas ou le montage classique ne fonctionnait pas (remontée de certains utilisateurs), ce montage à transistor fonctionne parfaitement.  La nouvelle version de PITinfo possède maintenant cette modification. Voir le nouvel article dédié ici

 

Charles

You can discuss about this article or other project using the community forum