Dernière mise à jour :
13/08/2017
Présentation
Cette
télécommande
permet de mettre en ou hors fonction entre 1 et 10 équipements à distance (dans un même bâtiment) en se
servant du réseau EDF comme support de transmission.
Le
principe consiste à envoyer des ordres de
commandes sur les lignes du secteur, c'est à dire superposés à la
tension 230 Vac. Ces commandes sont
constituées d'impulsions de fréquence élevée (150 kHz)
délivrées sous formes de petits paquets (chaque paquet correspond à un
bit de données) eux-mêmes délivrés à une vitesse modeste (1200 bits par
seconde). Les données de commande peuvent circuler librement dans un
même bâtiment, mais sont bloquées par le compteur EDF et ne peuvent
aller au-delà.
Avertissements
Ce montage est relié sur le secteur EDF.
- Merci de lire cette page d'avertissement
avant de continuer. Ne
pas aller plus loin sans avoir lu et compris cet
avertissement !
- Le bon fonctionnement de cette télécommande dépend des
installations électriques. Il faut que la ligne de phase de
l'installation électrique
générale soit la même
côté émission et côté réception. Attention donc aux
installations triphasées avec des phases différentes dans les
diverses pièces ou étages... (ça existe, je me suis fait avoir).
- Certains
composants de ce montage sont "critiques" d'un point de vue
sécurité utilisateur (condensateurs de liaison sur fils secteur). Il
est hors de question de chercher à les remplacer par des
composants autres plus économique.
- Aucune modification ne doit être apportée à ce montage, à
moins de parfaitement savoir ce que vous faites.
- Ne pas utiliser ce genre de télécommande pour des
applications critiques - vous seuls étant juge
pour apprécier le mot "critique".
- La
fréquence du signal porteur de 150 kHz se situe au dessus de la
fréquence utilisée pour le CPL du compteur EDF Linky (qui transmet
ses données entre minuit et 6h du matin). A priori pas de risque d'incompatibilité.
Principe général
Le système est composé d'un émetteur et d'un récepteur, distants l'un
de l'autre mais reliés sur un même réseau de distribution électrique
230 V (dans une même habitation).
L'émetteur
comporte un générateur HF (Haute Fréquence) qui délivre un
signal "porteuse" de 150 kHz découpé (hâché) par un signal BF
(Basse Fréquence) composé d'un train de bits, à la vitesse de 1200
bauds (1200 bits par seconde). Ce train contient les informations
de commande qui sont de simples valeurs numériques comprises entre
1
et 255 (codage série "standard" 8 bits data, parité paire).
Le
récepteur
effectue un filtrage rigoureux pour séparer (extraire) les signaux de
télécommande (quelques dizaines ou centaines de mV, 150 kHz)
de la tension du
secteur (230 Veff /
50 Hz). Comme on peut aisément l'imaginer, une très bonne
séparation de ces deux signaux très différents (en amplitude et en
fréquence) est requise. Et comme on travaille sur les lignes du secteur
230 V, on ne peut pas faire n'importe quoi avec n'importe quel type de
composant !
Autre support de transmission que les fils du secteur ?
Il
est tout à fait possible d'utiliser un lien de transmission autre
que le secteur 230 V, par exemple une ligne bifilaire ou une liaison
optique (infrarouge ou laser visible). Comme les signaux transmis
sont de nature alternative, le lien peut aussi bénéficier
d'une
isolation galvanique par optocoupleur ou transformateur, ce dernier
devant bien sûr pouvoir fonctionner à la vitesse du signal "porteuse"
de
150 kHz.
Schéma(s)
L'ensemble est scindé en deux schémas, un pour l'émetteur et l'autre
pour le récepteur, chacun avec sa propre alimentation.
Emetteur
Le donneur d'ordres est basé sur un PIC 16F628A, qui élabore en
même temps un signal "porteuse" à 150 kHz et les signaux de commande
qui découperont cette porteuse.
La porteuse de 150 kHz
(ligne libellée PWM sur le schéma) est élaborée par le module CCP/PWM du PIC, et les signaux de
commande (ligne libellée Tx) sont construits avec le module UART du même PIC. La
pression d'un des boutons-poussoirs active l'émission de la porteuse et
la découpe selon un rythme qui dépend de la touche enfoncée. Le fait de
disposer de deux sorties distinctes "PWM 150 kHz" et "Tx Data" alors que le
PIC pourrait tout à fait délivrer un signal unique "tout en un" (sur une seule broche de sortie) a
été dicté par deux idées :
- pouvoir vérifier le fonctionnement de la partie
codage/décodage des données sans passer par le signal porteuse 150 kHz
(sortie Tx de l'émetteur reliée directement à l'entrée Rx du récepteur). Utile pour la mise au point.
- ouverture plus large vers l'expérimentation d'autres circuits HF ;-)
Le principe de fonctionnement de la télécommande est des plus simples :
- Pour activer une des sorties du récepteur, il faut appuyer sur la
touche SW1 à SW10 correspondante de l'émetteur (touche SW2 de l'émetteur pour activer la sortie 2
du récepteur, par exemple)
- Pour désactiver une des sorties du récepteur, il faut appuyer sur
la touche
correspondante tout en maintenant la touche SW11/Off enfoncée
(touches OFF et SW2 de l'émetteur pressées en même temps pour désactiver
la sortie 2 du récepteur, par
exemple)
- Pour désactiver en même temps toutes les sorties du
récepteur, il faut appuyer sur la touche SW12/AllOff de l'émetteur.
Les données émises répondent aux critères suivants :
- chaque commande d'acivation ou de désactivation est
composée d'un seul octet (8 bits)
- le bit de poids fort (bit#7) indique s'il s'agit d'une
commande d'activation ou de désactivation. 0 = désactivation, 1 =
activation.
- les 4 bits de poids faible (bits #3 à #0)
correspondent au numéro des sorties à activer ou désactiver (1 = sortie
#1, 2 = sortie #2, etc). Le code 0 indique que toutes les sorties
doivent être désactivées (pression de la touche SW12/AllOff)
- les codes de commande sont transmis tant qu'une des touches
de l'émetteur est pressée (sauf touche OFF seule), à un rythme de 4 envois du même code par seconde.
Exemples :
- Activation sortie 3 : valeur envoyée = 131(dec) = 0x83(hex)
= $83(hex) = %10000011(bin)
- Désactivation sortie 3 : valeur envoyée = 003(dec) =
0x03(hex)
= $03(hex) = %00000011(bin)
- Activation sortie 8 : valeur envoyée = 136(dec) = 0x88(hex)
= $88(hex) = %10001000(bin)
- Désactivation sortie 10 : valeur envoyée = 010(dec) =
0x0A(hex)
= $0A(hex) = %00001010(bin)
- Désactivation de toutes les sorties : valeur envoyée =
000(dec)
= 0x00(hex) = $00(hex) = %00000000(bin)
Valeurs simples à vérifier, le cas échéant ;-)
Lecture clavierLa lecture des touches du clavier de commande se fait de façon
multiplexée (scan), les touches sont analysées à tour de rôle. Si le
logiciel détecte qu'une touche est enfoncée, alors seulement il entame
une procédure de vérification :
- si la touche enfoncée ne l'était pas au précédent scan, alors le
logiciel ne fait rien
- si la touche enfoncée l'était déjà au précédent scan, alors le
logiciel avance d'un pas dans la procédure d'envoi de la commande
Il faut donc deux résultats de scan identiques pour considérer qu'il y a
bien demande d'action, c'est un anti-rebond logiciel.
Afin
d'éviter tout dommage du port A du PIC en cas d'appui simultané sur
plusieurs touches, chaque bouton-poussoir possède sa propre diode
"anti-retour" câblée en série avec lui (cathode vers le port A via
l'interrupteur associé, et anode vers le port B).
Section HF - Superposition des données de télécommande au réseau 230 VLes
données PWM 150 kHz sont transmises sur le réseau secteur via le
transistor Q101, la résistance R103 et les deux condensateurs C106 et
C107. Pour que les signaux alternatifs parviennent du transistor au
réseau 230 V, il faut que Q101 "suive" les signaux PWM mais seulement
quand des données de commande doivent être transmises. C'est là
qu'interviennent les deux diodes D106 et D107. Au repos (aucune touche
pressée), la sortie Tx est à l'état logique haut, ce qui entraîne la
conduction permanente de Q101, et du coup il n'y a aucun signal HF
envoyé sur le réseau. Quand une touche est pressée, la sortie Tx
présente un ou plusieurs états logiques bas durant la période
d'émission du code de commande. Cela permet au signal PWM de piloter le
transistor Q101 qui s'en donne alors à coeur joie pour transmettre son
signal amplifié sur le réseau secteur. Si on retire la diode D106,
alors le signal HF est émis en permanence (utile à savoir lors de la
mise au point). Les condensateurs C106 et C107 sont raccordés en
permanence au secteur, ce qui justifie leur classe X2 (impératif).
Récepteur
La tâche du récepteur est double, son étage "réception des données"
doit :
-
réduire au maximum l'amplitude du signal 230 V 50 Hz qui est présent en
permanence, tout en amplifiant le signal de 150 kHz provenant
de
l'émetteur (signal dont l'amplitude peut varier dans de grandes
proportions, et généralement fort affaibli).
- extraire l'information "basse fréquence" de modulation de la porteuse
150 kHz (données à 1200 bauds) pour la "décoder".
Section HF - Récupération des signaux HF de télécommandeLa
première action du récepteur est de séparer le 230 V / 50 Hz et les
données HF transmise par l'émetteur, action réalisée avec
plusieurs filtres. Une fois les données HF de télécommande récupérées,
il faut en extraire les informations utiles (code émis à la
vitesse de 1200 bauds). Mais avant d'en arriver là, causons d'abord un
peu des filtres, fréquences et amplitudes.
Prenons
comme hypothèse que le signal HF de 150 kHz possède
une amplitude de 500 mV crête à crête. Pour pouvoir l'exploiter (en
extraire les données utiles), il
nous faut l'amplifier dans un rapport d'au moins 10 fois
(+20 dB). L'amplification est confiée à un AOP
qui doit présenter un produit gain-bande asssez élevé (minimum 2 MHz),
inutile de
songer à utiliser un LM741. En même temps, la tension
secteur 230 V, qui est ici considérée comme
"parasite", doit posséder une amplitude au moins 100
fois moindre que celle du signal HF. L'atténuation nécessaire est de 1
million de fois (-120 dB), mais pas seulement à la fréquence de 50
Hz car il
faut aussi tenir compte des harmoniques (100 Hz, 150 Hz,
200 Hz, etc).
Cette tâche qui peut sembler "énorme" n'est finalement pas si ardue,
car
l'espace fréquentiel qui sépare les zones 50 Hz et 150 kHz
est ample. Cela
permet d'utiliser de simples filtres passifs de type passe-haut (ou
coupe-bas) dont la fréquence de coupure est située autour de
100
kHz. En procédant ainsi, le signal sera très fortement atténué à 50 Hz,
même avec des filtres à pente légère (de 6 dB/octave). Ici,
on parvient à une atténuation
suffisament élevée pour que le résidu de 50 Hz soit noyé dans le bruit
et donc plus mesurable (l'atténuation
peut être estimée à environ 180 dB à
50 Hz et environ 140 dB à 200 Hz).
Traitement du signal HF récupéréUne
fois débarrassé du secteur 230 V / 50 Hz, on dispose d'un signal de
150 kHz hâché au
rythme du "code" de la télécommande. Le récepteur doit transformer les
trains d'impulsions 150 kHz reçus en données utiles, exploitables par
le PIC.
La encore nous faisons appel à du filtrage, où l'on doit désormais
conserver les ordres émis à faible vitesse (1200 bauds)
tout en atténuant le plus possible le signal porteuse de
150 kHz.
Pour cela, on procède à un redressement du signal alternatif suivi d'un
filtrage passe-bas (coupe-haut), comme on le fait avec une
alimentation secteur linéaire
(pont de diodes et condensateur en sortie d'un transformateur abaisseur
de tension). Le signal résultant du redressement et du
filtrage est ensuite confié à un comparateur de tension, dont
la sortie délivre alors des signaux
logiques "propres". Malheureusement à ce stade, notre signal n'est pas
entièrement
débarrassé de sa porteuse 150 kHz, il en reste un petit
résidu. Bien que ce résidu soit d'amplitude modeste, il peut
causer des changements d'états logiques indésirables qui risquent de
perturber la logique de décodage du PIC. C'est pourquoi le comparateur
de tension est câblé en comparateur avec hystérésis, qui permet de
disposer de seuils haut
et bas de valeurs différentes. Cet hystérésis est ici de 0,4 V environ,
ce qui
suffit pour "masquer" le résidu de porteuse. En clair, le signal en
sortie du comparateur de tension avec hystérésis est propre et
apte à
être envoyé à l'entrée du module UART du PIC qui en assurera le
décodage.
Beaucoup de théorie, mais par rapport au schéma ?Le
signal HF est prélevé sur le réseau 230 V grâce aux deux condensateurs
C206 et C207, impérativement de classe X2 car reliés en permanence au
secteur, associés à la résistance R201. Ces trois composants
forment un premier filtre, de type passe-haut (coupe-bas). A ce
stade, la tension résiduelle de 50 Hz ne dépend que de la valeur
de R201, qui dans tous les cas doit être faible (grand maximum 220
ohms). Le signal présent aux bornes de R201 est ainsi composé d'une
sinus 50 Hz de quelques volts d'amplitude, et du signal HF de
télécommande (quand ce dernier est transmis, cela va de soi). Un second
filtre passe-haut composé de C208/R202 et C209/R203 atténue encore plus
le signal 50 Hz, tout en n'atténuant très peu le signal utile à
150 kHz. Les deux diodes D205 et D206 écrêtent les signaux dont
l'amplitude dépasse environ 1 Vpp. Notez au passage l'usage d'une diode
Schottky en inverse et d'une diode signal silicium classique en direct.
Le signal éventuellement ecrêté est ensuite amplifié dans un rapport de
10, par l'AOP U203. S'ensuit un redressement du signal amplifié, par
les diodes D207 et D208, C212 assurant l'intégration des alternances
positives résultantes (fréquence 300 kHz). A ce stade, nous disposons
d'un signal qui se rapproche du signal "code" délivré en sortie Tx
du PIC de la télécommande, mais avec encore trop d'imperfections.
Le comparateur de tension U204 se charge de nettoyer tout ça, en
fournissant un signal "code" parfait et correctement reconnu par le PIC
qui n'attend que lui. Le reste n'est que du logiciel.
Remarque :
le récepteur ne prend en compte un ordre de commande que s'il
a reçu deux fois de suite le même message.
Quelques "relevés" de simulation
Le graphe suivant donne une idée de l'allure et de l'amplitude des signaux, en différents points du montage.
Remarque
: pour disposer de traces séparées (non superposées) dans le graphe,
j'ai ajouté un offset de tension continu pour chacune d'elles (dans le
graphe lui-même, pas dans le schéma du circuit). L'amplitude des traces
est respectée, mais pas leur position verticale. Par exemple, j'ai
ajouté +10 Vdc à la trace TP4 (en violet), une valeur affichée de
+10 V correspond donc à une valeur réelle de 0 V, et une valeur
affichée de +14 V correspond à une valeur réelle de +4 V.
Conseil / rappel : la
validation du fonctionnement des logiciels émetteur et récepteur peut
être effectuée sans raccordement au réseau secteur. Il suffit
d'alimenter les PIC émetteur et récepteur sous une tension de +5 Vdc,
et de relier directement la sortie Tx du PIC émetteur à l'entrée Rx du PIC
récepteur.
Relevés avec ensemble raccordé au secteurAmplitude notée en Vdc = tension continue
Amplitude notée en Vpp = tension alternative crête-à-crête (
peak-peak)
- Tx
: signal issu du module UART du PIC émetteur. Amplitude 0/+5 Vdc.
Signal présent uniquement quand on envoie un ordre au récepteur, et
donc quand on presse une des touches de l'émetteur. Durée d'un ordre de
télécommande = 6,6 ms (vitesse transmission 1200 bauds).
- PWM : signal issu du module CCP du PIC émetteur. Fréquence 150 kHz, amplitude 0/+5 Vdc.
- Ph
: signal HF (découpé au rythme du signal Tx) superposé au réseau 230 V.
Amplitude quelques centaines de mVpp à quelques Vpp (par exemple
3 Vpp). La mesure en ce point doit obligatoirement se faire avec
une sonde différentielle d'oscilloscope. Il est interdit de relier un oscilloscope avec une sonde standard à cet endroit.
- TP1 : signal HF (découpé au rythme du signal Tx). Amplitude comprise entre 100 mVpp et 1 Vpp.
- TP2
: signal HF (découpé au rythme du signal Tx). Amplitude comprise
entre 4 Vpp et 5 Vpp. L'amplitude du signal en ce point doit être d'au
moins 4 V.
- TP3 et TP4
: signaux HF redressés et filtrés, petit résidu de HF sur TP3,
quasiment plus de résidu en TP4. L'amplitude du signal en ces deux
points doit être d'au moins 3,5 V.
- Rx
: signal logique reconstitué après passage dans comparateur de tension
avec hystérésis. Amplitude 0/+5 Vdc. La durée des 0 et des 1 n'est pas
rigoureusement identique à celle côté émission, mais cela n'est pas
critique ici, le PIC les décode très bien.
Surtout, n'oubliez pas que l'ensemble est raccordé au secteur !!!
Circuit imprimé
Non réalisé. Vue 3D uniquement pour aperçu général.
Logiciel des PIC
Les fichiers binaires compilés (*.hex) sont
disponibles
dans l'archive suivante.
Télécommande 007 - PIC 16F628A - 13/08/2017
Si
vous souhaitez recevoir par la poste un PIC préprogrammé
et prêt à utiliser, merci de consulter la page
PIC - Sources.
Historique
13/08/2017
- Première mise à disposition.