Anda di halaman 1dari 6

Aquisição de Dados e Condicionamento de

Sinais
Caique Miranda, Eric B. Dilger, Lucas Ferreira
Universidade Tecnológica Federal do Paraná - ZIP 85503-390, Pato Branco – PR
cai.que.93@hotmail.com, ericdilger@gmail.com, lucasferreira@utfpr.edu.br

Resumo — Este documento descreve uma atividade prática Por sua vez, o microcontrolador é encarregado de usar o
realizada na disciplina de controle digital. Na primeira parte desta sinal condicionado como referência para gerar um sinal PWM.
atividade, a amplitude de um sinal gerado é ajustado e O sinal deve ser novamente condicionado por um filtro e por
condicionado para o conversor analógico ser uma referência para finalmente observado com o osciloscópio, como mostra a
que um sistema de processamento digital de sinais gere um sinal Figura 1.
PWM. Na segunda etapa, ao invés de gerar um sinal de referência
analógico, um sinal digital é criado internamente pelo
microcontrolador para gerar o sinal PWM. Finalmente. São
apresentados os resultados simulados e experimentais.

Index Terms – Sinais, Aquisição, Conversor, Filtro, PWM.

I. INTRODUÇÃO

O processamento digital de sinais trata da representação de


Figura 1 – Diagrama de blocos do sistema
sinais e, forma digital, do ganho desses sinais e da informação
que eles transportam [1].
Para um projeto mais confiável do sistema de controle, Na segunda etapa do experimento, deseja-se substituir
os sinais que são usados para fechar a malha do sistema devem a referência analógica por uma referência digital criada
representar com o máximo de fidelidade a variável a ser internamente pelo DSP, ou seja o microcontrolador se torna
controlada. Geralmente sinais de tensão e/ou corrente na carga responsável por criar uma referência interna na frequência de
são realimentados. Contudo, esses sinais podem ser compostos 1500Hz como mostra a Figura 2 e a partir desta forma de onda
por ruídos ou interferências externas nas mais variadas gerar o sinal PWM. Nesta etapa, os únicos participantes do
frequências. Além disso, a amplitude deste sinal pode não ser sistema são DSP, filtro e osciloscópio.
suportada pelas unidades de processamento, o que poderia
danificar circuitos e/ou componentes do sistema. [2]
Para [3], um sinal analógico é definido sobre toda a
faixa de tempo, podendo assumir qualquer valor contínuo de
amplitude. O processo que representa a variável determinando
valores distintos é chamado quantização e os resultados que
foram determinados são chamados valores quantizados. Ainda
para[3], um sinal digital é um sinal com em tempo discreto com
amplitude quantizada, assim o sinal pode ser representado por
uma sequência de números como em binário.
Este documento aborda um experimento didático da
disciplina de controle digital sobre o processamento, a geração
e o condicionamento sinais analógicos e discretos. Para tanto,
Na Seção II, é descrito o problema proposto. A Seção III faz Figura 2 – Referência gerada por software
uma breve abordagem sobre o tema junto com a modelagem do
sistema. Na Seção IV são apresentados os resultados, e na
sequência as conclusões na Seção V. III. SISTEMA DE CONTROLE

Segundo [3] sistemas de controle em tempo discreto são


II. DESCRIÇÃO DO SISTEMA PROPOSTO sistemas de controle onde uma ou mais variáveis que mudam
em instantes discretos de tempo. Estes instantes especificam em
Inicialmente com um gerador de funções define-se uma quais momentos uma medida física é realizada ou em que
onda triangular para um circuito divisor de tensão que deve momento a memória de um microprocessador é lida.
ajustar sua amplitude. Na sequência, o sinal deve ser Para [7] o Processamento Digital de Sinais (DSP), é o
condicionado por um filtro, desta forma estará limitado dentro processamento de sinais analógicos por métodos digitais,
da faixa de operação do conversor analógico-digital do envolvendo converter um sinal analógico para digital e então
microcontrolador. processar computacionalmente com maior velocidade.
Processar significa filtrar, equalizar, mudar a fase, entre outros
métodos analógicos convencionais, acelerando a transmissão de
dados, comprimindo o espaço de dados necessários e
possibilitando o armazenamento de dados.

A.. Aquisição de Sinais

O processo de conversão de sinais analógicos para a


forma digital é chamado conversão analógico-digital (A/D). O
Figura 4 – Forma de onda sobre o divisor de tensão resistivo
processo inverso de reconstrução de um sinal analógico a partir
de suas amostras é conhecido como conversão digital-
C. Filtros
analógica (D/A) [1].
A maioria dos sinais em tempo discreto resulta da
Para Valkenburg [6], filtros são classificados de
amostragem de sinais de tempo contínuo, como fala e áudio,
acordo com as funções que realizam, rejeitando ou passando
dados de radar, sonar e sinais sísmicos e biológicos [1]. Na
bandas na faixa de frequência desejada. Um filtro passa-baixa
Figura 3 pode-se observar a amostragem de um sinal digital.
é caracterizado pela banda passante que se estende de 𝑤 = 0,
Para [5] o Teorema de amostragem permite determinar
até 𝑤 = 𝑤0 , onde 𝑤0 é conhecida como frequência de corte.
a frequência da amostra 𝐹𝑆 a partir de uma frequência máxima
Para esta atividade é necessário modelar dois filtros de
𝐹𝑀𝐴𝑋 do sinal observado no sistema. Conhecendo 𝐹𝑀𝐴𝑋 é
segunda ordem. O primeiro filtro é responsável pelo
possível determinar 𝐹𝑆 , uma vez que 𝐹𝑆 > 2 𝐹𝑀𝐴𝑋 .
condicionamento do sinal com frequência de corte 𝑓𝑐 = 1𝑘𝐻𝑧.
O segundo é responsável pela reconstrução da onda a partir do
sinal PWM gerado pelo microcontrolador e tem frequência de
corte 𝑓𝑐 = 600𝐻𝑧.
Para esses filtros, pode-se adotar a topologia
desenvolvida por Sallen and Key [8], como mostra a Figura 5,
o qual é caracterizado por fornecer alta precisão.

Figura 5 – Circuito Sallen and Key


Fonte: Apostila Texas Instruments (2008)
Figura 3 – Amostragem de um sinal.
Fonte: KULKARNI, 1999
A função transferência deste circuito é definido por [9] por:
A entrada de um conversor A/D 𝑥𝑎 (𝑡), é uma função A0
real de uma variável contínua, t. Assim, para cada valor de t, a A(s) = (1)
1+Wc C1 (R1 +R2 )s + W2
c R1 R2 C 1 C 2 s
2

função 𝑥𝑎 (𝑡) pode ser qualquer número real. A saída do A/D é


um fluxo de bits que corresponde uma sequência de tempo O tipo de resposta Butterworth proporciona aos coeficientes da
discreto, 𝑥(𝑛), em que, para cada valor de n, a amplitude foi Equação 1 como:
quantizada (discretizada) com um dentre um número finito de
valores possíveis [1]. 𝑎 = Wc C1 (R1 + R 2 ) (2)

B. Divisor Resistivo b= Wc2 R1 R 2 C1 C2 (3)

a C2 − √a2 C2
2 −4bC1 C2
Para condicionar para o sinal dentro de uma faixa de R1 = (4)
2Wc C1 C2
amplitude requerida pelo microcontrolador, pode-se ajustar um
offset com o gerador de funções seguido de um divisor a C2 + √a2 C2
2 −4bC1 C2
resistivo. O divisor resistivo garante que o próprio sinal de saída R2 = (5)
2Wc C1 C2
não se aproxime de 0𝑉, nem ultrapasse 3,6𝑉. Na Figura 4, a
atuação do divisor de tensão pode ser observada.
Para existir 𝑅1 e 𝑅2 :

4bC1
C2 ≥ (6)
a2
D. Modulação PWM IV. RESULTADOS

Para [7] a modulação de pulso é o processo de variação Na Figura 7, pode-se observar a simulação da onda do
de um sinal de pulso binário para representar a informação a ser gerador de função após passar pelo divisor resistivo e pelo
transmitida com boa tolerância à ruídos e capacidade para subtrator. O resultado experimental obtido é apresentado na
reconstruir sinais eliminando distorções. Figura 8.
O sinal digitalizado, após ser processado pelo Em sequência, o sinal que sai do divisor de tensão passa
controlador e gerar uma ação de controle, e enviado para o por um subtrator e um filtro ativo para ser convertido pelo
driver sob a forma de pulsos PWM. A largura desses pulsos microcontrolador, que por sua vez tem um sinal PWM como
varia conforme a amplitude imposta pelo controlador, porém, a saída. A simulação e o resultado prático obtido do sinal filtrado
energia a ser entregue a planta naquele intervalo de amostragem e do sinal PWM são mostrados nas Figuras 9 e 10.
(ou chaveamento) é a mesma do sinal original com amplitude Após o processamento digital dos sinais, o sinal PWM
variável [2]. gerado pelo microcontrolador é destinado a um filtro ativo para
Segundo [7] o PWM fornece pulsos de sinais com atenuar distúrbios no sinal e reconstruir a onda. A Figura 11
amplitude binária. A largura ou duração dos pulsos varia de apresenta a simulação desta onda, a qual também tem seu
acordo com o sinal analógico. Para baixas amplitudes resultado prático apresentado na Figura 12.
analógicas observa-se um estreitamento nos pulsos e para sinais
analógicos mais altos a largura dos pulsos aumenta.

E. Microcontrolador

De acordo com [10] os microcontroladores são


dispositivos programáveis usados composto por uma unidade
de processamento que inclui internamento alguns periféricos
como leitura e escrita de memória, conversor analógico digital,
gerador PWM entre outros que variam de acordo com o modelo.
Os códigos utilizados nesta prática encontram-se no
Figura 7 – Simulação dos sinais: divisor de tensão, subtrator e filtro
anexo deste documento.

F. Sistema

Após detalhar o sistema, o mesmo deve ser integrado. A Figura


6 apresenta o projeto do sistema que condiciona o sinal do
gerador de função até a entrada do microcontrolador e após isso,
condiciona novamente o sinal PWM gerado para reconstruir a
onda.

Figura 8 – Formas de onda: gerador de funções e divisor resistivo.

Figura 6 – Sistema Integrado

Figura 9 – Simulação dos sinais: entrada do AD e PWM gerado


Figura 10 – Formas de onda: Sinal filtrado de entrada e PWM gerado. Figura 13 – Trapézio reconstruído

V. CONCLUSÕES

Com o estudo proposto, é possível analisar, modelar e


implementar um sistema condicionador de sinais para diversas
aplicações. Ao decorrer desta atividade são abordados
conhecimentos na área de eletrônica de potência e controle
digital.
Os resultados obtidos mostram que sinais analógicos
podem ser condicionados através de um simples sistema
analógico ou então ser substituído por sua implementação
Figura 11 – Simulação dos sinais: PWM gerado e PWM filtrado
digital.

VI. REFERÊNCIAS

[1] HAYES, MH; Teoria de problemas de processamento


digital. ARTMED, 1st ed, 2006.

[2] GOBBATO, C. Inversor PWM com Controle por Modos


Deslizantes em Tempo Discreto. Monografia – Universidade
Tecnológica Federal do Paraná, 2015.

[3] OGATA, K; Discrete-time control systems. 2nd ed, 1994.

[4] KULKARNI, S. R.; Lecture Notes for ELE201


Introduction to Electrical Signals and Systems. Princeton
University, 1999.

[5] PROAKIS, J. G; DIGITAL SIGNAL PROCESSING:


Figura 12 – Formas de onda: Sinal filtrado de entrada e PWM reconstruído Principles, Algorithms, and Applications. 4th edition, 2007.
Na segunda parte da atividade, substitui-se a referência [6] VALKENBURG, V; Analog Filter Design. Oxford
analógica por uma referência criada internamente pelo University Press, Inc, 1982.
microcontrolador. A Figura 13 apresenta a forma de onda
reconstruída. [7] FRENZEL, L. E; Principles of Electronic
Communication Systems. 4th edition, 2015.
[8] SALLEN, R. P; KEY, E. L; A Practical Method of CÓDIGO TRIANGULAR
Designing RC Active Filters. IRE Trans Circuit Theory,
1958. ADC10CTL0 &= ~ADC10SC; //(POR GARANTIA) DESABILITA
TEMPORARIAMENTE O START CONVERSION DO ADC
}
[9] Active Filters Design Techniques. Texas Instruments }
Corporated, 2008. //-----------------------------------------------------
void ini_CLK(void){
[10] SOUSA, K. M; MARANGONI, F.; MORENO, J. K; /* DCOCTL Calibration Data for 16MHz */
DCOCTL=CALDCO_16MHZ;
CARATI, E. G; MARTINS; STEIN, C. M. O; SILVA, J. C. C;
/* BCSCTL1 Calibration Data for 16MHz */
A Power Electronics and Digital Control Experiment BCSCTL1=CALBC1_16MHZ;
Applied to Teaching Interdisciplinary in Electrical /* SMCLK Divider 2: /1 */
Engineering. Universidade Tecnológica Federal do Paraná, BCSCTL2=0;
2011. /* XIN/XOUT Cap : 12.5 pF */
BCSCTL3=XCAP_3;
while(BCSCTL3 & LFXT1OF);
ANEXOS }
//-----------------------------------------------------
void ini_P1(void){
TRAPÉZIO MATLAB /* 1.5 as input for ADC10 */
clc; /* 1.6 as output from TA0 */
Tt=41; %duracao do sinal P1DIR |= BIT6;
Ts=0.1; % periodo de amostragem P1SEL |= BIT6;
T=20; %periodo do sinal }
N=(Tt/Ts )+1; %numero de amostras mais um porque eu quero //-----------------------------------------------------
incluir a primeira e a ultima void ini_TIMERA(void){
x=zeros(N,1); %ciria um vetor de N linhas por 1 coluna sendo todos /* Timer A clock source select: 2 - SMCLK = 16MHz*/
os valores 0. /* Timer A mode control: 1 - Up to CCR0 */
xt=zeros(N,1); %ciria um vetor de N linhas por 1 coluna sendo todos TA0CTL=TASSEL_2+MC_1;
os valores 0. /* PWM output mode: 7 - PWM reset/set */
A=18; %amplitudu do sinal x /* Capture/compare interrupt enable */
p=0; TA0CCTL1=OUTMOD_7;
d=A/(33/2); /* Capture/compare interrupt enable */
TA0CCTL0=CCIE;
for n=1:N /* Set TACCRO to 2667 for 6 kHz PWM output */
ts(n)=(n-1)*Ts; % vetor de tempo TA0CCR0=2667;
TA0CCR1=0;
if (ts(n)==0) %para metade do periodo=1 }
xt(n)=6; //-----------------------------------------------------
end %ate aki resolve para um period void ini_ADC10(void){
/* ADC10 On/Enable */
if (ts(n)<=1+p*T & ts(n)>0+p*T) %para metade do periodo=1 /* ADC10 Ref 2.5V */
xt(n)=xt(n-1) + d; /* ADC10 Reference on */
end %ate aki resolve para um periodo ADC10CTL0 = ADC10ON + REF2_5V + REFON;
/* Selects Channel 5 */
if (ts(n)<10+p*T & ts(n)>1+p*T) %para metade do periodo=1 /* SMCLK */
xt(n)=A; ADC10CTL1 |= INCH_5+ADC10SSEL_3;
end %ate aki resolve para um periodo ADC10AE0 = BIT5;
/* ADC10 Enable Conversion */
if (ts(n)<=11+p*T & ts(n)>=10+p*T) %para metade do periodo=1 ADC10CTL0 |= ENC;
xt(n)=xt(n-1) - d; }
end %ate aki resolve para um periodo //-----------------------------------------------------
#pragma vector=TIMER0_A0_VECTOR
if (ts(n)<=20+p*T & ts(n)>11+p*T) %para metade do periodo=1 __interrupt void TIMERA0_RTI(void){
xt(n)=6; TA0CCR1 = ADC_VAL; //ATUALIZA O DUTY CYCLE
end %ate aki resolve para um periodo TA0CTL &~ TAIFG; //(POR SEGURANCA) DESABILITA
FLAG DE INTERRUPCAO
if (ts(n)>=T+p*T) %resolve o problema para os proximos periodos }

p=p+1; % soma 1 para o programa saber que é para fazer o proximo


periodo.
end
if (ts(n)>=40) %para metade do periodo=1
xt(n)=6;
end %ate aki resolve para um periodo
end

