Sistemas de controle têm como objetivos modelar, controlar e regular o comportamento de um processo ou sistema físico. Ele é amplamente utilizado em diversas áreas, como engenharia, física, química e biologia, para garantir que o sistema ou processo seja mantido dentro de um determinado conjunto de parâmetros ou condições.
Nas Engenharias, muito dos sistemas estudados são físicos, quando se modela matematicamente esses sistemas, fica complicado para o aluna assimilar o comportamento do sistema real a partir dos gráficos dos estados, por outro lado, a implementação de protótipos se torna um empecilho para o processo de aprendizagem, já que demanda conhecimento de outra áreas, além do custo na compra de componentes, sendo assim, a simulação gráfica desses sistemas usando liguagens de programação proporciona ao aluno uma excelente forma de visualizar o comportamento do sistema real sem custos de implementação já que as linguagens de programação são gratuitas.
Para a implementação da simulação gráfica do Aeropêndulo, foi usada a linguagem de programação Python com a biblioteca Vpython, a Figura 2 mostra o simulador.
O aeropêndulo é um dispositivo utilizado em experimentos de física que combina os princípios de um pêndulo e da aerodinâmica. Ele consiste em uma haste suspensa por um ponto fixo em um suporte, com uma asa em uma das extremidades da haste.
Quando o aeropêndulo é movido para um lado, a força da gravidade faz com que a haste comece a oscilar em torno do ponto de suspensão. A asa no final da haste também gera uma força aerodinâmica que pode afetar o movimento do pêndulo. A interação entre as forças gravitacionais e aerodinâmicas faz com que o aeropêndulo execute movimentos complexos e interessantes.
Usando as leis de Newton e momentos angulares podemos encontrar o modelo matemático que descreve a dinâmica do aeropêndulo, assim, temos a equação
Onde:
- T: Empuxo gerado pela hélice;
- J: Momento de inércia;
- θ: posição angular do Aeropêndulo;
- c: coeficiente de amortecimento viscoso;
- m: peso do Aeropêndulo;
- d: a distância entre o centro de massa e o ponto de pivô;
Uma das técnicas de linearização quando se tem sistemas não lineares que a componente não linear é o seno ou cosseno é considerar o seno ou cosseno sendo o valor do próprio ângulo, isso funciona bem para pequenas variações em torno do ângulo, aplicando essa técnica ao modelo do aeropêndulo, temos a equação
Aplicando a transformada de Laplace, temos:
Queremos controlar o ângulo do braço do aeropêndulo a partir da tensão aplicada aos terminais do motor, assim,devemos encontrar uma relação entre a tensão
Aplicando a transformada de Laplace, temos:
Agora podemos substituir
Para simulação foi usado os parâmetros do artigo$[1]$.
Para realizar a simulação da resposta ao degrau foi usado Python com o auxílio das bibliotecas numpy, matplotlib e control, sendo que as bibliotecas numpy e matplotlib são usada para criar as matrizes A, B, C e D e plotar a resposta do do sistema, respectivamente, já a biblioteca control é usada para criar o sistema no espaço de estados e obter a função de transferência, além disso, é possível obter a resposta ao degrau usando a função step da biblioteca control, que recebe como parâmetro o sistema criado anteriormente, no espaço de estados ou função de transferência.
import numpy as np
import matplotlib.pyplot as plt
import control as ct
plt.style.use("ggplot")
Variáveis com os parâmetros para simulação do modelo.
K_m = 0.0296
m = 0.36
d = 0.03
J = 0.0106
g = 9.8
c = 0.0076
Matrizes NumPy do sistema no espaço de estados
A = np.array([[0, 1],
[-(m*g*d)/J, -(c/J)]])
B = np.array([[0, K_m/J]]).T
C = np.array([1, 0])
D = 0
Para criar o sistema no espaço de estados, foi usado a biblioteca Python, control, essa biblioteca permite criar um sistema no espaço de estados a partir das matrizes A, B, C, D
sys = ct.ss(A, B, C, D)
print(sys)
Para obter a função de transferência a partir do sistema no espaço de estados, a biblioteca control implementa uma função, ct.ss2tf(sys), que recebe como parâmetro, o sistema no espaço de estados e retorna a função de transferência.
Gs = ct.ss2tf(sys)
Gs
Antes de realizar a simulação em malha aberta, é interessante observar as características do sistema, para isso, a biblioteca control implementa algumas função.
A função ct.step_info() recebe como parâmetro o sistema no espaço de estados ou uma função de transferência e retorna as características do sistema, para esse exemplo, ao aplicar a função ela retorna diversas características, exemplo:
- Tempo de acomodação -> 'SettlingTime': 10.308519357198815'
- Ultrapassagem Percentual -> 'Overshoot': 69.54106137593485,
- Tempo de Subida -> 'RiseTime': 0.396481513738416
ct.step_info(sys)
saída:
{'RiseTime': 0.396481513738416,
'SettlingTime': 10.308519357198815,
'SettlingMin': 0.14343794449344063,
'SettlingMax': 0.47415111647086844,
'Overshoot': 69.54106137593485,
'Undershoot': 0,
'Peak': 0.47415111647086844,
'PeakTime': 1.0308519357198815,
'SteadyStateValue': 0.2796674225245654}
A função ct.damp() recebe como argumento o sistema no espaço de estados ou a função de transferência e retorna os Autovalores, amortecimento e frequência natural para cada polo do sistema.
ct.damp(sys);
saída:
_____Eigenvalue______ Damping___ Frequency_
-0.3585 +3.139j 0.1135 3.16
-0.3585 -3.139j 0.1135 3.16
A função ct.poles() recebe como argumento o sistema no espaço de estados ou a função de transferência e retorna os polos do sistema, para esse caso o sistema é de segunda ordem, pois possui dois pólos.
ct.poles(sys)
saída:
array([-0.35849057+3.13948884j, -0.35849057-3.13948884j])
A função ct.zeros() recebe como argumento o sistema no espaço de estados ou a função de transferência e retorna os zeros do sistema. para esse caso o sistema não possui zeros.
ct.zeros(sys)
saída:
array([], dtype=float64)
t, yout = ct.step_response(Gs)
fig, ax = plt.subplots(figsize=(6, 3.5))
ax.set_title("Aeropêndulo em Malha Aberta")
ax.set_ylabel("Ângulo (Graus°)")
ax.set_xlabel("Tempo (s)")
ax.plot(t, np.rad2deg(yout))
plt.show()
Saída:
- [1.] JOB, Mila Mary; JOSE, P. Subha Hency. Modeling and control of mechatronic aeropendulum. In: 2015 International Conference on Innovations in Information, Embedded and Communication Systems (ICIIECS). IEEE, 2015. p. 1-5.
- ...