Sensor de temperatura LM35 com Arduino e Display Gráfico

Sensor de temperatura LM35 com Arduino e Display Gráfico Deixe um comentário

Neste tutorial, abordaremos um projeto prático de monitoramento de temperatura com Arduino, focando no uso do sensor de temperatura LM35 e do display LCD gráfico 128×64.

Monitoramento com sensor de temperatura lm35

Ao seguir este guia, você poderá compreender detalhadamente o funcionamento do LM35, as conexões no circuito e ter acesso ao código-fonte necessário. Ao final, espera-se que você tenha adquirido conhecimentos sólidos sobre esses componentes e a capacidade de implementar seu próprio monitor de temperatura. 

Objetivos

O objetivo principal deste tutorial é apresentar um projeto prático de monitoramento de temperatura utilizando um Arduino Uno R4 Minima, um sensor de temperatura LM35 e um display LCD gráfico 128×64. Ao final do guia, espera-se que você tenha adquirido conhecimentos sobre:

  • Montagem de Circuitos Eletrônicos: Aprenderá a conectar eficientemente componentes eletrônicos, como o sensor de temperatura LM35 e o display LCD gráfico 128×64, utilizando um Arduino Uno R4 Minima.
  • Funcionamento do Sensor LM35: Compreenderá o princípio de operação do sensor de temperatura LM35, incluindo sua relação linear entre a tensão de saída e a temperatura em graus Celsius, além da faixa típica de operação.
  • Uso de Displays Gráficos: Terá conhecimentos sobre displays gráficos, especialmente o LCD 128×64, entendendo como eles funcionam, são controlados por um ST7920 e como podem ser programados para exibir informações visuais.
  • Programação em Arduino: Familiarizar-se-á com a programação em Arduino, utilizando a Arduino IDE, instalação de bibliotecas e escrita de código para a leitura do sensor LM35 e exibição da temperatura no display.
  • Integração de Hardware e Software: Desenvolverá a habilidade de integrar hardware e software para criar projetos práticos, como um sistema de monitoramento de temperatura em tempo real.

Materiais Necessários

Para seguir com este tutorial, você irá precisar dos seguintes componentes:

materiais necessarios

Além dos itens mencionados acima, você também precisará ter a Arduino IDE instalada em seu computador uma conta cadastrada no Arduino Cloud.

Como funciona o sensor de temperatura LM35?

O LM35 é um sensor de temperatura amplamente utilizado devido à sua simplicidade e precisão. Ele opera com base na variação linear da tensão de saída em relação à temperatura ambiente, proporcionando uma saída de tensão proporcional em graus Celsius.

sensor de temperatura arduino lm35

Este sensor possui três pinos: VCC (alimentação), OUT (saída) e GND (terra). A faixa de temperatura típica de operação do LM35 varia de -55 °C a +150 °C, adequando-se a diversas aplicações.

A tensão de saída do LM35 é determinada por uma fórmula simples: 

Vout = 0,01 × temperatura em graus Celsius + C

Essa relação linear facilita a interpretação dos dados de temperatura.

É importante destacar que o sensor pode exigir calibração para garantir maior precisão. Ajustes na constante C na fórmula de saída podem ser necessários para calibrar o sensor conforme a aplicação específica.

Ao medir a tensão de saída (VOUT) do LM35, é possível converter essa informação em graus Celsius por meio da fórmula mencionada anteriormente. O LM35 é comumente empregado em projetos eletrônicos, como termostatos e sistemas de controle de temperatura, devido à sua versatilidade.

Por ser um sensor analógico, o LM35 requer uma interface analógica, como um conversor analógico-digital, para ser conectado a microcontroladores digitais. Além disso, precauções devem ser tomadas para garantir uma alimentação adequada e evitar condições extremas que possam prejudicar o sensor.

Consultar o datasheet específico do LM35 utilizado é fundamental para obter informações detalhadas sobre suas características e recomendações de uso.

Como funciona o Display LCD Gráfico 128×64?

O Display LCD Gráfico 128×64 é uma tela que oferece a capacidade de exibir informações gráficas por meio de uma matriz de pixels organizada em linhas e colunas. Com 128 colunas e 64 linhas, totalizando 8192 pixels, esse tipo de display permite a criação de gráficos, ícones e texto personalizado.

