Projeto 83 - Termômetro digital com sensor DS18B20 e Arduino
- Detalhes
- angelo
- Acessos: 2164
Básico - Projeto 83
Sensor de temperatura DS18B20 com display
Objetivo
Neste projeto, vamos demonstrar o uso do sensor de temperatura DS18B20 controlado pelo Arduino para monitorar a temperatura ambiente. No projeto, o valor da temperatura será exibido em um display LCD, junto com os valores máximo e mínimo registrados desde que o microcontrolador foi ligado ou reiniciado. Também adicionaremos um botão (push button) que quando acionado alterna a exibição de Celsius para Fahrenheit.
Observações:
1) Utilizamos o sensor DS18B20 como controle de temperatura ambiente.
2) Este projeto foi desenvolvido para um display LCD com controlador HD44780 em conjunto com o módulo serial I2C (soldado ou não).
3) Se você não possui um módulo I2C para display LCD, poderá adaptar o projeto para o display LCD sem o adaptador. Veja como montar o display no projeto Projeto 38 - Controlando um display LCD (instalação e comandos básicos).
Sensor DS18B20 - O DS18B20 é um sensor de temperatura capaz de efetuar leituras entre -55ºC e 125ºC com precisão de até ±0,5 ºC. Cada sensor possui um endereço físico, possibilitando que se utilize vários sensores em uma única porta do microcontrolador e mesmo assim, efetuar a leitura individualmente. Ele portanto, pode ler a temperatura, interpreta-la e enviar a informação do valor de temperatura em graus Celsius para o microcontrolador usando um barramento de apenas um fio (protocolo de comunicação OneWire ou 1-wire ). Em geral, os sensores de temperatura trabalham de forma diferente, pois a maioria deles são analógicos e fornecem um valor de tensão ou de corrente que precisa ser interpretado pelo microcontrolador.
Endereço individual e fixo
Cada sensor de temperatura DS18B20 possui um endereço serial de 64 bits próprio, possibilitando a montagem com vários sensores em uma única porta digital do microcontrolador e obter valores de temperatura para cada sensor separadamente. Veremos na prática este recurso em projetos futuros.
Encapsulamento
a) O sensor de temperatura DS18B20 é fornecido com o encapsulamento TO-92, o mesmo utilizado no sensor LM35.
b) O sensor DS18B20 também é produzido com proteção à prova de água (cápsula metálica) com fios. São muito comuns no controle de temperatura de aquários, piscinas e banheiras aquecidas.
Outros Recursos
Estes recursos não serão utilizados nesse tutorial:
a) Modo parasita: pode ser utilizado apenas 2 terminais para ligar o sensor.
b) Alarme programável de temperatura alta e baixa.
c) Resolução configurável para 9, 10, 11 ou 12 bits
Sensores de temperatura são dispositivos que identificam a temperatura de um determinado equipamento, processo ou do próprio ambiente, podendo ser utilizados no monitoramento e controle para que se mantenham as condições adequadas de funcionamento e/ou conforto térmico. Veja abaixo altguns tutoriais que apresentamos medições de temperatura com diferentes sensores:
Projeto 39 - Display LCD como mostrador de temperatura (sensor LM35)
Projeto 40 - Sensor de temperatura e umidade DHT11 com display LCD
Projeto 41 - Usando o sensor de temperatura termistor NTC 10K com LCD
Projeto 51 - Relógio digital com temperatura - RTC DS3231 Arduino
Aplicação
Para fins didáticos e projetos onde é necessária a medição de temperatura do ambiente e monitoramento de máquinas, equipamento, processos e sistemas de controle.
Componentes necessários
Referência |
Componente |
Quantidade |
Imagem |
Observação |
Protoboard | Protoboard 830 pontos | 1 | ![]() |
No mínimo utilizar protoboard com 830 pontos |
Jumpers | Kit cabos ligação macho / macho | 1 |
|
|
Display LCD |
Display LCD 16X2 com pinos soldados |
1 | ![]() |
LCD que utilize o controlador HD44780 (veja na descrição ou datasheet do componente) O display poderá ser de qualquer cor (fundo verde, azul ou vermelho) |
Módulo I2C para display LCD |
Módulo I2C com CI PCF8574 (opcional) |
1 | ![]() |
O módulo I2C poderá vir separado ou já soldado no display LCD Se você não possui um módulo I2C para display LCD, poderá adaptar o projeto para o display LCD sem o adaptador. |
Sensor de Temperatura DS18B20 |
Sensor de Temperatura DS18B20 (encapsulamento TO-92 ou a prova de água) |
1 |
|
Tensão de operação: 3 a 5,5V Faixa de medição de temperatura: -55 ºC a +125 ºC Precisão: +/- 0,5 ºC entre -10 ºC e +85 ºC Ponta de aço inoxidável (6 x 50mm), com cabo de 108 cm de comprimento |
Resistor | Resistor | 1 |
1 Resistor de 4,7KΩ a 10KΩ |
|
Arduino UNO R3 | Arduino UNO | 1 | ![]() |
Você poderá utilizar uma placa Arduino UNO original ou similar |
Montagem do Circuito
Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito.
Atenção
1) Neste projeto vamos utilizar um display LCD 16x2 com controlador HD44780, que se adapta aos mais diversos projetos com vários modelos de placas e microcontroladores. Este display possui 16 colunas por 2 linhas com backlight (luz de fundo) verde, azul ou vermelha e tem 16 pinos para a conexão. Atenção: Utilize um display LCD com os pinos soldados.
3. Para a montagem do display com adaptador, entenda a estrutura do módulo I2C para display LCD 16x2 / 20X4:
3.1. Na lateral do adaptador encontramos 4 pinos, sendo: 2 pinos para alimentação (Vcc e GND) e 2 pinos para conexão com a interface I2C (SDA e SCL) que deverão estar conectados nos pinos analógicos A4 (SDA) e A5 (SCL) do Arduino Uno ou nos pinos A20 (SDA) e A21 (SCL) do Arduino Mega 2560. Veja a tabela abaixo com onde temos as principais placas Arduino e suas conexões com o I2C.
3.2. Para controlar o contraste do display, utilize o potenciômetro de ajuste de contraste. O jumper lateral, quando utilizado, permite que a luz do fundo (backlight) seja controlada pelo programa ou permaneça apagada.
3.3. A seleção de endereço do adaptador I2C para display LCD, na maioria dos módulos fornecidos no mercado já vêm configurados com o com o endereço 0x27. Se você não sabe qual endereço que o seu módulo I2C e/ou módulo RTC DS3231 está configurado, baixe o seguinte "sketch":
3.3.1 Após instalar e rodar o sketch acima, abra o monitor serial que mostrará qual é o endereço que o seu módulo I2C e o módulo RTC DS3231 está configurado:
3.3.1.1 Nos casos em que módulo I2C estiver configurado com uma faixa de endereços diferente do endereço 0X27 altere a alinha de programação -> LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE); com o endereço correto.
3.5. Para saber mais sobre a montagem e utilização de display LCD com módulo I2C leia: Projeto 48 - Como controlar um display LCD com o módulo I2C.
4) Monte o botão (push button) sem o resistor, pois através da programação vamos habilitar o resistor de pull up interno do Arduino. Desta forma, quando o botão estiver pressionado, o Arduino retornará "LOW" ou "0". Para saber mais sobre botões, assista o vídeo Arduino: Botão e Resistor de Pull Up Interno ou leia o artigo: Como usar push button com Arduino (programação).