Comunicação I2C com sensor IR MLX90614 .

Software e Hardware para uC STM

Moderadores: andre_luis, 51

Comunicação I2C com sensor IR MLX90614 .

Mensagempor hertzing » 25 Fev 2016 11:15

Olá a todos,

Estou testando alguns sensores de temperatura IR, e já consegui comunicar com o TMP007 via I2C, mas o mesmo possui a taxa de amostragem muito lenta.
E agora estou tentando comunicar com o sensor MLX90614 que também é I2C, porem não estou conseguindo comunicar, pois o mesmo trava na função I2C1_Write.
Alguém tem alguma sugestão do que estaria errado?

O microcontrolador que estou utilizando é o STM32F030R8T6 com o compilador "Mikroc Pro for ARM".
Segue o código que fiz para testar a comunicação, a saída está sendo lida em hexa pela serial.

Código: Selecionar todos
/*******************************************************************************
Leitura de temperaruta IR do sensor MLX90614
*******************************************************************************/

#define MLX90614_I2C_ADDR   0x5A
// Endereços do sensor MLX90614
const IR_THERMO_ADDR = 0x5A;
const AMB_TEMP       = 0x06;
const OBJ_TEMP       = 0x07;

unsigned char tmp_data[2];

//******************************************************************************
// Main function
//******************************************************************************
void main() {
  I2C1_Init_Advanced(100000, &_GPIO_MODULE_I2C1_PB67);           // Inicialização I2C1
  delay_ms(100);

  UART1_Init(115200);
  UART1_Write_Text("Start");
 
  while(1){
    tmp_data[0] = 0x07;                                            // Endereço do registrador da temperatura do objeto
    I2C1_Start();                                                  // Inicializa o sinal da I2C
    I2C1_Write(MLX90614_I2C_ADDR,tmp_data[0] ,1,END_MODE_RESTART); // Envia o endereço (tmp_data[0])
    I2C1_Read(MLX90614_I2C_ADDR,tmp_data,2,END_MODE_STOP);         // Lê buffer I2C e grava em tmp_data
    UART1_Write(tmp_data[0]);                                      // Imprime 1º Byte
    UART1_Write(tmp_data[1]);                                      // Imprime 2º Byte
    UART1_Write(10);
    UART1_Write(13);
    delay_ms(10);
  }
}


Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
hertzing
Byte
 
Mensagens: 119
Registrado em: 12 Jan 2011 13:26
Localização: Blumenau / SC

Re: Comunicação I2C com sensor IR MLX90614 .

Mensagempor eletroinf » 25 Fev 2016 13:15

Sugiro que procures a errata do datasheet e veja se tem bug no i2c.

Eu perdi uns 10 dias com esse mesmo tipo de problema, com esse mesmo sensor e um stm32f103, até me dar por conta de que havia mais bug do que funcionalidade na i2c do uC.
"De cada um segundo sua capacidade a cada um segundo sua necessidade."
Avatar do usuário
eletroinf
Word
 
Mensagens: 948
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Re: Comunicação I2C com sensor IR MLX90614 .

Mensagempor andre_luis » 25 Fev 2016 15:27

Não consegui analisar com calma as especificações do formatos de frames de cada dispositivo, mas aparentemente são um pouco diferentes, pelo menos na nomenclatura ( tem um byte chamado “ponteiro” depois do byte de endereço ). No passado já tive um problema com 2 dispositivos I2C, onde um deles possuía endereço com 1 byte (RTC), e o outro possuía endereço com 2 bytes(MEM), e só resolvi substituindo o 2o dispositivo por outro de menor capacidade - agora, também de 1 byte. Não lembro se foi aqui, mas alguém falou que não havia relação nenhuma, e de fato posso ter feito caca no driver I2C, mas se eu fosse você, pensaria em utilizar um chip select, ou até separar o CLK para ambos, obviamente se você não estiver usando alguma função pré-compilada da biblioteca.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Comunicação I2C com sensor IR MLX90614 .

Mensagempor hertzing » 25 Fev 2016 17:02

O pior é que estou utilizando as funções prontas da biblioteca. :(
Vou seguir a sua sugestão Andre, e analisar o formato da I2C do µC e do sensor para tentar descobrir se são compatíveis.
Avatar do usuário
hertzing
Byte
 
Mensagens: 119
Registrado em: 12 Jan 2011 13:26
Localização: Blumenau / SC


Voltar para STMicroelectronics

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x