Projet de télécommande pour PC sur port parallèle

Je décris ici la réalisation d'une télécommande infra-rouge pour PC fonctionnant sur port parallele permettant par exemple de piloter un media player. J'ai codé le logiciel d'interface il y a déjà fort longtemps, ce n'est absolument pas un modèle à suivre. Le code source peut par contre aider à mettre au point un soft d'interface efficace.

Le premier modèle réalisé est une télécommande à 16 touches, malheureusement plutôt chère à réaliser en raison du prix de l'encodeur de clavier nécessaire. C'est pourquoi je propose également une variante à quatres touches seulement, beaucoup moins chère et qui permet tout de même d'avoir les fonctions chaine suivante , chaine précedente, voire contrôle du volume.

Le principe utilisé est le suivant :

Télécommande 16 touches

Il s'agit du premier modèle que j'ai réalisé. Il utilise un clavier à matrice de 16 touches suivi d'un encodeur de clavier. Un émetteur est chargé du codage du mot de 4 bits obtenu, puis le signal codé est modulé et enfin transmis en infrarouge.

Schéma de l'émetteur

Télécommande 4 touches

Version allégée et moins chère que le modèle précédent, dépourvue de clavier.

Emetteur 4 touches

Les versions 16 touches et 4 touches de telecommande.exe fonctionneront avec cet émetteur. En utilisant telecommande.exe (16 touches) il sera possible d'exciter toutes les commandes de 0 à 15 par des combinaisons des quatres touches de l'émetteur.
Exemple :
En appuyant simultanement sur les touches 0 et 3, on simulera le code correspondant à la touche 9.

Récepteur

Schéma du récepteur

Explications

Fonctionnement de l'émetteur :

Le circuit MM74C922 est un encodeur de clavier matriciel. Il transforme les informations sur les 8 broches du clavier en un mot de quatres bits représentatifs de la touche pressée (Da..Dd). Il dispose d'un circuit anti-rebond (pour éviter qu'une pression sur une touche soit interprétée comme une succession de plusieurs pressions) paramétré par la capacité sur KBM (Ce circuit est en fait un circuit RC composé de Ckbm et d'une résistance interne de 5kOhms). Cette valeur est importante car elle fixe le temps de réponse du système à une pression sur une touche.

La fréquence d'interrogation du clavier est fixée par la capacité sur OSC (ici 100 Hz pour une valeur de 1uF). Enfin, la donnée n'est validée en sortie que si OE (patte 13) est à l'état bas. Sinon, les sorties sont à l'état haute impédance.

La sortie DAck passe à l'état haut lorsqu'une touche est pressée. En la reliant à OE via un inverseur, les données sont autovalidées à chaque pression d'une touche.

Le circuit encodeur utilisé est un très classique MC145026 permettant de coder 4 bits sur une adresse de 5 bits. Hum, les valeurs utilisées ici pour l'oscilateur sont un peu étranges, mais c'est ce que j'avais sous la main au moment de la réalisation. Il reste bien sur possible d'utiliser des valeurs normalisées dans la gamme E22 à partir du moment ou elles sont proches des valeurs présentées ici.

Le modulateur est réalisé à partir d'un NE555 monté en oscillateur à 36kHz (environ, hein). En effet, le 555 est capable de fournir jusqu'à 200mA ce qui est plus que suffisant pour une bonne portée.

Datasheets des composants utilisés :

MM74C922.pdf (encodeur de clavier)
mc145026rev3.pdf (MC145026/27) codeur/décodeur 4 bits
NE555.pdf composant à tout faire

Fonctionnement du récepteur :

Les circuits de réception/démodulation infrarouges ne sont vraiment pas cher, alors pourquoi s'en priver ? J'utilise ici un LTM8848, mais n'importe quel récepteur fonctionnant à 36kHz et sous 5volts fera aussi bien l'affaire.

Ce récepteur inverse la signal émis, il faut donc sacrifier un autre inverseur 4011 pour attaquer l'entrée du décodeur associé au MC145026 : le MC145027. Le décodeur dispose d'une sortie indiquant la réception d'une trame. On utilise ce signal pour allumer une led Verte du plus pur style, et pour indiquer au PC qu'une touche est pressée. Le mot de 4 bits est transmis sur les lignes d'entrée du port parallèle.

Réalisation

Photos de ma réalisation :
Emetteur
Emetteur dans son boitier
Télécommande dans un vrai boitier.
Récepteur
Cable de liaision

Conseils de réalisation :

Utiliser une adresse d'émission avec beaucoup de "un" logiques, ce qui évite la fuite de courant à travers les pull-ups des switchs.
Au lieu de 2.2k pour les pull-ups, utilisez des valeurs plus élevées. Attention cependant à ne pas trop monter (50k maximum).
Réduire la fréquence de scan du clavier en augmentant la valeur de la capa sur OSC.
Ne pas cabler les pulls ups optionnels.
Utiliser un interrupteur sur la pile.

Au passage : L'auteur ne saurait en aucun cas être tenu responsable de dommages causés au matériel de l'utilisateur, à son chien, ni des émissions radioactives et de gaz toxiques résultant de la réalisation de cet apareil :)

Nomenclature :

Référence Désignation Quantité
LTM8848 Récepteur infrarouge 1
MC145027 Décodeur 4 bits 1
MC145026 Encodeur 4 bits 1
4011 4 Inverseurs CMOS 2
2N2222 Transistor NPN 1
MC74C922 Encodeur de clavier 4x4 1
NE555 Bidule multi-usage 1
LED IR   1
LED VERTE   1
Résistances :    
470 - 1/4W   1
1k - 1/4W   1
170k - 1/4W   1
330k - 1/4 W   1
10k - 1/4W   1
18k - 1/4W   1
4k7 - 1/4W   1
56 - 1/2W   1
91k  ou bien 100k 1
43k  ou bien 47k 1
Reseau SIL 2.2k*5  avec commun 2
Reseau SIL 2.2k*4  (optionnel) 1
Capas:   1
0.1u   1
0.01u   2
1nF   1
1u   1
10u   1
Divers :    
Clavier 4x4 à matrice X-Y 1
Commutateur DIL 5 contacts 2
Connecteur SUB-D 25 broches + capot   1
     
     

Suggestions, remarques, questions, menaces de mort : dgouarin@free.fr