Primeiros Passos com o DS18B20

Introdução

Você já pensou em fazer um projeto que tinha a necessidade de medir a temperatura de algum ambiente, mas se deparou com um ambiente molhado? Então hoje você irá conhecer o sensor DS18B20 à prova d'água. Nesse tutorial você irá aprender a fazer a medição de temperatura de maneira simples e utilizando a sua BlackBoard.
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. Uma outra boa vantagem desse sensor é que, caso você tenha a necessidade de medir a temperatura em uma distância relativamente afastada de sua BlackBoard, por ele utilizar o protocolo OneWire (criado pela Dallas Semiconductor), é possível realizar a leitura sem ter problemas com interferências causadas pela distância. Além disso, esse protocolo tem como diferencial o fato de utilizar apenas um cabo de comunicação, assim utilizando somente um pino de sua BlackBoard.
Lista de Materiais

Lista completa de produtos
comprar
BlackBoard UNO R3

Cabo USB AB 1.50m

Sensor de temperatura DS18B20 - À Prova de Água

Protoboard 400 Pontos

WorkPlate 400 - Preta

Módulo Relé 5V - Relé Metaltex

Resistor 10kΩ - Pacote com 10 unidades

Jumpers Macho-Macho x40 Unidades

Jumpers Macho-Fêmea x40 Unidades
Primeiros Passos
Em um primeiro momento, vamos fazer uma leitura simples de temperatura utilizando o sensor DS18B20 com a BlackBoard.
Circuito
Monte o circuito conforme a imagem abaixo. Se necessário, descasque a ponta dos cabos do sensor para fazer a ligação em sua protoboard, desconsiderando o cabo branco, já que o sensor que você irá utilizar tem apenas 3 cabos (preto, vermelho e amarelo).

Programação
Biblioteca
Para começar é necessário fazer a instalação de duas bibliotecas para a leitura dos dados do sensor. Na sua Arduino IDE, clique em Sketch, depois vá até "Incluir Biblioteca" e entre em "Gerenciar Bibliotecas". Feito isso, digite no campo de pesquisa o nome das bibliotecas, "DallasTemperature" e "OneWire", e selecione para realizar instalação como nas imagens abaixo.



Código
Entendendo o Código
A primeira seção do código consiste apenas em adicionar as duas bibliotecas. Após as inclusões, definimos o pino no qual o sensor está conectado (const int PINO_ONEWIRE = 12
). Também definimos algumas variáveis para serem usadas com as bibliotecas. Com OneWire oneWire(PINO_ONEWIRE)
indicamos que o pino declarado é usado para uma comunicação OneWire. Já com DallasTemperature sensor(oneWire)
indicamos que o sensor DS18B20 (sensor
) deve usar a comunicação declarada anteriormente. Finalmente, a última linha, DeviceAddress endereco_temp
, declara uma variável auxiliar que representa o endereço do sensor no barramento OneWire (afinal, esse protocolo permite o uso de diversos dispositivos no mesmo barramento).
Na função setup()
configuramos a comunicação serial e inicializamos o sensor, conforme o trecho a seguir.
E no final temos a parte que determina o intervalo de tempo entre cada leitura e o tratamento da leitura do sensor.
A função sensor.requestTemperature()
inicia a leitura do sensor, que encaminha os dados de temperatura para sua BlackBoard. A função getAddress()
verifica se um sensor válido está presente na linha, por isso a usamos para exibir uma mensagem de erro. Por fim, a função getTempC()
retorna a temperatura em graus Celsius, para ser impressa no monitor serial.
O Que Deve Acontecer
Feito o upload para sua placa, abra o monitor serial, verifique se ele está em 9600 bps, e veja que a leitura da temperatura do seu sensor aparecerá na tela.

Controle de Temperatura com Relé
O bacana é que, em algumas situações, você quer adicionar componentes para deixar seu projeto mais funcional. Vamos adicionar alguns componentes para controlar uma situação em que seja necessário ligar algo para esfriar o ambiente caso a temperatura esteja acima do desejado.
Circuito
Adicionamos ao circuito montado anteriormente um relé, agora pensando que você terá que ligar um dispositivo que vai resfriar o ambiente onde o sensor está, caso esteja muito quente. No exemplo abaixo iremos demonstrar utilizando um ventilador.

Como na imagem acima, você terá que fazer a ligação da carga com o relé utilizando os pinos NA e C para que seu dispositivo funcione. Dessa forma, o cabo que está no pino C será ligado direto na tomada (neutro) onde você irá ligar o ventilador e o pino NA será utilizado para a carga do dispositivo, deixando apenas o segundo terminal do dispositivo para ser ligado na rede elétrica (fase).
Atenção: antes de ligar a alimentação 110V/220V, verifique se todas as conexões estão feitas corretamente e se o cabo de alimentação está bem isolado. Nós da RoboCore não nos responsabilizamos por danos à rede elétrica ou à integridade física do praticante, portanto tenha muito cuidado antes de iniciar ou consulte um profissional da área.
Código
Após a montagem de seu circuito, carregue o código abaixo.
Entendendo o Código
Foi feita uma adição no código anterior para acionar um relé quando a temperatura ultrapassar 30 °C. Este relé, por sua vez, irá acionar um ventilador para resfriar até essa temperatura.
O Que Deve Acontecer
Feitas todas as verificações, alimente sua Blackboard, abra o monitor serial e observe os valores exibidos. Para esquentar o sensor, utilize sua mão, fechando-a com o componente dentro, e você vai perceber que a temperatura irá subir. A partir do momento em que ela chegar em 30 °C, o relé irá acionar o ventilador que irá começar a climatizar o ambiente.
Indo Além
Caso você queira esquentar o ambiente e tenha que utilizar um aquecedor, você deve apenas alterar o código de forma a ligar o seu dispositivo se a temperatura ficar abaixo de 10 °C, por exemplo. Caso utilize um aquecedor, verifique antes se o módulo relé usado é o suficiente para suportar a corrente elétrica necessária. Para modificar o código você pode alterar o laço if
para algo como o trecho a seguir.
Agora é inovar e tentar criar situações em que você possa utilizar o sensor DS18B20 à prova d'água da melhor maneira possível. Esperamos que esse tutorial tenha te ajudado a criar o projeto de forma tranquila e qualquer dúvida ou sugestão é só comentar abaixo.
Solução de Problemas
Mensagem de erro "sensor nao conectado"
Caso o sensor não esteja sendo reconhecido, verifique as conexões.