Sunteți pe pagina 1din 22

Relatrio de Sistema de Aquisio de Dados

2009/2010
1Semestre

Engenharia Fsica Tecnolgica

CONVERSO ANALGICO-DIGITAL:
IMPLEMENTAO DE UM ADC DO TIPO SAR,
APROXIMAES SUCESSIVAS
Laboratrio II

Trabalho realizado por:


Manuel Nascimento, n52294
Joo Pereira, n 55315
Grupo 3; 4feira

Lisboa, 15 de Janeiro de 2010

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.

Figura 1 Arquitectura geral de um ADC do tipo SAR

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.

Implementao, Procedimento e Resultados


Nota: Todo o cdigo se encontra em anexo e devidamente comentado e descrito. Este relatrio
explicita apenas a filosofia conceptual usada bem como as escolhas particulares efectuadas na
implementao.

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;

Placa de ligaes breadboard;


MPLAB Software e compilador C;
HyperTerminal Software;
Microcontroller ds30F3014;
Microchip MPLAB ICD2.

A primeira sesso de laboratrio teve como principal objectivo a programao do


dsPIC30F3014, reutilizando o cdigo do primeiro trabalho de laboratrio e acrescentando-lhe
novas funes necessrias, bem como implementar o filtro RC passa-baixo que ir realizar o
DAC interno do ADC. Depois de implementado, testa-se o correcto funcionamento desta parte
do circuito global.
De seguida explana-se sobre o cdigo utilizado e sobre a implementao do filtro RC.

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;
}

do dsPIC com o timer 2 e atribui a


//Desliga o timer 2
//OC1 PWM mode RD0 pin
//Valor do CCP associado ao timer 2
//duty cycle = 0
//no delay
//using timer 2
//using instruction cycle
//prescaler (0)1:1
//liga o Timer 2

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);

//o PWM e' alterado

print_string("A mudar o PWM para um periodo de: ");


print_int(period);
print_string(" us \n");
Serial_print();
print_string("e para um duty cycle de: ");
print_int(duty);
print_string("% \n");
Serial_print();
print_string(" ");
Serial_print();
return 1;
//devolve 1, accao PWM foi executada
}

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;
}

As novas funes que foram criadas para este trabalho so receiveActionDUTY,


executeActionDUTY, que esto associadas ao comando duty, e receiveActionADC e UpdateADC,
que esto associadas ao comando adc. As primeiras sero abordadas nesta sesso, as restantes
na seguinte, onde sero utilizadas.
Ao introduzir o comando duty seguido pelo perodo em microsegundos e o delay em
milisegundos, entre espaos, o dsPIC vai produzir um PWM com o perodo introduzido e cujo
duty cycle comear a zero e que vai sendo incrementado de 1% em 1% com pausas de durao
igual ao delay introduzido, at atingir os 100%. Dentro da funo main, o cdigo do comando
duty vai repetir-se novamente com os mesmos parmetros iniciais, at que o utilizador cancele
com a tecla ESC.
Esta funo foi desenvolvida para testar o correcto funcionamento do filtro passa-baixo RC. O
cdigo relevante referente ao comando duty encontra-se abaixo.
A funo receiveActionDUTY recebe o comando duty do utilizador:
int receiveActionDUTY(const char * s) // A string s tem o comando duty, mais os
seus parametros
{
char * p = s + wordlen(s,0) + 1;
unsigned long delay, duty, period;
period = atoi(p);
p += wordlen(p,0) + 1;
delay = atoi(p);
duty = 0;
print_string("A mudar o PWM para um periodo de: ");
print_int(period);

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++;
}
}

II DAC interno filtro RC


Para implementar o DAC interno do ADC desejado, utilizou-se o PWM do dsPIC programado,
ligando-o a um filtro passa-baixo de 1 ordem um circuito RC. Na figura 2 encontra-se um
circuito RC tpico.

Figura 2 Filtro passa-baixo RC tpico

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.

Para o dimensionamento do filtro foi necessrio ter em considerao a frequncia de


