Primeiros Passos com o DS18B20
![](/upload/tutoriais/255_header_pt_H.png)
Introdução
![Sensor DS18B20](https://www.robocore.net/upload/tutoriais/255_img_2_H.png?833)
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
![](/upload/tutoriais/255_header_pt_L.png)
Lista completa de produtos
comprar![](https://s3-sa-east-1.amazonaws.com/robocore-lojavirtual/1338/images/1338_1_M.png?20241107090313)
BlackBoard UNO R3
![](https://s3-sa-east-1.amazonaws.com/robocore-lojavirtual/1398/images/1398_1_M.png?20220413163147)
Cabo USB AB 1.50m
![](https://s3-sa-east-1.amazonaws.com/robocore-lojavirtual/546/images/546_1_M.png?20250116130734)
Sensor de temperatura DS18B20 - À Prova de Água
![](https://s3-sa-east-1.amazonaws.com/robocore-lojavirtual/985/images/985_1_M.png?20250114133036)
Protoboard 400 Pontos
![](https://s3-sa-east-1.amazonaws.com/robocore-lojavirtual/1079/images/1079_1_M.png?20240909162400)
WorkPlate 400 - Preta
![](https://s3-sa-east-1.amazonaws.com/robocore-lojavirtual/258/images/258_1_M.png?20241209160018)
Módulo Relé 5V - Relé Metaltex
![](https://s3-sa-east-1.amazonaws.com/robocore-lojavirtual/1101/images/1101_1_M.png?20240617101824)
Resistor 10kΩ - Pacote com 10 unidades
![](https://s3-sa-east-1.amazonaws.com/robocore-lojavirtual/1259/images/1259_1_M.png?20250115133153)
Jumpers Macho-Macho x40 Unidades
![](https://s3-sa-east-1.amazonaws.com/robocore-lojavirtual/1293/images/1293_1_M.png?20250115094327)
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).
![Circuito DS18B20](https://www.robocore.net/upload/tutoriais/255_img_1_H.png?126)
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.
![>Caminho para o Gerenciador de Bibliotecas da IDE](https://www.robocore.net/upload/tutoriais/255_img_7_M.png)
![Resultados de Pesquisa para a Biblioteca DallasTemperature](https://www.robocore.net/upload/tutoriais/255_img_4_M.png?306)
![Resultados de Pesquisa para a Biblioteca OneWire](https://www.robocore.net/upload/tutoriais/255_img_3_M.png?329)
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.
![Exibindo a Temperatura no Monitor Serial](https://www.robocore.net/upload/tutoriais/255_img_6_M.png?744)
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.
![](https://www.robocore.net/upload/tutoriais/255_img_5_M.png?183)
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.