Beruflich Dokumente
Kultur Dokumente
Pedro Pedrosa
h"p://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4227622E1
pedrosarf@ifce.edu.br
Prof. Pedro Pedrosa
Ø Hardware:
10
entradas
Analógicas
pedrosarf@ifce.edu.br Prof. Pedro Pedrosa
Ø Visão Geral
• Os pinos com a função especial NA podem assumir duas funções,
entrada/saída digital ou conversor A/D
• Quando configuradas como E/S digital funcionam como na aula
anterior. Já quando configuradas como conversor A/D estes pinos
convertem uma tensão analógica (0-5V) em um valor digital.
• O valor digital é armazenado normalmente em uma variável para ser
processada, armazenada, etc.
• o valor armazenado depende da resolução do conversor, que, por
exemplo, no 18f2550 pode ser de 8 ou 10 bits.
Exemplos:
#device adc = 10
ou
#device adc = 8 //coloca o pino RB1 em nível baixo
setup_adc_ports(configurações);
Exemplos:
setup_adc_ports(AN0_to_AN3);
SETUP_ADC_PORTS(VSS_VDD)
•
Usa
como
referência
as
alimentações
do
micro
controlador,
pinos
19
e
20
(18f2550)
•
Deste
modo
a
leitura
do
ADC
será
máxima
para
tensão
no
pino
19
e
0
para
tensão
no
pino
20.
pedrosarf@ifce.edu.br Prof. Pedro Pedrosa
Ø Configuração conversor AD
SETUP_ADC_PORTS( ) Parâmetros de Configuração
Parâmetro Tensão de referência dos ADCs
VSS_VDD Referência 0 - Vdd (pino 20)
VREF_VREF Referência VrefL(AN2) - VrefH (AN3)
VREF_VDD Referência VrefL(AN2) – Vdd (pino 20)
VSS_VREF Referência 0 - VrefH (AN3)
SETUP_ADC_PORTS(VREF_VREF)
•
Usa
como
referência
os
pinos
4
(AN2)
e
5
(AN3)
para
18f2550
•
Deste
modo
a
leitura
do
ADC
será
máxima
para
tensão
do
pino
5
e
0
para
tensão
no
pino
4.
pedrosarf@ifce.edu.br Prof. Pedro Pedrosa
Ø Configuração conversor AD
SETUP_ADC_PORTS( ) Parâmetros de Configuração
Parâmetro Tensão de referência dos ADCs
VSS_VDD Referência 0 - Vdd (pino 20)
VREF_VREF Referência VrefL(AN2) - VrefH (AN3)
VREF_VDD Referência VrefL(AN2) – Vdd (pino 20)
VSS_VREF Referência 0 - VrefH (AN3)
SETUP_ADC_PORTS(VREF_VDD)
•
Usa
como
referência
os
pinos
4
(AN2)
e
20
(Alimentação)
•
Deste
modo
a
leitura
do
ADC
será
máxima
para
tensão
do
pino
20
e
0
para
tensão
no
pino
4.
pedrosarf@ifce.edu.br Prof. Pedro Pedrosa
Ø Configuração conversor AD
SETUP_ADC_PORTS( ) Parâmetros de Configuração
Parâmetro Tensão de referência dos ADCs
VSS_VDD Referência 0 - Vdd (pino 20)
VREF_VREF Referência VrefL(AN2) - VrefH (AN3)
VREF_VDD Referência VrefL(AN2) – Vdd (pino 20)
VSS_VREF Referência 0 - VrefH (AN3)
SETUP_ADC_PORTS(VSS_VREF)
•
Usa
como
referência
os
pinos
19
(GND
alimentação)
e
5
(AN3)
•
Deste
modo
a
leitura
do
ADC
será
máxima
para
tensão
do
pino
5
e
0
para
tensão
do
pino
19
(GND).
pedrosarf@ifce.edu.br Prof. Pedro Pedrosa
Ø Configuração conversor AD
SETUP_ADC_PORTS( ) Parâmetros de Configuração
Resumindo:
Tensão
do
ADC
=
Ref.
Mínima
valor
ADC
=
0
Tensão
do
ADC
=
Ref.
Máxima
valor
ADC
=
valor
máximo
SETUP_ADC_PORTS(VREF_VDD)
•
Usa
como
referência
os
pinos
4
(AN2)
e
20
(Alimentação)
Obs:
valor
máximo
depende
da
resolução:
•
Deste
modo
a
leitura
do
ADC
será
máxima
para
tensão
do
pino
255
para
8
bits
20
e
0
para
tensão
no
pino
4.
1023
para
10
bits
pedrosarf@ifce.edu.br
Prof. Pedro Pedrosa
Ø Configuração conversor AD
SETUP_ADC_PORTS( ) Parâmetros de Configuração
Sintaxe:
setup_adc(opções);
Exemplos:
Sintaxe:
set_adc_channel(pino);
Exemplos:
set_adc_channel(0);
#include <18f2550.h>
#device ADC=10 //Configura os ADC com 10 bits
#use delay(clock=80000000) //Configura as portas usadas como ADC
long int ad0; //Variável que suporte armazenar um dado de 10 bits
void main( )
{
SETUP_ADC_PORTS(AN0_TO_AN3); //Configura as portas usadas como ADC
SETUP_ADC(ADC_CLOCK_INTERNAL); //Seta a origem do clock
SET_ADC_CHANNEL(0); //Escolhe a entrada lida pela funcao READ_ADC
while(1) //Loop infinito
{
ad0 = READ_ADC(); //Le o pino ADC selecionado
delay_ms(10); //Espera 10ms, intervalo minimo entre leituras ADC
}
}
pedrosarf@ifce.edu.br Prof. Pedro Pedrosa
Exemplo
2:
#include <18f2550.h>
#device ADC=8 //Configura ADC com 8 bits
#use delay(clock=2000000)
unsigned int ad0, ad1; //Variaveis capazes de armazenar 8 bits (reparar no unsigned)
void main( )
{
SETUP_ADC_PORTS(AN0_TO_AN3); //Configura as portas usadas como ADC
SETUP_ADC(ADC_CLOCK_INTERNAL); //Seta a origem do clock
while(1) //Loop infinito
{
SET_ADC_CHANNEL(0); //Escolhe a entrada 0 para ler com READ_ADC
ad0 = READ_ADC(); //Le o pino ADC selecionado
delay_ms(10); //Espera 10ms, intervalo minimo entre leituras ADC
SET_ADC_CHANNEL(1); //Escolhe a entrada 1 para ler com READ_ADC
ad1 = READ_ADC(); //Le o pino ADC selecionado
delay_ms(10); //Espera 10ms, intervalo minimo entre leituras ADC
}
}
pedrosarf@ifce.edu.br Prof. Pedro Pedrosa
Prof. Pedro Pedrosa
Ø Prática 01: Projete um hardware e um software utilizando MCU 18f2550 que
realize a leitura do ADC AN0 com 10 bits e que, acenda um led vermelho quando o
valor lido for menor que 2,5V e acenda o led amarelo quando for maior.
+5V
B7
A A0
B6
A1
B5
A2
B4
A3
B3
0V
A4
B2
A5
B1
+5V
3V
B0
A6
C0
C7
C1
C6
C2
C5
C4
pedrosarf@ifce.edu.br Prof. Pedro Pedrosa
Ø Prática 02: Projete um hardware e um software utilizando MCU
18f2550 que realize a leitura do ADC AN0 com 8 Vbits
Impressão
e demonstre o
isual
resultado em 3 displays de 7 segmentos.
+5V
B7
Sa
Sa
Sa
A A0
B6
A1
B5
Sg
Sg
Sg
Ex:
A2
B4
A3
B3
0V
A4
B2
Sd
Sd
Sd
A5
B1
+5V
2V
B0
3V
A6
C0
C7
C1
C6
C2
C5
C4
pedrosarf@ifce.edu.br Prof. Pedro Pedrosa