0% acharam este documento útil (0 voto)
24 visualizações10 páginas

Aula 8

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
24 visualizações10 páginas

Aula 8

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 10

PROJETOS DE SISTEMAS DE CONTROLE

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL


DEPARTAMENTO DE ENGENHARIA ELÉTRICA

Aula 8 – Implementação Digital de Controladores


Introdução
Projeto dos Circuitos Analógicos
Exemplo de Programas
Tarefas

Introdução
Neste experimento será realizada a imp lementação digital de um compensador de avanço-atraso de
fase com o emprego de microcontroladores. O compensador que será implementado é descrito pela equação
8.1.

( s + z z ) ( s + zb )
C(s ) = K (8.1)
( s + p z ) (s + p b )
onde:

K é o ganho geral do compensador,


za e p a são as freqüências associadas aos zeros e pólos do compensador de atraso de fase,
za e p b são as freqüências associadas aos zeros e pólos do compensador de avanço de fase.

Além do microcontrolador é necessário o uso de hardware de entrada e saída dos sinais analógicos
conforme é mostrado na Figura 8.1. Portanto a implementação digital do compensador de avanço-atraso de
fase utilizando um microcontrolador envolve duas fases de projeto: o desenvolvimento dos circuitos
analógicos dos sinais de entrada e de saída e a programação do microcontrolador ATmega8. Na Figura 8.2
é mostrado o processo de um servomecanismo de velocidade empregado em conjunto com o controle
digital do compensador.

Fig. 8.1: Diagrama esquemático do experimento.

Professor: José Felipe Haffner 1


PROJETOS DE SISTEMAS DE CONTROLE
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL
DEPARTAMENTO DE ENGENHARIA ELÉTRICA

O sinal
medido de
velocidade
pode variar
de -2.5V a
+2.5V

O sinal de
entrada do
atuador pode
variar de -5V
a +5V.

Fig. 8.2: Identificação da conexão entre o servomecanismo e o circuito com o microcontrolador.

Projetos dos Circuitos Analógicos


Serão empregados dois tipos de circuitos analógicos. o comparador e o condicionador de sinal.
Para fazer a comparação entre o sinal de referência e o sinal de saída, e(t) = r(t) – y(t), pode ser empregado
a configuração analógica mostrada na Figura 8.3, considerando que R 1 = R 2 = R 3 = R4 .
R4

+15V
R3
y(t ) -

R1 Sinal
Sinal de
de erro
r(t) +
controle
-15V
R2

Fig. 8.3: Configuração comparadora usando amplificador operacional.


Os sinais analógicos de saída e de entrada do microcontrolador normalmente devem ser ajustados
para interligarem adequadamente aos sinais medidos e na ação de controle desejada. No caso especifico
desta experiência os sinais analógicos de entrada são o sinal de referencia de velocidade obtido diretamente
de um gerador de funções e o sinal de velocidade medido do servomecanismo conforme mostra a Figura
8.2. Além disso, o sinal analógico de saída deve ser interligado ao atuador do mesmo servomecanismo.
Uma maneira simples de ajustar o valor analógico de saída e de entrada é utilizar a configuração
somadora de um amplificador operacional conforme mostra a Figura 8.4. A função do potenciômetro
“pot”é produzir um deslocamento do sinal de entrada “in”. A relação de ganho entre o sinal “in” e o sinal
de saída “out” pode ser ajustada através da escolha adequada dos resistores R1 , R2 e R3 , i.e.,
R3 R
Vout = Vin − 3 Vpot (8.2)
R1 R2

Professor: José Felipe Haffner 2


PROJETOS DE SISTEMAS DE CONTROLE
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL
DEPARTAMENTO DE ENGENHARIA ELÉTRICA

R1 R3
in
10K

+15V
-
10K
R2 -
out
Pot

+
Vpot
+

-15V
Fig. 8.4: Condicionamento de sinal empregando a configuração somadora.

Problema Exemplo

Exemplo de Rotina em C para ler e escrever um sinal analógico

