Aula 26 – Projeto Final 1: Controlador de Temperatura Industrial
Nesta aula vamos construir o primeiro projeto completo do curso: um controlador de temperatura industrial usando PIC, sensor LM35, LCD 16x2, teclado matricial, EEPROM, relé de controle e Watchdog Timer.
1. Objetivo do projeto
O sistema irá medir a temperatura, comparar com um setpoint configurado pelo usuário e acionar um relé conforme a lógica de controle.
Sensor LM35 → PIC → LCD
↓
Comparação
↓
Relé de saída
2. Recursos utilizados
- ADC para leitura do sensor LM35.
- LCD 16x2 para exibir temperatura e status.
- Teclado matricial 4x4 para configurar setpoint.
- EEPROM para salvar parâmetros.
- Saída digital para acionamento do relé.
- Watchdog Timer para aumentar a confiabilidade.
3. Componentes necessários
- PIC16F877A ou similar.
- Sensor LM35.
- Display LCD 16x2.
- Teclado matricial 4x4.
- Relé 5V ou 12V.
- Transistor BC547 ou equivalente.
- Diodo 1N4007 para proteção da bobina.
- Resistores e fonte adequada.
4. Funcionamento do LM35
O LM35 fornece uma tensão proporcional à temperatura. Em geral:
10 mV por °C
25 °C → 250 mV
50 °C → 500 mV
100 °C → 1000 mV
5. Leitura pelo ADC
O PIC lê a tensão analógica do LM35 através do ADC.
ADC = (Vin × 1023) / Vref
Com Vref de 5V, cada passo do ADC representa aproximadamente 4,88 mV.
6. Conversão para temperatura
tensao = adc * 5.0 / 1023.0;
temperatura = tensao * 100.0;
7. Setpoint ajustável
O setpoint é o valor desejado de temperatura. O usuário poderá alterar esse valor pelo teclado matricial.
Setpoint = 60 °C
Se temperatura >= setpoint:
desliga aquecimento
Se temperatura < setpoint:
liga aquecimento
8. Salvando setpoint na EEPROM
Para que o setpoint não seja perdido ao desligar o equipamento, ele será gravado na EEPROM.
EEPROM_Write(10, setpoint);
setpoint = EEPROM_Read(10);
9. Controle do relé
O relé não deve ser ligado diretamente no PIC. Devemos usar transistor e diodo de proteção.
PIC → Resistor → Base BC547
Coletor → Relé
Diodo 1N4007 em paralelo com a bobina
10. Lógica principal do controle
if(temperatura < setpoint)
{
rele = 1;
}
else
{
rele = 0;
}
11. Histerese
Para evitar que o relé fique ligando e desligando rapidamente próximo ao setpoint, usamos histerese.
Setpoint = 60 °C
Histerese = 2 °C
Liga aquecimento abaixo de 58 °C
Desliga aquecimento acima de 60 °C
12. Lógica com histerese
if(temperatura <= (setpoint - histerese))
{
rele = 1;
}
if(temperatura >= setpoint)
{
rele = 0;
}
13. Tela principal do LCD
TEMP: 55 C
SET : 60 C
14. Tela de status
RELE: LIGADO
MODO: AUTO
15. Menu de configuração
A - Entrar no menu
B - Voltar
C - Aumentar setpoint
D - Diminuir setpoint
# - Salvar
* - Cancelar
16. Estrutura profissional do software
Para organizar o projeto, o código deve ser dividido em funções.
void inicializar_sistema();
unsigned int ler_adc();
float ler_temperatura();
void atualizar_lcd();
void ler_teclado();
void controlar_rele();
void salvar_parametros();
void carregar_parametros();
17. Fluxograma geral
Início
↓
Inicializa sistema
↓
Carrega setpoint da EEPROM
↓
Lê temperatura
↓
Lê teclado
↓
Atualiza LCD
↓
Controla relé
↓
Limpa Watchdog
↓
Repete
18. Código base do projeto
#include <xc.h>
#define RELE PORTBbits.RB0
unsigned char setpoint = 60;
unsigned char histerese = 2;
float temperatura = 0;
void inicializar_sistema()
{
TRISAbits.TRISA0 = 1; // LM35 no AN0
TRISBbits.TRISB0 = 0; // Relé como saída
ADCON1 = 0x80;
ADCON0 = 0x41;
RELE = 0;
}
unsigned int ler_adc()
{
GO_nDONE = 1;
while(GO_nDONE);
return ((ADRESH << 8) + ADRESL);
}
float ler_temperatura()
{
unsigned int adc;
float tensao;
adc = ler_adc();
tensao = adc * 5.0 / 1023.0;
return tensao * 100.0;
}
void controlar_rele()
{
if(temperatura <= (setpoint - histerese))
{
RELE = 1;
}
if(temperatura >= setpoint)
{
RELE = 0;
}
}
void main()
{
inicializar_sistema();
while(1)
{
temperatura = ler_temperatura();
controlar_rele();
CLRWDT();
}
}
19. Melhorias futuras
- Adicionar alarme de temperatura alta.
- Adicionar modo manual/automático.
- Adicionar comunicação Modbus RTU.
- Adicionar registro de falhas na EEPROM.
- Adicionar senha de acesso ao menu.
20. Aplicações industriais
Esse projeto pode ser adaptado para controle de:
- Estufas.
- Tanques aquecidos.
- Painéis elétricos.
- Ambientes climatizados.
- Processos térmicos simples.
21. Exercícios
Exercício 1: Para que serve a histerese?
Para evitar chaveamento rápido do relé próximo ao setpoint.
Exercício 2: Por que salvar o setpoint na EEPROM?
Para manter o valor configurado mesmo após desligar o equipamento.
Exercício 3: Por que usar transistor para acionar o relé?
Porque o pino do PIC não suporta a corrente da bobina do relé.
22. Laboratório prático
Monte o circuito com LM35, LCD, teclado e relé. Configure o setpoint, observe a leitura de temperatura e teste o acionamento da saída.
23. Resumo do projeto
- LM35 fornece sinal analógico.
- ADC converte tensão em valor digital.
- LCD exibe temperatura e setpoint.
- Teclado altera parâmetros.
- EEPROM salva configurações.
- Relé controla a carga.
- Watchdog aumenta a confiabilidade.
Próxima Aula – Aula 27
Na próxima aula vamos estudar Projeto Final 2 – Sistema de Monitoramento com Comunicação Serial, integrando sensores, UART, alarmes e envio de dados para computador ou supervisório.