funcionamento do PWM para o dispositivo ADC SAR, o tempo para carregar e descarregar o
condensador e a impedncia do circuito.
A frequncia de funcionamento do PWM utilizado para o DAC interno de 7.20 kHz. Esta
escolha da frequncia tem a ver com a implementao do algoritmo ADC SAR e explicada
mais tarde na segunda parte deste trabalho. Assim, h que dimensionar a resistncia e o
condensador para garantir que a frequncia do DAC se encontra j numa zona de bom corte do
filtro, de maneira a obter-se um sinal DC. A frequncia de corte dum filtro RC e o seu ganho em
funo da frequncia so dados pelas equaes:

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.

Figura 3 pwm 137s, 20%.

Figura 4 pwm 137s, 50%.

Figura 5 pwm 137s, 90%.

Figura 6 pwm 2222s, 50%.

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

[20-11-2009 10:25 "/Plot2" (2455155)]


Linear Regression for Valores2_B:
Y=A+B*X

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

Duty Cycle (%)

Figura 7 Funo de transferncia do DAC interno do ADC

A recta de ajuste obtida foi:


VDAC % = 21.7 2.12 + 49.3 3.62 103 % mV ,
com um R de 0.999999.

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;

Estao de trabalho electrnica com


gerador de sinais workbench;
Placa de ligaes breadboard;
MPLAB Software e compilador C;
Microcontroller ds30F3014;
Microchip MPLAB ICD2

Encontrando-se o DAC interno implementado, faltava apenas implementar o comparador do


ADC SAR antes de se poder executar o algoritmo das aproximaes sucessivas em si. Assim, na
segunda sesso de laboratrio implementou-se o circuito comparador e desenvolveu-se o cdigo
para a execuo do algoritmo necessrio para gerar um ADC de aproximaes sucessivas.
De seguida explana-se sobre a implementao do comparador e sobre cdigo utilizado para
realizar o algoritmo.

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.

Figura 8 Esquema do circuito que implementa o comparador do ADC SAR

Desta forma, sada do comparador esperava-se obter:


Se VIN>VDAC , VCOMP=0
Se VIN<VDAC , VCOMP=1

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

Figura 11 Fluxograma do algoritmo de aproximaes sucessivas implementado

Este algoritmo corresponde assim a uma ligeira alterao do algoritmo de aproximaes


sucessivas original, em que se define o valor do registo bit a bit, comeando pelo mais
significativo. No nosso caso, substituiu-se essa definio do bit pela soma da varivel i ou
i>>1, consoante a comparao, mas mantendo o mesmo princpio de funcionamento. Esta
alterao permitiu realizar mais facilmente o algoritmo dentro das caractersticas do dsPIC.
De seguida apresenta-se o cdigo do comando adc em si:
long receiveActionADC(void)
// A string s tem o comando adc mais os seus
parametros
{
unsigned long duty, MaxBits, registo, i;
//inicializaccao das variaveis
MaxBits = ADCBITS;
//o valor maximo de bits, tambem vai corresponder
a frequencia utilizada no sinal do DAC, neste caso e' aproximadamente 139us
duty = DUTYBITS;
//valor do primeiro valor a comparar com o DAC
registo = 0;
//valor de registo do metodo das aproximaccoes sucessivas
i=duty;
//variavel auxiliar para a contagem do ciclo do metodo
das aproximaccoes sucessivas
while(i>0)
//inicio do ciclo do metodo das aproximaccoes sucessivas
{
UpdateADC(MaxBits, duty);
//variaccao do duty-cycle do pwm
gerado, actualizaccao do valor do DAC
delay_ms(50);
//um delay para dar tempo ao RC responder 'a
variaccao anterior
LED1=COMPARADOR;
//vericaccao da variaccao do COMPARADOR com o
auxilio do LED1
if(COMPARADOR==0){ //condiccao, se o comparador==0, significa que
VIN>VDAC
registo = registo + i;
//registo guarda o valor do bit
correspondente do valor i dentro da sua string the bits
duty=duty+(i>>1);
//duty aumenta para o proximo bit
}
else duty=registo+(i>>1);
//Se o comparador=!0, significa que o
VIN<VDAC, logo o duty diminui a partir do ultimo registo confirmado somado com o
proximo bit
i=(i>>1);
//decresce o valor auxiliar i (shift para a direita ou
reduzir a metade)
}
//termina o ciclo do metodo das aproximaccoes sucessivas
return registo;
//retorna o valor final do registo
}

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

