Mon ami et moi voulons concevoir une télécommande d'apprentissage universelle, comme celle-ci , à des fins d'apprentissage. Ce que nous voulons faire, c'est essentiellement stocker et rejouer les impulsions infrarouges.
Nous voulons détecter les signaux 36 kHz, 38 kHz et 40 kHz. Un signal à 40 kHz aura une période de 25 .
Nous voulons utiliser un microcontrôleur PIC 8 bits, pour l'instant nous avons sélectionné PIC16F616, qui fonctionnera à 20MHz oscillateur à cristal haute vitesse. Nous avons deux options disponibles:
- Utilisez le
Interrupt On Change
module. - Utilisez le mode de capture du module CCP.
La première option sera la suivante:
On suppose un registre est défini comme: unsigned char _10_us = 0;
. Ce registre contiendra le temps. Le module TMR2 avec registre de période est réglé pour créer une interruption toutes les 10 . Lorsqu'une interruption se produit, il incrémente le registre et quitte. Cela donnera un temps maximum de 2,55 ms. Si plus de mesure du temps est nécessaire, des registres supplémentaires tels que ceux-ci peuvent être définis et incrémentés selon les besoins._10_us
_1_ms
_10_us
_10_us
Cette option me fait me gratter la tête; L'interruption TMR2 se produit environ toutes les 50 instructions. La gestion des interruptions prendra environ 20 instructions. Il me reste 30 instructions pour calculer et enregistrer la période dans un tableau. Cette méthode fonctionnera-t-elle?
La deuxième option sera la suivante:
Configurez le mode de capture du module CCP afin qu'il génère une interruption lorsqu'un événement (de haut en bas) se produit sur la broche CCP1. Dans la routine d'interruption, il définira un indicateur afin qu'une tâche dans le programme puisse calculer (si nécessaire) et enregistrer la valeur de CCPR1H (ne sera probablement pas nécessaire) et CCPR1L. Ensuite, nous allons changer la configuration du mode de capture afin qu'il déclenche l'interruption lorsqu'un front bas à haut se produit. Et puis il attendra le prochain événement. Je ne peux pas estimer les performances de cette méthode car je ne l'ai jamais utilisée.
Une autre option?
Nous pouvons utiliser un IC démodulateur infrarouge tel que la série TSOP17xx . Cela résoudrait complètement notre problème. Cependant, certaines questions me viennent à l'esprit.
Notre exigence de distance de lecture n'est pas beaucoup; 1 mètre (~ 3 pieds). Si nous choisissons un TSOP1738 qui est destiné à travailler dans 38kHz, comment bien cela fonctionnera avec les signaux 36kHz et 40kHz?
La page 4 de la fiche technique de la série TSOP17xx présente le graphique "Dépendance en fréquence de la réactivité". Pour autant que nous comprenions;
- 40 kHz, qui est ~ 1,053 de 38 kHz, donnera une sensibilité relative de ~ 0,6.
- 36 kHz, qui est ~ 0,95 de 38 kHz, donnera une sensibilité relative de ~ 0,65.
Que signifient ces valeurs? Pouvons-nous utiliser un TSOP1738 et être bien?