Introduction: Arduino Tutorial - LCD - Temperature Sensor

Picture of Arduino Tutorial - LCD - Temperature Sensor

No tutorial anterior falamos sobre uma montagem que utilizava uma resistência variável como sensor de posição (Ver tutorial anterior Arduino Tutorial - Analog Input - Resistive Sensors - Monitor Serial), alterando a sua resistência consoante a sua posição, neste tutorial vamos falar de outro sensor resistivo que altera a sua resistência, mas agora consoante a temperatura em seu redor, ou seja, um Sensor de temperatura.

Este sensor normalmente é constituído por uma resistência NTC (Negative Temperature Coefficient) que diminui a sua resistência com o aumento de temperatura ou então uma PTC (Positive Temperature Coefficient) que aumenta a resistência com o aumento de temperatura (Ver gráfico acima).

Este tipo sensor também é ligado aos pinos de entrada analógica, utilizando uma montagem de um divisor de tensão, variando assim a tensão, entre 0 e 5V no pino de entrada (Ver imagens acima).

Alem deste sensor de temperatura, utilizamos também um LCD 16x2 (Liquid Crystal Display), que como a sua referencia indica tem 16 colunas e 2 linhas. Para explicar o funcionamento destes dois componentes realizamos uma montagem, em que o objectivo é representar no LCD, a temperatura instantânea que o sensor detecta num determinado momento, em graus Celsius (ºC) .

Caso queiram saber mais sobre este tipo de LCD, as suas características e a sua configurações, vejam a sua datasheet (Ver ficheiro abaixo), como também em "https://store.arduino.cc/arduino-uno-rev3" para ver na página oficial do Arduino as especificações detalhadas sobre o Arduino UNO.

Step 1: Motagem

Como esta montagem requer algumas ligações utilizamos também uma Breadboard, pois é bastante fácil de utilizar e ajuda nas ligações dos vários componentes. Aconselho em primeiro lugar a montagem do LCD 16x2, pois a montagem deste é mais complexa e requer alguns cuidados, só depois da montagem do LCD montamos o sensor de temperatura.

Material necessário:

  • 1x Arduíno UNO;
  • 1x Cabo USB;
  • 1x Breadboard;
  • 1x LCD16x2;
  • 1x Resistência 220Ω;
  • 1x Resistência 10KΩ;
  • 1x Sensor de temperatura NTC 10KΩ;
  • 1x Potenciómetro 10KΩ.

Instalação do LCD 16x2:

Como podem verificar na imagem com montagem completa, não utilizamos todos os pinos do LCD, pois cada pino tem uma função especifica (Ver legenda acima). Assim para explicar mais facilmente o funcionamento do LCD, agrupei os seus pinos em 3 grupos, o grupo dos Pinos de Alimentação, o de Pinos de Comunicação e de Pinos de Informação.

Pinos de Alimentação:

  • Gnd;
  • Vcc;
  • V0;
  • LED - ou A (Anodo);
  • LED + ou K (Catodo).

As alimentações do LCD (Gnd e Vcc) são feitas através dos pinos Gnd e +5V do Arduino UNO, pois são estáveis e protegidas não permitindo que existam sobrecargas ou curto-circuitos.

O Pino V0, tem a função de ajustar o contraste dos caracteres, para podermos controlar esse ajuste ligamos este pino uma resistência variável de 10KΩ, a funcionar como um divisor de tensão (Ver imagem acima), alterando assim a tensão entre 0 e 5V.

Os pinos de alimentação do LED da luz de fundo do LCD (A e K), são também ligados aos pinos de Gnd e +5V de Arduino UNO, no entanto, ligamos em serie uma resistência de 220Ω para que o brilho não seja demasiado intenso, danificando assim os LED internos do LCD.

Pinos de Comunicação:

  • RS (Register Select);
  • R/W (Read / Write);
  • E (Enable).

Nos pinos de comunicação teremos apenas de ter atenção ao pino R/W, pois este deve estar ligado a Gnd para que seja permitido escrever no LCD aparecendo assim o caracteres, caso contrario podemos estar a ler o dados guardados na memoria interna do LCD, ficando o LCD em branco.

Pinos de Informação:

  • D0;
  • D1;
  • D2;
  • D3;
  • D4;
  • D5;
  • D6;
  • D7.

Nesta montagem utilizamos todos os pinos de alimentação e comunicação, no entanto, os pinos de informaçãoutilizamos apenas 4 dos 8 possíveis, pois podemos realizar esta montagem como metade dos pinos de dados. Isto é possível através da Biblioteca LiquidCrystal.h que utilizamos no código e que permite ler o Byte (Byte = 8 bits) de informação enviado, mas dividido em 2 partes, ou seja, 4 bits de cada vez.

Para isso esta Biblioteca controla os pinos de comunicação, de forma a que o LCD saiba de que tipo e quais os canais de comunicação receberão a informação (Pinos D4 a D7).

Instalação do sensor de temperatura:

Terminada a montagem do LCD montamos o sensor de temperatura, neste caso utilizámos um sensor que vem instalado na ponta de um cabo e com uma cápsula metálica tornando à prova de agua. Como foi referenciado anteriormente, este é um sensor resistivo NTC (Negative Temperature Coefficient), ou seja, diminui a sua resistência à medida que a temperatura aumenta.

No entanto, para que o Arduino possa realizar a leitura do sensor, temos de o instalar com um circuito divisor de tensão. Como o sensor de temperatura é de 10KΩ, segundo as especificações do fabricante, a resistência que escolhemos para o divisor de tensão é também de 10kΩ.

