Autor Tema: sensor de temperatura MLX90614  (Leído 5825 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado mariacontenis

  • PIC16
  • ***
  • Mensajes: 116
sensor de temperatura MLX90614
« en: 24 de Marzo de 2013, 13:51:57 »
Que tal amigos navegando por la red encontre este codigo, sensor de temperatura MLX90614 que es un sensor IR que tiene la caracteristica de proporcionar la temperatura objeto y temperatura ambiente.

este sensor de comunica con el pic por i2c, mas lo que yoquiero hacer es conectar 2 sensores de ente tipo en un solo pic. En la parte de abajo pongo el codigo como creo que es para conectar los 2 sensores, no se si me pueden ayudar.

Para 1 sensor

#include <18F4550.H>
//#device ADC=10
//#device ADC=8
#device HIGH_INTS=TRUE

//#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,PUT,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN // para el cristal de 20mhz
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN   // para el cristal de 12mhz
#use delay (clock=48000000)
#use rs232(baud=115200, xmit=PIN_C6,rcv=PIN_C7)

#use I2C(master,sda=PIN_B0, scl=PIN_B1)

int8 resultado1=0;
int8 resultado2=0;
int8 CRC=0;
int16 tempk=0;
float tempc=0.0;

void main (void){

   while (TRUE){
//      lectura = read_adc();
      output_toggle(pin_B4);
      i2c_start();
      //i2c_write(0×00);        // pido datos del sensor
      if (i2c_write(0xB4)==0){   // direccion del sensor melexis para mandar comando
          i2c_write(0×07);        // pido datos del sensor
          i2c_start();
        i2c_write(0xB5);        // direccion del sensor melexis para leer

          resultado1 = i2c_read(1);
          resultado2 = i2c_read(1);
          tempk= make16(resultado2,resultado1); 
          CRC = i2c_read(0);

      }
      i2c_stop();
      tempc=(tempk*0.02)-273;
      printf("temp:%3.2f\n\r",tempc);
      delay_ms(500);

   }
}

//////////////////////////////////////////////////////////////////////////////////////

Para 2 sensores

int8 resultado1,resultado_3=0;
 int8 resultado2,resultado_4=0;
 int8 CRC=0;
 int16 tempk,tempk_1=0;
 float tempc,tempc_1=0.0;

void main (void)
 {
 while (TRUE)
 {
 output_toggle(pin_B4);
 i2c_start();
 
if (i2c_write(0xB4)==0) // direccion del sensor para mandar comando 1101011
 {
 i2c_write(0×07); // pido datos del sensor
 i2c_start();
 i2c_write(0xB5); // direccion del sensor para leer

resultado1 = i2c_read(1);
 resultado2 = i2c_read(1);
 tempk= make16(resultado2,resultado1);
 CRC = i2c_read(0);
 }
 i2c_stop();
 tempc=(tempk*0.02)-273;
 printf(“temp:%3.2f\n\r”,tempc); delay_ms(500);

////////////////////////////////////////////////////////////////////////////////
 
if (i2c_write(0xB6)==0) // direccion del sensor para mandar comando 01011011
 {
 i2c_write(0×08); // pido datos del sensor
 i2c_start();
 i2c_write(0xB7); // direccion del sensor para leer

resultado_3 = i2c_read(1);
 resultado_4 = i2c_read(1);
 tempk_1= make16(resultado_4,resultado_3);
 CRC = i2c_read(0);
 }
 i2c_stop();
 tempc_1=(tempk_1*0.02)-273;
 printf(“temp:%3.2f\n\r”,tempc_1); delay_ms(500);
 }
 
////////////////////////////////////////////////////////////////////////////////
 
}
 }


saludos!!! :-/

Desconectado lortiz

  • PIC10
  • *
  • Mensajes: 2
Re: sensor de temperatura MLX90614
« Respuesta #1 en: 03 de Julio de 2014, 17:59:43 »
hola, necesito comunicar el sensor mlx90615 con el pic 18f4550, seria genial que me ayudaran, ya que no se mucho de PIC´s
Gracias!!


 

anything