Termômetro Externo Baseado em Arduino com Tendência, Máxima e Mínima
Componentes e Materiais
| Arduino UNO | 1 |
| Sensor de temperatura de precisão TS-NTC-103, 10 kΩ | 1 |
| Display LCD Padrão Adafruit 16x2 Branco sobre Azul | 1 |
| Fonte RobotGeek 12VDC 2.0A | 1 |
| Capacitor 100 nF | 2 |
| Capacitor Eletrolítico 470 µF | 1 |
| Resistor Metalfilm 10kΩ tolerância 0,1% | 1 |
| Botão push-button (normalmente aberto) | 1 |
| Potenciômetro rotativo 10kΩ linear | 1 |
| Resistor 10kΩ | 1 |
Sobre o Projeto
Introdução
Construí este termômetro por diversão, mas também para ganhar experiência com programação Arduino e uso de display LCD. Durante o desenvolvimento, decidi adicionar funcionalidades: temperatura máxima e mínima medidas, e uma seta no display indicando a tendência de temperatura (subindo ou descendo). Um botão permite resetar as temperaturas mínima e máxima exibidas para a temperatura atual.
Como Construir
A montagem é bastante simples. Conecte os componentes conforme o esquemático. A saída 5V do Arduino Uno deve ser ligada a todas as conexões +5V (setas). Interconecte também todos os pinos de terra. O termômetro é alimentado por uma fonte externa de 12V CC conectada ao Arduino. Faça o download do sketch, carregue no seu Arduino e pronto.
Lista de Materiais Necessários:
- Arduino Uno
- Display LCD 1602A
- Fonte 12V CC
- Sensor NTC B+B Thermo Technik TS-NTC-103 (10kΩ)
- Resistor metalfilm 10kΩ, tolerância 0,1%, 0,6W, coeficiente térmico 25 ppm
- Potenciômetro 10kΩ linear
- Resistor 820 Ω (tolerância não crítica)
- Resistor 10 kΩ (tolerância não crítica)
- Capacitor 0,1 µF (=100nF) 16V (2 unidades)
- Eletrolítico 470 µF 16V
- Push-button (normalmente aberto)
- Caixa para montagem (opcional)
O Sensor: NTC de Alta Precisão
O NTC utilizado é um sensor de temperatura de precisão da B+B Thermo Technik de 10 kΩ. Este sensor tem tolerância de resistência a 25 °C de ±0,5%. Os sensores NTC da série TS-NTC possuem ampla faixa de medição de -60 ... +150 °C, sendo adequados para aplicações onde antes eram usados resistores de platina caros. Tanto a resistência básica quanto o valor B estão dentro de tolerância de ±0,5%, permitindo uso em muitas aplicações sem calibração de temperatura e substituição sem reajuste. Assim, por meio de simples medição de resistência, alcança-se precisão de ±0,12 K a 25 °C. Na faixa de -60 ... +85 °C, o erro máximo é cerca de ±0,5 K.
Para medições de alta precisão, o outro resistor do divisor de tensão, em série com o NTC, também deve ser de baixa tolerância. Usei resistor metalfilm 10kΩ, tolerância 0,1%. Qualquer resistor com tolerância ≤0,5% serve.
Cabo do NTC Captando Ruído
O NTC fica fora da casa, no meu caso com alguns metros de cabo. Para evitar interferência de equipamentos elétricos "ruidosos" na casa, coloquei um capacitor de desacoplamento de 0,1 µF entre a entrada analógica de temperatura do Arduino Uno (pino 14) e terra. O osciloscópio ainda mostrava ruído no pino 14. O ruído era causado pelo clock do display LCD 1602. Desapareceu após colocar um capacitor de 0,1 µF entre os pinos VDD e Vss do display LCD. Este capacitor deve ser soldado diretamente na placa do LCD com fios o mais curtos possível (1 cm no máximo).
O osciloscópio mostrou sinal limpo no pino 14 após isso. Para evitar ruído e ripple da fonte chaveada, coloquei um eletrolítico de 470 µF entre 5V e GND do Arduino.
Posicionamento do NTC
Para evitar medições incorretas, o NTC e sua caixa nunca devem ficar expostos ao sol. Deve ser colocado na sombra, preferencialmente no lado norte da casa (lado sul se no hemisfério sul) ou até afastado da casa. Não encostado na parede, mas a pelo menos alguns mm para fora da parede, pois a parede pode estar alguns graus mais quente que o ar externo. De preferência uma parede sem aquecimento atrás, como a parede da garagem.


