Liaison I2C enbtre pic et capteur de température
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Liaison I2C enbtre pic et capteur de température



  1. #1
    tft67

    Liaison I2C enbtre pic et capteur de température


    ------

    Après plusieurs jours de blocage, je viens solliciter votre aide.
    Je dois capturer la température d'un thermocouple, à partir d'un module commandé chez conrad THMOD-I2C-300, vers une carte PICDEM.NET 2, relié par in ICD2
    Le circuit intégré du module est un ZSC31050

    La liaison I2C est branchée correctement, deux résistances de rappel au +5V.
    Il faut d'après la doc, lire 4 octets, pour ensuite reconstituer la température par une formule mathématique.
    Après plusieurs essais, et arrive à générer des signaux I2C qui ont l'air normaux, mais les quatre octets lus
    sont 7F FF FF FF.
    unsigned char MSBThermovoltage=0, LSBThermovoltage=0,
    MSBConnectorTemperature=0,LSBC onnectorTemperature=0;


    Le code d'initialisation :

    // Attente avant de démarrer :
    DelayMs( 200 ) ;
    OpenI2C1 (MASTER, SLEW_OFF);
    // Delay1KTCYx(96);

    StartI2C1();
    while ( SSP1CON2bits.SEN ); // wait until start condition is over


    val_ack=WriteI2C1( 0x78); // 0b 0111 100 0 . Le dernier bit à 0 pour indiquer une écriture.

    IdleI2C1();
    // while ( !SSP1CON2bits.ACKSTAT ); // Attente ack de l'esclave
    AckI2C1() ;
    IdleI2C1();

    val_ack=WriteI2C1( 0x01); // Lancement acquisition

    IdleI2C1();
    // while ( !SSP1CON2bits.ACKSTAT ); // Attente ack de l'esclave
    AckI2C1() ;
    IdleI2C1();

    val_ack=WriteI2C1( 0x30); // Lancement acquisition


    IdleI2C1();
    // while ( !SSP1CON2bits.ACKSTAT ); // Attente ack de l'esclave
    AckI2C1() ;
    IdleI2C1();

    StopI2C1 () ;

    DelayMs( 200 ) ;

    Et puis le code dans la boucle infinie :


    RestartI2C1();

    val_ack=WriteI2C1( 0x79); // Lecture
    IdleI2C();

    AckI2C1() ;
    IdleI2C();

    val_ack=WriteI2C1( 0x30); // Lecture
    IdleI2C();

    AckI2C1() ;
    IdleI2C();

    MSBThermovoltage=ReadI2C1(); // Et on lit
    AckI2C1();
    IdleI2C();

    // StartI2C1();

    LSBThermovoltage=ReadI2C1(); // Et on lit
    AckI2C1() ;
    IdleI2C();

    //StartI2C1();

    MSBConnectorTemperature =ReadI2C1(); // Et on lit
    AckI2C1() ;
    IdleI2C();

    // StartI2C1();


    LSBConnectorTemperature =ReadI2C1(); // Et on lit
    AckI2C1() ;
    IdleI2C();

    // StopI2C1 () ;

    // Affichage des variables :
    LCDInit();
    DelayMs(200);
    strcpypgm2ram(LCDText, " Temperature ");

    miseAJourLCDText() ;


    Je bloque toujours !
    Ca doit être tout bête, sans doute...

    -----

  2. #2
    sebmatrix

    Re : Liaison I2C enbtre pic et capteur de température

    Bonjour tft67,

    un schéma du montage, tu as ?

    Seb.

  3. #3
    tft67

    Re : Liaison I2C enbtre pic et capteur de température

    Bonjour.
    Le schéma est simple :
    RC3 reliée à SCL du module ( broche 3 du module )
    RC4 reliée à SDA du module ( broche 4 du module )
    Résistances de rappel de 4K7 sur +5V.
    Le 1 du module relié à l'alim de la carte ( environ 6V )

    Je ne crois pas qu'il y ait d'erreur à ce niveau.
    C'est plutôt dans le programme. J'ai fait pas mal d'essai.

Discussions similaires

  1. LM92 capteur temperature I2C
    Par ELECINTER dans le forum Électronique
    Réponses: 30
    Dernier message: 13/12/2011, 10h01
  2. Liaison I2C pour un PIC 18F2550
    Par invite9ddd7dfb dans le forum Électronique
    Réponses: 11
    Dernier message: 10/05/2010, 15h27
  3. Liaison I2C entre deux PIC (Maître -Esclace)
    Par invite0c16129b dans le forum Électronique
    Réponses: 3
    Dernier message: 14/04/2010, 16h38
  4. Sonde de température et PIC en I2C
    Par blacksword dans le forum Électronique
    Réponses: 8
    Dernier message: 08/12/2009, 23h26
  5. Probleme liaison I2C PIC 16F877
    Par invitecd367060 dans le forum Électronique
    Réponses: 8
    Dernier message: 18/03/2009, 07h17
Découvrez nos comparatifs produits sur l'informatique et les technologies.