Controllo e regolazione di un sistema EVAD
Introduzione
Questo progetto si propone di utilizzare le conoscenze acquisite durante il corso di Fondamenti di Automatica per:
- Controllare il sistema di un dispositivo elettronico di assistenza ventricolare (EVAD) con un unico ingresso, tensione applicata al motore.
- Regolarne l'uscita, corrispondente alla portata del sangue.
Tutto ciò con il fine di soddisfare le necessità metaboliche del paziente.
Definizione dello schema di controllo a catena chiusa
Determinazione e rappresentazione grafica della risposta indiciale. Noti:
- Funzione di trasferimento del controllore.
- Il sistema (motore, pompa...) modellato da un ritardo.
Il controllore è in serie con il sistema che fornisce un ritardo; per rappresentare la serie sarà sufficiente ritardare la funzione di trasferimento del controllore mediante la proprietà 'InputDelay' della funzione tf.
nGc = [5]; dGc = [1 10 0]; T = 1; % Ritardo provocato dal sistema H = tf(nGc,dGc,'InputDelay',T); % Sistema a catena aperta W = feedback(H,1); % Sistema a catena chiusa W(s)=Gc/(1+Gc)
Grafico risposta indiciale:
figure; step(W)
title('Risposta impulsiva di W(s) (T=1s)')
legend('W(s)')
Verifica sovraelongazione massima
W_info=stepinfo(W); W_overshoot = W_info.Overshoot; disp(['La massima sovraelongazione è del ', num2str(W_overshoot), '%'])
La massima sovraelongazione è del 7.5873%
Verifica errore a regime nullo
Per verificare che l'errore a regime sia nullo bisogna valutare il modello nello stato stazionario. Si può calcolare il valore medio su cui oscilla la risposta indiciale: se tale valore sarà equivalente al valore di regime del gradino in ingresso (=1) il sistema risulterà allora con errore a regime nullo.
steady_state_W = (W_info.SettlingMax + W_info.SettlingMin)/2; E_r = round(steady_state_W - 1); disp(['L errore a regime è E_r=', num2str(E_r)])
L'errore a regime è E_r=0
Massimo ritardo possibile
Per trovare il massimo ritardo possibile tale per cui il sistema a catena chiusa risulti stabile si osservano i margini di stabilità (margine di guadagno e margine di fase).
set = true;
i = 0;
Tc=0;
while set
i = i + 0.01;
G_temp = tf(nGc,dGc,'InputDelay',i);
[Mg,Mp,Wg,Wa] = margin(G_temp);
if (Mg < 0) || (Mp < 0) % Se il margine di guadagno o il margine di
% fase diventano minori di 0 il controllore
% non sarà più in
-
Progetto Matlab
-
Progetto Maple
-
Progetto controllore a tempo discreto
-
Progetto di sistemi di controllo in retroazione