FAVORITAR
FecharPlease login

Franzininho WiFi: Sensor de temperatura DS18B20

Introdução

O DS18B20 é um sensor de temperatura digital de alta precisão amplamente utilizado em aplicações de monitoramento e controle térmico. Ele é fabricado pela Maxim Integrated e é conhecido por sua simplicidade e confiabilidade. Possui uma faixa de medição de temperatura de -55°C a +125°C, com uma precisão de ±0,5°C na faixa de -10°C a +85°C. Ele também possui uma resolução configurável, permitindo que o usuário escolha entre 9, 10, 11 ou 12 bits de precisão na leitura da temperatura.

Uma das principais características do DS18B20 é o fato de ser um sensor de temperatura de 1 fio, o que significa que ele requer apenas uma conexão para comunicação com um microcontrolador ou dispositivo compatível. Isso torna sua instalação e integração muito mais simples em comparação com outros sensores de temperatura. Comercialmente esse sensor possui duas formas disponíveis. O primeiro formato é bem parecido com um transistor, encapsulamento TO-92 e  outro envolve o sensor em uma ponta de prova metálica à prova de água.

Nesse artigo vamos mostrar como utilizar o DS18B20 com a Franzininho WiFi e explorar os recursos disponíveis para configurar e realizar as leituras.

Instalação da Biblioteca  DS18B20

Nesta seção vamos instalar na Arduino IDE a biblioteca responsável por comunicar a Franzininho WiFi para realizar as leituras de temperatura do D18B20. Acesse: Ferramenta -> Gerenciador de Bibliotecas (Tools  -> Manager Libraries)

Figura 1: Acessando o gerenciador de bibliotecas

Após acessar o Gerenciador de biblioteca aguarde surgir uma janela como mostrado na imagem abaixo. Digite no campo de texto: ds18b20 e aguarde o resultado da pesquisa finalizar. Procure pela biblioteca e clique em Install, para concluir a instalação e clique em Close. Pronto já estamos aptos a utilizar a biblioteca.

Figura 2: Instalação da biblioteca

Biblioteca DS18B20

Nesta seção apresentaremos os métodos utilizados pela biblioteca DallasTempeture.h e no OneWire.h  usadas no exemplo de projeto. 

begin()

Configura a GPIO que vai operar dentro do protocolo 1-Wire.

Retorna true, configurou corretamente e false, não foi possível configurar. 

getDeviceCount()

Busca o número de dispositivos presente conectado a GPIO configurada pelo método begin.

Retorna o número de dispositivos “pendurados” no barramento.

Método da biblioteca OneWire.h para buscar os endereços do(s) dispositivo(s)

  • Newaddr : ponteiro para receber a variável correspondente ao endereço 

Retorna true, caso tenha encontrado dispositivo e false, não foi encontrado nenhum dispositivo.

resquestTempetures()

Solicita por meio de comandos a leitura de temperatura e aguarda recebê -las . 

O resultado dessas leituras são postas em uma estrutura de dados chamada request_t. Internamente há o valor da temperatura.

getTempCByIndex()

Pega o valor mais recente de temperatura de acordo com o índice, esse índice indica qual sensor conectado ao barramento está buscando ler, por exemplo, se houvesse 3 sensores teríamos que buscar do índice 0 ao 2.

  • index : indice ordenado de cada sensor (0-128)

Retorna valor da temperatura em Celsius.

Materiais necessários

Os materiais necessários para desenvolver nossa aplicação são:

  • Placa Franzininho WiFi
  • Sensor DS18B20
  • Resistor 4k7 ohms
  • Jumpers
  • Arduino IDE 

Circuito 

No circuito proposto vamos utilizar a GPIO3 para criar uma comunicação bidirecional através do protocolo OneWire, a escolha desse pino foi arbitrária podendo ser qualquer GPIO disponível para realizar as leituras de temperatura. É necessário colocar um resistor de pull -up para interface com o sensor. Caso tenha interesse em conhecer mais sobre o componente acesse o datasheet.

  •  VCC: conectar no 3.3v da Franzininho WiFi 
  •  GND: conectar no GND da Franzininho WiFi
  • DQ: pino responsável por trafegar as requisições (comandos) e as leituras de temperatura
Figura 3: Esquema de montagem com a Franzininho WiFi e o DS18B20

Código para DS18B20

No projeto proposto realizaremos as leituras de temperatura, verificar a quantidade de sensores conectados à GPIO e extrair o endereço do sensor. O código abaixo realiza a leitura de apenas um sensor, contudo há a possibilidade de utilizar múltiplos sensores. 

Simule esse exemplo no Wokwi: https://wokwi.com/projects/368693283900956673

Explicação do Código

Incluímos as duas bibliotecas responsáveis pela comunicação Onewire (OneWire.h) e por habilitar os métodos para realizar a leitura e envio de comando(s) ao sensore(s) (DallasTemperature.h).

Define o pino onde o sensor está conectado:

Declara os construtores que serão responsáveis por acessar os métodos de leitura e envio de comandos na comunicação OneWire, vale observar que um construtores utiliza como parâmetro o objeto declarado anteriormente.

Declara as variáveis para receber a quantidade de sensores (num_sensor), receber o endereço do sensor, vetor de oito posições(addr[8]) e o valor da temperatura (temp).

No setup, vamos inicializar a comunicação serial e configurar a GPIO conectada ao sensor pelo método (sensor.begin()).

A próxima etapa é fazer a busca da quantidade de sensores conectados ao GPIO e caso não tenha nada conectado a execução da demonstração do sensor é finalizada.

Buscar o endereço do sensor e mostrar no monitor serial o seu valor em hexadecimal, formato normalmente utilizado para mostrar endereço.  

No loop, a execução do programa requisita as leituras do sensor de temperatura a partir de comandos bit a bit definidos internamente dentro do dispositivo e retorna pelo método getTempCByIndex tendo como parâmetro o  índice desejado, nesse caso como temos apenas 1 sensor, então desejado pegar o primeiro sensor conectado. 

 Após receber o valor do método, verificamos se é uma leitura válida  e imprimimos na serial, caso contrário avisa com uma mensagem de erro e aguarda 1 segundo para executar a requisição de leitura.

Conclusão

Nesse artigo aprendemos usar o versátil sensor de temperatura DS18B20. Vimos como é fácil fazer a instalação do sensor no circuito e a fácil utilização da biblioteca. Recomendamos que teste a utilização de mais sensores no mesmo barramento e faça as leituras. Outro desafio sugerido é exibir os valores de temperatura em um display.

Gostaríamos de ver seus projetos, fique a vontade para contribuir com novos exemplos e/ou variações deste exemplo.

Outros artigos da série

<< Franzininho WiFi: Sensor de temperatura e umidade DHT22Franzininho WiFi: Display LCD 16×2 com comunicação I2C >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Home » Arduino » Franzininho WiFi: Sensor de temperatura DS18B20

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS