Integração de Sensores com PIC para Monitoramento Remoto
Leitura de Sensores Analógicos e Conversão A/D em PIC
Neste tutorial, vamos explorar o passo a passoDepurando e Testando Aplicações Simples no MPLAB XDescubra como configurar o MPLAB X IDE, utilizar breakpoints, executar passo a passo e monitorar variáveis, garantindo eficiência na depuração de sistemas PIC. da leitura de sensores
Uso 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. analógicos e como efetuar a conversão de sinais utilizando o Conversor Analógico-Digital
Uso 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. (A/D) presente nos microcontroladores PIC
Primeiros 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.. A ideia é apresentar, de forma prática, tudo o que você precisa saber para coletar informações de sensores como potenciômetros, termistores, sensores de luz (LDR), entre outros, e convertê-las em valores digitais para processamento pelo firmware.
Entendendo o Processo de Conversão A/D🔗
Todo sensorUso 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. analógico proporciona um sinal variável de tensão. Para que esse sinal garanta medições consistentes, é fundamental saber:
1. A faixa de tensão gerada pelo sensorUso 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. (ex.: 0–5 V).
2. A resoluçãoADC (Conversor Analógico-Digital): Lendo Valores Analógicos em PICAprenda a configurar o ADC de microcontroladores PIC de forma avançada explorando teoria, implementação prática e técnicas de otimização para leituras precisas. do conversor A/D do PIC
Exemplos Práticos em Assembly: Quando Vale a Pena Programar em Baixo NívelExplore como a programação Assembly em PIC maximiza controle de hardware com alta eficiência, ideal para sistemas críticos e dispositivos de baixa energia. (ex.: 10 bits → valores de 0 a 1023).
3. A configuração de referência de tensão usada (ex.: VDD ou tensões de referência externas).
Em microcontroladores PICPrimeiros 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., a conversão A/D geralmente conta com:
- Canais analógicos selecionáveis (AN0, AN1, AN2, etc.).
- Taxa de amostragem que depende do clock e de configurações internas.
- Tempo de aquisição (tempo necessário para o capacitor interno capturar a tensão).
O resultado final é um valor digital proporcional à tensão de entrada no pino, respeitando o referencial de 0 V até a tensão de referência (comumente 5 V ou 3,3 V).
Principais Registradores de Configuração🔗
Para realizar a leitura A/D, alguns registradoresArquitetura 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. costumam ser configurados nos PICs (exemplo de PIC16F ou PIC18F). Entre eles:
Registrador | Função |
---|---|
ADCON0 | Seleciona canal, controla habilitação do ADC e início de conversão. |
ADCON1 ou ANSEL / ANSELH | Define se o pino será analógico ou digital e configura a tensão de referência. |
ADCON2 ou Ajustes no mesmo ADCON1 (dependendo da família PIC) | Ajusta clock do ADC, tempo de aquisição e formatos de resultado (justificado à direita ou à esquerda). |
É essencial verificar o datasheet do microcontrolador PICEvolução dos PIC: Tendências, Desafios e Perspectivas FuturasDescubra a evolução dos microcontroladores PIC, desde os modelos 8 bits até as avançadas soluções de 32 bits, destacando tendências e desafios. em uso para identificar quais registradores
Arquitetura 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. estão disponíveis e como configurá-los adequadamente.
Como Iniciar e Realizar a Conversão🔗
O procedimento típico para uma conversão A/D pode ser resumido nos passos abaixo:
1. Configurar pino como entrada analógica (através do registradorArquitetura 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. ADCON1/ANSEL/ANSELH).
2. Definir canal que será lido (ADCON0Arquitetura 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.: bits CHS).
3. Ajustar referências de tensão (ADCON1 ou registradoresArquitetura 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. equivalentes).
4. Selecionar clock do ADC (bit ADCS em ADCON2 ou no próprio ADCON0Arquitetura 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., dependendo do PIC).
5. Definir formato do resultado (bit ADFM para alinhamento do resultado).
6. Habilitar ADCUso 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. (bit ADON em ADCON0
Arquitetura 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.).
7. Aguardar tempo de aquisição (t_{acqu}), garantindo que o capacitor interno do ADC carregue a tensão do sensorUso 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..
8. Iniciar conversão (setar bit GO/DONE em ADCON0Arquitetura 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.).
9. Aguardar término da conversão (bit GO/DONE zerado).
10. Ler o resultado nos registradoresArquitetura 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. ADRESL e ADRESH (ou ADCRES dependendo da família).
Exemplo de Código em C🔗
Abaixo segue um breve exemplo em C (usando um compilador da família XC) de como configurar e ler um canal analógico, considerando um microcontrolador PIC16F fictício (ajuste conforme o datasheet do seu PICExemplos Práticos em Assembly: Quando Vale a Pena Programar em Baixo NívelExplore como a programação Assembly em PIC maximiza controle de hardware com alta eficiência, ideal para sistemas críticos e dispositivos de baixa energia. real).
#include <xc.h>
// Exemplo de configuração para PIC16F (valores e bits podem variar)
#pragma config FOSC = HS // Oscilador externo de alta velocidade
#pragma config WDTE = OFF // Watchdog Timer desligado
#pragma config PWRTE = ON // Power-up Timer habilitado
#pragma config MCLRE = ON // MCLR habilitado
#pragma config CP = OFF // Code Protection desligado
#pragma config BOREN = ON // Brown-out Reset habilitado
#pragma config LVP = OFF // Low-Voltage Programming desligado
#pragma config CPD = OFF // Data Code Protection desligado
#pragma config WRT = OFF // Write Protection desligado
#define _XTAL_FREQ 20000000 // Frequência de 20 MHz
void adc_init(void) {
// Configura o pino AN0 como analógico; os demais como digital
ANSEL = 0x01; // Somente AN0 habilitado como analógico
ANSELH = 0x00;
// Configura referência de tensão e demais parâmetros
ADCON1 = 0x00; // VDD como referência e sem justificação diferenciada
// Ajusta clock do ADC e formato de resultado
// bit ADCS2:ADCS0 = 010 -> Fosc/32 (exemplo)
// bit ADFM = 1 (resultado justificado à direita)
ADCON2 = 0b10001010;
// bit 7 (ADFM) = 1 -> Justificado à direita
// bit 6-4 (ACQT2:ACQT0) = 000 -> sem tempo de aquisição adicional (exige delay manual)
// bit 2-0 (ADCS2:ADCS0) = 010 -> Fosc/32
// Seleciona canal AN0 e habilita ADC
ADCON0 = 0b00000001; // CHS = 000 (AN0), ADON = 1
}
unsigned int adc_read(void) {
unsigned int result;
// Seleciona canal AN0 (se for variar, mude aqui)
ADCON0 &= 0b11000101; // Limpa bits de canal, mantendo ADON
ADCON0 |= (0 << 3); // Seleciona AN0, por exemplo
// Aguarda tempo de aquisição (necessário para capacitor interno)
__delay_us(20); // Ajuste esse valor conforme datasheet
// Inicia a conversão
ADCON0bits.GO_DONE = 1;
// Aguarda término da conversão
while (ADCON0bits.GO_DONE);
// Lê o resultado (justificado à direita)
result = ((unsigned int)ADRESH << 8) | ADRESL;
return result;
}
void main(void)
{
unsigned int valorADC;
// Inicialização
adc_init();
while(1)
{
// Realiza leitura do ADC
valorADC = adc_read();
// Aqui você pode fazer algo com valorADC
// Por exemplo, escrever em uma porta, enviar via comunicação, etc.
__delay_ms(500);
}
}
Nesse exemplo, o valor digital gerado (valorADC
) varia de acordo com a tensão aplicada no pino AN0 (0 V → 0 em decimal, 5 V → 1023 em decimal se for 10 bits). Você pode usar esse valor para controlar dispositivos, exibir informações em um displayUso 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. ou enviar via comunicação para outro sistema.
Considerações sobre Layout e Ruído🔗
Ao projetar a placa de circuito impresso (PCB) ou montar o protótipo em protoboard, observe:
- Separação de trilhas: sinais analógicos muito próximos de sinais digitais de alta frequência podem sofrer ruído.
- Uso de filtros
Proteção e Filtragem de Sinais: Dicas de Circuito para SucessoDescubra práticas essenciais para proteger e filtrar sinais em microcontroladores PIC, garantindo desempenho e confiabilidade para seus projetos. RC: em alguns casos, um resistor e capacitor em série com a entrada do ADC
Uso 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. podem suavizar e filtrar o sinal.
- Referência de aterramento: garanta pontos de aterramento bem definidos para evitar flutuações de GND que prejudiquem as leituras.
Dicas Finais🔗
1. Leia o datasheet para conhecer as particularidades do ADC no modelo específico do seu PICExemplos Práticos em Assembly: Quando Vale a Pena Programar em Baixo NívelExplore como a programação Assembly em PIC maximiza controle de hardware com alta eficiência, ideal para sistemas críticos e dispositivos de baixa energia..
2. Teste em patamares de tensão conhecidos (ex.: 0 V, 2,5 V e 5 V) para verificar se a conversão está coerente.
3. Calcule a resoluçãoADC (Conversor Analógico-Digital): Lendo Valores Analógicos em PICAprenda a configurar o ADC de microcontroladores PIC de forma avançada explorando teoria, implementação prática e técnicas de otimização para leituras precisas. de acordo com o número de bits:
Com 10 bits e 5 V de referência, cada incremento representa aproximadamente 4,88 mV.
4. Se o sinal do sensorUso 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. não cobrir toda a faixa de 0 a 5 V, considere amplificá-lo ou ajustar a referência para ganhar resolução
ADC (Conversor Analógico-Digital): Lendo Valores Analógicos em PICAprenda a configurar o ADC de microcontroladores PIC de forma avançada explorando teoria, implementação prática e técnicas de otimização para leituras precisas..
5. Evite leituras em alta frequência sem verificar o tempo mínimo de aquisição exigido pelo datasheet.
Conclusão🔗
O processo de leitura de 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. analógicos em microcontroladores PIC
Primeiros 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. e a conversão A/D são fundamentais para inúmeros projetos de monitoramento
Teste de Estresse: Avaliando o PIC em Condições Extremas de UsoDescubra técnicas avançadas para qualificação e testes de sistemas embarcados em PIC, combinando normas, instrumentação e análise científica de dados. e controle, desde aplicações simples de medições de temperatura até sistemas avançados de aquisição de dados. Entender como cada registrador
Arquitetura 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. atua e como configurar o tempo de aquisição, o clock do ADC
Uso 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. e as referências de tensão possibilita leituras confiáveis e precisas. Com essas bases sólidas, você estará pronto para integrar sensores
Uso 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. ao seu projeto com total segurança e efetividade.
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- Datasheet do microcontrolador PIC16F877A. Importante para consulta dos registradores e configurações de ADC, conforme demonstrado no exemplo de código: ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf
- Documentação de suporte para PIC16F1xxx no portal Microchip Developer. Essencial para entender as particularidades dos PICs que tratam de conversão A/D, conforme exemplificado no artigo: microchipdeveloper.com/8bit:pic16f1xxx
- Página oficial do MPLAB X IDE no site da Microchip. Relevante para os leitores que utilizarão essa ferramenta para programar e testar os exemplos apresentados: www.microchip.com/en-us/development-tools-tools-and-software/mplab-x-ide
- Tutoriais e exemplos práticos para PIC no Microcontrollers Lab, que podem complementar o tutorial trazendo mais exemplos e experimentos práticos: microcontrollerslab.com/category/pic-microcontroller/
- Visão geral dos microcontroladores PIC no site oficial da Microchip. Essa referência ajuda a contextualizar a família de dispositivos utilizados, base do tutorial: www.microchip.com/design-centers/8-bit/pic-mcus