A fugura 8.26 mostra um exemplo usado para testar o Kit de desenvolvimento ATmega8. A tensão
de entrada do conversor AD do microcontrolador (VAD ) varia de 0 a 5 Volts, usando um circuito analógico
apresentado na Figura 8.4 deseja-se que a tensão de entrada (Vin ) seja disponível na faixa de tensão entre -5
a +5 Volts, portanto a relação entre a tensão na entrada do conversor e a tensão antes do circuito analógico
condicionador é
( )
VAD = 0.5 Vin + 5 ou Vin = 2VAD − 5 (8.3)

A tensão de saída do conversor DA do conversor DAC0808 do kit (VDA ) também varia de 0 a 5


Volts, usando um circuito analógico apresentado na Figura 8.4 deseja-se que a tensão de saída (Vout ) seja
disponível na faixa de tensão entre -5 a +5 Volts, portanto a relação entre a tensão na saída do conversor
DA e a tensão depois do circuito analógico condicionador é

VDA = 0.5(Vout + 5) ou Vout = 2VDA − 5 (8.4)

V in CKT VAD Kit VDA CKT Vout


analógico 0 a +5V ATmega8 0 a +5V analógico -5 a +5V
-5 a +5V
Fig. 8.4 Fig. 8.4
Fig. 8.10
Fig. 8.26: Teste do Kit de desenvolvimento ATmega8.

A Tabela 8.1 mostra as tensões na entrada e na saída do kit em relação às tensões desejadas antes e
depois dos circuitos analógicos. Os circuitos analógicos são usados para exp andir a capacidade da faixa de
leitura e de escrita de sinais do kit de desenvolvimento.
As linhas de código mostradas a seguir mostram um exemplo de rotina em linguagem C para ler
um sinal, e depois escrever o sinal lido multiplicado por uma constante no conversor DA. Observação: Para
usar a rotina delay_us deve-se introduzir no inicio do programa a seguinte biblioteca:

#include <delay.h>

Professor: José Felipe Haffner 3


PROJETOS DE SISTEMAS DE CONTROLE
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL
DEPARTAMENTO DE ENGENHARIA ELÉTRICA

Tensão (Vin ) antes Tensão (VAD) lida Tensão (VDA ) lida Tensão (Vout ) depois
do condicionador na entrada do na saída do do condicionador do
do sinal de entrada. conversor AD. conversor DA. sinal de saída.
+1.0 Volts +3 Volts +2.75 Volts +0.5 Volts
- 3.0 Volts +1 Volts +1.75 Volts - 1.5 Volts
Tabela 8.1: Relação entra as tensões de entrada e de saída do kit e as tensões desejadas.

while (1)
{
// Place your code here
int lo,hi,hi_8; //declaração de variáveis inteiras
int sinal, saida;
float sinal_q, saida_q; ; //declaração de variáveis float
while(1)
{
//Codigo para efetuar a leitura das portas AD com 10 bits
ADMUX = 0; //Seleciona o canal de AD a ser utilizado
ADCSRA = 0xE6; //Palavra de controle que seleciona o inicio do processo de conversão
lo=ADCL; // 8 bits menos significativos do sinal lido
hi=ADCH; // 2 bits mais significativos do sinal lido
ADCSRA = 0x80; //Palavra de controle que seleciona o fim do processo de conversão
//Codigo para transformar o sinal lido para float
hi_8=hi*256;
sinal=lo+hi_8; //Sinal é uma variável de 10 bits vale de 0 a +1023
sinal=sinal-512; //Coloca simetria no sinal que agora vale de -512 a +512
sinal_q = (float)sinal; //Transforma de int para float
sinal_q=(sinal_q*5)/512; //Efetua a quantização do sinal que agora vale de -5 a +5
saida_q = 0.5*sinal_q;
//Codigo para escrever no conversor D/A (porta D)
saida_q =(saída_q*127)/5; //Saida_q é uma variável que vale entre -127 a +127
saida=(int)saida_q; //Transforma de float para int
saida=saida+127; //Retira a simetria da variável que agora vale de 0 a 255
PORTD=saida; //Escreve no conversor D/A utilizando a porta D
delay_us(100); // introduz um rotina de delay de 100 µs
}; // fecha o laço while mais interno
}; // fecha o laço while mais externo
} //fecha o programa main

