Você está na página 1de 3

Comunicação Serial pelo protocolo I2C com o sensor de temperatura LM75

O protocolo I2C é um protocolo de comunicação serial que utiliza 2 fios. O SDA que é canal
de dados e o SCL que leva o clock para sincronizar e dar velocidade de comunicação a todos
conectados na rede.

O microcontrolador ATMEGA16 é o mestre da rede I2C. Os sensores e outros dispositivos


são os escravos da rede. O microcontrolador “pergunta” e os sensores “respondem” as
requisições de informações que estão alocadas nos registros de memória (volátil ou não-
volátil).

Como exemplo de software, iremos comunicar o microcontrolador com o sensor de


temperatura LM75 e mostrar a temperatura em graus Celsius no display.

OBS: O LM75 devolve o valor da temperatura convertida já multiplicada por 10. Por exemplo,
se a resposta do sensor for 355, isso corresponde a 35,5 ºC.
A configuração da interface I2C serão feitas no Codevision AVR com a devida
velocidade do barramento e dos pinos de SDA e SCL.

Código de leitura de temperatura do sensor LM75 com comunicação serial I2C.

#include<mega16.h>
#include<lm75.h> // biblioteca de comandos para o sensor LM75
#include<delay.h>
#include<stdio.h>
#include<alcd.h>

void main (void)


{
char buffer[20];
float TEMP=0; TEMP_MED=0;

int amostras=0;

lcd_init(20);
i2c_init();

lm75_init(0,20,25,1); // inicializa a configuração inicial do sensor de temperature LM75

1
while(1)
{

for(amostras=0;amostras<100;amostras++)
{

TEMP = TEMP + (lm75_temperature_10(0) / 10);


// realiza a leitura da temperatura do sensor Lm75
// já convertida e multiplicada por 10
// o endereço desse sensor é 0 (A1=0, A2=0 e A3=0)

// o for ajuda em fazer a aquisição do valor do sensor e somar com variável TEMP
// também é feita a somatória das 100 amostras colhidas

TEMP_MED = TEMP /100 ; // media do valor de temperature do sensor

sprintf(buffer,”Temperatura:%.1f C”,TEMP_MED);
lcd_gotoxy(0,0);
lcd_puts(buffer);
delay_ms(30);
lcd_clear();

2
3

Você também pode gostar