Agora ligamos o ponto em comum deste divisor de tensão a um dos pinos analógicos do Arduino UNO (Ver imagem acima), neste caso escolhemos o o pino A0, Agora à medida que a temperatura varia, a tensão nesse pino analógico também altera entre 0 e 5V, sendo assim possível para o Arduino realizar essa leitura.

Step 2: Código

Agora com a montagem terminada, ligamos o cabo USB e carregamos o respectivo código na placa do Arduino para carregar o código.

No código começamos então por importar as bibliotecas thermistor.h e a LiquidCrystal.h, através do gestor de bibliotecas do software do Arduino. Estas bibliotecas facilitam a programação pois contêm comandos e funções criadas especificamente para determinados componentes.

Neste caso a biblioteca thermistor.h, permite-nos apenas com uma função configurar este tipo de sensor de temperatura.

#include "thermistor.h"		//Importar a "thermistor" library

//Esta função define:
THERMISTOR SENSOR (Pino_Sensor, 10000, 3950, 10000);

	//Pino de entrada do sensor;
	//Resistência nominal a 25ºC do sensor;
	//Coeficiente beta do sensor;
	//Valor da resistência do sensor.

A biblioteca LiquidCrystal.h também facilita muito a programação do código para o LCD, sendo apenas necessário configurar 2 funções para que este fique a funcionar em pleno, o que caso contrario seria muitas mais.

//Definir os pinos de comunicação e informação do LCD:
LiquidCrystal lcd ("RS", "E", "D7", "D6", "D5", "D4");

e

void setup(){
	//Inicia a comunicação com LCD 16x2:
	lcd.begin(2, 16);
}

Agora para interagir como o sensor de temperatura, utilizamos o comando sensor.read(), devolvendo o valor numérico relativo à temperatura em ºC, no entanto, esse valor não tem casas decimais o que obriga a um pequeno calculo.

Não esquecer que para utilizar variáveis com casas decimais, estas variáveis terão de ser declaradas como float.

void loop(){
	//Leitura do sensor de temperatura.
  	Valor_Temp = sensor.read();

	//Calculo do valor da temperatura com casas decimais.
	Valor_Temp= Valor_Temp/10;
}

Para escrever no LCD é necessário primeiro definir o local onde se começará a escrever, ou seja, a coluna e a linha, depois imprimimos o texto que queremos tendo em atenção que este LCD apenas tem 16 colunas e 2 linhas, caso o texto passe esses limites não aparecerá os caracteres.

void loop(){
	//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever:
	lcd.setCursor(0, 0);
	
	//Escreve no LCD:
	lcd.print("Temperatura:");
}

Este é o código completo para a nossa montagem, onde são utilizados os conceitos descritos anteriormente, este é um código muito simples e lembrem-se que podem sempre alterar o tipo de sensor, tendo em atenção aos valores resistivos desse. Caso queiram saber mais sobre as entradas analógicas do Arduino vejam também o tutorial "Arduino Tutorial - Analog Input - Resistive Sensors - Monitor Serial", onde explicamos esta característica mais detalhadamente.

#include "thermistor.h"		//Importar a "thermistor" library.
#include  <LiquidCrystal.h>	//Importar a LCD library.

int Pino_Sensor = A0;		//Variável para selecção do pino de entrada analógica.
float Valor_Temperatura = 0;	//Variável para o calculo da temperatura com números decimais.

//Definir o pino do sensor;
//Resistência nominal a 25ºC;
//Coeficiente beta do sensor;
//Valor da resistência do sensor.
THERMISTOR sensor(Pino_Sensor, 10000, 3950, 10000);
// Definir os pinos de comunicação e informação do LCD.
LiquidCrystal lcd (12, 13, 11, 10, 9, 8);

//Correr a função SETUP apenas uma vez após ser pressionado Reset:
void setup(){
	//Inicia a Comunicação com LCD 16x2:
	lcd.begin(2, 16);
}

//Correr a função LOOP repetidamente:
void loop(){
	//Leitura do sensor de temperatura.
	Valor_Temperatura = sensor.read();
	//Cálculo do valor da temperatura.
	Valor_Temperatura = Valor_Temperatura/10;

	//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever: 
	lcd.setCursor(0, 0);
	//Escreve no LCD:
	lcd.print("Temperatura:");
	//Define a coluna (em 16) e a linha (em 2) do LCD onde escrever: 
	lcd.setCursor(0, 1);
	//Escreve no LCD:
	lcd.print(Valor_Temperatura);
	//Atraso para o próximo passo.
	delay(1000);
}

Caso queiram saber mais ou tenham dúvidas sobre estas e outras referências do código, vejam a sua explicação detalhada no site oficial do Arduíno, através deste Link "https://www.arduino.cc/en/Reference/HomePage".

Procurem os nossos tutoriais acerca do Arduino, onde explicamos diversas montagens e o funcionamento dos seus componentes, já agora visitem o nosso canal no Youtube, Facebook ou Twitter.

Abraço e bons projectos.

Comments

About This Instructable

163views

4favorites

License:

Bio: Este é um canal para homemakers e DIY onde vai encontrar tutoriais úteis acerca de Electrónica, Arduíno, Robótica e Impressão 3D. Estes têm explicações simples ... More »
More by Crazy Taz Projects:Arduino Tutorial - Alarm - Flow Sensor - Monitor SerialArduino Tutorial - LCD - Temperature SensorArduino Tutorial - Analog Input - Resistive Sensors - Monitor Serial
Add instructable to: