Guia Completo: Comparador Analógico em PICs e Aplicações

O módulo Comparador Analógico é um recurso crítico em microcontroladores PICPrimeiros Passos com PIC: Entendendo o Microcontrolador e suas VersõesPrimeiros Passos com PIC: Entendendo o Microcontrolador e suas VersõesAprenda sobre microcontroladores PIC com este guia completo. Conheça a teoria, as práticas de otimização e casos reais para aplicações embarcadas de sucesso., presente em famílias como PIC16, PIC18 e PIC24. Este guia unificado combina teoria avançada, configurações especializadas e exemplos práticos para engenheiros que buscam dominar o assunto.

Índice🔗

1. ArquiteturaComparação entre Famílias PIC12, PIC16 e PIC18: Escolhendo a IdealComparação entre Famílias PIC12, PIC16 e PIC18: Escolhendo a IdealEste guia detalhado analisa arquiteturas, desempenho e aplicações dos microcontroladores PIC12, PIC16 e PIC18, auxiliando em escolhas técnicas e econômicas. e Fundamentos

2. Configuração de RegistradoresArquitetura Básica: Registradores, Memória e Organização de DadosArquitetura Básica: Registradores, Memória e Organização de DadosDomine a arquitetura PIC com este guia prático. Aprenda concepções avançadas, manipulação de registradores e otimização para sistemas embarcados.

3. Modos de Operação e Histerese

4. Técnicas Avançadas

5. Aplicações PráticasUso das Portas I/O: Controlando LEDs, Displays e SensoresUso das Portas I/O: Controlando LEDs, Displays e SensoresAprenda a configurar portas, CDs, LEDs, displays, ADC e muito mais em sistemas PIC, com dicas de segurança, depuração e integração de sensores.

6. Exemplos de Código com InterrupçãoInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. e Polling

7. Boas Práticas e Otimizações

8. Troubleshooting e FAQ

Arquitetura e Fundamentos🔗

Estrutura Interna do Comparador

graph TD A[Entrada V+] --> B[Amplificador Diferencial] C[Entrada V-] --> B B --> D[Estágio de Saída Digital] D --> E[CxOUT/Pino GPIO]

Especificações Elétricas

ParâmetroPIC16F877APIC18F4520
Tensão Máxima (VDD)5.5V5.5V
Tempo de Resposta400ns250ns
Corrente de Entrada±250nA±150nA

Equação Fundamental:

$$ V_{hyst} = \frac{R_{pull-up}}{R_{pull-up} + R_{pull-down}} \times VDD $$

Configuração de Registradores🔗

Registradores por Família

FamíliaControle PrincipalReferênciaGPIO
PIC16FCMCONCVRCONANSEL
PIC18FCMxCON0/1VREFCONANCON

Exemplo para PIC16F877A:

CMCON = 0b10000101;  // Modo 5: Comparador com Vref interna
CVRCON = 0b10110000; // Vref = 32 * 24mV = 0.768V

Cálculo da Referência Interna:

$$ V_{ref} = \frac{CVR3:CVR0}{24} \times VDD $$

Modos de Operação e Histerese🔗

1. Modo Independente com Histerese

  • Configuração:
CMCONbits.CM = 0b010;  // Histerese de 20mV

2. Modo Janela (Window)

Detecta se Vin está entre Vlow e Vhigh:

// Configuração para PIC18F4520
CM1CON0 = 0x8D;  // Limiar inferior
CM2CON0 = 0x0B;  // Limiar superior

3. Modo Wake-up

Ativação do microcontrolador a partir do modo SleepRedução de Consumo de Energia: Configurações e Modo de Baixo Consumo (Sleep)Redução de Consumo de Energia: Configurações e Modo de Baixo Consumo (Sleep)Descubra estratégias avançadas para reduzir o consumo em sistemas PIC. Aprenda técnicas práticas e softwarizadas para prolongar a autonomia em IoT.:

CMCON0 = 0b00000101;
PIE2bits.C1IE = 1;    // Habilita interrupção

Técnicas Avançadas🔗

Filtragem Digital com Contador de Glitch

if(CMOUT == 1) {
    glitch_count++;
    if(glitch_count > 3) aciona_saida();
}

Calibração Dinâmica usando ADC

uint16_t adc_val = ADC_Read(0);
CVRCON = (adc_val >> 4);  // Atualiza Vref a cada 16 leituras

Aplicações Práticas🔗

1. Sistema de Carga de Baterias

Circuito:

[+]---[R1]---|CMP+
      [BAT]  |      Saída: MOSFET + LED
[+]---[R2]---|CMP-

Cálculo:

$$ R2 = \frac{V_{cutoff} \times R1}{VDD - V_{cutoff}} $$

2. Detector de Passagem por Zero

Para controle TRIAC:

OPTION_REGbits.INTEDG = 1;  // Borda de subida
CMCON = 0b00001001;         // Comparador com saída invertida

Exemplos de Código🔗

Exemplo 1: Interrupção para Wake-up

#include <xc.h>
void InterruptServiceHigh() {
    if(PIR2bits.C1IF) {
        LATDbits.LATD0 ^= 1;
        PIR2bits.C1IF = 0;
    }
}
void main() {
    TRISD0 = 0;
    CMCON = 0b00000101;
    CVRCON = 0b10100000;
    PIE2bits.C1IE = 1;
    INTCONbits.GIE = 1;
    while(1) { SLEEP(); }
}

Exemplo 2: Monitoramento de Nível com Alarme

#include <xc.h>
void main() {
    ANSEL = 0x01;
    CMCON = 0x06;       // Modo comparador com Vref
    CVRCON = 0x8C;      // Vref = 3V
    TRISB = 0x00;
    while(1) {
        if (CMCONbits.C1OUT) {
            PORTB = 0x01;  // LED ligado
        } else {
            PORTB = 0x02;  // Alarme ligado
        }
        __delay_ms(10);
    }
}

Boas Práticas e Otimizações🔗

1. Gerenciamento de Energia:

CMxCON0bits.EN = 0;  // Desliga comparador quando ocioso

2. Proteção de Entradas:

ANSELB = 0x03;  // Habilita proteção ESD em pinos analógicos

3. Técnicas de Anti-Aliasing:

  • Use filtro RC com fc = 1/(2π√(R1R2C1C2))

Troubleshooting e FAQ🔗

Problema: Saída oscila mesmo com histerese

Solução:

1. Aumente o capacitor de bypass (100nF → 1µF)

2. Verifique impedância da fonte (Rseries < 10kΩ)

Pergunta: Como usar múltiplos comparadores?

Resposta: Configure bancos independentes via registradorArquitetura Básica: Registradores, Memória e Organização de DadosArquitetura Básica: Registradores, Memória e Organização de DadosDomine a arquitetura PIC com este guia prático. Aprenda concepções avançadas, manipulação de registradores e otimização para sistemas embarcados. CMxCON1

Erro Comum: Tensão de referência instável

Checklist:

Conclusão🔗

Este guia unificado proporciona um mergulho técnico nas capacidades do comparador analógico em PICs. Ao combinar modos de operação, técnicas de filtragem e configurações avançadas, desenvolvedores podem criar sistemas analógicos robustos com resposta em tempo real. Experimente integrar o comparador com outros periféricos como PWM e timersImplementando Timers e Contadores: Criação de Delays e Frequências de SaídaImplementando Timers e Contadores: Criação de Delays e Frequências de SaídaAprenda a configurar microcontroladores PIC com técnicas avançadas de timers, PWM e temporizadores, garantindo precisão e performance em sistemas embarcados. para soluções ainda mais sofisticadas!

🔌 Desafio Prático: Construa um termostato digital com duas saídas (aquecimento/resfriamento) usando modo janela e interrupções!
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo