Sekil 4.8:Swing Programının Grafik Çıktıları (A = ±8)
¸
Sekil 4.9:Swing Programının Grafik Çıktıları (A = ±9)
29
A = 10 ve daha büyük de˘gerlerde yukardaki yakla¸sım ba¸sarlı olmamaktadır, bunun sebebi stabilizasyon a¸samasına sarkacın çok hızlı girmesi ve LQR geribeslemenin yeter-siz kalmasıdır. Buna çözüm olarak iki kademeli yakla¸sımı a¸sa˘gıda denemekteyiz. Yeni yakla¸sımıda birinci kaldırıma a¸samasında u = A ve u = −A kullanılmakta olup θ < 1.28 veya θ > 5.00 olunca sonlanmakta ve ikinci kaldırma a¸samasında u = A/2 ve u = −A/2 kullanılmaktadır. ˙Ikinci kaldırma a¸saması θ > 0.67 veya θ < 5.61 olunca sonlanmakta ve stabilizasyon a¸samasına geçilmektedir. ˙Ilgili grafikler a¸sa˘gıdadır.
¸
Sekil 4.10:˙Iki Kademeli Yakla¸sımda A = ±10 için Elde Edilen Grafikler
¸
Sekil 4.11:˙Iki Kademeli Yakla¸sımda A = ±11 için Elde Edilen Grafikler
¸
Sekil 4.12:˙Iki Kademeli Yakla¸sımda A = ±15 için Elde Edilen Grafikler
31
¸
Sekil 4.13:˙Iki Kademeli Yakla¸sımda A = ±19 için Elde Edilen Grafikler
¸
Sekil 4.14:˙Iki Kademeli Yakla¸sımda A = ±20 için Elde Edilen Grafikler
¸
Sekil 4.15: ˙Iki Kademeli Yakla¸sım A = ±25 için Elde Edilen Erafikler
¸
Sekil 4.16: ˙Iki Kademeli Yakla¸sım A = ±30 için Elde Edilen Grafikler
BÖLÜM 5
˙IRDELEME VE SONUÇLAR
5.1 ˙Irdeleme ve Sonuçlar
Sonlu sayıda büyüklüklü denetim giri¸si u = +A veya u = −A ile yukarı kaldırma ve sonra da LQR geribeslesi ile denge konumuna getirme i¸slemleri sonunda a¸sa˘gıdaki tablo ile sonuçları özetlemek mümkündür.
Tablo 5.1: Tek Kademeli Yukarı Kaldırma için Deney Özetleri Tablosu Deney No A Stabilizasyon a¸samasına Durulma Ba¸sarı durumu
Nt.
geçi¸s zamanı sn.
zamanı sn.
1 2 13.84 13.84 Ba¸sarılı
2 3 8.50 8.50 Ba¸sarılı
3 4 6.90 6.90 Ba¸sarılı
4 5 5.00 5.00 Ba¸sarılı
5 7 3.28 3.28 Ba¸sarılı
6 8 3.24 3.24 Ba¸sarılı
7 9 3.40 3.40 Ba¸sarılı
33
Tablo 5.1’de belirtilen deneylerde LQR katsıyları K = [10.0000 13.2131 87.7737 21.1143] olark elde edilmi¸stir. Stabilizasyon a¸samasında giri¸s kuvveti için üst ve alt lim-itler sırasıyla +10 ve −10 olarak seçilmi¸stir.
Tablo 5.2: ˙Iki Kademeli Yukarı Kaldırma için Deney Özetleri Tablosu
Deney No A 1. Kademeyi tamamlama Stabilizasyon a¸samasına Durulma Ba¸sarı Nt.
zamanı (sn.) geçi¸s zamanı (sn.) zamanı (sn.) durumu
1 10 1.38 1.40 3.38 Ba¸sarılı
2 11 1.32 1.34 3.46 Ba¸sarılı
3 15 1.22 1.24 1.46 Ba¸sarılı
4 19 1.20 1.22 1.34 Ba¸sarılı
5 20 1.20 1.22 1.32 Ba¸sarılı
6 25 1.20 1.22 1.30 Ba¸sarılı
7 30 0.50 0.52 1.42 Ba¸sarılı
Tablo 5.2’de belirtilen deneylerde LQR katsayıları K = [3.1623 7.1810 67.0914 16.0037] olarak elde edilmi¸stir. Stabilizasyon a¸samasında giri¸s kuvveti için üst alt ve üst limitler sırasıyla +10 ve −10 olarak seçilmi¸stir.
Bu tabloda da görüldü˘gü üzere sınırlı sayıda denetim giri¸si kullanılması önemli bir kısıt olup, bu kısıt altında dahi kaldırma ve dengeleme a¸samaları ba¸sarılı olarak sonuç-landırılabilmektedir.
Kaynaklar
[1] Artman, S. S., 1998, "The Simple Pendulum Is Not So Simple", Society for Industrial and Applied Mathematics, vol. 40, No. 4, pp. 927-930.
[2] Matthews, M. R., Gauld, C., and Stinner, A., 2004, "The Pendulum: It’s Place in Science, Culture and Pedagogy", Science & Education, 13: 261-277.
[3] Küçüker, A., 2007, Asılı Sarkaç Sisteminde Konum Kontrolü, Sakarya Üniversitesi, Yüksek Lisans Tezi.
[4] Boyce, W., E., Diprima, R., C., 1992, Elementary Differential Equations and Bound-ary Value Problems, John Wiley & Sons Ins.
[5] Ogata, K., 2002, Modern Control Engineering, Fourth Edition, Peaeson Education International.
[6] Yazıcı, A., 2005, Do˘grusal Olmayan Proglamlama Yönteminin Sistem Denetiminde Kullanımı, Osmangazi Üniversitesi, Doktora tezi. 118s.
[7] Altın, R., 2005, Ters Sarkaç Sisteminin Denetimi, Hacettepe Üniversitesi, Yüksek Lisans Tezi,
[8] Kiriz, S., Bingül, Z., Ousu, C., 2007, "Ters Sarkaç Probleminin PID ve Tam Durum Geribesleme Yöntemleri ile Kontrolü", TOK’07 bildiriler S. 49-54.
[9] Kahvecio˘glu, S., Karamancıo˘glu, A., ve Yazıcı, A., 2008, "Enerji Kontrolüne Dayalı Do˘grusal Olmayan Model Öngörümlü Denetim ile Ters Sarkacın Yukarı Kaldırması", 466-470 ELECO.
35
[10] Yazıcı, A., Karamancıo˘glu, A., 2008, "A nonlinear programming approach for the swing-up control problem", Eng & Arch. Fac. Eski¸sehir Osmangazi University, Vol XXI, No: 2.
[11] Stimac, A. K., 1999, "Standup and Stabilization of the Inverted Pendulum", Mas-sachusetts Institute of Technology.
[12] Yazıcı, A., Karamancıo˘glu, A., 2009, "Ters Sarkaç Sisteminin Kontrol E˘gitiminde Test Aracı Olarak Kullanılması". EEBB Mühendislikleri E˘gitimi 4. Ulusal Sem-pozyumu.
[13] Yazıcı, A., 2000, Kayma Kipli Yakla¸sılmarının Ters Sarkaç Sistemine Uygulanması, Omangazi Üniversitesi, yüksek lisans tezi.
[14] Kandemir, K., 2006, MATLAB ve Simulink Kullanarak LQR ve Kutup Yerle¸simi Metotları ile Tepe Vinci Kontrolü, Yıldız Teknik Üniversitesi, yüksek lisans tezi.
[15] Ablay, G., Uçar, A., 2009, " Belirsizlik ˙Içeren ve Do˘grusal Olamayan Robot Kol-larının Gürbüz Denetimi", Anadolu Üniversitesi Bilim ve Teknolji Dergisi, sayı No:2:367-382
[16] Adams, R., A., 2009, Calculus A Complete Course, 6th, Pearson Academic.
BÖLÜM 6
EKLER
37
Ters Sarkaçta Kullandı˘gımız Denklemler TSdenklem.m
function xdot=TSdenklem (t,x) global u
M=2;m=0.25;l=0.6;b=1.5;g=9.81;
y1=(-b*x(2)+m*l*sin(x(3))*(x(4))^2-m*g*...
sin(x(3))*cos(x(3))+u)/(M+m-m*(cos(x(3)))^2);
y2=((b*x(2)-u-m*l*sin(x(3))*(x(4))^2)*cos(x(3))+(M+m)*
g*sin(x(3)))/(l*(M+m-m*(cos(x(3)))^2));
xdot=[x(2);y1;x(4);y2]
38
EK B
Ters Sarkaç ana Program Denklemleri Test etmek için TSana.m
clear all,clc global u
u=input (’u giriniz=’) x1=input(’x1 giriniz=’);
x2=input(’x2 giriniz=’);
x3=input(’x3 giriniz=’);
x4=input(’x4 giriniz=’);
x0=[x1 x2 x3 x4];
t0=input(’baslangiç zamani giriniz=’);
t1=input(’bitis zamani giriniz=’);
time=[t0 t1];
title(’Inverted Pendulum’,’fontsize’,10) xlabel(’T’)
ylabel(’X2’) legend(’hiz’) subplot(2,2,3) plot(t,x(:,3),’b’) grid
xlabel(’T’) ylabel(’X3’)
legend(’sarkaç açisi’) subplot(2,2,4)
plot(t,x(:,4),’g’) grid
xlabel(’T’) ylabel(’X4’)
legend(’sarkaç açisal hizi’)
EK C
Ters Sarkaç ana Program Denklemleri Test etmek için myequation.m
function xdot=myequation (t,x)
M=2;m=0.25;L=0.6;b=1.5;g=9.81;global u
xdot=[x(2);(-b*x(2)+m*L*sin(x(3))*(x(4))^2-m*g*sin(x(3))*
cos(x(3))+u)/(M+m-m*(cos(x(3)))^2);x(4);
((b*x(2)-u-m*L*sin(x(3))*(x(4))^2)*cos(x(3))+(M+m)*
g*sin(x(3)))/(L*(M+m-m*(cos(x(3)))^2))]
41
Ters Sarkaç LQR Yönteminin Sıfır Açıya Çekmek Testi mymain.m
clear all,clc global u
u=input (’u giriniz=’) x1=input(’x1 giriniz=’) x2=input(’x2 giriniz=’) x3=input(’x3 giriniz=’) x4=input(’x4 giriniz=’)
t0=input(’baslangiç zamani giriniz=’) t1=input(’artis miktari giriniz=’) t2=input(’bitis zamani giriniz=’) M=2;m=0.25;l=0.6;b=1.5;g=9.81;
43
legend(’sarkaç açisal hizi’)
subplot(3,2,5) plot(t,u,’m’) grid on
hold on xlabel(’T’) ylabel(’u’)
legend(’uygulanan kuvvet’) [rowx,colx]=size(x);
x0(1,:)=x(rowx,:);
end
EK E
Ters Sarkaçta Kullandı˘gımız Denklem invpend.m
%Bölüm-2: Invpend fonksiyonu function xdot=invpend(t,x);
global u;global e;global d;
M=2;
m=0.25;
L=0.6;
b=1.5;
g=9.81;
xdot=[x(2);
(-b*x(2)+m*L*sin(x(3))*(x(4))^2-m*g*sin(x(3))...
*cos(x(3))+u)/(M+m-m*cos(x(3))*cos(x(3)));
x(4);
((b*x(2)-u-m*L*sin(x(3))*(x(4))^2)*cos(x(3))+(M+m)*
g*sin(x(3)))/ (L*(M+m-m*cos(x(3))*cos(x(3))))];
Program invpend.m
45
Ters Sarkacı Tek Kademeli Yukarı Kaldırma Programı Swing04.m
%% yeni uygulama clear all; clc
global u; global e; global d;
input = 2;
u=0; e=0; d=0; M=2; m=0.25; L=0.6; b=1.5; g=9.81;...
T=0.02; tf = 18; kirpma=15;
i5 = 0;
% programı hızlandırmak için gereken de˘gi¸sken tanıtımı x0=[0 0 pi 0];
xx=[0 0 0 0];
tt=[0];
u_matrix=[0];
e_matrix=[0];
d_matrix=[0];
% programın hızlandırması için gereken tanıtımlar tamamlandı
for i=0:T:tf
[t,x]=ode23(’invpend’,[i,i+T],x0);
[r c]=size(x);
if (x(r,3)>0 && x(r,3)<=(pi/4) && x(r,4)>0) u=-input;
46
47
elseif (x(r,3)>0 && x(r,3)<=(pi/4) && x(r,4)<0) u=input;
elseif (x(r,3)> (pi/4) && x(r,3)<=(2*pi/4) &&...
x(r,4)>0) u=-input;
elseif (x(r,3)> (pi/4) && x(r,3)<=(2*pi/4) &&...
x(r,4)<0) u=input;
elseif (x(r,3)>(2*pi/4) && x(r,3)<=(3*pi/4) &&...
x(r,4)>0) u=input;
elseif (x(r,3)>(2*pi/4) && x(r,3)<=(3*pi/4) &&...
x(r,4)<0) u=-input;
elseif (x(r,3)>(3*pi/4) && x(r,3)<=(4*pi/4) &&...
x(r,4)>0) u=input;
elseif (x(r,3)>(3*pi/4) && x(r,3)<=(4*pi/4) &&...
x(r,4)<0) u=-input;
elseif (x(r,3)>(4*pi/4) && x(r,3)<=(5*pi/4) &&...
x(r,4)>0) u=input;
elseif (x(r,3)>(4*pi/4) && x(r,3)<=(5*pi/4) &&...
x(r,4)<0) u=-input;
elseif (x(r,3)>(5*pi/4) && x(r,3)<=(6*pi/4) &&...
x(r,4)>0) u=input;
elseif (x(r,3)>(5*pi/4) && x(r,3)<=(6*pi/4) &&...
x(r,4)<0) u=-input;
elseif (x(r,3)>(6*pi/4) && x(r,3)<=(7*pi/4) &&...
x(r,4)>0) u=-input;
elseif (x(r,3)>(6*pi/4) && x(r,3)<=(7*pi/4) &&...
x(r,4)<0) u=input;
elseif (x(r,3)>(7*pi/4) && x(r,3)<=(8*pi/4) &&...
x(r,4)>0) u=-input;
elseif (x(r,3)>(7*pi/4) && x(r,3)< (8*pi/4) &&...
x(r,4)<0) u=input;
49
yeni = abs(x(r,3));
% Sarkac 0 veya 2 pi noktasına yakınla¸stı˘gında...
swing-up kısmından çık.
if ((5.61<yeni && yeni<6.28) || (0<yeni && yeni<0.67)) i5=i;
eindex_x=eindex(1);
%%% Definitions for LQR equations T=0.02;
51
tt3=tt(2:ttindex_x);
53
legend(’uygulanan kuvvet’)
subplot (4,2,4) plot(tt3,ee3,’k’) grid on
hold on xlabel(’T’) ylabel(’E’)
legend(’enerji’)
subplot(4,2,6) plot(tt3,dd3,’r’) grid on
hold on xlabel(’T’) ylabel (’D’)
legend(’enerjinin türevi’)
%%%******************************************
EK G
Ters Sarkacı ˙Iki Kademeli Yukarı Kaldırma Programı Swing05.m
clear all; clc
global u; global e; global d;
input = 30;
g=9.81; T=0.02; tf=8;
kirpma=50;
LqrStart = 0;
% programı hızlandırmak için gereken de˘gi¸sken tanıtımı x0=[0 0 pi 0];
% programın hızlandırması için gereken tanıtımlar tamamlandı
55
for i=0:T:tf
[t,x]=ode23(’invpend’,[i,i+T],x0);
[r c]=size(x);
if (x(r,3)>0 && x(r,3)<=(pi/4) &&
x(r,4)>0) u=-input;
elseif (x(r,3)>0 && x(r,3)<=(pi/4) &&
x(r,4)<0) u=input;
elseif (x(r,3)> (pi/4) && x(r,3)<=(2*pi/4) &&
x(r,4)>0) u=-input;
elseif (x(r,3)> (pi/4) && x(r,3)<=(2*pi/4) &&
x(r,4)<0) u=input;
elseif (x(r,3)>(2*pi/4) && x(r,3)<=(3*pi/4) &&
x(r,4)>0) u=input;
elseif (x(r,3)>(2*pi/4) && x(r,3)<=(3*pi/4) &&
x(r,4)<0) u=-input;
elseif (x(r,3)>(3*pi/4) && x(r,3)<=(4*pi/4) &&
x(r,4)>0) u=input;
elseif (x(r,3)>(3*pi/4) && x(r,3)<=(4*pi/4) &&
x(r,4)<0) u=-input;
elseif (x(r,3)>(4*pi/4) && x(r,3)<=(5*pi/4) &&
x(r,4)>0) u=input;
elseif (x(r,3)>(4*pi/4) && x(r,3)<=(5*pi/4) &&
x(r,4)<0) u=-input;
57
elseif (x(r,3)>(5*pi/4) && x(r,3)<=(6*pi/4) &&
x(r,4)>0) u=input;
elseif (x(r,3)>(5*pi/4) && x(r,3)<=(6*pi/4) &&
x(r,4)<0) u=-input;
elseif (x(r,3)>(6*pi/4) && x(r,3)<=(7*pi/4) &&
x(r,4)>0) u=-input;
elseif (x(r,3)>(6*pi/4) && x(r,3)<=(7*pi/4) &&
x(r,4)<0) u=input;
elseif (x(r,3)>(7*pi/4) && x(r,3)<=(8*pi/4) &&
x(r,4)>0) u=-input;
elseif (x(r,3)>(7*pi/4) && x(r,3)< (8*pi/4) &&
x(r,4)<0) u=input;
for j=1:sss(1)
yeni = abs(x(r,3));
if (((angle1 < yeni) || (yeni < angle2)) && flag ==1) flag = 0;
input = 15;
i end
%Sarkac 0 veya 2 pi noktasına yakınla¸stı˘gında...
swing-up kısmından
if ((angle3 < yeni && yeni < 6.25) ||...
(0 < yeni && yeni < angle4) LqrStart = i;
end
if (LqrStart > 0) LqrStart
break;
59
%%% Definitions for LQR equations T=0.02;
R=1;
61
dindex_x=dindex(1);
63