Projeto 84 - Controle de temperatura em baixo d'água - sensor DS18B20 e Arduino

Básico - Projeto 84

Controlando temperatura em baixo d'água - DS18B20 com display

Objetivo

Neste projeto vamos demonstrar como controlar as temperaturas em um reservatório com água utilizando o sensor de temperatura DS18B20 com cápsula blindada a prova de água. Controlado pelo Arduino, vamos simular um reservatório para manter a temperatura entre 18ºC e 22ºC. Ao atingir os valores máximo ou mínimo um alarme de som é disparado, o que poderia ser substituído por um sistema liga e desliga de uma resistência para aquecer um aqúario, por exemplo. Ao clicarmos em botão (push button) o sistema entra no modo silencioso, onde o buzzer é desativado e apenas o led vermelho é acionado. No projeto, os valores da temperatura são exibidos em um display LCD.

Observações:

1) Utilizamos o sensor DS18B20 com cápsula a prova de água como controle de temperatura da água. O sensor DS18B20 à prova d'água é recomendado para situações onde é necessário medir a temperatura em ambientes úmidos. Também existe a possibilidade de ele ficar submerso, já que ele possui um cabo envolto de PVC e uma ponta de aço inox, o que facilita a utilização sem medo de danificá-lo.

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).

Definições

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.

Sensor DS18B20 à prova d'água

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 piscinas, banheiras e aquários.

Componentes necessários

Referência

Componente

Quantidade

Imagem

Observação

Protoboard Protoboard 830 pontos 1 Resultado de imagem para protoboard 830v

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 DISPLAY LCD 16X2

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 Módulo I2C display LCD Arduino

O módulo I2C poderá vir separado ou já soldado no display LCD

(datasheet)

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 a prova de água)

1

Sensor DS18B20 à prova d'água

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

(datasheet)

Led 5mm Led 5mm 2

1 led vermelho

1 led verde

(Obs.: você poderá utilizar leds de quaisquer cores, de 5 ou 3mm)

Resistor

Resistor

 3

 1 resistor de 4,7KΩ a 10KΩ (sensor)

2 resistores de 150Ω ou superior (leds)

  Push Button Push button 6X6X5mm 1  
Buzzer Buzzer ativo 5V 12mm 1 Utilize um buzzer, um disco piezoelétrico  ou um mini autofalante
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.

DISPLAY LCD 16X2

2. Para a montagem do display com adaptador, entenda a estrutura do módulo I2C para display LCD 16x2 / 20X4:

Módulo I2C - Detalhes

2.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.

2.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.

2.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":

DOWNLOAD - I2C_scanner.ino

2.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 está configurado:

2.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.

2.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.

3. Lembre-se que o LED tem polaridade: O terminal maior tem polaridade positiva e o lado do chanfro tem polaridade negativa.

3.1. Portanto, faça a conexão do Arduino no terminal positivo do led (anodo) e o GND no terminal negativo (catodo).

3.2. Para evitar danos ao led é necessário a inclusão de um resistor no circuito. Como o resistor é um limitador da corrente elétrica, ele poderá estar conectado no anodo (terminal maior) ou no catodo (terminal menor) do led, tanto faz.

4. Determinamos o valor do resistor através da tabela prática: Tabela prática de utilização de leds 3mm e 5mm. Entretanto, o mais correto é sempre verificar o datasheet do fabricante do LED para você ter os exatos valores de tensão e corrente do mesmo - leia  Leds ligados em série e em paralelo.

2.1. Valores utilizados para nossos projetos: LEDs difusos ou de alto brilho: Vermelho, Laranja e Amarelo: 150 Ω | Led Verde e Azul: 100 Ω (utilizamos resistores de 200 Ω neste projeto)

5. O buzzer tem polaridade. Portando, cuidado para não ligar o buzzer invertido. Se você retirar o adesivo superior do buzzzer poderá ver um sinal de positivo (+). Este sinal mostra onde está o pino positivo do componente que deverá estar conectado ao potenciômetro (neste projeto) ou a uma porta digital do Arduino e o polo negativo ao GND.