Sensor de temperatura LM75A com LCD1602 I2C
Neste tutorial, aprenderemos a usar o sensor de temperatura LM75A para exibir leituras de temperatura tanto em Celsius quanto em Fahrenheit em um display LCD1602 usando comunicação I2C. O LM75A pode medir temperaturas que variam de -55°C a +125°C, tornando-o adequado para diversas aplicações. Uma vez que a configuração esteja completa, você poderá ver leituras de temperatura em tempo real no display LCD.


Para este projeto, vamos utilizar o sensor LM75A e o módulo LCD1602 conectados via I2C, o que permite uma fiação mais simples e o uso de menos pinos no Arduino. O objetivo é criar um sistema que leia continuamente a temperatura e a exiba no LCD. Se precisar de esclarecimentos sobre qualquer parte do processo, confira o tutorial em vídeo (no vídeo em 00:00).
Hardware Explicado
Os principais componentes deste projeto incluem o sensor de temperatura LM75A e o display LCD1602. O LM75A é um sensor de temperatura I2C que fornece leituras de temperatura precisas. Ele se comunica com o Arduino por apenas dois fios, SDA (linha de dados) e SCL (linha de relógio), facilitando sua integração em seus projetos.
O LCD1602 é um display de caracteres 16x2 que pode mostrar até 32 caracteres de cada vez. Ao usar a interface I2C, podemos controlá-lo com apenas dois fios adicionais, o que simplifica muito o processo de ligação. A retroiluminação do LCD também pode proporcionar melhor visibilidade em ambientes com pouca luz.
Detalhes da ficha técnica
| Fabricante | Texas Instruments |
|---|---|
| Número da peça | LM75A |
| Tensão lógica/IO | 2.7 V a 5.5 V |
| Tensão de alimentação | 2,7 V a 5,5 V |
| Corrente de saída (por canal) | Não aplicável |
| Corrente de pico (por canal) | Não aplicável |
| Orientação de frequência PWM | Não aplicável |
| Limiares de lógica de entrada | 0.3 * Vcc (baixo), 0.7 * Vcc (alto) |
| Queda de tensão / RDS(on)/ saturação | Não aplicável |
| Limites térmicos | Funcionamento: -55°C a +125°C |
| Pacote | SOT-23 |
| Notas / variantes | Disponível em vários endereços I2C |
- Garanta uma alimentação adequada (2,7 V a 5,5 V).
- Use resistores de pull-up nas linhas SDA e SCL, se necessário.
- Verifique a configuração do endereço I2C para vários dispositivos.
- Mantenha a fiação curta para minimizar a interferência.
- Faixa de temperatura do monitor: -55°C a +125°C.
- Use o monitor serial para depurar as leituras de temperatura.
- Trate estados de erro no código de forma eficaz.
- Tenha cuidado com os requisitos de alimentação do display.
Instruções de fiação

