Electronique > Réalisations > Récepteur télécommande RC5 / RC6

Dernière mise à jour : 30/10/2016

Présentation

Cette réalisation permet de piloter à distance entre un et dix appareils différents, à partir d'une télécommande à infrarouge classique pour TV. Pour éviter (ou tout du moins fortement limiter) les risques de déclenchement intempestifs des appareils pilotés par ce système, la manipulation de la télécommande doit répondre à un impératif strict :
- Appui sur une des touches 0 à 9 de la télécommande pour sélectionner la sortie à activer ou à désactiver;
- Appui sur la touche Play, Volume + ou Programme + (pour mettre en route) ou sur la touche Stop, Volume - ou Programme - (pour arrêter).
Lors de l'appui sur une des touches 0 à 9, une led s'allume pour signaler le mode d'attente de commande marche ou arrêt. Cette led s'éteind dès que la commande marche ou arrêt est reçue, ou si un code non autorisé est réceptionné. Voir aussi la page relative à la génération d'un code RC5 pour simulation dans Proteus / Isis et la page Télécommande - IR - Codes RC5.

Remerciements

Je tiens à remercier sincèrement Dany, qui a écrit le code logiciel de la partie décodage RC5 et RC6. J'y serais sans doute parvenu, mais au terme d'un temps certain, que j'ai pû économiser grâce à lui.
Thanks to Dany, author of RC5 / RC6 decoder software part I used in this project.

Schéma

Le schéma ne montre que la section permettant la réception des signaux infrarouge et leur décodage. La partie commande de puissance devra être adaptée selon le type des appareils à commander (ce point sera vu plus loin).

recepteur_tc_rc5_001

Fonctionnement général
Le logiciel tournant dans le PIC ne fait pas grand chose dans l'attente d'arrivée des signaux infrarouge. Dès qu'une transistion survient sur l'entrée signal (RC5_In), le logiciel stocke tous les changements d'états qui suivent, et une fois le silence revenu, décode les données. Si les données reçues sont conformes à celles attendues, la sortie concernée est activée ou desactivée. Si les données reçues correspondent à un code non utilisé, la led de récepton de données clignote rapidement trois fois de suite.

Décodage RC5 / RC6
Le choix du type de code à décoder (RC5 ou RC6) dépend de la position du cavalier (jumper) JP1 :
- si cavalier côté +Alim (RA5 = +5 V), decodage RC5
- si cavalier côté masse (RA5 = 0 V), decodage RC6
La lecture de la position du cavalier est faite lors de l'initialisation du programme, on ne peut pas changer en cours de fonctionnement.

Etages de sortie
Les sorties du récepteur viennent directement du PIC, il s'agit de sorties TTL capables de travailler sous quelques mA. La commande d'équipements de "forte" consommation pourra être assurée au travers d'interfaces adéquates, tels que relais ou triacs avec optos-triacs.

Prototype

Réalisé sur plaque sans soudure. 

recepteur_tc_rc5_001_proto_001a recepteur_tc_rc5_001_proto_001b

J'ai passé pas mal de temps pour faire fonctionner ce montage, mais maintenant ça y est ! Je suis resté bloqué un bon moment pour une raison toute bête : j'ai utilisé plusieurs télécommandes IR (pour TV, enregistreur DVD, platine K7, ampli HIFI, lecteur CD) et rien ne semblait fonctionner malgré la bonne réception des données au niveau du PIC (j'avais inséré des lignes de code de débugage qui ont bien confirmé la réception des trames). Mais rien à faire, les données attendues n'étaient pas reconnues. Pendant un moment, j'ai eu des doutes sur le récepteur IR utilisé, un SBX1620-52 de Sony. Mais après un rapide tour d'horizon sur le Net, tout ceux qui l'utilisaient en étaient pleinement satisfait. Un phénomène étrange que j'ai mis un bout de temps à m'expliquer, était la réception de données même quand je n'activais aucune touche des télécommandes qui me servaient pour les tests. J'ai observé les signaux en sortie du récepteur IR avec mon oscilloscope numérique et des trames sortaient bien du récepteur, de façon régulière et sans que je fasse rien. A côté de ce phénomène bizarre, je retrouvais bien les trames correspondant aux touches activées sur mes télécommandes, les niveaux étaient bons et les formes très propres. Ayant utilisé au début l'oscillateur interne 4 MHz du PIC, j'ai pensé que le problème pouvait venir d'une précision insuffisante de la fréquence d'horloge. Je suis donc passé au quartz externe de 4 MHz, sans que cela arrange quoi que ce soit. J'ai laissé tombé car j'en avais marre, et ai repris le jouet le lendemain soir, après avoir localisé pas mal de pages sur le Net qui traitait du code RC6. Du coup j'ai eu un doute et j'ai aussi implémenté le code de décodage des trames RC6. Et là Bingo, mon système fonctionne ! Sur les cinq télécommandes testées, quatre émettent des trames RC6 et la dernière des trames que je n'ai pas identifiées (en tout cas pas reconnues par mon système). Quant au générateur de trames IR parasites, j'ai trouvé le fautif peu de temps après. Il s'agissait de mon PC portable posé au-dessus de ma maquette (port IRDA) ! Une fois le PC éteint, tout allait vraiment bien mieux ! Bref, je considère que c'est désormais OK, puisque ça fait ce que je voulais que ça fasse.

Logiciel du PIC

-

Circuit imprimé

Non réalisé.