Firmware¶
O firmware foi desenvolvido em C++ para a plataforma Arduino, responsável pela aquisição, processamento e exibição dos dados.
Bibliotecas necessárias¶
O projeto utiliza as seguintes bibliotecas para abstração de hardware:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
- OneWire - Comunicação com o sensor.
- DallasTemperature - Biblioteca utilizada pelo DS18B20.
- LiquidCrystal_I2C.h - Biblioteca utilizada para fazer a comunicação com o display 16x2.
Definiçoes dos pinos¶
#define PINO_ONEWIRE 12 // Pino conectado ao sensor DS18B20
#define COLUNAS_LCD 16 // Número de colunas do LCD
#define LINHAS_LCD 2 // Número de linhas do LCD
#define ENDERECO_I2C 0x27 // Endereço I2C do LCD
- PINO_ONEWIRE - define o pino do Arduino conectado ao sensor.
- COLUNAS_LCD e LINHAS_LCD - tamanho do display LCD (16x2)
- ENDERECO_I2C - endereço do LCD no barramento I2C.
Configuração do Sensor e LCD¶
sensor.begin();
if (!sensor.getAddress(enderecoSensor, 0)) {
lcd.clear();
lcd.print("Sensor nao encontrado");
while(true); // Para execução se sensor não encontrado
}
Inicializa o sensor e verifica se ele está presente no barramento. Se não estiver, mostra mensagem e interrompe o programa.
// Define a resolução do sensor
sensor.setResolution(enderecoSensor, 12);
lcd.clear();
Define a precisão de 12 bits para o sensor DS18B20 (0,0625°C). Limpa o LCD antes de mostrar novos dados.
Codigo sem calibração¶
O código completo deste projeto está disponível no GitHub:
Codigo com calibração¶
O código completo deste projeto está disponível no GitHub:
Lógica de Calibração¶
A compensação do erro sistemático é realizada matematicamente dentro do microcontrolador. Após a leitura bruta, o valor passa por uma função de correção linear derivada experimentalmente.
Snippet da Função de Correção¶
// Coeficientes obtidos via Regressão Linear (Python/Excel)
const float M_COEFICIENTE = 1.0357; // Ganho (Slope)
const float B_COEFICIENTE = -0.9344; // Offset (Intercept)
float aplicarCalibracao(float temperaturaBruta) {
// Equação: T_corrigida = (m * T_bruta) + b
return (M_COEFICIENTE * temperaturaBruta) + B_COEFICIENTE;
}
O código completo está disponível no Repositório GitHub do Projeto