Para ligar o sensor de temperatura LM75A e o LCD1602, comece conectando a fonte de alimentação. Conecte o pino VCC tanto do LM75A quanto do LCD1602 ao pino 5V do Arduino. Em seguida, conecte o pino de terra (GND) de ambos os módulos ao pino GND do Arduino.
Em seguida, conecte as linhas de comunicação I2C. O pino SDA do LM75A deve ser conectado ao pino A4 do Arduino, enquanto o pino SCL deve ser conectado ao pino A5. Isso permite a comunicação I2C entre o sensor e o Arduino. Certifique-se de que as conexões estejam seguras para evitar quaisquer erros de comunicação.
Exemplos de código e tutorial passo a passo
No código, primeiro incluímos as bibliotecas necessárias para o sensor LM75A e o display LCD1602. O trecho a seguir demonstra como criar uma instância do sensor LM75A:
LM75A lm75a_sensor(false, false, false);Esta linha inicializa o objeto do sensor LM75A. Os parâmetros booleanos correspondem aos pinos A0, A1 e A2 do LM75A, permitindo endereços I2C diferentes, se necessário.
Em seguida, configuramos o monitor serial e inicializamos o display LCD:
void setup(void) {
Serial.begin(9600);
lcd.begin();
lcd.backlight();
lcd.print("Robojax LM75A");
}Aqui, iniciamos a comunicação serial a 9600 baud e inicializamos o display LCD. A retroiluminação é ligada e uma mensagem inicial é exibida na tela.
No loop principal, lemos continuamente a temperatura e a exibimos:
float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
Serial.println("Error while getting temperature");
}Esta seção obtém a temperatura do sensor. Se a leitura for inválida, uma mensagem de erro é enviada ao monitor serial. Caso contrário, a temperatura pode ser processada e exibida no LCD.
Demonstração / O que esperar
Assim que tudo estiver ligado e o código for carregado, você deverá ver as leituras de temperatura no display LCD1602, alternando entre Celsius e Fahrenheit. Se o sensor LM75A estiver funcionando corretamente, ele atualizará continuamente a temperatura exibida a cada segundo. Se houver algum problema, como polaridade invertida ou fiação incorreta, verifique as conexões e certifique-se de que os pinos corretos estejam sendo usados (no vídeo em 00:00).
/*
* \brief Show temperature in degrees Celsius and Fahrenheit every second
*
* \author Quentin Comte-Gaz <quentin@comte-gaz.com>
* \date 8 July 2016
* \license MIT License (contact me if too restrictive)
* \copyright Copyright (c) 2016 Quentin Comte-Gaz
* \version 1.0
*
* Modified by Ahmad Shamshiri on July 12, 2018 at 22:40 for Robojax.com
* in Ajax, Ontario, Canada
* Watch video instructions for this code: https://youtu.be/hVo_msVMlaI
For this sketch, you need to connect:
VCC to 3.3V or 5V and GND to GND of the Arduino
SDA to A4 and SCL to A5
*/
#include <LM75A.h>
// Create I2C LM75A instance
LM75A lm75a_sensor(false, //A0 LM75A pin state
false, //A1 LM75A pin state
false); //A2 LM75A pin state
// Equivalent to "LM75A lm75a_sensor;"
// start of settings for LCD1602 with I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// end of settings for LCD1602 with I2C
void setup(void)
{
Serial.begin(9600);
Serial.println("Robojax LM75A Test");
// initialize the LCD
lcd.begin();
lcd.backlight();
lcd.print("Robojax LM75A");
lcd.setCursor(0,1);
lcd.print("Demo");
delay(2000);
}
void loop()
{
lcd.clear();// clear previous values from screen
// Robojax.com LM75A Test
float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
Serial.println("Error while getting temperature");
} else {
Serial.print("Temp: ");
Serial.print(temperature_in_degrees);
Serial.print(" C (");
float tmpF = LM75A::degreesToFahrenheit(temperature_in_degrees);
Serial.print(tmpF);
Serial.println(" F)");
lcdDisplay(
// to print Celsius:
0, // character 0
0, // line 0
"Celsius: ",
// to print Celsius
11, // character 10
0, // line 0
temperature_in_degrees
);
lcdDisplay(
// to print Fahrenheit:
0, // character 0
1, // line 1
"Fahrenheit: ",
// to print Fahrenheit
11, // character 9
1, // line 0
tmpF
);
}
delay(1000);
}
/*
* lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
* displays value and title on LCD1602
* How to use:
* If you want to display: "Voltage: 13.56mV" starting from the first character
* on the second row.
* use:
* lcdDisplay(0, 1, "Voltage: ", 13.56)
*
* tc is the character number (0)
* tr is the row number in the LCD (1)
* title is the text ("Voltage:")
* vc is the character number for the value
* vr is the row number for the value
* value is the value (13.56)
*/
void lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
{
// Robojax.com LCD1602 for LM75A Demo
lcd.setCursor (tc,tr); //
lcd.print(title);
lcd.setCursor (vc,vr); //
lcd.print(value);
}
Coisas que você pode precisar
-
AmazonasComprar LM75A na Amazonamzn.to
-
AmazonasCompre o LCD1602-I2C na Amazonamzn.to
-
eBayCompre LCD1602-I2C no eBayebay.us
-
AliExpressCompre 10 peças de LCD1602-I2C no AliExpress.s.click.aliexpress.com
Recursos e referências
-
ExternoBiblioteca LM75A do GitHubgithub.com
-
ExternoDatasheet do LM75A da NXPnxp.com
-
ExternoLM75A folha de dados da TIti.com
Arquivos📁
Arquivo Fritzing
-
Sensor de Temperatura LM75
Temperature Sensor - LM75.fzpz0.01 MB
Outros arquivos
-
Biblioteca LM75A da Robojax.com
robojax-LM75A_temperature_sensor.zip0.56 MB