Na Figura 8.27 é mostrado o ambiente de simulação “teste2.mdl” que pode ser usado pelo aluno
para compreender todas operações propostas no programa acima.

Professor: José Felipe Haffner 4


PROJETOS DE SISTEMAS DE CONTROLE
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL
DEPARTAMENTO DE ENGENHARIA ELÉTRICA

Fig. 8.27: Ambiente de simulação teste2.mdl.


Problema Exemplo: Um programa compl eto de um controlador PI.

#include <mega8.h>
#include <delay.h> // Nota do Prof. Incluir essa Biblioteca

// Declare your global variables here

void main(void)
{
// Declare your local variables here

//Nota do prof. Declaração de variáveis utilizadas no programa


int lo, hi, hi_8;
int sinal,saida;
int T;
float T_q;
float sinal_q, saida_q;
float u[2],e[2];
float Kp, Ki;

// Input/Output Ports initialization


// Port B initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In
// State0=T State1=T State2=T State3=T State4=T State5=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In
// State0=T State1=T State2=T State3=T State4=T State5=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization

Professor: José Felipe Haffner 5


PROJETOS DE SISTEMAS DE CONTROLE
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL
DEPARTAMENTO DE ENGENHARIA ELÉTRICA

// Func0=Out Func1=Out Func2=Out Func3=Out Func4=Out Func5=Out Func6=Out Func7=Out


// State0=0 State1=0 State2=0 State3=0 State4=0 State5=0 State6=0 State7=0
PORTD=0x00;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1 output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0x00;

// External Interrupt(s) initialization


// INT0: Off
// INT1: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization


TIMSK=0x00;

UBRRHI=0x00;

// Analog Comparator initialization


// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;

while (1)
{
// Place your code here

//Nota do prof. Inicialização das variáveis


T=500; //Período de amostra em microsegundos
Kp=0; //Ganho proporcional
Ki=0.1; //Ganho integral
u[0]=0; //Valor da tensão de controle no instante atual
u[1]=0; //Valor da tensão de controle no instante anterior
e[0]=0; //Valor do erro no instante atual
e[1]=0; //Valor do erro no instante anterior

Professor: José Felipe Haffner 6


PROJETOS DE SISTEMAS DE CONTROLE
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL
DEPARTAMENTO DE ENGENHARIA ELÉTRICA

//N0tas do Prof. Criar um novo laço while para inserir o código do programa
while(1)
{
//Codigo para efetuar a leitura das portas AD com 10 bits
ADMUX = 0; //Seleciona o canal de AD a ser utilizado
ADCSRA = 0xE6; //Palavra de controle que seleciona o inicio do processo de conversão
lo=ADCL; // 8 bits menos significativos do sinal lido
hi=ADCH; // 2 bits mais significativos do sinal lido
ADCSRA = 0x80; //Palavra de controle que seleciona o fim do processo de conversão

//Codigo para transformar o sinal lido para float


hi_8=hi*256;
sinal=lo+hi_8; //Sinal é uma variavel de 10 bits vale de 0 a +1023
sinal=sinal -512; //Coloca simetria no sinal que agora vale de -512 a +512
sinal_q = (float)sinal; //Transforma de int para float
sinal_q=(sinal_q*5)/512; //Efetua a quantização do sinal que agora vale de -5 a +5

//Salvar o valor atual dos sinais lidos


e[0]=sinal_q;

//Escrever a sua lei de controle


T_q=(float)T; //Transforma de int para float
u[0]=u[1]+Kp*e[0]+((T_q*0.001)*Ki-Kp)*e[1];

//Ajustar o nível de saturação do sinal de controle


if(u[0]>=5) //limita o sinal de controle em +5
u[0]=5;
if(u[0]<=-5) //limita o sinal de controle em -5
u[0]=-5;

//Codigo para escrever no conversor D/A (porta D)


saida_q =(u[0]*127)/5; //Saida_q é uma variável que vale entre -127 a +127
saida=(int)saida_q; //Transforma de float para int
saida=saida+127; //Retira a simetria da variável que agora vale de 0 a 255
PORTD=saida; //Escreve no conversor D/A utilizando a porta D

//Atualização das variáveis para o próximo instante


u[1]=u[0]; // Salva no instante anterior o sinal de controle atual
e[1]=e[0]; // Salva no instante anterior o sinal de erro atual

//Rotina de ajuste do período de amostragem


delay_us(500);
}; //Termina o laço mais interno
}; //Termina o laço mais externo
} //Termina o programa

