Página 1 de 1

Biblioteca C para sensor temperatura LM92

MensagemEnviado: 14 Fev 2007 20:12
por rudsomlima
Olá,

Gostaria de saber se alguém dispõe de biblioteca em C para usar o sensor de temperatura LM92 da National, que usa I2C. Tentei usar as funções disponíveis no PICC mas não consegui ler nada, aparecendo valores não condizentes com o esperado. Se alguém tiver um programa que eu pudesse usar de exemplo, agradeço.

Abração.

Re: Biblioteca C para sensor temperatura LM92

MensagemEnviado: 15 Fev 2007 08:56
por andre_luis
Usei o LM75. Nao sei qual a diferença dele para o LM92.
Dá uma olhada no datasheet e ve se aproveita alguma coisa dessa rotina.



[size=9]////////////////////////////////////////////////////////////////////////
void init_I2C ( void )
{
output_float( I2C_SCL ) ;
output_float( I2C_SDA ) ;
}
////////////////////////////////////////////////////////////////////////
int1 i2c_ready ( unsigned int8 address )
{
int1 ack ;
i2c_start() ; // If the write command is acknowledged,
ack = i2c_write( address ) ; // then the device is ready.
i2c_stop() ;
return ( !ack ) ;
}
////////////////////////////////////////////////////////////////////////
void I2CSendByte ( unsigned int8 Chip , unsigned int8 address , unsigned int8 data_value )
{
/// while ( ! i2c_ready ( address ) ) ;
/// i2c_stop() ;
delay_us ( 10 ) ; /* Solucao Empirica */
i2c_start() ; /* START CONDITION */
i2c_write( Chip | ESCRITA ) ; /* SLAVE ADDRESS -> WRITE */
i2c_write( address ) ; /* WORD ADDRESS */
i2c_write( data_value ) ; /* WRITE DATA */
i2c_stop() ; /* STOP CONDITION */
delay_ms ( 50 ) ; /* Solucao Empirica */
}

////////////////////////////////////////////////////////////////////////
unsigned int8 I2CGetByte( unsigned int8 Chip , unsigned int8 address )
{
unsigned int8 data_value ;
/// i2c_stop() ;
delay_us ( 10 ) ; /* Solucao Empirica */
i2c_start() ; /* START CONDITION */
i2c_write( Chip | ESCRITA ) ; /* SLAVE ADDRESS -> WRITE */
if ( Chip == SELECT_LM75A )
i2c_write( ENDERECO_TEMPERATURA ) ; /* WORD ADDRESS */
else
i2c_write( address ) ; /* WORD ADDRESS */
delay_us ( 10 ) ; /* Solucao Empirica */
i2c_start() ; /* SATRT CONDITION */
i2c_write( Chip | LEITURA ) ; /* SLAVE ADDRESS -> READ */
if ( Chip == SELECT_LM75A )
{
TemperaturaDaPlaca = i2c_read() ; /* READ DATA */
data_value = (unsigned int8)TemperaturaDaPlaca ;
TemperaturaDaPlaca <<= 8 ;
TemperaturaDaPlaca |= i2c_read() ; /* READ DATA */
}
else
data_value = i2c_read() ; /* READ DATA */
i2c_stop() ; /* STOP CONDITION */
delay_ms ( 50 ) ; /* Solucao Empirica */
return( data_value ) ;
}
/////////////////////////////////////////////////////////////////////////[size]

MensagemEnviado: 17 Fev 2007 12:49
por rudsomlima
Obrigado André, vou ver o que aproveito do seu código pra fazer funcionar o LM92.

MensagemEnviado: 18 Fev 2007 10:33
por jeanfernandes
Onde compra esse LM92 ?

Grato

MensagemEnviado: 18 Fev 2007 15:08
por rudsomlima
jeanfernandes,

Você consegue amostras no site da National: www.national.com

Abraço.