Controle Digital de Velocidade de um Motor CC usando Matlab®
Gerson Roberto da Silva RA 3800701
1. Arranjo Físico e Equações do Sistema.
Um atuador muito comum em sistemas de controle é o motor CC dada a sua simplicidade de controle. Ele fornece diretamente movimento rotativo e, quando associado a roldanas, cabos, roletes e correias, pode fornecer movimento de translação. O circuito elétrico da armadura e o diagrama de carga do rotor sãomostrados na figura 1.
Neste projeto serão considerados os seguintes valores para os parâmetros físicos da máquina elétrica:Momento de inércia do rotor (J): 0,01 kgm2/s2Atrito do sistema mecânico (b): 0,1 NmsConstante de força eletromotriz (K=Ke=Kt): 0,01 Nm/AResistência elétrica (R): 1,0 ΩIndutância elétrica (L): 0,5 HTensão de entrada (V): tensão de alimentaçãoÂngulo de saída (θ): posição angular do eixo em radianosO rotor e eixo são assumidos como sendo rígidos
Requisitos de Projeto
Um requisito fundamental em um motor é que ele deve rodar a velocidade desejada, com erro de estado estacionário da velocidade inferior a 1%. O outro requisito de desempenho é que o motor deve acelerar até sua velocidade de estado estacionário, assim que é ligado. Neste caso, queremos que ele tenha um tempo de estabilização de 2 segundos. Desde que uma velocidade superior à de referência pode danificaro equipamento controlado, deseja-se um sobre sinal (overshoot) menor que 5%.
Se a entrada de referência (r) for um degrau unitário, a velocidade de saída do motor deve atender:
• Tempo de estabilização menor que 2 seg.
• Sobre sinal menor que 5%.
• Erro em estado estacionário menor que 1%.
1. Representação Matlab e Resposta em MA
1.1 Função de Transferência
A FT em MA indicada acima pode ser representada no Matlab definindo-se o numerador e o denominador como segue:
No ambiente Matlab, criar um novo m-file (script) e entrar com os seguintes comandos:
Execute o m-file e registre a resposta ao degrau unitário. Verifique se esta resposta atende aos requisitos de projeto.
Gráfico 1 – FT em Malha Aberta.
As condições não foram atendidas uma vez que:
Tempo de estabilização foi de 2.07s.
Sobre sinal foi 0%, valor dentro do esperado.
Erro estacionário acima do especificado velocidade mais baixa
2 Conversão Contínuo para Discreto
A partir dos requisitos de projeto, define-se o período de amostragem igual a 0,12
segundo, o que equivale a 1/10 da constante de tempo do sistema, com um tempo
de estabilização de 2 segundos. Cria-se um novo script:
% Simulação Matlab motor CC em malha fechada sem controlador (ou com % controlador proporcional com kp=1), resposta digital ao degrau % unitárioR = 1;
L = 0.5;
Kt = 0.01;
J = 0.01;
b = 0.1;
num = Kt;
den = [(J*L) (J*R)+(L*b) (R*b)+(Kt^2)];
motor = tf(num,den)
Ts = 0.12;
motor_d= c2d(motor,Ts, 'zoh' )
Execute o script e anote a resposta do Matlab no seu workspace, referente a FT
discreta (em z), ou seja, o Matlab calcula a FT em MF. Uma vez feito isso,
verifica-se a resposta em MF para uma entrada degrau unitário. O comando step
faz isso. Adicionando ao script anterior o trecho de código abaixo.
sys_cl = feedback(motor_d,1)
[Y,T] = step(sys_cl,5);
figure(1);stairs(T,Y);xlabel('Tempo (s)' )
ylabel('Velocidade (rad/s)' )
title('Resposta ao degrau para MF' )
Resposta do MatLab
motor =
0.01
---------------------------
0.005 s^2 + 0.06 s + 0.1001
Continuous-time transfer function.
motor_d =
0.009201 z + 0.005709
----------------------
z^2 - 1.088 z + 0.2369
Sample time: 0.12 seconds
Discrete-time transfer function.
Gráfico 2 – Resposta em degrau unitário.
Tempo de estabilização ficou em 1.82s, atende os requisitos.
Velocidade novamente ficou abaixo da esperada, erro ficou acima do esperado.
Sistema não funcionou corretamente.
2.1 – Controlador PID
O comando Matlab c2d ajuda na conversão do PID contínuo no discreto, utilizando o
método de Tustin. Adicionando o trecho de código abaixo no script anterior e
executando-o, a resposta ao degrau unitário para a figura 3 será calculada.
% Simulação Matlab motor CC em malha fechada com controlador PID, resposta digital ao degrau unitário.
R = 1;
L = 0.5;
Kt = 0.01;
J = 0.01;
b = 0.1;
num = Kt;
den = [(J*L)(J*R)+(L*b)(R*b)+(Kt^2)];
motor = tf(num,den)
% Controlador PID discrete com aproximação bilinear (Tustin)
Kp = 100;
Ki = 200;
Kd = 10;
PID = tf([Kd Kp Ki],[1 0]);
contr = c2d(PID,Ts, 'tustin' );
sys_cl = feedback(contr*motor_d,1);
[x2,T] = step(sys_cl,12);
figure(3);stairs(T,x2)xlabel('Tempo (s)' )
ylabel('Velocidade (rad/s)' )
title('Resposta ao degrau para MF com controlador PID' )
figure(4);rlocus(contr*motor_d)title('Root Locus para sistema compensado' )
Execute o m-file e registre a resposta ao degrau unitário. Verifique se esta resposta
atende aos requisitos de projeto. O que se pode dizer desta resposta? O sistema é
estável ou instável? Este script plota o lugar das raízes, registre-o. Observe a posição
dos polos com relação ao círculo de raio unitário. O que se pode dizer dele com
relação à estabilidade do sistema?
Gráfico 3 – Root locus para sistema compensado.
Com o gráfico 2 é possível ver que o sistema possui 2 polos sobre a margem do circulo
ou seja, sistema instável.
Gráfico 4 – Resposta ao degrau em MF de um PID
Ao observarmos o gráfico 3 fica evidente que o sistema é instável
Varie KP, KI e KD e observe o comportamento da resposta ao degrau e o lugar das
raízes. Registre as respostas para cada conjunto de parâmetros (KP, KI e KD).
Primeiro teste com valores em:
KP = 100
Ki = 900
KD = 5
Obtivemos os seguintes gráficos:
Gráfico 5 – Novos valores para Kp, Ki e Kd.
Gráfico 6 – Novos valores para Kp, Ki e Kd.
Segundo teste com valores em:
KP = 200
Ki = 800
KD = 15
Obtivemos os seguintes gráficos:
Gráfico 7 – Novos valores para Kp, Ki e Kd.
Gráfico 8 – Novos valores para Kp, Ki e Kd.
O comando Matlab rlocfind ajusta automaticamente o Root Locus, adicionando o
trecho de código no script acima, obtêm-se um novo ajuste do sistema em MF
contr.den = conv([1 -1],[1/.62 1]);
rlocus(contr*motor_d)title('Root Locus para sistema compensado' );
[K,poles] = rlocfind(contr*motor_d)
sys_cl = feedback(K*contr*motor_d,1);
[x3,T] = step(sys_cl,12);
figure(5);stairs(T,x3)xlabel('Tempo (s)' )
ylabel('Velocidade (rad/s)' )
title('Resposta ao degrau para MF com controlador PID ajustado' )
Execute o m-file e registre a resposta ao degrau unitário. Verifique se esta resposta
atende aos requisitos de projeto. Registre também o lugar das raízes. Observe a nova
posição dos polos com relação ao círculo de raio unitário. O que se pode dizer dele
com relação à estabilidade do sistema?
Grafico 9 – Sistema Root Locus compensado
É possível ver que ainda existe um polo sobre o circulo unitário, sendo assim o sitema
ainda é estável.
Grafico 10 – Resposta ao degrau unitário de um PID ajustado.
Gráfico 11 – Resposta ao degrau para MF em um PID.
Com analise nos gráfico acima é possível dizer que:
Os critérios do sistema não foram atendidos, temos um sistema criticamente isntavel.