Professor: José Felipe Haffner 7


PROJETOS DE SISTEMAS DE CONTROLE
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL
DEPARTAMENTO DE ENGENHARIA ELÉTRICA

Tarefas
1º Parte: Analise do Diagrama de Bode do processo com base em dados obtidos de forma experimental.
Observação: Ver apostila aula6: Projeto de Compensadores de Atraso de Fase e de
Avanço de Fase
2º Parte: Projeto do compensador de avanço de fase e/ou atraso de fase.
Observação: Ver apostila aula6: Projeto de Compensadores de Atraso de Fase e de
Avanço de Fase
3º Parte: Compensador de avanço-atraso de fase digital : – Simulação
i) Desenvolva o compensador descrito pela equação 8.1 em transformada Z.
ii) Empregando o ambiente de simulação desenvolvido na tarefa anterior, crie um novo ambiente de
simulação para avaliar o funcionamento do compensador digital representado em transformada Z.
Compare o funcionamento do compensador continuo (Transformada de Laplace) com o
compensador digital (Transformada Z). Avalie ainda o comportamento do compensador digital
com a variação do tempo de amostragem. Considere inicialmente o tempo de amostragem igual a
1ms. Veja Figura 8.28.
iii) A partir da representação em transformada Z obtida no item anterior, desenvolva a equação de
diferença do compensador. Avaliar o funcionamento do compensador digital representado em
equação diferença com o compensador representado em transformada Z. Veja Figura 8.28.

Fig. 8.28: Ambiente de Simulação usado para avaliar o projeto dos compensadores.

Professor: José Felipe Haffner 8


PROJETOS DE SISTEMAS DE CONTROLE
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL
DEPARTAMENTO DE ENGENHARIA ELÉTRICA

Observação: Para implementar em simulação usando a transformada Z e as equações diferença use


os blocos do Simu link apresentados na Figura 8.29.

Fig. 8.29: Blocos do Simulink usados para implementar o controle digital.

Fig. 8.30: Diagrama interno do bloco “Equação de Diferença” mostrado na Fig. 8.28.

Professor: José Felipe Haffner 9


PROJETOS DE SISTEMAS DE CONTROLE
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL
DEPARTAMENTO DE ENGENHARIA ELÉTRICA

4º Parte: Ambiente de Programação


iv) Utilize o programa CODEVISION para gerar o arquivo *.asm do compensador digital. Apresente
o código em linguagem C comentado linha a linha cada instrução realizada.
v) Utilize o programa AVR-STUDIO para gera o arquivo *.hex.
vi) Utilize o programa PONYPROG2000 para gravar o microcontrolador.
vii) Desenvolva um procedimento de teste para avaliar se a operação de programação do
microcontrolador foi bem sucedida.

5º Parte: Implementação do hardware necessário para o funcionamento do compensador digital


viii) Desenvolva o circuito para efetuar a conversão digital-analógica. O sinal analógico de saída deve
variar de -5 V a +5V.
Observação: Colocar capacitores de 100 nF na alimentação do Amplificador
operacional conforme Figura abaixo.

Fig. 8.31: Colocação de capacitores nos operacionais para atenuação de ruídos.


ix) Ajuste, empregando amplificadores operacionais, a leitura e a escrita dos sinais analógicos.
Pressupõe-se que os sinais analógicos de entrada possam variar de -2.5V a +2.5V.
x) Desenvolva um procedimento de teste para avaliar se a leitura e a escrita de sinais analógicos
funciona de acordo com a especificação dada nos itens ix e x.

6º Parte: Comparação entre os resultados experimentais com os resultados obtidos em simulação


xi) Avalie experimentalmente o funcionamento do compensador digital operando em malha fechada
com o servomecanismo de velocidade em relação aos requisitos de projeto estabelecidos no inicio.
xii) Compare os resultados obtidos com os resultados encontrados no ambiente de simulação.

Professor: José Felipe Haffner 10

Você também pode gostar