Display Gráfico LCD 128x64

O controle do display é realizado por um controlador ST7920, específico para displays LCD gráficos. Esse componente é responsável por gerenciar a matriz de pixels e interpretar os dados enviados para exibição.

O display inclui uma memória de vídeo incorporada, onde são armazenados os dados de imagem a serem exibidos. O controlador gráfico lê esses dados e os converte em sinais elétricos para controlar cada pixel na tela.

A taxa de atualização do display é crucial para determinar a frequência com que os dados de imagem podem ser alterados, sendo essencial para exibições suaves de animações ou gráficos em movimento.

Alguns displays LCD gráficos também possuem uma fonte de luz de fundo (backlight) para iluminar a tela, o que é útil em ambientes com pouca luz.

Na programação, é possível utilizar bibliotecas específicas que oferecem funções para enviar comandos e dados ao display, facilitando a criação de interfaces gráficas. Esses displays são comumente empregados em projetos eletrônicos, como dispositivos de controle, instrumentação e em aplicações de hobby que demandam a exibição de informações gráficas.

Circuito Eletrônico com Sensor de Temperatura LM35

Segue o esquema de conexões para o circuito responsável por imprimir no display gráfico 128×64 a informação de temperatura captada pelo sensor LM35.

 

 

Circuito Eletrônico com sensor de temperatura arduino

As conexões realizadas são as seguintes:

Sensor de Temperatura LM35 <-> Arduino Uno R4 Minima

VCC <-> 5V
OUT <-> A0
GND <-> GND

Display Gráfico 128×64 <-> Arduino Uno R4 Minima

K(-) <-> GND
A(+) <-> 3.3V
RST <-> 7
CS1 <-> GND
E <-> 6
R/W <-> 5
D/I <-> 4
Vdd <-> 5V
Vss <-> GND

Instalação das Bibliotecas

Antes de carregar o código para o Arduino Uno R4 Minima, é necessário fazer a instalação de uma biblioteca. Ela deve ser instalada através do Gerenciador de Bibliotecas da própria Arduino IDE. 

  • U8g2 – por oliver

Instalação biblioteca arduino IDE

Código

O código apresentado abaixo é um programa para Arduino destinado a monitorar a temperatura por meio de um sensor LM35 e exibir as informações em um display gráfico de 128×64 pixels.

ATENÇÃO! Altere a variável “c” (linha 15) para calibrar seu sensor de temperatura LM35. 

// Programa: Monitor de temperatura com sensor LM35 e display gráfico 128x64
// Autor: Rosana Guse

// Adiciona as bibliotecas utilizadas no código
#include <Arduino.h>
#include <U8g2lib.h>

// Define os pinos de ligação
#define pinoLM35 A0

// Cria um objeto para o display gráfico 128x64
U8G2_ST7920_128X64_F_SW_SPI u8g2(U8G2_R2, 6, 5, 4, 7);

// Define as variáveis utilizadas no código
float c = 0.45;
char temperatura[6];

