Ce montage a base d'un microcontroleur PIC16F84 (voir la section sur les PIC à la
rubrique cours) est capable de memoriser jusqu'a 4 codes de telecommandes Infra rouge
(televisions, chaines, magnetoscopes, ...), et ainsi de piloter quelques appareils
(reglage du volume, changement de chaine, ...)
Le montage est tres petit, puisqu'il ne mesure que 3 * 7 cm. Je l'ai testé avec succés
avec les telecommandes de marque suivante:
Philips, Grundig, Kenwood, JVC, Akai, Goldstar, Technics, Panasonic. Il doit pouvoir
fonctionner avec presque toutes les marques.
Par contre il ne peut pas fonctionner avec les telecommandes de voiture, en effet leur
code est beaucoup trop long pour la memoire du PIC.
Prix de revient:
ordre d'idée: à partir de 60F environ (10Euros).
ordre d'idée: à partir de 60F environ (10Euros).
Quelques images des codes de
differentes telecommandes (relevés à l'oscilloscope): (Base de
temps: 2ms/division)
Ci dessus, le code d'une telecommande Philips. (Touche pour augmenter le volume). Ce code
est du type RC-5
Ci dessus le code d'une telecommande Kenwood. (Touche pour augmenter le volume). Ce code
est du type REC-80.
Ci dessus le code d'une telecommande Technics. (Touche pour augmenter le volume). Ce code
est du type REC-80, mais il est bien plus long en terme de nombre de bits que le
precedent; ce qui fait qu'on ne peut pas memoriser 4 touches dans la memoire du PIC, mais
seulement 2 si on a ce type de telecommande.
Vous l'aurez remarqué, il existe deux normes de codage, (RC-5 et REC80), mais en plus le
codage differe en terme de vitesse et de nombre de bits entre chaque telecommande. Ceci ne
rend pas la memorisation du code facile, car il faut non seulement memoriser tous les
bits, mais en plus il faut memoriser la vitesse d'emission.
Comme si ca ne suffisait pas, il y a une porteuse à environ 40kHz lorsque la telecommande
emet un niveau haut (voir image ci dessus). Cette porteuse permet au recepteur d'éviter
les parasites dus aux néons, .... Le probleme, c'est qu'il faut recreer cette porteuse
avec le PIC pour que le recepeur réagisse!
differentes telecommandes (relevés à l'oscilloscope): (Base de
temps: 2ms/division)
Ci dessus, le code d'une telecommande Philips. (Touche pour augmenter le volume). Ce code
est du type RC-5
Ci dessus le code d'une telecommande Kenwood. (Touche pour augmenter le volume). Ce code
est du type REC-80.
Ci dessus le code d'une telecommande Technics. (Touche pour augmenter le volume). Ce code
est du type REC-80, mais il est bien plus long en terme de nombre de bits que le
precedent; ce qui fait qu'on ne peut pas memoriser 4 touches dans la memoire du PIC, mais
seulement 2 si on a ce type de telecommande.
Vous l'aurez remarqué, il existe deux normes de codage, (RC-5 et REC80), mais en plus le
codage differe en terme de vitesse et de nombre de bits entre chaque telecommande. Ceci ne
rend pas la memorisation du code facile, car il faut non seulement memoriser tous les
bits, mais en plus il faut memoriser la vitesse d'emission.
Comme si ca ne suffisait pas, il y a une porteuse à environ 40kHz lorsque la telecommande
emet un niveau haut (voir image ci dessus). Cette porteuse permet au recepteur d'éviter
les parasites dus aux néons, .... Le probleme, c'est qu'il faut recreer cette porteuse
avec le PIC pour que le recepeur réagisse!
Schéma:
Voici le schema relativement simple de la telecommande:
Description du schema de gauche à droite:
~ On a tout d'abord la partie receptrice avec une diode infra rouge branchée sur un
darlington PNP (T1+T2) pour amplifier fortement en courant. Le tout va sur une entrée
trigger du PIC (patte 3)
~ On trouve ensuite la partie emission, avec T4 qui est commandée par la patte 6 du PIC.
T4 sert à recreer le code en lui meme. T5 quant à lui sert à recreer la porteuse. Il
est commandé par la patte 7 du PIC.
nb: je ne sais pas s'il fallait faire comme ca pour recreer la porteuse, mais l'essentiel
c'est que ca marche!
~ A droite du PIC, on trouve deux LED pour indiquer les differents etats de la
telecommande (programmation, ...).
~ Le fait qu'il n'y ait pas de resistance de rappel pour les interrupteurs n'est pas une
erreur de ma part! En effet elles sont deja incluses dans le PIC, il suffit de les
activer.
~ On a tout d'abord la partie receptrice avec une diode infra rouge branchée sur un
darlington PNP (T1+T2) pour amplifier fortement en courant. Le tout va sur une entrée
trigger du PIC (patte 3)
~ On trouve ensuite la partie emission, avec T4 qui est commandée par la patte 6 du PIC.
T4 sert à recreer le code en lui meme. T5 quant à lui sert à recreer la porteuse. Il
est commandé par la patte 7 du PIC.
nb: je ne sais pas s'il fallait faire comme ca pour recreer la porteuse, mais l'essentiel
c'est que ca marche!
~ A droite du PIC, on trouve deux LED pour indiquer les differents etats de la
telecommande (programmation, ...).
~ Le fait qu'il n'y ait pas de resistance de rappel pour les interrupteurs n'est pas une
erreur de ma part! En effet elles sont deja incluses dans le PIC, il suffit de les
activer.
Principe de fonctionnement:
Voici le principe que j'utilise pour memoriser le code sans erreur:
Quelques explications. Tout d'abord, on fait rechercher au PIC la durée
minimale d'un etat (On mesure T et on le divise par 2). Ensuite, il "suffit"
d'utiliser les interruptions du PIC, et d'interrompre l'execution du programme toutes les
T/2 secondes pour memoriser l'etat de la LED receptrice (niveau haut ou bas).
minimale d'un etat (On mesure T et on le divise par 2). Ensuite, il "suffit"
d'utiliser les interruptions du PIC, et d'interrompre l'execution du programme toutes les
T/2 secondes pour memoriser l'etat de la LED receptrice (niveau haut ou bas).
Pour eviter les decalages entre l'horloge du PIC et l'horloge de la
telecommande; je resynchronise l'horloge du PIC à chaque changement d'etat de la LED
receptrice (Fleche violete). D'autre part, la durée avant interruption du programme
lorsqu'il y a changement d'etat est T/4 (au lieu de T/2); ceci pour etre environ au milieu
de l'etat a memoriser lorsqu'il y a interruption.
Matériel nécessaire:
Un fer a souder, de la soudure, du matériel pour graver les plaques, et
de préférence une insoleuse et une bonne imprimante.
de préférence une insoleuse et une bonne imprimante.
PIC | PIC16F84A-04 (environ 40F soit 6.1Euros) |
R1 | 560 kOhm |
R2 | 100 Ohm |
R3, R5, R6, R7 | 1 kOhm |
R4 | 39 Ohm |
C1 | 100 µF |
C2 | 100 nF |
C3, C4 | 15 à 33 pF |
D1 | Photo diode receptrice (dans le cas d'un boitier parallelepipedique, l'angle cassé sur le dessus de la LED indique la cathode) A priori a peu pres tous les modeles peuvent convenir; j'ai récupéré la mienne dans une television. Attention tout de meme de ne pas prendre un photo transistor, ca ne se branche pas pareil. |
D2 | Diode emetrice infra rouge 5mm quelconque. Vous pouvez eventuellement en mettre 2 (voir typon), pour augmenter la portée, mais dans ce cas il faut baisser la valeur de R4 (par exemple 15 Ohm ou moins). |
D3, D4 | LED 5mm |
T1, T2 | BC327-25 ou BC557B ou BC558B ou BC559B |
T3 | BC327 de preference (a cause du courant assez important qui circule dans D2). eve,tuellement BC557 |
T4 | BC337 de preference (a cause du courant assez important qui circule dans D2). eventuellement BC547 |
I1 à I6 | Interrupteurs poussoir miniatures à 4 pattes (voir la photo). Il faut imperativement qu'ils aient 4 pattes, car ces pattes sont reliées 2 à 2 à l'interieur de l'interrupteur et servent de strap de temps en temps. |
Q1 | Quartz 4MHz pour faire fonctionner le PIC |
S1 à S4 | Straps (morceaux de fil) |
Description:
Voici le typon.Vous devez telecharger le typon en cliquant tout en appuyant sur la touche MAJUSCULE: cliquez ici
Je rappelle qu'il faut telecharger le logiciel ARES Lite qui est gratuit. Il est
disponible sur le site suivant: http://www.multipower-fr.com
Vous pouvez également cliquer ici pour voir
comment faire pour imprimer votre typon
Réalisation:
Commencez par souder les 4 straps pour ne pas les oublier.
Concernant la diode receptrice, j'utilise un modele parallelepipedique noir recuperé
dans une television. J'ai fait des essai avec plusieurs, ca a l'air de bien fonctionner à
chaque fois. Pour verifier le bon fonctionnement de la partie reception, mettez le montage
sous tension, et controlez la tension entre le collecteur de T1 et la masse. Elle doit
valoir environ 0V quand le montage est dans le noir, et pas loin de 5V quand le montage
est fortement eclairé.
Attention au sens de cette diode, si vous la mettez à l'envers la diode
ou/et les transistors grilleront! Pour la mettre dans le bon sens, il suffit de la tester
au multimetre.
Partie emission: Vous pouvez mettre une ou deux LED. Pour ma part, je n'en n'ai mis
qu'une, la portée est generalement suffisante: 2m à 3m. Vous pouvez eventuelement
baisser la valeur de R4, en effet dans ma telecommande de chaine, la valeur de cette
resistance est 2.2 Ohm (alimenté sous 3V, 2V pour la diode, - 0.2V dans le transistor, ca
fait un courant impulsionnel de (3 - 2 - 0.2)/2.2 = 350mA). Avec R4 = 39 Ohm, le courant
n'est que de (5 - 2 - 0.2 - 0.2) / 39 = 66mA.
Interrupteurs: choisissez bien des modeles à 4 pattes, car ils servent egalement de
straps (traits en pointillé sur le typon). Notez que les pattes sont deja reliés deux
par deux à l'interieur de l'interrupteur, et qu'il n'est pas necessaire de les relier
exterieurement.
Concernant l'alimentation: Le montage consomme moins de 700µA au repos dans un endroit
faiblement eclairé. Avec des piles 300mAH, ca fait une autonomie d'environ 17 jours.
Il est preferable de ne pas utiliser de pile 4.5V, en effet, cette tension est limite, et
le PIC peut ne pas arriver à ecrire dans l'EEPROM. Pour ma part, j'ai mis 4 piles
rechargeables en serie. Avec une tension de 1.25V par pile, ca fait 5V environ. Attention,
ca ne marche que parce que ce sont des piles rechargeable, ne faites surtout pas ca avec
des piles normales, ca ferait 6V ce qui est trop pour le PIC.
Le circuit est assez compacte, avant de brancher, verifiez bien qu'aucun composant ne se
touche.
Essais et mode d'emploi:
Le programme: Cliquez pour le telecharger: RecIR_12.asm. Vous pouvez egalement telecharger laversion deja compilée: RecIR_12.hex
Si tout ce passe bien:
Lorsque vous mettez le montage sous tension, rien ne doit se passer.
Appuyez alors sur I2. La LED du haut doit s'allumer. Le PIC va reconnaitre le type de
telecommande que vous utilisez (il va mesurer la duree minimale d'un etat). Cette etape
est appelée echantillonage dans mon programme.
Mettez vous dans un endroit faiblement eclairé pour ne pas perturber le montage, mettez
la telecommande en face de la LED receptrice du montage (à quelques centimetres). Appuyez
sur un peu tous les boutons de votre telecommande. La LED du bas doit clignoter tres
rapidement lorsque vous appuyez. Au bout d'un certaint moment la LED du dessus va
s'eteindre. Ca y est le PIC a reconnu le type de telecommande.
Nous allons maintenant passer à la memorisation du code proprement dit:
~ Mettez la telecommande en face de la LED receptrice du montage (à quelques centimetres)
~ Appuyez sur le bouton I1 du montage, puis sur l'un des boutons I3 à I6 pour memoriser
l'une des touche de votre telecommande.
~ Appuyez alors sur la touche de votre telecommande que vous voulez memoriser. La LED du
dessus doit s'alluer un court instant.
Pour reemetre le code de cette touche avec le montage, il suffit d'appuyer sur l'un des
interrupteurs I3 à I6 (celui sur lequel vous avez appuyé quand vous avez enregistré le
code)
Pour enregistrer d'autre touches, il suffit de refaire l'etape de memorisation. Il n'y a
pas besoin de refaire l'etape d'echantillonage à chaque fois, sauf si vous changez de
telecommande.
Si rien ne va plus:
Si aucune LED ne s'allume quand vous echantillonez, c'est qu'il y a un probleme au
niveau du montage, regardez bien qu'il n'y a aucun court circuit. Si vous avez un
oscilloscope, controlez que le quartz oscille.
Si tout a l'air de fonctionner normalement, mais pourtant l'appereil concerné ne veut
rien savoir:
~ Commencez par regarder s'il n'est pas de marque Panasonic ou Technics et peut etre
d'autres. Dans ce cas, il faut que vous editiez le programme avec notepad ou xedit par
exemple, et que vous enleviez le point virgule devant "#DEFINE
Panasonic". En effet les codes de ces fabricants sont trop longs pour tenir sur
16bits; le fait d'enlever le ";" permet de memoriser sur 32bits. En contre
partie, il n'y plus que deux memoires.
~ Vous pouvez egalement lire la memoire EEPROM avec le programmateur. Voici le contenu
obtenu avec le logiciel P16Pro:
Il y a une ligne par touche. Les 15 premier octets correspondent au code. Les 2 premieres
lignes proviennent d'une telecommande kenwood. Les deux dernieres d'une telecommande
Philips.
Ce que vous pouvez verifier: Il doit normalement y avoir un zero juste avant le 16eme
octet de chaque ligne. Sinon, il est possible que le code soit trop long, dans ce cas
voyez ci dessus.
Le dernier octet du code correpsond a la vitesse d'emission. Convertissez le en decimal et
regardez sa valeur. Il doit valoir environ 40 pour une telecommande Philips, Grundig;
environ 122 pour une telecommande Kenwood, Goldstar; et environ 150 pour une telecommande
Panasonic ou Technics.
~ Enfin regardez si la partie reception a l'air de fonctionner: controlez la tension entre
le collecteur de T1 et la masse. Elle doit valoir environ 0V quand le montage est dans le
noir, et pas loin de 5V quand le montage est fortement eclairé. A l'oscillo, vous devez
voir des crenaux lorsque vous appuyez sur une touche de la telecommande mise en face du
montage (base de temps 1ms).
Aucun commentaire:
Enregistrer un commentaire