Contexte
L’article précédent (« Le bornier téléinfo ») a posé le décor : le compteur expose une sortie de téléinformation client (TIC) sur ses bornes I1–I2, et le signal qui y est présent est modulé sur une porteuse à 50 kHz. Brancher directement ces bornes sur un UART de Raspberry Pi ne donne rien d’exploitable — il faut d’abord démoduler.
Cet article décrit pourquoi cette modulation existe, comment elle fonctionne, et comment réaliser l’interface qui convertit le signal TIC en signal TTL lisible par un microcontrôleur.
Comprendre l’ASK depuis zéro
Pourquoi une modulation ?
Sur un bus de quelques centimètres entre deux puces, on transmet un bit en mettant la ligne à 0 V (logique 0) ou à 3,3 V (logique 1). Ça marche parce qu’il n’y a presque pas de bruit et que la ligne est courte.
Sur un bus de plusieurs mètres dans un tableau électrique — environnement bruyant, parasites du secteur 50 Hz, harmoniques de découpage — un signal aussi simple serait noyé dans le bruit. La solution classique consiste à transporter l’information sur une onde porteuse de fréquence bien plus élevée que le bruit ambiant : à la réception, on filtre tout ce qui n’est pas à la fréquence porteuse, et il ne reste que le signal utile.
C’est exactement le principe de la radio AM : la voix (quelques kHz) est portée par une onde radio (quelques centaines de kHz à plusieurs MHz). La TIC fait pareil, en plus modeste : la porteuse est à 50 kHz.
ASK : Amplitude Shift Keying
Pour encoder du binaire sur une porteuse, il y a plusieurs stratégies, qui se distinguent par ce qu’on fait varier :
- ASK (Amplitude Shift Keying) : on fait varier l’amplitude de la porteuse.
- FSK (Frequency Shift Keying) : on fait varier sa fréquence.
- PSK (Phase Shift Keying) : on fait varier sa phase.
La TIC utilise l’ASK, dans sa forme la plus simple (modulation à 100 %, dite On-Off Keying) :
| Bit logique | Signal sur la ligne |
|---|---|
| 1 | Porteuse éteinte — 0 V |
| 0 | Porteuse active — sinusoïde à 50 kHz, ~10 V crête |
Autrement dit : la porteuse joue le rôle d’« encre ». Quand elle est présente, c’est un 0 ; quand elle est absente, c’est un 1.
Cette inversion (présence de signal = 0) surprend souvent. Elle vient d’une logique combinatoire négative côté réception, qu’on retrouvera plus loin sur la sortie de l’optocoupleur.
À 1200 bauds, à quoi ça ressemble ?
En mode historique, un bit dure 1/1200 ≈ 833 µs. Pendant ce temps, la porteuse à 50 kHz oscille environ 42 fois. Pour un « 0 », on voit donc une rafale de ~42 sinusoïdes ; pour un « 1 », on voit rien (ligne au repos).
C’est ce que doit séparer le circuit de démodulation : transformer ces rafales en niveaux logiques propres.
Schéma de l’interface
Le schéma de référence dans la communauté est celui de Charles Hallard (hallard.me). Il combine deux étages : un optocoupleur (démodulation et isolation) et un MOSFET (mise en forme).
Contraintes à respecter
Avant d’attaquer le schéma, trois contraintes imposées par Enedis :
- Charge maximale 2 kΩ sur le circuit I1–I2. Au-delà, on charge trop la sortie du compteur et le signal se dégrade.
- Tenue secteur 230 V / 50 Hz : l’isolation du récepteur doit supporter un branchement accidentel sur le secteur, sans destruction ni propagation du défaut. C’est ce qui impose une isolation galvanique entre la TIC et l’électronique numérique — donc un optocoupleur.
- Protection contre les court-circuits côté récepteur.
Étage 1 — Optocoupleur (démodulation + isolation)
Un optocoupleur du type SFH620 ou équivalent reçoit le signal modulé sur sa diode d’entrée, à travers une résistance de limitation. Le transistor de sortie commute au rythme des rafales de porteuse :
- Pendant un « 0 » TIC (porteuse active) : la diode reçoit ~42 impulsions sur 833 µs, le transistor conduit.
- Pendant un « 1 » TIC (silence) : la diode n’est pas alimentée, le transistor reste bloqué.
L’optocoupleur joue donc deux rôles à la fois :
- Isolation galvanique entre la TIC et l’électronique numérique (sécurité).
- Démodulation par enveloppe : le transistor « voit » la présence ou l’absence de porteuse, ce qui suffit à reconstituer les bits.
La capacité parasite du transistor combinée à une résistance de pull-up forme un filtre passe-bas qui lisse les 42 impulsions en un niveau continu sur la durée d’un bit.
Étage 2 — MOSFET de mise en forme
L’expérience montre que le signal en sortie d’optocoupleur seul est utilisable avec un Raspberry Pi 2 (entrées tolérantes, ligne courte), mais pas avec un ESP8266 ou ESP32 : fronts mous, niveaux mal définis, erreurs de trame à 9600 bauds en mode standard.
Un transistor MOSFET N (par exemple BS170) en sortie d’optocoupleur résout le problème :
- Mise en forme : reconstitue un signal carré aux niveaux 0 V / Vcc bien définis.
- Inversion de polarité : compense l’inversion introduite par la chaîne opto, pour retomber sur la convention attendue côté UART (repos = niveau haut).
- Fronts raides : indispensable à 9600 bauds, où un bit ne dure plus que 104 µs.
- Charge minimale sur le compteur : le MOSFET découple l’étage TIC du microcontrôleur ; la TIC ne voit que les résistances d’entrée.
Liste du matériel
- Plaque pré-percée (ou PCB dédié)
- Optocoupleur SFH620 ou équivalent (LTV-817, 4N35…)
- Transistor MOSFET N BS170 (ou équivalent logic-level)
- 2 à 3 résistances (valeurs selon schéma Hallard)
- Bornier à vis pour le raccordement au compteur
- Câble paire torsadée entre le compteur et l’interface (voir l’article bornier pour les spécifications)
- Câbles Dupont pour le Raspberry Pi / ESP
Vérification du signal
Une fois l’interface en place, le test le plus simple est de lire /dev/ttyAMA0 (Raspberry Pi) ou la sortie UART de l’ESP. La configuration série (1200 7E1 en mode historique) est détaillée dans l’article suivant sur le protocole TIC.
Pour un test rapide :
stty -F /dev/ttyAMA0 1200 cs7 parenb -parodd -cstopb
cat /dev/ttyAMA0
On doit voir défiler des trames ASCII lisibles, encadrées par des caractères de contrôle, avec des étiquettes comme ADCO, OPTARIF, ISOUSC, IINST, PAPP…
Symptômes de problème :
- Rien ne sort : vérifier le câblage
I1–I2(et pasI1–A), la polarité de l’optocoupleur, l’alimentation du MOSFET. - Binaire incohérent : vérifier le mode du compteur (historique vs standard) et le débit correspondant.
- Caractères corrompus aléatoirement : front de signal trop mou — soigner l’étage MOSFET ou ajuster la résistance de pull-up.
Suite
L’interface fournit désormais un flux série TTL propre. La suite, c’est le décodage logiciel des trames ASCII — c’est l’objet de l’article sur le protocole TIC, qui détaille la structure des trames, les étiquettes, et le calcul du checksum.
Commentaires
Aucun commentaire pour l'instant. Soyez le premier !
Laisser un commentaire