// Cria a imagem de um termômetro
const unsigned char termometro[] = {
  0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x01, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x78, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x07, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x1c, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x0e, 0x1f, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x3f, 0x8c, 0x0f, 0xf0, 0x00,
  0x00, 0x00, 0x0e, 0x73, 0x8e, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x71, 0x8e, 0x07, 0xfc, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x0e, 0x71, 0x8e, 0x0f, 0xfc, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x0e, 0x7f, 0x8e, 0x0f, 0xf0, 0x00,
  0x00, 0x00, 0x0e, 0x7f, 0x8e, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x0e, 0x7f, 0x8e, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x71, 0x8e, 0x0f, 0xfe, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x71, 0x8e, 0x07, 0xe0, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x0e, 0x71, 0x8e, 0x0f, 0xf0, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x0e, 0x71, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x71, 0x8f, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x38, 0x71, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf1, 0xc3, 0xc0, 0x00, 0x00,
  0x00, 0x00, 0xf1, 0xf1, 0xf1, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xc0, 0x78, 0xe0, 0x00, 0x00,
  0x00, 0x00, 0xe7, 0x80, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x01, 0xc7, 0x00, 0x1c, 0x70, 0x00, 0x00,
  0x00, 0x01, 0xce, 0x00, 0x1c, 0x70, 0x00, 0x00, 0x00, 0x01, 0xce, 0x00, 0x0c, 0x70, 0x00, 0x00,
  0x00, 0x01, 0xce, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x01, 0xce, 0x00, 0x0e, 0x70, 0x00, 0x00,
  0x00, 0x01, 0xce, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x01, 0xce, 0x00, 0x0c, 0x70, 0x00, 0x00,
  0x00, 0x01, 0xc6, 0x00, 0x1c, 0x70, 0x00, 0x00, 0x00, 0x01, 0xe7, 0x00, 0x1c, 0x60, 0x00, 0x00,
  0x00, 0x00, 0xe3, 0x80, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xe0, 0xf0, 0xe0, 0x00, 0x00,
  0x00, 0x00, 0x71, 0xff, 0xe1, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7f, 0xc3, 0x80, 0x00, 0x00,
  0x00, 0x00, 0x3c, 0x0e, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x0f, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x0f, 0xc0, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf8, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x01, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00
};
void setup() {
  // Inicia a comunicação serial
  Serial.begin(9600);
 
  // Define o pino OUT do LM35 como entrada
  pinMode(pinoLM35,INPUT);
 
  // Inicia o display gráfico 128x64
  u8g2.begin();
}
void loop() {
  // Faz a leitura da porta analógica A0
  float leituraLM35 = float(analogRead(pinoLM35));
  // Converte a leitura analógica em uma tensão
  float tensaoLM35 = (leituraLM35 * 5) / 1023;
  // Converte a tenão em temperatura
  float temperaturaLM35 = (tensaoLM35 - c) / 0.01;
 
  // Converte float em  string
  dtostrf(temperaturaLM35, 5, 2, temperatura);
 
  // Imprime a temperatura no monitor serial
  Serial.print("Temperatura LM35: ");
  Serial.print(temperatura);
  Serial.println ("ºC");
 
  // Imprime a imagem e a temperatura no display
  u8g2.clearBuffer();
  u8g2.drawBitmap (63, 0, 8, 64, termometro);
  u8g2.setFont(u8g2_font_t0_11b_me);
  u8g2.drawStr(5,10,"SENSOR LM35");
  u8g2.drawStr(5,20,"TEMPERATURA");
  u8g2.drawStr(15,40,temperatura);
  u8g2.drawStr(48,38,"o"); 
  u8g2.drawStr(55,40,"C");  
  u8g2.sendBuffer();

  // Aguarda 5 segundos para uma nova leitura
  delay(5000);
}

Funcionamento: Sensor de Temperatura LM35

O projeto utiliza um Arduino Uno R4 Minima, um sensor de temperatura LM35 e um display LCD gráfico 128×64 para monitorar e exibir informações de temperatura. O LM35 converte a temperatura ambiente em uma saída de tensão proporcional, sendo conectado ao Arduino Uno. O display LCD gráfico, controlado por um ST7920, é responsável por exibir visualmente os dados.

No aspecto do hardware, as conexões incluem o sensor LM35 ligado ao pino A0 do Arduino e o display LCD gráfico conectado a vários pinos do Arduino Uno. 

Funcionamento sensor lm35

Quanto ao software, o código em Arduino IDE utiliza a biblioteca U8g2 para controlar o display gráfico. A leitura analógica do sensor LM35 é convertida em temperatura, e essa informação é exibida tanto no monitor serial quanto no display. O código opera em um loop contínuo, realizando leituras de temperatura a cada 5 segundos. Além disso, o código inclui uma matriz de bytes representando um termômetro gráfico, que é exibido no display junto com a temperatura.


Se você tiver dúvidas, sugestões ou experiências para compartilhar, fique a vontade para deixar um comentário abaixo. E para não perder nenhum conteúdo como este, não deixe de nos seguir no Instagram.

Faça seu comentário

Acesse sua conta e participe