[08-01-2009 10:25 "/Graph1" (2557921)]


Linear Regression for ValoresPer_B:
Y=A+B*X

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

Figura 11 Curva de transferncia do ADC a posteriori

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

Desvio exactido [mV]

Desvios exactido - Programa


50
40
30
20
10

0
0,0

0,5

1,0

1,5

2,0

2,5

3,0

3,5

4,0

4,5

5,0

Vin (multmetro) [V]


Figura 12 Evoluo dos desvios exactido dos resultados do programa ao longo das medies

Desvio exactido [mV]

Desvios exactido - a priori


50
40
30
20

10
0
0,0

0,5

1,0

1,5

2,0

2,5

3,0

3,5

4,0

4,5

5,0

Vin (multmetro) [V]


Figura 13 Evoluo dos desvios exactido dos resultados a priori ao longo das medies

Desvio exactido [mV]

Desvios exactido - a posteriori


50
40
30
20
10
0
0,0

0,5

1,0

1,5

2,0

2,5

3,0

3,5

4,0

4,5

5,0

Vin (multmetro) [V]


Figura 14 Evoluo dos desvios exactido dos resultados a posteriori ao longo das medies

16

Mtodo Programa A priori


Mximo desvio exactido [mV]
23.3
48.3
Mdia dos desvios exactido [mV]
9.0
11.7

A posteriori
20.3
4.1

Tabela 1 Comparao dos resultados referentes aos trs mtodos

Anlise dos resultados


Como esperado, no se encontraram problemas com o cdigo utilizado na primeira sesso de
laboratrio, que se resume criao de um PWM e de um novo comando duty. Em relao ao
PWM, o cdigo referente bastante idntico ao utilizado no primeiro trabalho de laboratrio,
mantendo todas as suas caractersticas de utilizao, vantagens e desvantagens, que j foram
referidas anteriormente, aquando do primeiro trabalho de laboratrio da cadeira.
O novo comando duty criado facilmente implementvel tendo dominado o cdigo referente
gerao de sinais PWM, uma vez que utiliza os mesmos conceitos que o no caso anterior.
Estando o anterior em bom funcionamento, no se esperavam tambm dificuldades com este
novo comando, o que se confirmou.
No que diz respeito converso do PWM para um sinal DC de amplitude controlvel, utilizando
o circuito RC projectado (que pretendia-se que realizasse o DAC interno do ADC SAR), pde
desde logo observar-se ao osciloscpio que, com o comando duty, essa amplitude ia
aumentando ao longo do tempo, aparentando estar tudo a funcionar correctamente. Fazendo
medies mais rigorosas da amplitude do sinal, de entre as quais aquelas apresentadas nas figuras
3, 4 e 5, observa-se que o valor do sinal DC , de facto, o correcto: 5V multiplicados pela fraco
de duty cycle utilizada. No entanto, s aquando do estudo da curva de transferncia do DAC que
se pode definitivamente concluir da boa qualidade desta implementao. Podem ver-se algumas
flutuaes do sinal do DAC, o que poder porventura influenciar a comparao do sinal de
entrada com o VDAC. Analisaremos isto mais frente.
Antes de passarmos anlise da curva de transferncia do DAC interno, atentemos na figura 6.
Nela encontra-se um exemplo tpico das consequncias de um dimensionamento mal feito: o
sinal que se obtm no perfeitamente DC, longe disso. Isto deve-se ao facto de ainda no
estarmos a uma frequncia de funcionamento elevada o suficiente para ter o comportamento
desejado em que o filtro retm o valor mdio do sinal de entrada. Nestas condies, obter-se-ia
um sinal VDAC instvel e, assim, aquando da execuo do algoritmo das aproximaes sucessivas,
iria haver flutuaes significativas na tenso de referncia, provocando flutuaes no resultado
da comparao e, assim, erros na converso.
Desta maneira, o passa-baixo RC bem dimensionado revelou-se eficaz para a gerao de um sinal
DC de amplitude controlvel pelo dsPIC, como se pretendia. O correcto dimensionamento do
filtro um factor importantssimo para um correcto funcionamento do circuito.
A curva de transferncia obtida para o DAC permite dizer que este se encontra bem
implementado: o perfil obtido muito prximo do linear, com um coeficiente R de 0.999999.
Ainda assim, podem desde j prever-se alguns problemas, seno vejamos o seguinte.
Verifica-se que a ordenada na origem obtida de 21.7 2.12 mV. Assim sendo, utilizando 0%
para o duty cycle, o valor mnimo possvel, obtm-se sada do DAC no 0 mV, mas sim cerca de
22 mV, podendo mesmo chegar a 23.82 mV. Relembre-se que a resoluo a priori deste ADC de
12 bits de (usando a frmula na introduo) 1.22 mV. Assim, para sinais de entrada de baixa
intensidade, o erro cometido pelo DAC faz com que haja bits menos significativos do ADC que
no tm significado fsico, ficando assim mais reduzido o nmero efectivo de bits do ADC. De
igual modo, no outro extremo do intervalo, ou seja com um duty cycle de 100%, VDAC dado pela

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.

