Básico - Projeto 86

Trabalhando com vários sensores DS18B20 identificados por serial

Objetivo

Montar um sistema com vários sensores de temperatura DS18B20 conectados em um único pino do Arduino através da comunicação OneWire, onde utilizaremos o código serial exclusivo de cada sensor identificá-los. Este projeto tem a mesma funcionalidade do projeto anterior, ou seja, simular uma casa onde temos 3 sensores distribuídos nos seguintes locais: 1 sensor na Sala, 1 sensor no Quarto e um sensor blindado para medir a temperatura da água na piscina. Os valores são exibidos em graus Celsius em um display de LCD.

Observações:

1) Utilizamos sensores DS18B20 com encapsulamento TO-92 e a prova d'água como controle de temperatura.

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 fixo e exclusivo

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.

Sistema de comunicação OneWire

O sistema de comunicação Onewire que mostraremos nesse tutorial somente poderá ser utilizado com os sensores DS18B20, pois cada cada componente possui um código exclusivo de 64bits configurado de fábrica que permitirá que o Arduino diferencie um sensor do outro individualmente.

A utilização desse sistema de comunicação aumenta consideravelmente a utilização e desenvolvimento de projetos, pois ao utilizarmos apenas um pino do Arduino poderemos utilizar diversos sensores distribuídos em grandes áreas ou mesmo para medição de temperatura de vários equipamentos ou processos.

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

Projeto 83 - Termômetro digital com sensor DS18B20 e Arduino

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

Projeto 85 - Como conectar vários sensores DS18B20 em uma única porta do 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 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 TO-92)

2

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

 

datasheet

Sensor de Temperatura DS18B20

Sensor de Temperatura DS18B20

(encapsulamento a prova de água)

 

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

Resistor Resistor 10KΩ 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.

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

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 e o módulo RTC DS3231 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. 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).