Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução
Sinais analógicos possuem valores contínuos de amplitude em função do
tempo, ou seja, a amplitude destes sinais pode assumir valores infinitos
em um instante de tempo, como observamos na Figura 1a. Esses são os
sinais presentes na natureza, como temperatura, pressão, som, umidade,
aceleração da gravidade, entre outros. Já os sinais digitais possuem ní-
veis discretos de valores para sua amplitude, ou seja, eles têm valores
bem definidos para determinados instantes de tempo, como vemos na
Figura 1b. Esses sinais estão presentes em dispositivos digitais, como
computadores, microcontroladores, TV, relógios digitais, celulares etc.
Sinais analógicos devem ser quantizados para se tornarem digitais e,
então, serem processados por dispositivos digitais (WEBER, 2012).
2 Programação de microcontroladores V
0.4 101
0.2
Amplitude
100
Amplitude
0
011
-0.2
-0.4 010
-0.6 001
-0.8
000
-1
-3 -2 -1 0 1 2 3 0 5 10 15
Tempo
Tempo
Resolução
Segundo Pereira (2010), a resolução é o menor intervalo (quantidade) do sinal
analógico que o conversor A/D é capaz de detectar dentro da faixa de amplitude
de operação (também conhecida como faixa dinâmica, que é definida pelos
valores de tensão de referência positiva (Vref+) e de referência negativa (Vref– do
conversor A/D). Ou seja, ela representa os níveis discretos que podem ser
representados no conversor. A resolução de um conversor A/D geralmente
4 Programação de microcontroladores V
(1)
10 10 2V 4V
4V
01 01 2V 2V
2V
00 00 2V 0V
VREF - 0V
(2)
0 0 VSS VDD
Resolução do PIC18F4550
O conversor A/D do PIC18F4550 tem 10 bits, ou seja, 1024 níveis de repre-
sentação binária e faixa dinâmica de 0000000000 a 1111111111. Sendo assim,
cada valor amostrado do sinal analógico é convertido em um número corres-
pondente de 10 dígitos binários (PEREIRA, 2007). Suponha, por exemplo, que
a tensão de referência negativa do conversor A/D é a tensão de terra do PIC
(Vref– = VSS = 0 V) e a tensão de referência positiva do conversor A/D, a tensão
de alimentação do PIC (Vref+ = VDD = 5 V) e o número de bits do conversor é
10 bits. Portanto, a resolução será:
onde:
(4)
12 Programação de microcontroladores V
onde:
TA = TAQC + TCNV + TR
MIN MIN MIN MIN
TA ≈ 21,12 μs
MIN
Potenciômetro
O potenciômetro é um componente eletrônico que possui resistência elétrica
ajustável e, tipicamente, três terminais nos quais a conexão central é deslizante
e manipulável. O potenciômetro é um divisor de tensão regulável em que as
tensões de alimentação VDD e GND são ligadas aos pinos da extremidade e a
tensão variável pode ser lida no pino central. A Figura 6 mostra um exemplo
de potenciômetro.
Figura 6. Potenciômetro.
Fonte: Dmitry S. Gordienko/Shutterstock.com.
A Figura 7 mostra o hardware, que deve ser montado para este exemplo
prático.
14 Programação de microcontroladores V
/** I N C L U D E S ******************************/
#include <pic18F4550.h> //Biblioteca de configurações do MCU
#include <stdlib.h> //Necessário para a função ftoa()
/** D E F I N E S ********************************/
//Resolução do CAD de 10bits = 5V/(2^10-1)
#define RESOLUCAO (5.0/1023.0)
//Tempo do delay
#define TEMPO 3e6
//Defines do CAD
//Inicia a conversão no CAD
#define ConverteADC() ADCON0bits.GO = 1
//Sinaliza conversão em andamento
#define ADC _ Ocupado() ADCON0bits.GO == 1
//Sinaliza fim da conversão no CAD
#define Livre _ ADC() ADCON0bits.GO == 0
/** F U N C O E S ********************************/
/*******************************
* Função: void main(void)
*******************************/
void main(void){
int resultadoBin=0; //Valor da conversão AD em Binário.
float resultadoVolts = 0; //Guarda valor conversão em VOLTS.
float resolucao = RESOLUCAO;//Valor da resolução do CAD.
char texto [10] = ""; //Variável para escrever no LCD.
16 Programação de microcontroladores V
//Inicializa CAD
InicializaADC();
//Laço infinito
while(1){
/********************************
* Função: int LerADC(void)
********************************/
int LerADC(void){
//Retorna o valor contido nos registradores
//ADRESH = A/D Result Register High Byte
//ADRESL = A/D Result Register Low Byte
return (((unsigned int)ADRESH)<<8)|(ADRESL);
} //Fim ReadADC(void)
Comando Descrição
(Continua)
Programação de microcontroladores V 19
(Continuação)
Comando Descrição
(Continuação)
Comando Descrição
ADCON2bits.ACQT2 = 0;
ADCON2bits.ACQT1 = 0;
ADCON2bits.ACQT0 = 1;
//ADCS2:ADCS0: Seleciona o clock da conversão AD.
//110 = FOSC/64 Para o PIC18F4550 com frequência
ADCON2bits.ADCS0 = 1; de 48MHz, o clock deve ser
configurado como FOSC/64, por
ADCON2bits.ADCS1 = 1;
isso foi usado o valor binário 110.
ADCON2bits.ADCS2 = 0;
//Inicia a conversão no CAD Após a configuração, a
ADCON0bits.ADON = 1; conversão é inicializada.
Comando Descrição
ADCON0bits.GO = 1
(Continua)
Programação de microcontroladores V 21
(Continuação)
Comando Descrição
Comando Descrição
(Continua)
22 Programação de microcontroladores V
(Continuação)
Comando Descrição
Leituras recomendadas
PEREIRA, F. Leitura de tensões analógicas com o PIC. In: PEREIRA, F. Microcontroladores
PIC: técnicas avançadas. 6. ed. São Paulo: Érica, 2007. cap. 12. seção 8.
PEREIRA, F. Periféricos analógicos. In: PEREIRA, F. Microcontrolador PIC 18 detalhado:
hardware e software. São Paulo: Érica, 2010. cap. 9.
Programação de microcontroladores V 23