• Sonuç bulunamadı

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

Benzer Belgeler