Passando segunda sesso de laboratrio, em relao implementao do comparador,


relembra-se que inicialmente se teve o problema da saturao inferior dar-se a cerca de 1.26V e
no a 0V, o que levava a resultados incorrectos de comparao para tenses de entrada menores
que cerca de 1.26V. Tendo ultrapassado esse problema usando um valor negativo para a tenso
de alimentao Vs- do ampop, os resultados obtidos foram os desejados, como j mencionado e
evidenciado nas figuras 9 e 10. apenas de referir que, quando os sinais entrada do
comparador eram muito prximos, a sada do mesmo oscilava ligeiramente entre a saturao
positiva e negativa. Tal pode ser visto nos vdeos de teste do funcionamento do algoritmo de
aproximaes sucessivas, aquando dos ltimos passos do mesmo. Isto tem a ver com as
flutuaes inerentes tanto do sinal de entrada V IN, como do VDAC, uma vez que h sempre
pequenas imperfeies impossveis de eliminar. No se procurou fazer um estudo exaustivo dos
seus efeitos, mas, como se poder ver mais frente, os resultados obtidos para as converses
parecem-nos bons o suficiente para ser razovel supor que o seu efeito no seja significativo.
No que diz respeito ao cdigo em si, tendo j programado o PWM e o comando duty, no se
revelou muito complicado desenvolver o cdigo que executasse o algoritmo das aproximaes
sucessivas. Utilizando a facilidade de ter uma frequncia que correspondesse a uma cadeia de bits
todos a 1 (a varivel PR2), tornou-se muito mais directo fazer as actualizaes do duty cycle
necessrias execuo do algoritmo. Essas alteraes eram semelhantes s das funes duty ou
pwm j feitas.
Em relao converso propriamente dita relembra-se que se apresentaram os resultados com
trs mtodos distintos: directamente do programa, a priori e a posteriori. Relembra-se tambm
que se encontra em anexo a tabela com todos os resultados obtidos. de referir desde logo que
houve alguma dificuldade em regular o controlo da amplitude do sinal DC varivel na workbench
para os valores desejados para as medies do sinal de entrada, o controlo manual era bastante
sensvel. Conseguiu-se, no entanto, realizar as medies pretendidas. Em relao gama de
valores de entrada possvel utilizar com este ADC, uma vez que o VDAC gerado tem amplitude
limitada amplitude do PWM, a gama , ento, de 0V a 5V.
Comeando pelo mtodo dado directamente do programa, e analisando a figura 12, da
evoluo dos desvios exactido das medies efectuadas, observa-se que as medies com
sinais de entrada at cerca de 2V apresentam desvios exactido reduzidos e aproximadamente
constantes. No entanto, a partir da, d-se um salto no desvio exactido, passando os mesmos a
aproximar-se dos 20mV, permanecendo relativamente constantes. de notar que, aos 2V, o
multmetro digital utilizado mudava de escala, tendo menos preciso, o que poder estar
relacionado com esta mudana sbita observada, uma vez que, relembra-se, adquiriram-se