Sobre o Software
A biblioteca LiquidCrystal é incluída para comandos do LCD 1602. Várias constantes e variáveis são declaradas – leia os comentários no sketch para detalhes. A, B e C são os coeficientes de Steinhart-Hart para o NTC usado. Para outros NTCs, altere esses coeficientes. O intervalo inteiro na linha 17 define o tempo entre medições sucessivas: 3 segundos. Para obter progressão suave da medição, calcula-se uma média móvel de 30 medições sucessivas (numReadings na linha 22). Portanto, a temperatura exibida é sempre a média dos últimos 90 segundos. Para o cálculo da média móvel usa-se um array: readings[numReadings] ou readings[30] na linha 21. Cada leitura é um inteiro entre 0 e 1023.
Aproximação de Steinhart-Hart
Um NTC (Coeficiente de Temperatura Negativo) é um resistor com resistência dependente da temperatura. A resistência diminui quando a temperatura aumenta. Infelizmente a relação resistência-temperatura não é linear. Mas a curva R-T pode ser aproximada por uma fórmula. Na prática, usam-se duas fórmulas: a fórmula Beta e a fórmula Steinhart-Hart. Como esta última dá a melhor aproximação, é a que utilizo. O fabricante costuma fornecer valores para ambas. Porém, o TS-NTC-103 opera numa faixa ampla de -60...+150 °C. Como o usamos numa faixa menor (~ -10...+30 °C), obtemos melhor aproximação calculando os coeficientes especialmente para esta faixa. Usei três pares resistência-temperatura das especificações do fabricante na nossa faixa de trabalho (-10, 0 e +20 °C). É simples calcular os coeficientes com a calculadora online da Stanford Research Systems.

No canto inferior direito do gráfico vê-se que com resistor de 10k, a temperatura aproximada é 25,0035 °C com Steinhart-Hart (muito bom) e 25,7716 °C com Beta (substancialmente pior), já que o NTC é 10k a 25 °C.
Código
Versão 1.4 resolve problema de convenção na declaração da função PrintPG() que causava erro de compilação no editor offline mas não no editor web. Versão 1.3 inclui histerese para a seta de tendência.
O código completo está disponível na seção de código do projeto.
Esquemáticos
Disponíveis na seção de esquemáticos do projeto.
Processo de manufatura
- Sistema Integrado de Controle de Acesso com QR, RFID e Verificação de Temperatura
- Conecte Múltiplos Sensores DS18B20 1-Wire ao Raspberry Pi para Monitoramento Preciso de Temperatura
- Como Ler Temperatura com DS18B20 no Raspberry Pi 2
- Medição de Temperatura no Raspberry Pi com Sensores Maxim 1‑Wire e Bridge I2C DS2482
- Construa um Sensor de Temperatura Remoto com Raspberry Pi e Python – Guia Passo a Passo
- Monitoramento Contínuo de Temperatura e Umidade no Raspberry Pi com EzTemp
- Monitoramento Preciso de Temperatura em Closet de Servidores com Raspberry Pi
- Controle de Temperatura Caseiro para Homebrew: Monitore e Regule com Arduino
- Monitoramento de Temperatura de Sala com Raspberry Pi: Gráficos Gnuplot e Alertas por Email
- Construa um Sistema de Monitoramento de Temperatura e Luz Multi-Sensor com Raspberry Pi e DS18B20