terça-feira, 29 de maio de 2018

DS18B20 - Como ligar vários sensores em uma porta do Arduino


O DS128B20 é um sensor de temperatura quase que curinga em projetos agronômicos, ele tem algumas características extremamente interessantes, isso porque ele é fácil de programar e ligar, fácil de encontrar, preço muito em conta, ótima precisão (0,5°C) e é encontrado facilmente em duas apresentações, exposto normalmente ou encapsulado o que o torna resistente a água. Com ele é possível medir temperatura do ambiente, estufas, água e solo sem dificuldades.

Outra característica muito interessante é se pode utilizar diversos sensores utilizando apenas três portas do microcontrolador, VCC, GND e Data (ele também funciona apenas com Data e GND, mas causa alguns problemas que não vamos trabalhar), assim você pode usar muitos sensores apenas com um ATTiny85 e uma bateria. Tudo exposto ao tempo (com a devida proteção né).

Datasheet: clique aqui

A ligação de vários sensores em uma única porta é bem simples quando você possui uma protoboard:
O esquema de ligação de um sensor pode ser visto na imagem no início do post, VCC no 5V, GND no GND e Dados em um pino digital. Com uma ligação com um resistor entre o Data e VCC. Quando for utilizar vários sensores permanece o mesmo esquema, só que todos os pinos de dados vão ser ligados em uma mesma trilha da protoboard, essa trilha será ligada por um resistor no VCC e ligada a um pino digital do arduino.

Sobre o resistor, o ideal é que seja utilizado um de 4.7K, e a resolução do sensor de 10bits. Se por acaso você tem apenas um kit iniciante do arduino que não possui resistor de 4.7K é possível usar o sensor, mas sua precisão não será tão confiável.

Você pode substituir o resistor, utilizando um de 10K, desde que no programa coloque a resolução como 12bits.

Vou detalhar as partes do programa básico para ler a temperatura de três sensores DS18B20 em uma única porta, no final eu deixo ele completo para download.

Mas imagino que você deva estar se perguntando: Como vou identificar cada sensor se eles estão em uma mesma porta? Bom, cada sensor vem de fábrica com uma identidade, então vamos dizer que o sensor A é o de identidade 1, e assim por diante. Então é necessário ter em mãos a identidade dos seus sensores.

Mas não desespere, basta fazer a ligação dos sensores, no Arduino, usando a porta de dados como a digital 10, iniciar a Serial e rodar o código abaixo: Na serial vai aparecer a identidade dos seus sensores. Download do código: clique aqui

Bom, agora que você tem a identidade dos seus sensores vamos ao código para ler os dados deles na serial:

No início do arquivo teremos as seguintes linhas, antes do void.setup()

Agora vamos colocar o nosso void.setup

Agora já terminamos o setup e vamos iniciar uma nova função que é própria da biblioteca, ela é realmente posicionada entre o setup e o loop. Ela vai ser responsável por verificar se o sensor está correto, se estiver ela já vai mostrar na serial a temperatura em C e F. Mesmo que retire a indicação na serial, não retire essa parte.

Agora em nosso loop se você quiser apenas mostrar na serial as temperaturas utilize o código abaixo

Mas se você quiser atribuir cada temperatura a uma função, seja para acionar um atuador, exibir em uma tela ou realizar um cálculo, é necessário adicionar também o código abaixo no seu loop


DOWNLOAD DO CÓDIGO

Nenhum comentário:

Postar um comentário