18

valores do registo at ao dgito menos significativo do multmetro baixar de uma unidade. No


entanto, fez-se o estudo da exactido do nosso ADC precisamente em relao s medies feitas
com o multmetro, de maneira que se faz esta anlise em funo disso. A manterem-se os
mesmos nveis de boa exactido obtidos at aos 2V os resultados seriam bastante bons, com
desvios exactido menores que 4.5 mV, o que corresponderia a um nmero significativo de bits
de 10. No entanto, tendo-se que a mdia dos desvios exactido obtida de 9 mV e o seu valor
mximo obtido de cerca de 23.3 mV, pode-se apenas garantir que o nmero efectivo de bits
de 7, no pior caso.
Passando ao mtodo de resultados a priori, observa-se desde logo que, com uma mdia de
desvios exactido de 11.7 mV, em que o valor mximo ultrapassa os 48.3 mV, os resultados
obtidos afastam-se mais dos valores de referncia dados pelo multmetro. No grfico da
evoluo dos desvios ao longo das medies (fig. 13) pode observar-se que os resultados so
piores, em particular nos extremos da escala de funcionamento, perto dos 0V e dos 5V, mas
apenas no intervalo de cerca de 0.7V a 3.5V que os desvios exactido vo abaixo dos 10 mV.
Comparando com o mtodo anterior, os resultados obtidos por este clculo so, de facto,
menos exactos, o que talvez no se estaria espera, uma que o conhecimento da curva de
transferncia do DAC pressupe um mais exacto conhecimento do seu funcionamento e, em
princpio, levaria a comparaes com o sinal de entrada mais exactas. No entanto, isso no se
veio a verificar, antes pelo contrrio.
Finalmente, passemos ao ltimo mtodo utilizado, denominado a posteriori. Com este,
esperava-se obter os melhores resultados dos trs, uma vez que, como se tirou a curva de
transferncia entre os resultados do programa (i.e., o valor do registo no final do algoritmo) e os
valores lidos pelo multmetro, considerados como exactos, o que na prtica se fez foi uma
espcie de calibrao do aparelho. Com efeito, observando a fig. 14, da evoluo dos desvios
exactido, v-se que so relativamente reduzidos, em particular para valores do sinal de entrada
menores que 2V. Os valores obtidos para o mximo e a mdia dos desvios exactido, de
20.3mV e 4.1 mV, respectivamente, so, de facto, os melhores dos trs mtodos.
Adicionalmente, com excepo do ltimo ponto, dos 5V, os desvios exactido mantm-se
abaixo dos 11 mV (consultar tabela em anexo), o que implicaria um nmero efectivo de bits de 8,
garantidos em toda a escala de funcionamento. Talvez o facto de o ADC operar por truncatura
seja a causa deste maior erro no ltimo ponto. Considerando o desvio mximo de 20.3 mV, o
nmero efectivo de bits j desce para 7, ficando bastante prximo dos 8 (obtm-se 7.95 antes da
operao Floor).
Uma melhor utilizao deste ADC pode ser feita estreitando-se a gama de funcionamento do
mesmo, uma vez que, como se observa em todos os mtodos, o ADC tem melhor performance,
isto , maior exactido, em gamas mais reduzidas de tenses de entrada. Os melhores resultados
so, de facto, obtidos para uma gama de valores de entrada de 0V a 2V, em particular nos
resultados directamente do programa, pelo menos observando as figs. 12 e 14. Receava-se que,
para valores de tenso de entrada reduzidos, as flutuaes dos sinais poderiam tornar-se
comparveis com os sinais em si, afectando com mais intensidade os resultados, mas tal no se
verifica aps realizado o trabalho. Calculando-se novamente a mdia e o valor mximo dos
desvios exactido para esses dois mtodos nessa gama mais reduzida de 0V a 2V, obtm-se:
Mtodo Programa A posteriori
Mximo desvio exactido [mV]
4.12
6.93
Mdia dos desvios exactido [mV]
1.85
2.19

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

S-ar putea să vă placă și