Aula 04 - Periféricos Integrados - Conversores ADC-DAC e Comunicação Serial


1. O Conversor Analógico-Digital (ADC) por Aproximações Sucessivas (SAR)

A digitalização de variáveis físicas contínuas provenientes de transdutores analógicos (temperatura, pressão manométrica, corrente de linha, vazão e luminosidade) é efetuada no microcontrolador pelo Conversor Analógico-Digital (Analog-to-Digital Converter - ADC).

A quase totalidade dos microcontroladores de 8, 16 e 32 bits adota a arquitetura de Aproximações Sucessivas (SAR - Successive Approximation Register), que oferece o compromisso ideal entre velocidade de amostragem (centenas de milhares de amostras por segundo - kSPS), excelente resolução (), baixo consumo elétrico e reduzida área de silício.

1.1 O Circuito de Amostragem e Retenção (Sample & Hold)

Antes da conversão propriamente dita, o sinal analógico externo deve ser congelado no tempo para que variações de tensão durante o processamento do SAR não corrompam a palavra digital:

  1. Fase de Amostragem (Sample): Uma chave analógica interna fecha-se, conectando o pino do canal selecionado ao capacitor interno de retenção ();
  2. Tempo Mínimo de Aquisição (): O capacitor carrega-se exponencialmente através da impedância da fonte analógica externa () e das resistências internas da chave (). Para assegurar precisão de em 10 bits ( da carga), o manual técnico do fabricante estipula:
  3. Fase de Retenção (Hold): A chave abre-se, isolando o capacitor. O registrador SAR inicia a busca binária bit a bit do MSB (bit 9) até o LSB (bit 0), consumindo exatos períodos de clock do conversor ().

2. Modelagem Matemática da Quantização e Resolução

O conversor quantiza a faixa de tensão analógica compreendida entre a referência inferior () e a referência superior () em intervalos discretos de quantização (onde códigos digitais, de a ).

2.1 Resolução do Quantum ( ou )

O valor de tensão correspondente à variação de uma única unidade no bit menos significativo (LSB) é o Quantum ():

Para uma alimentação padrão de e com :

2.2 Equação de Transferência Digital

O código binário inteiro lido nos registradores do microcontrolador é dado por:

Inversamente, a tensão analógica real reconstruída por firmware a partir do valor digital lido é:


3. Parametrização dos Registradores e Base de Tempo ()

O correto funcionamento do módulo ADC requer que o período de relógio da lógica SAR () obedeça estritamente à janela temporal ditada pela constante de tempo do silício do chip:

  • Se : o circuito interno não tem tempo de assentar o sinal do comparador, provocando códigos espúrios (missing codes) e não-linearidade diferencial severa;
  • Se : a carga retida no capacitor sofre descarga de fuga antes do término dos 10 passos da conversão, gerando erro de ganho.

O parâmetro é configurado pelos bits de seleção de clock ADCON0bits.ADCS como uma fração do oscilador mestre :

Bits ADCSFonte de Clock do ADCExemplo: Exemplo:
00 (Muito rápido! Inválido) (Inválido)
01 (Ótimo!) (Inválido)
10 (Muito lento! Inválido) (Perfeito!)
11FRC (Oscilador RC Interno) (Adequado para modo SLEEP)

3.1 Justificação do Resultado (Bit ADFM)

Como o resultado de 10 bits precisa ser acomodado em dois registradores de 8 bits (ADRESH e ADRESL), o bit ADFM em ADCON1 define o formato:

  • ADFM = 1 (Justificado à Direita): Os 8 bits menos significativos ficam em ADRESL e os 2 bits superiores ficam em ADRESH<1:0>. É a configuração padrão em C:
  • ADFM = 0 (Justificado à Esquerda): Os 8 bits mais significativos ficam concentrados em ADRESH<7:0>. Permite leitura instantânea em 8 bits descartando os 2 bits inferiores com erro insignificante de resolução.

4. Comunicação Serial Assíncrona: UART / USART

A interface UART (Universal Asynchronous Receiver-Transmitter) permite a troca bidirecional de dados entre microcontroladores, computadores e modems industriais utilizando apenas dois fios de sinal (TX de transmissão e RX de recepção) com uma referência de terra comum (GND).

4.1 Enquadramento do Quadro (Frame Format)

Por ser assíncrono (sem fio de clock compartilhado), transmissor e receptor devem operar configurados rigorosamente com a mesma taxa de modulação (Baud Rate em bps):

  1. Linha Ociosa (Idle): Permanece em nível lógico alto ( contínuo);
  2. Start Bit: A linha é puxada forçadamente para nível baixo () por 1 período de bit, sinalizando ao receptor o início do quadro e sincronizando seus contadores internos;
  3. Bits de Dados: Transmissão de 7, 8 ou 9 bits úteis, transmitidos obrigatoriamente a partir do LSB (bit menos significativo D0) até o MSB (D7);
  4. Bit de Paridade (Opcional): Paridade par (Even) ou ímpar (Odd) para detecção simples de erros de linha;
  5. Stop Bit: A linha retorna obrigatoriamente ao nível alto () por 1 ou 2 períodos de bit antes do próximo quadro.

4.2 Geração do Baud Rate e Tolerância de Sincronismo

A taxa de bits é gerada pelo divisor de clock programável do periférico através do registrador SPBRG e do bit de alta velocidade TXSTAbits.BRGH:

O desvio percentual relativo entre o Baud Rate teórico configurado e o Baud Rate real da UART não pode exceder o teto de tolerância:

Desvios superiores a provocam amostragem fora do centro geométrico do bit de Stop, gerando erros críticos de enquadramento (Framing Error - flag FERR).


5. Protocolos Seriais Síncronos: SPI vs. I2C

5.1 O Barramento SPI (4 Fios)

O barramento SPI opera em modo Full-Duplex estrito através de dois registradores de deslocamento em anel que trocam bits simultaneamente a cada borda do sinal SCK:

  • MOSI / SDO: Saída de dados do Mestre para entrada do Escravo;
  • MISO / SDI: Saída de dados do Escravo para entrada do Mestre;
  • SCK: Relógio síncrono pulsado exclusivamente pelo Mestre;
  • SS / CS: Habilitação do Escravo ativa em nível baixo (). Cada escravo adicional no barramento demanda uma linha GPIO exclusiva do microcontrolador mestre.

5.2 O Barramento I2C (2 Fios em Dreno Aberto)

O barramento I2C utiliza transistores com dreno aberto que apenas conseguem puxar as linhas para nível baixo (). Para retornar ao nível alto (), resistores de polarização externos (Pull-Up Resistors, ) são obrigatórios nas duas linhas:

  • SDA (Serial Data): Linha de dados bidirecional compartilhada;
  • SCL (Serial Clock): Linha de relógio compartilhada.

Condições Especiais do Barramento:

  • START Condition: Transição de nível alto para nível baixo em SDA com SCL mantido em nível alto;
  • STOP Condition: Transição de nível baixo para nível alto em SDA com SCL mantido em nível alto;
  • Transmissão de Bytes: A linha SDA só pode mudar de estado enquanto SCL estiver em nível baixo. Enquanto SCL estiver em nível alto, os dados em SDA devem permanecer rigorosamente estáveis!

6. Diagrama Arquitetural Consolidado

O diagrama técnico vetorial a seguir ilustra a arquitetura interna do conversor ADC tipo SAR com seus registradores de controle, bem como os diagramas físicos e quadros de temporização das interfaces seriais UART, SPI e I2C:

ADC e Interfaces Seriais

🕹️ Simulador Dinâmico Interativo: Conversão ADC ( bits), Erro de Quantização, Amostragem de Nyquist e Efeito Aliasing

Experimente em tempo real a resolução do conversor ADC de a ( a níveis), o passo de quantização , a relação sinal-ruído de quantização (), o erro instantâneo e o efeito Aliasing quando a taxa de amostragem viola o critério de Nyquist (): 👉 ▶️ Clique para Abrir o Simulador em Tela Cheia no Navegador (Arquivo no cofre: [[simulador_fourier_thd_amostragem_nyquist_adc.html]])


7. Exercícios Resolvidos e Aplicações em Concursos

Exercício 1 (Petrobras - Engenharia Elétrica / CESGRANRIO)

Enunciado: Um sensor industrial de temperatura com saída linear de (tipo LM35) é conectado diretamente ao canal AN0 de um microcontrolador com ADC de 10 bits. As tensões de referência analógica do conversor são fixadas nos pinos externos em e .

  1. Calcule a resolução do quantum do conversor e a sensibilidade de medição em graus Celsius por bit.
  2. Sabendo que em uma medição o par de registradores ADRESH:ADRESL retornou o valor digital decimal , calcule a tensão analógica lida e a correspondente temperatura física monitorada.
  3. Se o microcontrolador opera com oscilador a cristal de , determine a configuração correta dos bits ADCS1:ADCS0 para garantir que o período atenda à faixa operacional normativa de .

Resolução Passo a Passo:

  1. Resolução de Quantização e Sensibilidade: Como o sensor possui ganho de sensibilidade : Cada incremento de 1 unidade no valor do ADC representa exatamente ( de grau de resolução).

  2. Cálculo da Temperatura para : Tensão analógica correspondente: Temperatura indicada:

  3. Dimensionamento do Clock do ADC ():

    • Opção (Muito rápido! Fora da faixa);
    • Opção (Muito rápido! Fora da faixa);
    • Opção . Como , a opção cumpre a norma perfeitamente! Configura-se os bits ADCS1:ADCS0 = 10_2.


Exercício 2 (Marinha do Brasil - Corpo de Engenheiros)

Enunciado: Um microcontrolador com frequência de oscilador de necessita comunicar-se com um computador industrial através da interface serial UART na taxa padronizada de .

  1. Demonstre por que a escolha de cristais com frequências múltiplas de potências de 2 fracionárias como ou é amplamente preferida na indústria para comunicações seriais assíncronas em detrimento de cristais com valores redondos como ou .
  2. Calcule o valor exato a ser gravado no registrador SPBRG no modo de alta velocidade () e o erro percentual de Baud Rate resultante para em comparação com .

Resolução Passo a Passo:

  1. Cálculo com Cristal de (): Fórmula da taxa: Como é um número inteiro exato sem partes fracionárias:

  2. Cálculo com Cristal de (): Baud Rate real com : Erro percentual:

  3. Conclusão Técnica: Cristais como e são divisíveis de forma estritamente inteira por todas as taxas seriais padrão (2400, 4800, 9600, 19200, 38400, 57600 e 115200 bps), eliminando completamente o erro de arredondamento de temporização e garantindo estabilidade de transmissão em longas distâncias sem corrupção de quadros.