Neste projeto trabalharemos com dois produtos em conjunto que podem ser facilmente aplicado em junto ao Arduino, trata-se do Módulo Display 7 segmentos TM1638 e do Sensor de temperatura digital à prova d’água – DS18B20.
O módulo é basicamente uma placa eletrônica para Arduino que agrega diversas funcionalidades, podendo ser utilizado em outros microcontroladores, já que trabalha com um protocolo three-wire, mais conhecida como SPI (Serial Peripheral Interface) que utiliza somente 3 fios de comunicação, facilitando assim sua aplicação.
Por sem um acessório completo, o Módulo Display 7 segmentos TM1638 conta um funcional conjunto de 8 dígitos de 7 segmentos, 8 leds vermelhos, além de 8 botões de ajuste (push button) que podem ser utilizados para as mais diferentes finalidades.
É ideal para o desenvolvimento de painéis de controle em projetos robóticos ou mesmo de automação residencial, já que as funções podem ser programadas de forma diversa.
O Sensor de Temperatura DS18B20, por sua vez, foi desenvolvido para suprir a necessidade de projetistas que necessitam medir a temperatura de líquidos sem danificar seus equipamentos, já que pode ser submerso na água, por exemplo.
A sua característica de ser a prova d’ água deve-se ao material de produção integrado em sua cápsula: aço inoxidável, contando ainda com cabo totalmente revestido em material isolante para que não sofra os efeitos da umidade.
Em geral, mostra-se ideal para controle da temperatura em grandes ambientes ou mesmo em reservatórios de água, podendo alcançar medidas de temperatura de até 125ºC.
Produtos Utilizados no Projeto Módulo Display 7 Segmentos TM1638
- 1 x Módulo Display 7 Segmentos + 8 Leds + 8 Push Buttons Programáveis – TM1638;
- 1 x Sensor de Temperatura DS18B20 à Prova DÁgua;
- 1 x Kit de Resistor 4k7;
- 1 x Arduino UNO;
- 1 x Kit Jumpers Premium Macho/Fêmea.
Montagem do Projeto
Como já descrito, a conexão deste dispositivo com o Arduino é muito simples, verifique no esquema abaixo:
Código de Programação
Abaixo você pode copiar e utilizar o código diretamente na sua programação. Fique a vontade para modificar e adicionar maiores funcionalidades. Utilize a biblioteca disponível no github.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
/********************************* ***Autor: Leonardo Dalla Porta**** ***********15/11/2014************* *************Atenção************** ***O Codigo esta livre para uso,** *desde que seja mantida sua fonte* ********e seu autor.************** ********Faça um bom uso*********** ******Att. Equipe UsinaInfo******* *********************************/ //Bibliotecas #include <OneWire.h> #include <DallasTemperature.h> #include <TM1638.h> TM1638 module(8, 9, 7); //Pinos do modulo #define ONE_WIRE_BUS 2 // Pino do Sensor //Define o sensor OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup(void) { sensors.begin(); // Inicia os sensores } void loop(void) { sensors.requestTemperatures(); // Envia o comando para ler a temperatura module.setDisplayToDecNumber(sensors.getTempCByIndex(0), 0, false); // Imprime no display o texto module.setDisplayToString("Temp:" ); //Escreve o texto no display } |
Conclusão
Durante os testes o Módulo Display 7 segmentos TM1638 se apresentou muito util e fucnional, além de utilizar o display, fica livre para livre utilização o conjunto de leds e pulsadores, onde cada um pode receber uma função diferente de acordo com a necessidade de cada projeto.
O Sensor de Temperatura DS18B20 já é amplamente reconhecido pelo funcionalidade e confiabilidade dos dados apresentados. Sua forma de conexão é muito simples, utilizando poucas portas do microcontrolador Arduino.
Continue seguindo nossas postagens, em breve tem mais. Até a próxima.
Utilizando o sensor DS18b20 e fazendo estatísticas de suas leituras durante 10 ou mais horas consecutivas constatei que ocorrem erro de leituras consideráveis, mesmo em temperaturas estáveis. Considerando uma faixa de leitura entre 5 e 38 graus Celsius, um dos sensores chegou a ter mais de 90 leituras fora dessa faixa, ainda que a temperatura ambiente estivesse estável na faixa de 30 graus celsius. Testes com vários DS18b20 apresentaram também erros em maior ou menor numero nas mesmas condições. Atribuo a sensores falsificados ou de má qualidade.
Boa tarde!
Este é um erro comum no sensor, geralmente ocasioado por problemas na fonte de alimentação ou interferências, sendo característico deste sensor, ao reiniciar (perder a alimentação ou não entender a mensagem de leitura recebida) ele acaba lendo o registrador com valor inicial de 85°C por padrão de fábrica, como ele é inicializado, causando esses picos de leituras.
Algumas referências:
https://community.openenergymonitor.org/t/ds18b20-temperature-sensor-sends-85-c-error-value/21573/37
https://controlbyweb.com/support/troubleshooting/temp-sensor-reading-error/
Caso seja uma aplicação bastante delicada sugerimos encontrar outro sensor mais estável em suas leituras com maior tolerância a falhas por causa da alimentação. Geralmente para uso industrial é preferível sensores RS485, protocolo bastante robusto e com métodos de verificar erros e menos suscetível a interferências.