Bóson Treinamentos em Ciência e Tecnologia

Sensor de Temperatura TMP36 com Arduino e visor LCD 16×2

Sensor TMP36 com LCD e microcontrolador Arduino

Sensor de Temperatura TMP36 com com Arduino e visor LCD

Neste projeto vamos empregar um sensor para verificar a temperatura do ambiente e enviar a leitura para um Arduino, que se encarregará de interpretar o valor lido e então exibir em um display LCD a temperatura medida em graus Celsius (ºC).

Para tal usaremos o sensor TMP36, que é um sensor de baixo custo, bastante comum e muito empregado em circuitos que envolvam controle de temperatura para realização de processos diversos.

Outros modelos de sensores podem ser empregados, como o TMP35 ou TMP37 bastando para isso realizar pequenas alterações no programa de acordo com as características de cada componente.

Algumas das aplicações mais comuns do TMP36 incluem:

entre muitas outras que podemos imaginar.

Algumas características do sensor TMP36

A seguir temos listadas algumas das características técnicas do sensor TMP36, retiradas de seu datasheet:

Para fazer a leitura da temperatura, a tensão de saída do TMP36 é conectada a um conversor analógico para digital (ADC) no microcontrolador (ou outro circuito). O microcontrolador (no caso, o Arduino) lê a tensão e, por meio de cálculos simples (explicados adiante), converte essa tensão medida em mV para uma temperatura correspondente em graus Celsius.

Mais informações sobre esse sensor podem ser obtidas no Datasheet do TMP36.

Vejamos os materiais que serão necessários para construir esse circuito e testá-lo.

Lista de Materiais

Vamos precisar dos seguintes componentes para montar o circuito do projeto:

O Circuito

A figura a seguir mostra as ligações dos componentes, criada com o auxílio de um software de simulação de circuitos – Tinkercad.

Diagrama Esquemático

E a seguir temos o diagrama esquemático do circuito, com detalhes de como os componentes são interligados.

Sensor TMP36 e visor LCD no Arduino – Diagrama Esquemático

Código-fonte

Na sequência temos o código que foi usado para programar o microcontrolador, com uma explicação detalhada logo após.

#include <LiquidCrystal.h>

// Inicializar a biblioteca com os números dos pinos digitais
LiquidCrystal lcd(12, 11, 2, 3, 4, 5);

// Variáveis para leitura e interpretação das leituras do TMP36
const int TEMP=0;
int val = 0;
float celsius=0.0;

void setup()
{
    // Configurar o número de colunas e linhas do LCD:
    lcd.begin(16, 2);

    // Texto a ser mostrado no LCD (texto fixo, primeira linha):
    lcd.print("Temp. °C");
}

void loop()
{
    // Posicionar o cursor na coluna 0 e linha 1 (segunda linha):
    lcd.setCursor(0, 1);

    // Ler o valor enviado pelo sensor
    val = analogRead(TEMP);

    // Calcular e ajustar a temperatura em graus Celsius
    celsius = map(((val - 20) * 3.04), 0, 1023, -40, 125); 

    // Imprimir no LCD a temperatura
    lcd.print(celsius);
}

Funcionamento do código

1. Declarações iniciais

Começamos incluindo a biblioteca “LiquidCrystal”, que é necessária para controlar o display LCD.
Logo após criamos uma instância da classe “LiquidCrystal” chamada “lcd”, definindo os pinos digitais que estão conectados aos pinos do display . Os números (12, 11, 2, 3, 4, 5) correspondem, respectivamente, aos pinos RS, Enable, D4, D5, D6 e D7 do LCD.
 
Na sequência, declaramos duas variáveis e uma constante que serão usadas pelo programa:
 

2. Função setup()

Aqui configuramos o número de colunas e linhas do display LCD com o método lcd.begin(16, 2) e escrevemos uma mensagem fixa na primeira linha do LCD com lcd.print(“Temp. °C”) 
 

3. Função loop()

Na função principal do programa temos:

  1. Posicionamento do cursor na coluna 0 e linha 1 (segunda linha) com lcd.setCursor(0, 1)
  2. Leitura do valor analógico enviado pelo sensor e armazenado na variável val com val = analogRead(TEMP)
  3. Cálculo da temperatura em graus Celsius com base no valor lido do sensor com a instrução celsius = map(((val – 20) * 3.04), 0, 1023, -40, 125)
  4. Finalmente, imprimimos a temperatura no display LCD com lcd.print(celsius)

A conversão de mV para ºC

A linha

celsius = map(((val - 20) * 3.04), 0, 1023, -40, 125);

permite mapear o valor lido do sensor, que é uma tensão elétrica da ordem de alguns mV, para um valor numérico que representa a temperatura medida pelo dispositivo. Nesta linha temos:

map(): A função map() é usada para mapear um valor de um intervalo para outro. Neste caso, ela mapeia o valor ajustado em mV para o intervalo de temperaturas em graus Celsius.

A sintaxe da função map() é a seguinte:

map(valor, de_min, de_max, para_min, para_max);

onde:

  • valor: O valor que queremos mapear para a nova faixa.
  • de_min e de_max: A faixa atual (mínimo e máximo) do valor de entrada. No caso, os valores 0 e 1023, que são os limites de leitura da entrada analógica do Arduino.
  • para_min e para_max: A faixa desejada (mínimo e máximo) para o valor de saída, que no caso é a faixa de temperaturas suportada pelo sensor: de -40ºC a 125ºC

Leia mais sobre a função map do Arduino aqui.

Antes de usar a função map(), o código realiza o cálculo (val – 20) * 3.04 para ajustar o valor lido do sensor. O sensor TMP36 gera valores que representam a temperatura em mV (milivolts) e estão relacionados a uma tensão de referência. O valor “20” é subtraído para compensar a tensão de referência do sensor e ter uma medição mais precisa. Já o valor “3.04” é um fator de conversão que leva em consideração a sensibilidade do sensor. O valor obtido é então mapeado pela função map().

Assim, o código calcula a temperatura em graus Celsius com base no valor analógico lido do sensor TMP36, ajustando-o primeiro e depois mapeando-o para o intervalo desejado de temperaturas. O resultado é armazenado na variável celsius, para exibição no display LCD.

Resultado

Assim que o circuito é ligado, o sensor inicia a detecção da temperatura ambiente e então o valor é lido pelo Arduino, que o converte e mostra a temperatura correspondente no mostrador LCD, como ilustra a imagem a seguir (retirada do simulador Tinkercad):

Temperatura sendo exibida em um display LCD a partir de um sensor TMP36

Variando a temperatura no sensor o valor exibido no LCD muda de acordo.

É isso aí! Nos próximos artigos vamos explorar mais circuitos interessantes e úteis com microcontroladores, sensores e outros componentes eletrônicos. Até!

Sair da versão mobile