hold
stem(ts,xt,'b')
plot(ts,xt,'r')
grid on% k é a cor
CÓDIGO TRAPÉZIO #pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMERA0_RTI(void){
#include "msp430g2553.h" TA0CCR1 = ADC_VAL; //ATUALIZA O DUTY CYCLE
/* DEF. FUNCTIONS FOR MCU CONFIG. */ TA0CTL &~ TAIFG; //(POR SEGURANCA) DESABILITA
void ini_CLK(void); FLAG DE INTERRUPCAO
void ini_P1(void); }
void ini_TIMERA(void);
#pragma vector=TIMER0_A1_VECTOR
/* AUX VARIABLES */ __interrupt void TIMERA1_RTI(void){
double ulPeriod; TA1CTL &~ TAIFG; //(POR SEGURANCA) DESABILITA
unsigned long dutyCycle; FLAG DE INTERRUPCAO
int i=1,t=1,g=1,c=1,d=1,x=0,xt=0,n=1,;
int x; // Onda Trapézoidal
int xt; d=TA0CCR0/(33/2);
for (n=1;n<=N;n++)
/* MAIN */ {
int main(void) { ts(n)=(n-1)*Ts; // vetor
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer if (ts(n)==0) //para metade do periodo=1
ini_CLK(); /* START CLOCK CONFIG */ {
ini_P1(); /* START PORT 1 CONFIG */ TA0CCR1=666;
ini_TIMERA();
__bis_SR_register(GIE); /* GENERAL INTERRUPT ENABLE // end //ate aki resolve para um
while(1){} period
} }
//----------------------------------------------------- if (ts(n)<=1+p*T & ts(n)>0+p*T) // para metade do periodo=1
void ini_CLK(void){ {
/* DCOCTL Calibration Data for 16MHz */ TA0CCR1 = TA0CCR1 + d;
DCOCTL=CALDCO_16MHZ;
/* BCSCTL1 Calibration Data for 16MHz */ }
BCSCTL1=CALBC1_16MHZ; if (ts(n)<10+p*T & ts(n)>1+p*T) // para metade do periodo=1
/* SMCLK Divider 2: /1 */ { // xt(n)=A;
BCSCTL2=0;
/* XIN/XOUT Cap : 12.5 pF */ TA0CCR0=1998;
BCSCTL3=XCAP_3; }
while(BCSCTL3 & LFXT1OF); if (ts(n)<=11+p*T &
} ts(n)>=10+p*T) // para metade do periodo=1
//----------------------------------------------------- {
void ini_P1(void){ TA0CCR1 = TA0CCR1 - d;
/* 1.5 as input for ADC10 */
/* 1.6 as output from TA0 */ }
P1DIR |= BIT6; if (ts(n)<=20+p*T & ts(n)>11+p*T) // para metade do periodo=1
P1SEL |= BIT6; {
} TA0CCR1=666;
//----------------------------------------------------- }
void ini_TIMERA(void){ if (ts(n)>=T+p*T) // %resolve o problema para os proximos
/* Timer A clock source select: 2 - SMCLK = 16MHz*/ periodos
/* Timer A mode control: 1 - Up to CCR0 */ {
TA0CTL=TASSEL_2+MC_1; p=p+1; // % soma 1 para o programa saber que é para fazer o
/* PWM output mode: 7 - PWM reset/set */ proximo periodo.
/* Capture/compare interrupt enable */
TA0CCTL1=OUTMOD_7; // end
/* Capture/compare interrupt enable */ }
TA0CCTL0=CCIE; if (ts(n)>=40) // %para metade do periodo=1
/* Set TACCRO to 2667 for 6 kHz PWM output */ {
TA0CCR0=2667;
TA0CCR1=0; TA0CCR1=666;
/* Timer A clock source select: 2 - SMCLK = 16MHz*/
/* Timer A mode control: 1 - Up to CCR0 */ // end %ate aki resolve para um
TA1CTL=TASSEL_2+MC_1; periodo
/* PWM output mode: 7 - PWM reset/set */ }
/* Capture/compare interrupt enable */
TA1CCTL1=OUTMOD_7; }
/* Capture/compare interrupt enable */
TA1CCTL0=CCIE; }

TA1CCR0=1998;
TA1CCR1=0;
}