Como usar o sensor de temperatura MCP9700 com Arduino

Olá pessoal, tudo bem? Neste tutorial você aprenderá como utilizar o sensor analógico de temperatura MCP9700. Ele é uma alternativa de baixo custo quando comparado ao seu  equivalente LM35, veja a tabela de comparação abaixo:

 MCP9700LM35
Tensão min (V):2.3 V4V
Tensão max (V):5.5 V30V
Corrente12 uA60 uA
Temp min (°C):-40 °C-60 °C
Temp max (°C):+125 °C+150 °C
Precisão:+-1 °C+-0.4 °C

Veja a pinagem deste componente:

Montagem na Protoboard:

Caso você tenha problemas com oscilações nas leituras, adicione um capacitor cerâmico de 100nf nos terminais + e – do sensor a fim de servir como filtro.

void setup() {
  Serial.begin(9600); 
}

void loop () {
 float temp = (analogRead(0)*5/1024.0)-0.5;
  temp = temp / 0.01;
  Serial.print(temp);
  Serial.println(" C");
  delay(1000);
  
}//fim do loop

E para construir um termômetro, basta pegarmos estes dados de temperatura e “jogar” em um display de LCD.

Lembrando que o nosso display é I2C, ou seja, ele tem uma placa soldada aos seus pinos para fazer a conversão de paralelo para I2C facilitando muito a nossa montagem.

Deve-se ficar atento ao “endereço” da placa, o endereço da nossa é “0x27”. Caso a sua tenha um endereço diferente, basta fazer a alteração no código antes do upload.

Se preferir, baixe o nosso >> PACK << com a biblioteca para o display, os esquemas de montagem, os datasheets e os códigos prontos! Com certeza lhe ajudará muito.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C 

  lcd(0x27, 16, 2); // Seta o endereço do diplay para "0x27" , display de LCD 16x2 

void setup()

{
  Serial.begin(9600); // Inicializa a comunicação serial

   lcd.begin();   // Inicializa o display
	
   lcd.backlight(); // Ativa a luz do LCD
   
   lcd.print("TEMPERATURA"); // Escreve na primeira linha do LCD
}

void loop()

{
 float temp = (analogRead(0)*5.0/1024.0)-0.5; // Lê os dados na porta analogica "ZERO", aplica a formula e guarda na variavel "temp"
  
  temp = temp / 0.01; // Aplica o ajuste na formula e guarda na variavel "temp"

  lcd.setCursor(4,1); // Posiciona o cursor do display 

  lcd.print(temp); // Escreve o valor da temperatura no display

  lcd.print("C");
  
  Serial.print(temp); // Escreve o valor da temperatura no serial monitor 

  Serial.println("C");

  delay(1000); // Aguarda 1 segundo para refazer a leitura

}

//fim do loop

Até a próxima pessoal!