Академический Документы
Профессиональный Документы
Культура Документы
2009/2010
1Semestre
CONVERSO ANALGICO-DIGITAL:
IMPLEMENTAO DE UM ADC DO TIPO SAR,
APROXIMAES SUCESSIVAS
Laboratrio II
Introduo
No mundo fsico, os sinais com informao relevante tm normalmente uma natureza analgica.
No entanto, para trabalhar com eles, quer para fazer leituras quer tratamento de dados ou
processamento de sinais, mais conveniente trabalhar com grandezas discretas. Torna-se assim
necessrio ter a possibilidade de fazer a converso destes sinais em grandezas digitais.
Um conversor analgico-digital ou ADC (analog-to-digital converter) um dispositivo electrnico
que converte um sinal contnuo (e.g. uma tenso) num nmero discreto, proporcional sua
magnitude, i.e. quantiza-o. Os valores da converso so representados digitalmente normalmente
na forma de um nmero binrio, podendo ser utilizadas vrias codificaes convenientes.
Um ADC com M bits tem um total de 2M valores de converso possveis, em intervalos
igualmente espaados. A amplitude de cada intervalo denomina-se de resoluo do ADC, que o
valor correspondente variao do bit menos significativo da converso, normalmente
representada por Q, sendo dada pela frmula:
=
2 1
em que EFSR escala total da grandeza a converter (e.g. voltagem pico-a-pico) e M o nmero de
bits do ADC.
A converso aproxima o valor analgico por arredondamento ou truncagem. Em geral, quando
maior o nmero de bits menor ser o erro da discretizao do sinal analgico a converter. No
entanto, os ADCs podem sofrer vrios erros que os afastam de condies ideais que conduzem a
erros na converso, nomeadamente: erros de offset ou de ganho, no linearidade integral, no
linearidade diferencial, entre outros. Assim, estes erros podem, em alguns casos, ter uma
amplitude maior do que a resoluo ideal do ADC, fazendo com que, na realidade, alguns dos
bits menos significativos no tenham significado.
Mesmo que os erros referidos se consigam controlar e se possam considerar desprezveis face
aos sinais a considerar, qualquer dispositivo ADC requer que o sinal analgico a converter esteja
constante durante um certo perodo de tempo necessrio s operaes de converso, de outra
maneira esta no feita correctamente. Torna-se ento necessrio um circuito que permita
fixar o sinal analgico a converter. Uma escolha possvel o circuito de Amostragem e
Reteno (Sample & Hold), o qual foi o tema principal do primeiro trabalho de laboratrio.
Estando o sinal de interesse fixo possvel efectuar a converso.
Em relao converso analgico-digital em si, existem vrias implementaes possveis, com
diferentes mtodos e caractersticas, sendo que uma delas o mtodo das aproximaes
sucessivas ou SAR successive approximation register.
Os ADC de N bits do tipo SAR so essencialmente constitudos por um comparador, um
registo e DAC interno de N bits, a lgica que implementa o algoritmo das aproximaes
sucessivas e um mdulo auxiliar de Sample & Hold, montados como se pode ver na fig. 1, na
prxima pgina.
O mtodo das aproximaes sucessivas consiste numa busca entre os vrios nveis de
quantizao possveis com os N bits do conversor daquele que mais se aproxima do valor a
converter. Embora existam muitas variaes na sua implementao, o funcionamento geral
como o descrito de seguida. Primeiramente, inicializa-se o valor do bit mais significativo do
registo a 1 e os restantes a 0, ou seja, coloca-se no registo um valor igual a metade da escala
de funcionamento do ADC, na midscale VREF/2. Aps convert-lo para analgico atravs do
DAC interno, o valor comparado com o sinal analgico de entrada (durante o estado de hold,
possibilitado pelo circuito auxiliar de amostragem e reteno). Conforme da comparao resultar
VIN > VDAC ou VIN < VDAC , a lgica do SAR define o bit mais significativo a 1 ou a 0,
respectivamente. De seguida, passa-se ao bit seguinte, colocando-o a 1, e repete-se o processo
de comparao do valor e definio desse bit de acordo com o resultado do comparador. Desta
maneira, percorrem-se todos os bits at ao bit menos significativo. No final do algoritmo, aps
todos os bits terem sido percorridos, o que se encontra no registo a converso digital do valor
do sinal de entrada.
Uma vez que a definio dos bits de registo depende de uma boa comparao entre V DAC e VIN,
este tipo de conversor bastante sensvel qualidade da mesma e, assim, sensvel a imperfeies
que a possam comprometer. necessrio ento garantir o mximo de exactido possvel na
definio do VDAC e de preciso no hold do sinal de entrada VIN. Ou seja, desejvel fazer com
que as imperfeies no afectem em demasia os valores de ambos os sinais e que as suas
flutuaes no sejam, tambm, significativas em relao ao nmero de bits utilizados.
Como quanto maior o nmero de bits maior o nmero de passos do algoritmo e, assim, maior o
tempo que este demora a ser executado, necessrio ter em considerao que um maior nmero
de bits requer uma maior permanncia no estado hold. Assim sendo, o conversor do tipo SAR
apresenta uma certa taxa de aquisio mxima. Desta forma, pode haver um certo compromisso
entre o nmero de bits e a variabilidade mxima esperada no sinal de entrada, uma vez que sinais
de elevada frequncia podem no ser amostrados em boas condies devido s limitaes da taxa
de aquisio. Assim, poder perder-se qualidade de converso e o sinal reconstrudo ser bastante
diferente do original. Desta maneira, a resoluo da converso tambm est dependente dessa
mesma variabilidade do sinal.
Objectivos
O objectivo deste trabalho consiste em construir um ADC de 12 bits do tipo SAR atravs de um
microcontrolador do tipo dsPIC.
Primeiramente, pretende-se implementar o conversor DAC interno do ADC SAR atravs dum
sinal PWM e dum filtro passa-baixo do tipo RC, com o intuito de se obter um sinal DC de valor
controlvel. Quer-se ento programar no dsPIC um PWM de frequncia e duty-cycle comandado
pelo HiperTerminal e projectar e realizar na breadboard o circuito RC.
Numa segunda fase, deseja-se projectar e realizar na breadboard o comparador do ADC de
aproximaes sucessivas e desenvolver um programa no dsPIC que implemente a lgica do
algoritmo respectivo. Ficar assim consubstanciado o dispositivo ADC, objectivo ltimo do
trabalho.
Testa-se o funcionamento do circuito ADC, nomeadamente comparando medies externas de
sinais de entrada com o resultado da converso. Em particular, investigam-se caractersticas do
ADC como a gama de valores de entrada, a resoluo e a mxima taxa de aquisio.
1 Sesso de laboratrio
Material utilizado:
Osciloscpio digital;
Gerador de sinais;
Resistncias de 5.6K;
Condensador de 1F;
Multmetro;
Estao de trabalho electrnica com
gerador de sinais workbench;
I Cdigo utilizado
Como primeira abordagem, recorreu-se ao cdigo do trabalho do primeiro laboratrio. Para a
definio do PWM existem dois parmetros a considerar: o seu perodo e o seu duty cycle. Apesar
de se tratar de um dsPIC diferente do utilizado no primeiro trabalho, o seu clculo continua o
mesmo:
T = [(PRx + 1) * 4 /Fosc]*[ Prescaler_Fosc/Prescaler_TIMERx]
Utilizou-se para o nosso cdigo os seguintes valores: Prescaler_Fosc=16, Prescaler_TIMER2=1
e a frequncia interna de funcionamento do dsPIC, Fosc, de 7373KHz. O PWM est associado
ao Timer2.
O cdigo utilizado neste trabalho bastante extenso e encontra-se devidamente comentado. Por
essa razo encontram-se aqui apenas alguns excertos de cdigo relevantes. Primeiramente, vamos
referir as funes que tambm foram aplicadas no trabalho anterior. de referir que as
constantes e as macros esto definidas no ficheiro user_defines(FOSCPWM=7373).
A seguinte parte do cdigo responsvel pela criao e controlo de um PWM para o qual o
utilizador introduz o comando 'pwm' seguido pelo perodo em microsegundos e o duty cycle (em
percentagem), entre espaos. Este cdigo o mesmo que o cdigo do programa utilizado no
primeiro trabalho, mas os limites vlidos para o parmetro perodo so, desta feita, [1;2220] s,
uma vez que se mudou o prescaler do timer2, por razes que iremos especificar mais tarde neste
relatrio.
A funo InitPWM executa os comandos necessrios preparao do dsPIC para a utilizao do
PWM. executada pela funo SetUp, onde feita a inicializao de todos outputs e inputs.
void InitPWM(void) //funcao que prepara o PWM
saida ao pin RD0
{
T2CONbits.TON=0;
OC1CONbits.OCM = 6;
PR2 = 0;
OC1RS = 0;
OC1R = 0;
OC1CONbits.OCTSEL = 0;
T2CONbits.TCS = 0;
T2CONbits.TCKPS = PRESCALE_TIMER2_BIT;
T2CONbits.TON = 1;
return;
}
A funo receiveActionPWM recebe a instruo do utilizador que altera o perodo e o duty cycle do
PWM:
int receiveActionPWM(const char *s)
// A string s tem o comando pwm, mais
os seus parametros, que deverao ser interpretados pela funcao
{
char * p = s + wordlen(s,0) + 1;
unsigned int duty, period;
period = atoi(p);
p += wordlen(p,0) + 1;
duty = atoi(p);
UpdatePWM(period, duty);
A anterior chama a funo UpdatePWM, que permite alterar o perodo e duty cycle do PWM
gerado:
void UpdatePWM(unsigned long period, unsigned long duty)//funccao que muda o PWM
{
if(period==0){PR2=0; OC1RS=0;}
//desliga o PWM se o periodo e' 0
else
{
PR2= (long)(period*FOSCPWM*PRESCALE_FOSC/(4*1000*PRESCALE_TIMER2))-1;
OC1RS = PR2*duty/100;
return;
}
print_string(" us \n");
Serial_print();
print_string("com delay de: ");
print_int(delay);
print_string("ms \n");
Serial_print();
print_string("executar \n");
Serial_print();
//vai globalizar as variaveis iniciais do comando
DUTY para serem reutilizados na main, para repetir a funccao executeActionDuty
exeDuty.period=period;
exeDuty.duty=duty;
exeDuty.delay=delay;
executeActionDUTY(period,duty,delay);
return 1;
}
A anterior chama a funo executeActionDuty, que executa os incrementos do duty cycle com os
delays referidos:
void executeActionDUTY(unsigned long period, unsigned long duty, unsigned long
delay)
{
//varia o dutycycle por 1% com pausas em ms
while(duty<=100)
//repete o ciclo ate o duty chegar a 100%
{
UpdatePWM(period, duty);
//actualiza o PWM
delay_ms(delay);
duty++;
}
}
Com um bom dimensionamento do RC, possvel obter aos terminais do condensador um sinal
DC cuja tenso proporcional percentagem de duty cycle do PWM e, assim, realizar o algoritmo
das aproximaes sucessivas com o duty cycle do PWM como varivel de controlo. A teoria por
trs disto que, com um bom filtro passa-baixo, bem dimensionado, e com um sinal do tipo
trem de pulsos, que um PWM , obtm-se sada do filtro o valor mdio do sinal de entrada, isto
, valor mdio do PWM que proporcional ao seu duty cycle.
Na prtica, um bom valor de ganho para o filtro frequncia de funcionamento do PWM seria
cerca de -40dB ou menos, dado que -40dB corresponde a uma queda do sinal em 100 vezes.
Idealmente, quanto maior RC, menor a frequncia de corte, e menor o ganho obtido (estando a
frequncia fixa). No entanto, devido limitao na escolha dos componentes, foi necessrio usar
o maior condensador disponvel, de 1F. Por outro lado, a escolha de uma resistncia muito
grande implicaria um aumento da impedncia do circuito e, assim, a corrente sada do filtro
seria bastante menor, podendo ser prejudicial para o bom funcionamento do ADC, uma vez que
deixaria o sistema mais sensvel a eventuais flutuaes de corrente do sinal de entrada. Optou-se
ento por uma resistncia de 5.6 k e procurou-se testar o correcto funcionamento do sinal DC
produzido desta forma.
Com R=5.6 k e C=1F tem-se que =RC=5.6ms, e, assim, fc=28.4 Hz. Desta forma, obtm-se
um ganho deste circuito para a frequncia operacional do DAC de -48dB, menor que os -40 dB
mencionados, estando assim o circuito bem dimensionado.
Correu-se o comando duty no programa desenvolvido de maneira a observar a evoluo do
sinal VDAC ao longo dos incrementos do duty cycle. Realizou-se tambm um pequeno vdeo do que
se observava ao osciloscpio aquando da execuo desse comando.
Podemos ver nas seguintes figuras o sinal do DAC obtido para alguns valores de duty cycle: 20%,
50% e 90%, respectivamente. Na ltima figura (fig. 6) encontra-se um dos testes realizados em
que a frequncia do PWM era de 450 Hz, no estando to afastada da frequncia de corte do
filtro RC como nos casos anteriores. A verde encontra-se o PWM gerado pelo dsPIC e magenta
o sinal sada do filtro RC.
V Out (Volts)
Estando garantido o bom funcionamento do DAC interno do ADC, procurou-se obter a curva
de transferncia do mesmo, i.e., o valor do sinal DC do DAC em funo da percentagem de duty
cycle do PWM aplicada. Para tal, mediu-se, com um multmetro, o valor da tenso aos terminais
do condensador (i.e., sada do filtro RC) para valores de duty cycle do PWM em incrementos de
5%, comeando nos 0% e at aos 100%. Realizou-se ainda um ajuste linear aos pontos obtidos.
de referir que se repetiu este estudo na segunda sesso de laboratrio, aps se montar todo o
circuito, uma vez que seria de se esperar pequenas flutuaes do comportamento do mesmo e se
pretendia obter esta curva de transferncia o mais prximo possvel da utilizao do ADC. Na
fig. 7 encontra-se o perfil obtido na segunda sesso de laboratrio, bem como o ajuste linear.
V_Out
Fit Linear
5.0
4.5
4.0
3.5
3.0
2.5
2.0
Parameter
Value Error
-----------------------------------------------------------A
0.0217 0.00212
B
0.0493 3.62026E-5
------------------------------------------------------------
1.5
1.0
R
SD
N
P
-----------------------------------------------------------0.99999
0.00502
21
<0.0001
------------------------------------------------------------
0.5
0.0
0
5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
2 Sesso de laboratrio
Material utilizado:
Osciloscpio digital;
Gerador de sinais;
Resistncias de 5.6K e 68K;
Condensador de 1F;
Circuito integrado lf353dp (JFET input
opamp);
Multmetro;
I Comparador
Uma tpica realizao de um comparador utilizando um amplificador operacional que,
dependendo da comparao entre os dois sinais s suas entradas, ora sature tenso de
alimentao positiva VS+ , ora tenso de alimentao negativa VS-. Como se utiliza o dsPIC para
a realizao do algoritmo, a escolha por um comparador digital torna-se ainda mais adequada,
uma vez que se podem utilizar entradas digitais. Desta maneira, escolheu-se utilizar o circuito
integrado lf353dp utilizado no trabalho anterior. Na figura 8 encontra-se o esquema do circuito
que realiza o comparador pretendido.
10
Uma vez que o dsPIC trabalha com valores de entradas digitais entre 0V e 5V, utilizou-se como
tenses de alimentao do ampop os valores de 0V para VS+ e 5V para VS-, fazendo uso das
ligaes da workbench.
Testou-se o funcionamento do comparador, usando o VDAC implementado e, como sinal de
entrada, o gerador de sinais DC de tenso varivel do workbench. No entanto, observou-se no
osciloscpio que a sada do comparador no saturava a 0V e 5V, mas sim a aproximadamente
1.26V e 4.5V. Ainda assim, verificou-se que o dsPIC continuava a interpretar essas sadas como
1 ou 0 lgico, de maneira que aparentemente no haveria problema. Contudo, verificou-se
mais tarde que o resultado da comparao no era o correcto para tenses de entrada menores
que cerca de 1.26V, tenso de saturao inferior do ampop: sada do ampop. Nesses casos,
qualquer que fosse o valor de VDAC, para VIN < ~1.26V surgia sempre o valor lgico 1 sada
do comparador, independentemente do valor de VDAC. Desta forma, o comparador no se
encontrava a funcionar como pretendido, comprometendo o correcto funcionamento do ADC.
Conseguiu-se contornar este problema utilizando um VS- negativo, com o auxlio da sada DC
varivel negativa da placa workbench, de modo que, quando VIN > VDAC, VCOMP satura a cerca de
-1.3V.
Confirmou-se, ento, o correcto funcionamento do comparador com vrios valores de VDAC e de
VIN. Nas figuras seguintes (fig. 9 e fig. 10) encontram-se duas imagens correspondendo a um
caso em que se colocou VIN>VDAC e um outro em que se colocou VIN<VDAC. Observa-se das
figuras que a saturao do ampop ocorre s tenses de aproximadamente -1.3V e 4.5V.
Figura 9 Teste do comparador com VIN>VDAC. A verde encontra-se o PWM, a rosa VDAC, a amarelo VIN e,
a azul, VCOMP.
11
Figura 10 Teste do comparador com VIN<VDAC. A verde encontra-se o PWM, a rosa VDAC, a amarelo VIN
e, a azul, VCOMP.
Finalmente, de referir que se testou este comparador com o cdigo desenvolvido para
implementao do algoritmo das aproximaes sucessivas e verificou-se que o dsPIC
interpretava correctamente a sada do comparador como uma grandeza lgica, estando a low ou a
high, conforme se pretendia.
Deste modo, encontravam-se realizadas as partes fsicas do projecto, faltando somente o
algoritmo das aproximaes sucessivas, cuja implementao se explana na prxima seco.
II Cdigo utilizado
Em relao ao cdigo desta segunda parte do trabalho, temos principalmente o comando adc.
Chamando este comando no hyperterminal, o dsPIC produz um PWM com 139s e de duty-cycle
que vai variando de maneira a realizar o algoritmo pretendido atravs da iterao lgica do
mtodo das aproximaes sucessivas, consubstanciando assim a converso analgico-digital do
sinal de entrada. Aps percorrer todos os bits, o programa transmite ao utilizador o resultado da
converso.
Vamos abordar as funes principais do comando adc.
A seguinte parte do programa responsvel pelo controlo do circuito ADC do tipo SAR e
execuo do seu algoritmo. Aps o utilizador introduzir o comando adc e este ser reconhecido
pelo dsPIC, este inicializa as variveis necessrias e entra no ciclo que executa o mtodo das
aproximaes sucessivas. Na fig. 11 (prxima pgina) encontra-se o fluxograma relativo ao
algoritmo implementado, e que explicita o seu princpio de funcionamento. de referir que
MaxBits=4095 corresponde a um valor em binrio de 12 bits todos a 1, e i=2048 corresponde
ao primeiro bit a 1 e os restantes a 0.
12
13
de referir o comando delay_ms(50), dado que 50ms foi um delay que se observou permitir que o
condensador carregasse totalmente e, assim, alterar o VDAC correctamente. 1ms era insuficiente.
A funo adc chama a funo UpdateADC, que se permite mudar o duty cycle do PWM de acordo
com o algoritmo pretendido:
void UpdateADC(unsigned long MaxBits, unsigned long duty) //funccao que muda o PWM
associado ao comando ADC
{
if(MaxBits==0){PR2=0; OC1RS=0;}
//desliga o PWM se o periodo e' 0
else
{
PR2= MaxBits;
OC1RS = duty;
}
return;
}
Quando termina o ciclo, a funo receiveActionADC devolve o valor do registo. O comando adc
repete-se novamente dentro da funo main, at que o utilizador o cancele com a tecla ESC.
Desta forma o programa est continuamente a realizar a converso e a apresentar os resultados.
A escolha da frequncia utilizada prende-se com o seguinte: para simular a existncia de um
registo fsico interno de 12 bits no nosso ADC, e uma vez que o valor de referncia do
comparador do algoritmo, isto , VDAC, controlado pelo valor do duty cycle, definiu-se o prescaler
referente ao PWM de maneira a que uma palavra de 12 bits, todos a 1, correspondesse
frequncia do PWM escolhida, que de 7.20 kHz (perodo de 139 s). Desta maneira h uma
razo directa entre o duty cycle, necessrio execuo do algoritmo, e o registo, cujo valor o
resultado da converso no final do algoritmo, evitando-se assim possveis erros de converso dos
valores em binrio entre o registo e o duty cycle, pelo dsPIC.
Para testar o correcto funcionamento do ADC, executou-se o algoritmo para valores de tenso
de entrada comeando em 0V e indo de cerca de 100 em 100mV at aos 5V, valores medidos
directamente pelo multmetro. A tabela geral com todos os resultados encontra-se em anexo.
Filmou-se ainda um pequeno vdeo durante o funcionamento do mesmo.
Em relao ao resultado da converso, optou-se por utilizar trs mtodos distintos de o
determinar, de maneira a averiguar qual deles apresentava uma maior exactido, sendo esta
referente medio directa do valor do sinal de entrada utilizando um multmetro.
Uma vez que o PWM gerado pelo dsPIC tem uma gama de tenso de 0V a 5V, o valor VDAC ,
idealmente, igual fraco do duty cycle (i.e. durao do duty cycle a dividir pelo perodo do PWM)
multiplicada pelos 5V. Assim, no tendo em considerao imperfeies no circuito, o resultado
da converso igual a essa fraco final de duty cycle multiplicada por 5V. Utilizando as variveis
do programa desenvolvido, tem-se ento que o resultado da converso :
VCONV registo =
registo
5 V ,
212 1
que se utilizar como primeiro possvel candidato a resultado de converso, dado pelo programa.
No entanto, uma vez se conhece a curva de transferncia do DAC interno, sabido que a
correspondncia entre o valor do registo e a tenso de converso no assim to directa. Desta
maneira, um valor mais plausvel poder ser aquele dado pelo ajuste linear, a curva de
transferncia do DAC. Assim, utilizando a recta obtida e o valor do duty cycle correspondente ao
que se encontra no registo, aps a execuo do algoritmo, um melhor candidato a resultado da
converso ser:
VCONV registo = 21.7 2.12 + 49.3 3.62 103
14
registo
mV
212 1
Chamemos ao anterior o resultado a priori da converso, uma vez que apresenta um resultado
antes de se fazer alguma comparao com a medio directa com o multmetro.
Finalmente, uma vez que se mediu o sinal de entrada directamente com o multmetro, possvel
obter um plot a que corresponder a uma espcie de curva de transferncia entre o valor do
registo obtido como resultado pelo programa e o valor medido pelo multmetro do sinal de
entrada, que se est a tomar como valor exacto. Desta forma, obtm-se uma relao directa entre
a sada do programa e o valor exacto da converso, medido por outro mtodo, isto , uma
relao a posteriori, que necessita do conhecimento da grandeza que se pretende medir. Com esta
relao pensou-se que se poderia obter informao sobre o real funcionamento do ADC e,
assim, obter melhores resultados com ele.
V Mult (Volts)
de referir que, para tentar eliminar eventuais erros devido s flutuaes dos sinais ao longo do
tempo de medida, para cada medio esperou-se que o sinal de entrada estabilizasse (lendo no
multmetro) e realizaram-se vrias converses com o programa, parando aquando da observao
no multmetro de uma alterao do valor no dgito menos significativo. Tomou-se finalmente a
mdia desses valores do registo obtidos pelo programa como o valor definitivo para o mesmo.
Na figura 12 encontra-se o perfil obtido, bem como o ajuste linear correspondente.
V_Mult
Fit Linear
5.0
4.5
4.0
3.5
3.0
2.5
2.0
Parameter
Value Error
-----------------------------------------------------------A
0.00693093
0.000452
B
0.00121435
4.51115E-6
------------------------------------------------------------
1.5
1.0
R
SD
N
P
-----------------------------------------------------------0.99999
0.00314
39
<0.0001
------------------------------------------------------------
0.5
0.0
0
500
1000
1500
2000
2500
3000
3500
4000
Registo
Como j foi referido, as tabelas com todos os valores encontram-se em anexo. Apresentaremos
aqui apenas uma comparao entre os mtodos, referindo, para cada um o desvio exactido
mximo obtido (em relao a todas as medies), bem com a mdia desses desvios exactido.
Nas figuras e tabela seguinte encontra-se a evoluo do desvio exactido com as medies
efectuadas, bem como uma comparao entre os mtodos.
15
0
0,0
0,5
1,0
1,5
2,0
2,5
3,0
3,5
4,0
4,5
5,0
10
0
0,0
0,5
1,0
1,5
2,0
2,5
3,0
3,5
4,0
4,5
5,0
0,5
1,0
1,5
2,0
2,5
3,0
3,5
4,0
4,5
5,0
16
A posteriori
20.3
4.1
17
recta de ajuste pode valer, tendo em conta as incertezas do ajuste, cerca de 4949 mV, ou seja, ter
um erro de cerca de 51 mV. Supondo que este o maior erro de V DAC ao longo de toda a escala
de funcionamento do ADC e utilizando-se esta curva de transferncia para obter os resultados
da converso analgico-digital, poder ser esta a resoluo do ADC, cerca de 51mV. Invertendo
a expresso que d a resoluo do ADC, podemos calcular o nmero efectivo de bits:
= 2 + 1 ,
em que Floor[x] o menor inteiro mais prximo de x. Com Q=51 mV, obtm-se um nmero
efectivo de bits de 6, metade dos 12 bits projectados. Relembra-se, no entanto, que este o pior
caso possvel. Ainda assim, com isto se pode prever que a utilizao da curva de transferncia
entre o duty cycle e o VDAC para determinao do resultado da converso pode no ser o melhor
mtodo. Aquando da comparao dos trs mtodos utilizados para se obter o resultado ir
estudar-se melhor esta questo.
18
Desta maneira, a melhor resoluo possvel, nessa gama mais estreita, de 4.12 mV, a que
corresponde um nmero efectivo de bits de 10.
19
Com tudo isto se pode ver a relevncia do conceito de nmero efectivo de bits: apesar de os
aparelhos ADC poderem ter bastantes bits, devido s imperfeies dos circuitos em si vo existir
erros no seu funcionamento que fazem com que haja menor preciso na converso e, assim, a
resoluo diminua, fazendo reduzir o nmero de bits com significado, i.e. bits efectivos. H que,
ento, ter este parmetro em considerao aquando da escolha de um ADC.
O ltimo objectivo de estudo deste trabalho era estudar a sua mxima taxa de aquisio. Uma
vez que se utilizou um delay de 50ms em cada passo do algoritmo das aproximaes sucessivas, e
que o ADC tem 12 bits, o tempo de execuo do cdigo de 50 12 = 0.6s. A rotina
main do cdigo tem uma frequncia de execuo de 4 kHz e o tempo de preparao das
variveis necessrias para gerar o PWM e alterar o duty cycle corresponde ao tempo usado pelo
dsPIC, que se lembra que funciona na escala dos MHz, muito mais rpido. Desta maneira, o
tempo de uma aquisio sensivelmente igual aos 0.6s determinados, correspondendo a uma
taxa de aquisio de 1.67 aquisies por segundo. Parece-nos um valor razovel, se pensarmos
que um multmetro tpico tambm demora cerca de meio segundo a adquirir uma grandeza.
No entanto, uma vez que o delay introduzido poderia ser de valor mas reduzido, quis-se calcular a
taxa mxima que se poderia utilizar. Para isso, h que ter em considerao que necessrio, a
cada passo do algoritmo, dar um tempo mnimo para que o condensador no circuito RC que
realiza o DAC carregue para o valor desejado. Uma vez que estamos a trabalhar com 12 bits, a
sensibilidade do ADC de cerca de 1 212 1 = 0.0244%. Assim, considera-se que o
condensador est totalmente carregado quando atinge 100% 0.0244% = 99.976% do seu
valor final; esse valor de 100% demoraria um tempo infinito a atingir. O pior caso possvel no
primeiro passo do ciclo, em que VDAC, encontrando-se inicialmente a 0V, tem que subir para
2.5V, metade da escala de funcionamento do ADC. Nos passos seguintes, a variao da tenso
menor, de maneira que demorar sempre menos tempo. Calculemos ento quanto demora esse
carregamento do condensador dos 0V at 99.976% de 2.5V. Como sabido, a expresso para a
carga de um condensador num circuito RC :
t = ( )
Comeando o condensador partir dos 0V e tendo duty cycle a 50%, tem-se que Vi=0V e Vf=2.5V.
Dado que se pretende = 2.5 V , colocando a equao em ordem ao tempo vem:
= ln 1 frac
Relembra-se que para o nosso RC =5.6ms. Uma vez que frac=0.99976 obtm-se finalmente
t=46.7ms.
Desta maneira, seria possvel reduzir um pouco o delay utilizado no cdigo, o que reduziria o
tempo de uma converso para 0.56s, aumentando ligeiramente a taxa para 1.79 aquisies por
segundo. de referir que, ainda assim, com este perodo de amostragem, provavelmente este
ADC no seria indicado par afazer amostragem de sinais AC, uma vez que, de acordo com o
Teorema de Nyquist, a frequncia destes teria que ser muito reduzida. No entanto, para
utilizaes idnticas s de um multmetro habitual, dentro da gama de funcionamento do
circuito, de 0V a 5V, este ADC seria bastante proficiente.
Adicionalmente, e para concluir, como o tempo de carga directamente proporcional ao
produto RC, fazendo outro dimensionamento do circuito que diminusse seria provavelmente
possvel diminuir o tempo de carregamento do condensador e, assim, melhorar a mxima taxa de
aquisio do ADC. Lembra-se, no entanto, que, ao fazer isso, aumentar-se-ia a frequncia de
corte do RC, podendo comprometer o bom funcionamento do DAC frequncia actual. Isto a
no ser que se utilizasse uma nova frequncia de funcionamento, nomeadamente atravs da
alterao do prescaler. Ainda assim, tem-se algumas reservas sobre se ainda assim seria possvel
reduzi-lo tanto ao ponto de se poder utilizar o circuito para realizar amostragens de sinais AC.
20
Concluses
Com o microcontrolador dsPIC e alguns circuitos adicionais possvel realizar um ADC do tipo
SAR. O dsPIC revela-se verstil no que diz respeito escolha do nmero de bits, uma vez que
permite ter-se mais ou menos, consoante o desejado. Para alm disso, a implementao do
algoritmo simples face s potencialidades do microcontrolador em executar cdigo.
No entanto, a gerao do sinal DC de amplitude controlvel atravs do PWM de duty cycle
varivel e de um circuito RC no a mais vantajosa, uma vez que o circuito requer um criterioso
dimensionamento e introduz limitaes no tempo de converso. Adicionalmente, veio-se a
verificar que, apesar da aparente boa linearidade da curva de transferncia entre o duty cycle e
VDAC, os resultados obtidos no tm a melhor exactido possvel.
Fazendo a calibrao do aparelho com medies externas possvel obter os melhores
resultados possveis, com 7 bits efectivos em toda a escala de funcionamento, de 0V a 5V, ou
seja, uma resoluo de 39.4 mV.
Limitando a escala a de 0V a 2V, o melhor mtodo o directamente dado pelo programa,
ignorando a curva de transferncia referida, permitindo obter 10 bits efectivos, ou seja, uma
resoluo de 1.96mV. Este mtodo ainda o mais directo.
Finalmente, a mxima taxa de aquisio limitada pelo circuito RC que gera o sinal DC de
amplitude controlvel. Para sinais de entrada DC o ADC revela-se satisfatrio, equiparvel aos
ADC presentes num tpico multmetro. No entanto, mesmo com uma eventual optimizao do
circuito e a escolha de uma melhor frequncia, muito provavelmente a taxa de aquisio no seria
compatvel com sinais AC tpicos.
21
Anexos
Na seguinte tabela podem observar-se todos os resultados obtidos referentes converso
analgico-digital. Na segunda linha encontra-se referida a fonte de onde se obtiveram os valores.
No caso dos resultados, esta tem a ver com o mtodo utilizado para o clculo, como se referiu
no texto principal do relatrio. A abreviatura D. Ex. significa desvio exactido, acrnimo
utilizado para reduzir a largura da tabela.
Vin
Registo
[V]
(mdia)
multmetro programa
0.000
0.00
0.094
73.61
0.201
161.61
0.302
244.83
0.408
331.22
0.506
412.52
0.601
490.26
0.704
574.64
0.800
653.52
0.900
735.96
1.048
856.61
1.137
928.58
1.200
982.96
1.336
1093.53
1.434
1174.14
1.518
1241.45
1.614
1321.35
1.732
1418.00
1.818
1488.05
1.913
1566.00
2.12
1744.43
2.18
1798.48
2.41
1985.22
2.59
2134.61
2.79
2297.69
3.03
2496.57
3.20
2634.43
3.39
2791.83
3.60
2961.79
3.80
3126.83
4.02
3304.96
4.20
3458.91
4.39
3613.61
4.60
3783.65
4.81
3957.52
4.93
4054.13
4.96
4075.65
4.98
4091.74
5.00
4095.00
Resultado 1
[V]
programa
0.000
0.090
0.197
0.299
0.404
0.504
0.599
0.702
0.798
0.899
1.046
1.134
1.200
1.335
1.434
1.516
1.613
1.731
1.817
1.912
2.130
2.196
2.424
2.606
2.805
3.048
3.217
3.409
3.616
3.818
4.035
4.223
4.412
4.620
4.832
4.950
4.976
4.996
5.000
D.Ex.
[mV]
0.000
-4.124
-3.676
-3.067
-3.583
-2.310
-2.391
-2.368
-2.049
-1.396
-2.080
-3.204
0.191
-0.799
-0.370
-2.188
-0.630
-0.620
-1.095
-0.912
9.957
15.944
13.953
16.360
15.479
18.309
16.648
18.823
16.349
17.858
15.356
23.337
22.221
19.844
22.139
20.098
16.376
16.018
0.000
Max D.Ex.:
Mdia D.Ex.
23.3
9.0
D.Ex. Resultado 2
[%]
[V]
a priori
0.022
4.39%
0.110
1.83%
0.216
1.02%
0.316
0.88%
0.420
0.46%
0.518
0.40%
0.612
0.34%
0.714
0.26%
0.808
0.16%
0.908
0.20%
1.053
0.28%
1.140
0.02%
1.205
0.06%
1.338
0.03%
1.435
0.14%
1.516
0.04%
1.612
0.04%
1.729
0.06%
1.813
0.05%
1.907
0.47%
2.122
0.73%
2.187
0.58%
2.412
0.63%
2.592
0.55%
2.788
0.60%
3.027
0.52%
3.193
0.56%
3.383
0.45%
3.587
0.47%
3.786
0.38%
4.001
0.56%
4.186
0.51%
4.372
0.43%
4.577
0.46%
4.786
0.41%
4.902
0.33%
4.928
0.32%
4.948
0.00%
4.952
mV
mV
D.Ex.
[mV]
21.700
16.318
15.262
14.448
12.455
12.338
10.929
9.509
8.480
7.723
4.977
2.623
5.088
2.208
1.259
-1.709
-1.517
-3.160
-4.831
-5.981
1.838
6.901
1.718
1.571
-2.097
-2.667
-6.685
-7.200
-12.580
-13.892
-19.439
-14.090
-17.850
-23.134
-23.811
-27.503
-31.593
-32.226
-48.300
48.3
11.7
D.Ex. Resultado 3
[%]
[V]
a posteriori
0.007
17.36%
0.096
7.59%
0.203
4.78%
0.304
3.05%
0.409
2.44%
0.508
1.82%
0.602
1.35%
0.705
1.06%
0.801
0.86%
0.901
0.47%
1.047
0.23%
1.135
0.42%
1.201
0.17%
1.335
0.09%
1.433
0.11%
1.514
0.09%
1.612
0.18%
1.729
0.27%
1.814
0.31%
1.909
0.09%
2.125
0.32%
2.191
0.07%
2.418
0.06%
2.599
0.08%
2.797
0.09%
3.039
0.21%
3.206
0.21%
3.397
0.35%
3.604
0.37%
3.804
0.48%
4.020
0.34%
4.207
0.41%
4.395
0.50%
4.602
0.50%
4.813
0.56%
4.930
0.64%
4.956
0.65%
4.976
0.97%
4.980
mV
mV
D.Ex.
[mV]
6.931
2.318
2.180
2.235
1.145
1.877
1.279
0.741
0.535
0.640
-0.846
-2.449
0.584
-1.142
-1.249
-3.514
-2.488
-3.121
-4.061
-4.397
5.285
10.913
7.680
9.093
7.128
8.635
6.057
7.185
3.580
3.992
0.305
7.262
5.117
1.609
2.747
0.064
-3.801
-4.266
-20.306
20.3
4.1
D.Ex.
[%]
2.47%
1.08%
0.74%
0.28%
0.37%
0.21%
0.11%
0.07%
0.07%
0.08%
0.22%
0.05%
0.09%
0.09%
0.23%
0.15%
0.18%
0.22%
0.23%
0.25%
0.50%
0.32%
0.35%
0.26%
0.28%
0.19%
0.21%
0.10%
0.11%
0.01%
0.17%
0.12%
0.03%
0.06%
0.00%
0.08%
0.09%
0.41%
mV
mV
Obs: sob fundo amarelo encontram-se as medies, em cada mtodo, que tiveram o maior
desvio exactido desse mtodo.
22