Homework 9 b94611001 歐陽太閒
本週(5/3)有來上課,組別A
於題目中可得:
曲桿長Rcm , 連桿Lcm,滑塊之偏置量為10cm,R=10+1=11,L=R+5=16
無初始速度或加速度,
故可得以下參數:(單位cm)
r(1) =固定桿 =會自行改變設0
r(2) =曲桿 =11
r(3) =結合(連)桿=16
r(4) =垂直偏置量=10
theta1 =第一桿之水平角=0
theta2 = 驅動桿之水平夾角=於計算時代入
td2 = 驅動桿角速度=0
tdd2 = 驅動桿角加速度=0
sigma = 1 組合模數,其中組合模數之閉合或分枝會導致左右鏡像的結果.
driver = 0 驅動桿為第二桿
1 驅動桿為第三桿
2 滑塊驅動
權衡各種分析方法後,使用單純的三角函數處理(如課本)由於反三角函數定義的關系,可能會面臨需撰寫大量if判斷式,且除錯不易的窘境,而Euler化可以大幅簡化計算,就如同電工學的交流電多相合成,複數計算遠較和差化積有效率的多.
故以下作業都將利用老師的sldlink.m(複數計算),sld_angle_limits.m,進行分析
形式:
sldlink(r,theta1,theta2,td2,tdd2,sigma,driver)注解參考附件一
sld_angle_limits(r,theta1,linkdrive) 注解及修改參考附件二
drawsldlimits(r,th1,sigma,driver)
drawsldpaths(r6,th6,r,th1,theta,td2,tdd2,sigma,npts,driver,mode) 注解及修改參考附件三
其中sldlink有部分程式碼在matlab 6.5中運作有問題,即
%f=@(num,ndg);
%round(num*10^ndg)/10^ndg; %取整數
%arg=f(arg,5);
等,但加注解化後對運作無太大影響
一,運動的界限範圍
首先利用老師撰寫的sld_angle_limits代入以下參數進行分析:
1.桿2為驅動桿
r=[0 11 16 10];
theta1=0;
linkdrive=0;
sld_angle_limits(r,theta1,linkdrive);
得到:
Qstart =
3.6000e-006
Qstop =
360.0000
顯然不符,檢查sld_angle_limits程式碼後發現其中缺少了r3≧r4≧0,r3+r4≧r2(即講義7.4.2)之情況
故在其中加入以下程式碼
elseif r3+r4>=r2 & r3>=0 & r3>=r4
Qstart=asin((r4-r3)/r2)
Qstop=pi- asin((r4-r3)/r2)
才能得到:
θmin =θ1 + sin-1((r4-r3) / r2) =asin((10-16)/11)= -0.5769=-33
θmax =θ1 +π- sin-1((r4-r3) / r2) =pi-asin((10-16)/11)=3.7185=213
即
drawsldlimits([0 11 16 10],0,1,0)
Qstart = (起始角)
-33.0557
Qstop = (結束角)
213.0557
其中OP為桿2,PQ為桿3,QR為偏置量

結果如圖
亦可產生
2 則留言:
你對程式的分析相當透徹,程式只是在控制小數位數,在應用上刪去應無大問題。另外界限條件可能有漏,你的補正正好可以改正過來。
做得很好。
感謝老師的指教
張貼留言