Aula 8
Aula 8
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:
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.
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.
+15V
R3
y(t ) -
R1 Sinal
Sinal de
de erro
r(t) +
controle
-15V
R2
R1 R3
in
10K
+15V
-
10K
R2 -
out
Pot
+
Vpot
+
-15V
Fig. 8.4: Condicionamento de sinal empregando a configuração somadora.
Problema Exemplo
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 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>
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.
#include <mega8.h>
#include <delay.h> // Nota do Prof. Incluir essa Biblioteca
void main(void)
{
// Declare your local variables here
// 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
// 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;
UBRRHI=0x00;
while (1)
{
// Place your code here
//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
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.
Fig. 8.30: Diagrama interno do bloco “Equação de Diferença” mostrado na Fig. 8.28.