Upload
marcos
View
241
Download
10
Embed Size (px)
DESCRIPTION
modulos analogicos PICs
Citation preview
Aula 16
Periféricos Analógicos
MicrocontroladoresMicrocontroladores PIC18 PIC18 –– Programação em C Programação em C MicrocontroladoresMicrocontroladores PIC18 PIC18 –– Programação em C Programação em C
Prof. Ítalo Jáder Loiola Batista
Universidade de Fortaleza - UNIFORCentro de Ciências Tecnológicas - CCT
E-mail: [email protected]
Jan/2011
www.mecatronicadegaragem.blogspot.com
Conversor A/D
2
www.mecatronicadegaragem.blogspot.com
Conversor A/D
3
www.mecatronicadegaragem.blogspot.com
Conversor A/D
4
www.mecatronicadegaragem.blogspot.com
Conversor A/D
5
www.mecatronicadegaragem.blogspot.com
Conversor A/D
6
www.mecatronicadegaragem.blogspot.com
Tensão de Referência
A diferença entre as tensões
aplicadas em VREF+ e VREF-,
7
aplicadas em VREF+ e VREF-,
determina a faixa de tensão que será
convertida em digital.
www.mecatronicadegaragem.blogspot.com
Conversor A/D
Resolução da conversão:
Ex.: (5V – 0V) / 256 = 19,53mV
Número de bits para representar o sinal digital:sinal digital:
Ex.: 8 bits, pois 2^8 = 256
8
www.mecatronicadegaragem.blogspot.com
Tempo de Aquisição
O PIC18F4520 no mínimo 2,4us para um Vin com RS=2,5kΩ (máximo recomendado pelo fabricante), à temperatura de 85º C;
Por segurança, sugere-se um tempo de aquisição mínimo de 10us;
9
www.mecatronicadegaragem.blogspot.com
Tempo de Aquisição
Para calcular o tempo de aquisição exato
para uma determinada aplicação, deve-se
consultar o datasheet do PIC18F4520, no
qual encontra-se uma fórmula que permite
efetuar com exatidão o cálculo do tempo deefetuar com exatidão o cálculo do tempo de
aquisição.
10
www.mecatronicadegaragem.blogspot.com
Conversor A/D do PIC18F4520
O PIC18F4520 possui um módulo conversor A/Dcom 13 entradas analógicas que podem ser
chaveadas para ter acesso, uma de cada vez, aoconversor;
O conversor A/D do PIC18F4520 possui uma O conversor A/D do PIC18F4520 possui uma
resolução de 10 bits;
O conversor A/D pode operar mesmo com o PIC nomodo SLEEP;
Para isso, o sinal de clock do conversor A/D (CAD)deve ser derivado do oscilador RC interno do PIC;
11
www.mecatronicadegaragem.blogspot.com
Registradores FSR de Conversão A/D
Existem três registradores no PIC18F4520 envolvidos com o recurso de conversão A/D:
ADCON0
Controla a operação do módulo conversor A/D;
ADCON1 ADCON1
Configura a função dos pinos de entrada do conversor;
ADCON2
Configura a origem do clock, a aquisição programada e a justificação;
12
www.mecatronicadegaragem.blogspot.com
Registradores SFR de Conversão A/D
13
www.mecatronicadegaragem.blogspot.com
Registradores – ADCON0
14
www.mecatronicadegaragem.blogspot.com
Registradores – ADCON0
15
www.mecatronicadegaragem.blogspot.com
Registradores – ADCON1
16
www.mecatronicadegaragem.blogspot.com
Registradores – ADCON2
17
www.mecatronicadegaragem.blogspot.com
Resultado de uma conversão
1. Para dar início a conversão, é necessário setaro bit G0/DONE (ADCON0<2>);
2. Quando a conversão for finalização, o bitG0/DONE é apagado automaticamente pelohardware;hardware;
3. Sendo também setado automaticamente, o bitADIF (PIR<6>);
4. A amostra resultante estará disponível nosregistradores ADRESH:ADRESL;
18
www.mecatronicadegaragem.blogspot.com
Resultado de uma conversão
6. O resultado da conversão do PIC18F4520 é de 10bits, mas estará disponível em 2 registradores de 8
bits;
7. A sobra de bits permitiu aos projetistas deslocar oresultado para esquerda ou para direita,resultado para esquerda ou para direita,
procedimento denominado justificação doresultado;
19
www.mecatronicadegaragem.blogspot.com
Justificação do Resultado
ADFM (ADCON2<7>)
20
www.mecatronicadegaragem.blogspot.com
Passos para a conversão A/D
1. Configuração do módulo A/D
Configurar
Pinos de entrada analógica
Tensões de referência
Pinos de I/O digital (ADCON1) Pinos de I/O digital (ADCON1)
2. Selecionar o canal de entrada analógica (ADCON0)
3. Selecionar a freqüência do sinal de clock do conversor A/D (ADCON2)
4. Justificar o resultado da conversão (ADCON1);
5. Ligar o módulo A/D21
www.mecatronicadegaragem.blogspot.com
Passos para a conversão A/D
5. Se necessário, configurar a interrupção do módulo A/D
A. Reset o bit ADIF
B. Sete o bit ADIE
C. Sete o bit GIEC. Sete o bit GIE
6. Aguardar o tempo de aquisição (10us);
7. Iniciar a conversão:
Setar o bit GO/DONE (ADCON0<2>)
8. Aguardar o tempo de conversão
22
www.mecatronicadegaragem.blogspot.com
Passos para a conversão A/D
verificando se o valor do bit GO/DONE é zero (sinalizando o fim de conversão A/D);
ou aguardar pela interrupção gerada pelo módulo
A/D ao fim da conversão;
9. Ler o par de registradores (ADRESH:ADRESL);9. Ler o par de registradores (ADRESH:ADRESL);
10. Aguardar no mínimo 2 x TAD para dar início a uma nova conversão;
11. Limpar o bit ADIF se a interrupção do conversor A/D estiver sendo utilizada;
23
www.mecatronicadegaragem.blogspot.com
Interrupção do Conversor A/D
Para habilitar a interrupção do conversor A/D sem os níveis de prioridade:
1. Ligar a chave geral de interrupção, setando-se o bit GIE (INTCON<7>);
2. Habilita a interrupção dos periférico, setando-se 2. Habilita a interrupção dos periférico, setando-se
o bit PEIE (INTCON<6>);
3. Ligar a chave individual do módlo de conversor A/D, setando-se o bit ADIE (PIE1<6>);
4. A flag de fim da conversão deve ser apagada manualmente dentro da função de tratamento da interrupção.
24
www.mecatronicadegaragem.blogspot.com
Esquema Elétrico
25
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte)
LCD_8bits.h
Arquivo cabeçalho com as definições dos pinos utilizados comovia de dados, vias de controle e os protótipos das funções;
LCD_8bits.c LCD_8bits.c
Arquivo que contém as funções de acesso ao LCD;
Main_35.c
Arquivo principal responsável por exibir a cada segundo no LCD otexto seguinte, em que o x representa o valor da tensão aplicadano pino AN0 convertida em graus Celsius;
Temp = xx,x °C
26
www.mecatronicadegaragem.blogspot.com
Display LCD / FunçõesFunção Descrição
IniciaLCD Inicializa LCD controller
TestPixelsLCD Acende todos os pixels do LCD
EscInstLCD Envia instrução para o LCD
EscDataLCD Escreve um caractere na posição apontada pelo cursor
EscStringLCD Escreve uma string lida na memória de dados a partir
da posição apontada pelo cursor
EscStringLCD_ROM Escreve uma string lida na memória de programa a
partir da posição apontada pelo cursor
TesteBusyFlag Verifica se o LCD controller está ocupado executando
alguma instrução
Pulse Aplica pulso de para leitura ou escrita no LCD
_Delay100us Delay de 100us
_Delay5ms Delay de 5ms
DelayFor20TCY Delay de 20 ciclos de instrução do oscilador27
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte)
LCD_8bits.h
Identificador que impede a definição a seguir seja duplicada se o arquivo
cabeçalho foi incluído em outro arquivo-fonte associado ao projeto.
28
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte)– 1
LCD_8bits.c
29
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte) - 2
LCD_8bits.c
NL: Define o número
de linhas que estarão
ativas;
30
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte) - 3
LCD_8bits.c
São utilizadas para
gerar a base de tempo
exigida pelo LCD
Precisam que o arquivo
cabeçalho delay.h seja
incluído no projeto.
31
Desenvolvida para
freqüência de clock
de 8Mhz.
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte) - 4
LCD_8bits.c
Verifica se o LCD
está ocupado
executando alguma
instrução ou se ele
está livre;
32
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte) - 5
LCD_8bits.c
Verifica se o LCD
está ocupado
executando alguma
instrução ou se ele
está livre;
33
Verifica se o LCD
está ocupado
executando alguma
instrução ou se ele
está livre;
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte) - 6
LCD_8bits.c
Envia para o LCD a
string lida na memória
de dados que será
exibida no display a
partir da posição
apontado pelo cursor;
34
apontado pelo cursor;
Envia para o LCD a
string lida na memória
de programa que será
exibida no display a
partir da posição
apontado pelo cursor;
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte) - 7
LCD_8bits.c
Função que acende
todos os pixels do
display do LCD;
Escreve cursor na
35
Posiciona cursor na
segunda linha
Escreve cursor na
primeira linha
Caractere com todos
os pixels acesos
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte) - 1
Main_35.c
36
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte) - 2
Main_35.c
37
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte) - 3
Main_35.c
38
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte) - 4
Main_35.c
39
www.mecatronicadegaragem.blogspot.com
Conversor A/D (Código-fonte) - 5
Main_35.c
40
www.mecatronicadegaragem.blogspot.com
Próxima Aula
Aula 17
Periférico de ComunicaçãoPeriférico de Comunicação
41
www.mecatronicadegaragem.blogspot.com