tsop diode infrarouge
Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

tsop diode infrarouge



  1. #1
    tobi66

    tsop diode infrarouge


    ------

    Bonjour tous le monde

    Je souhaite réaliser une télécommande infrarouge. Pour cela j'utilise sur un carte un pic18f24k22 avec une diode infrarouge et 3 boutons poussoirs, et sur une autre carte un autre pic18f24k22 avec un TSOP1138.

    Je sais que la diode et le TSOP communique à une fréquence de 38kHz, mais mon objectif est que lorsque j'appuie sur un bouton poussoir, je donne un certain ordre au pic de la carte réceptrice.
    Mais je ne comprend pas bien comment code le message à travers la diode infrarouge.
    Est-ce que je peux écrire des codes pour l'émission tout simple comme celui-ci :

    Code:
    /* 
     * File:   Emission.c
     * Author: PC 205
     *
     * Created on 21 avril 2013, 20:30
     */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #include <p18f24k22.h>
    
    #include "fonction.h"
    #include "delays.h"
    
    #define emission PORTCbits.RC7
    /*
     * 
     */
     
    void emissionMoteurPorteEntree (void)
    {
    	DelayMs(120);
    	emission = 0;
    }
    
    void emissionMoteurPorteDuGarage (void)
    {
    	DelayMs(120);
    	emission = 0;
    	DelayMs(120);
    	emission = 1;
    }
    
    void emissionMoteurVolet (void)
    {
    	DelayMs(120);
    	emission = 0;
    	DelayMs(120);
    	emission = 1;
    	DelayMs(120);
    	emission = 0;
    }
    Et pour la réception :
    Code:
    /* 
     * File:   Reception.c
     * Author: PC 205
     *
     * Created on 21 avril 2013, 20:30
     */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #include <p18f24k22.h>
    
    #include "fonction.h"
    #include "delays.h"
    #include "Variables.h"
    
    #define reception PORTCbits.RC7
    /*
     * 
     */
     
    void reception (void)
    {
    	DelayMs(130);
    
    	if(reception == 0)
    	{
    		DelayMs(120);
    
    		if(reception == 0)
    		{
    			PORTBbits.RB4 = 1;
    		}
    		
    		else if(reception == 1)
    		{
    			DelayMs(120);
    
    			if(reception == 0)
    			{
    				DelayMs(120);
    
    				if(reception == 0)
    				{
    					PORTBbits.RB5 = 1;
    				}
    
    				else if (reception == 1)
    				{
    					PORTBbits.RB6 = 1;
    				}
    			}
    		}
    	}
    }

    Ou est-ce bien plus complexe?
    Merci d'avance

    -----

  2. #2
    DAUDET78

    Re : tsop diode infrarouge

    J'aime pas le Grec

  3. #3
    tobi66

    Re : tsop diode infrarouge

    Merci, mais mon pic ne peut pas envoyé de trame RC5

  4. #4
    DAUDET78

    Re : tsop diode infrarouge

    Citation Envoyé par tobi66 Voir le message
    mais mon pic ne peut pas envoyé de trame RC5
    C'est une simple question de programme dans le µC émetteur !
    J'aime pas le Grec

  5. A voir en vidéo sur Futura
  6. #5
    tobi66

    Re : tsop diode infrarouge

    Donc ce que j'ai fait est totalement faux?

  7. #6
    DAUDET78

    Re : tsop diode infrarouge

    Citation Envoyé par tobi66 Voir le message
    Donc ce que j'ai fait est totalement faux?
    j'en sais strictement rien . Je n'analyse jamais un logiciel ....et de plus où il n'y a aucun commentaire !

    J'ai l'impression que tu envois un pulse pour une commande, deux pulses pour la suivante etc
    Si le capteur manque un pulse, tu vas ouvrir PorteEntree à la place de PorteDuGarage . Toi, tu cherches les emmerdes futures !
    Si les zapettes TV fonctionnaient sur ce principe, on les mettrait vite à la poubelle !

    Il faut envoyé un code RC5 ..... mais tu ne sais pas faire !
    J'aime pas le Grec

  8. #7
    tobi66

    Re : tsop diode infrarouge

    Merci, je vais donc plancher dessus même si je ne sais pas trop par où commencer

  9. #8
    tobi66

    Re : tsop diode infrarouge

    Par contre sur le site que tu m'as donné, ils disent qu'un bit dure 1778 us. comment le savent-ils?

  10. #9
    DAUDET78

    Re : tsop diode infrarouge

    Citation Envoyé par tobi66 Voir le message
    qu'un bit dure 1778 us. comment le savent-ils?
    1/ il faut aller voir la norme RC5
    2/ il est dit
    En divisant 36 Khz par 64 nous obtenons une fréquence de 562,5 Hz d'ou une période de 1 / 562,5 = 1,777777... soit 1,778 ms arrondi par excès : c'est exactement la durée d'un bit.
    Donc c'est l'enfance de l'art de créer ce bit à partir d'une fréquence de 36Khz
    J'aime pas le Grec

  11. #10
    freepicbasic

    Re : tsop diode infrarouge

    dans ton prog tu ne fais pas de 38khz !
    soit une période de 1/ 38000 = 26ms
    les demi alternance font donc 13 ms

    Code:
    emission = 1
    delayms(13)
    emission = 0
    delayms(13)
    il faut envoyer au moins 3 ou 5 impulsions pour que le TSOP le reconnaisse , soit 5 x 26 = 130 ms.
    On peut considèrer que 1 bit fait 130ms après on code ce qu'on veut.
    Il est préférable de mettre un start bit

    Code:
    Mybit:
    for (i=0 , i<5; i++) {
       emission = 1
       delayms(13)
       emission = 0
       delayms(13)
       }
    return
    Code:
    ; envoie code 101
    call Mybit ; start
    call Mybit ; bit 1
    delayms(130) ; bit 0
    call Mybit ; bit 1
    
    ; envoie code 010
    call Mybit ; start
    delayms(130) ; bit 0
    call Mybit ; bit 1
    delayms(130) ; bit 0
    A+, pat

  12. #11
    tobi66

    Re : tsop diode infrarouge

    merci beaucoup freepicbasic, j'ai très bien compris la partie émission grace à tes explications.
    Par contre pour la pertie réception du côté du TSOP, je peux utiliser le même code que j'avais fait en changeant les delay ou ça ne fonctionnera pas?

  13. #12
    tobi66

    Re : tsop diode infrarouge

    ça me donne quelque chose comme ceci :

    Code:
    void Reception (void)
    {
    	DelayMs(130); // start qui réveille le TSOP et s'assure que ce qui suit sera un message à interpréter
    		
    	if(reception == 0) // Si le premier bit du message est 0
    	{
    		DelayMs(130);
    
    		if(reception == 0) // Si le second bit du message est 0
    		{
    			flagPorteEntree = 1;
    		}
    
    		else if(reception == 1) // Si le second bit du message est 1
    		{
    			flagPorteDuGarage = 1;
    		}
    	}
    
    	else if (reception == 1) // Si le premier bit du message est 1
    	{
    		DelayMs(130);
    
    		if(reception == 0) // Si le second bit du message est 0
    		{
    			DelayMs(130);
    
    			if(reception == 0) // Si le troisième bit du message est 0
    			{
    				flagVolet = 1;
    			}
    
    			else if(reception == 0) // Si le troisième bit du message est 1
    			{
    				alarmePartielle();
    			}
    		}
    		else if(reception == 1) // Si le second bit du message est 1
    		{
    			alarmeTotale();
    		}
    	}
    }
    Mais est-ce qu'il y doit y avoir un petit décalage entre mes delay de l'émission et ceux de la réception pour que le pic n'observe pas sur un des fronts montant ou descendant et ne sache donc pas quoi faire?

  14. #13
    freepicbasic

    Re : tsop diode infrarouge

    Code reception;


    Code:
    // code reçu
    rcv = 0;
    //;attente du bit de start
    While (reception == 0) 
    // tache de fond  ou alors rien
    ;
     
    //se positionner au milieu du 1 er bit doit 130ms de start + 1/2 bit 65ms
    delayms(130);
    delayms(65);
      
    //reception de 3 bits
    for (bit=0; bit<3; bit++) { 
      rcv = rcv + rcv ; // decalage a gauche pour le bit suivant
      if (reception = 1)  rcv += 1;
      delayms(130);
      }
    
    switch(rcv) {
       case 0:
        // fonction 0
          break;
       case 1
        // fonction 1
          break;
       case 2
    //
          break;
       case 3
    //
          break;
    // etc ...
    }
    A+, pat

  15. #14
    tobi66

    Re : tsop diode infrarouge

    Merci, j'ai juste un peu de mal à comprendre à quel moment il reçoit le bit de start?

  16. #15
    freepicbasic

    Re : tsop diode infrarouge

    c est le premier bit de synchro ,pour signifier au recepteur que la sequence commence , il ne fait pas partie de la donnée.
    A+, pat

  17. #16
    tobi66

    Re : tsop diode infrarouge

    Oi ça j'ai compris, c'est juste que j'ai du mal à voir à quel moment il arrive dans la réception

  18. #17
    freepicbasic

    Re : tsop diode infrarouge

    au debut du message , enfin de la salve de bits.
    tant qu'il recoit rien, on fait autre chose, le mieux serait de mettre la réception sur une int...
    A+, pat

  19. #18
    tobi66

    Re : tsop diode infrarouge

    Je viens de me rendre compte que la période n'est pas la bonne.
    tu m'as écris :
    "dans ton prog tu ne fais pas de 38khz !
    soit une période de 1/ 38000 = 26ms
    les demi alternance font donc 13 ms"

    mais 1/38000 = 0.026ms

    et avec cette période le tsop ne reçoit rien...

  20. #19
    tobi66

    Re : tsop diode infrarouge

    Le fait que j'utilise un quartz externe de 4Mhz joue-t'il quelque chose?

  21. #20
    freepicbasic

    Re : tsop diode infrarouge

    une onde contient une partie positive et une partie négative elle est sur 2pi
    donc on envoit la moitié à 1 et l'autre à 0
    soit 13ms à 1 et 13ms à 0 ce qui fait 26ms
    A+, pat

  22. #21
    tobi66

    Re : tsop diode infrarouge

    Ce que j'essaye de dire c'est que ma période n'est pas de 26ms mais de 26µs.
    Mais je n'arrive pas à faire une fonction qui me donne des microsecondes.

Discussions similaires

  1. Tsop & Diode infrarouge !
    Par IHCAAMEL dans le forum Électronique
    Réponses: 8
    Dernier message: 01/12/2012, 20h51
  2. niveau haut en sortie de tsop (detecteur infrarouge )
    Par alainav1 dans le forum Électronique
    Réponses: 66
    Dernier message: 17/03/2012, 19h37
  3. TSOP. récepteur infrarouge
    Par invitef0165562 dans le forum Électronique
    Réponses: 8
    Dernier message: 27/08/2011, 07h50
  4. Diode infrarouge
    Par invitee2213fc7 dans le forum Électronique
    Réponses: 3
    Dernier message: 16/03/2010, 17h12
  5. Diode infrarouge ?
    Par NinjaNeko dans le forum Électronique
    Réponses: 9
    Dernier message: 19/11/2008, 19h15
Découvrez nos comparatifs produits sur l'informatique et les technologies.