
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:
| | MCP9700 | LM35 |
| Tensão min (V): | 2.3 V | 4V |
| Tensão max (V): | 5.5 V | 30V |
| Corrente | 12 uA | 60 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!