Sensor de Temperatura TMP36 com Arduino e visor LCD 16×2
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:
- Sistemas de controle ambiental
- Proteção térmica de circuitos
- Controle de processos industriais
- Alarmes de incêndio
- Monitoramento de sistemas de potência
- Gerenciamento térmico de CPU
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:
- Saída Analógica: O TMP36 gera uma saída analógica proporcional à temperatura medida. A tensão de saída aumenta linearmente com o aumento da temperatura.
- Precisão: Boa precisão em relação à medição de temperatura. Sua precisão é de cerca de ±2°C.
- Alimentação: Alimentado com uma baixa tensão, tipicamente entre 2,7V e 5,5V
- Faixa de Operação: O sensor pode medir temperaturas em uma ampla faixa, geralmente de -40°C a 125°C.
- Tensão de Referência: Ele gera uma tensão de saída proporcional à temperatura, onde 0°C é representado como 0,5V. Para cada grau Celsius de aumento na temperatura ocorre um aumento de 10 mV na tensão de saída.
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:
- 01 Sensor de Temperatura TMP36
- 01 Arduino Uno (ou compatível)
- 01 Display LCD 16×2
- 01 Resistor de 220 Ω
- 01 Potenciômetro de 10 kΩ
- 01 Matriz de Contatos
- Fios diversos
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.
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
- TEMP é uma constante que representa o pino analógico ao qual o sensor TMP36 está conectado (no caso, o pino 0).
- val é uma variável que será usada para armazenar o valor enviado pelo sensor TMP36
- celsius é a variável que armazenará a temperatura (já convertida) em graus Celsius.
2. Função setup()
3. Função loop()
Na função principal do programa temos:
- Posicionamento do cursor na coluna 0 e linha 1 (segunda linha) com lcd.setCursor(0, 1)
- Leitura do valor analógico enviado pelo sensor e armazenado na variável val com val = analogRead(TEMP)
- 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)
- 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):
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é!
Escreva um comentário