2007年6月2日 星期六

機動學 作業十一

作業十一 b94611042 王志豪 (Due date: 12pm May 30, 2007)
我有上本週5/24的課

我的blog

題目:
1. 請聲明本週(5/24)有來上課。

2. 某凸輪開始時先在0-100∘區間滯留,然後提升後在200至260∘區間滯留,其高度(衝程)為5公分,其餘l由260∘至360∘則為返程。升程採用等加速度運動,返程之運動型式自定。設刻度區間為10∘,試繪出其高度、速度及加速度與凸輪迴轉角度間之關係。

3. 設凸輪之半徑為15公分,以順時針方向旋轉,其從動件為梢型,垂直接觸,長為10公分,從動件之運動係依照第二項之運動型式。試繪出此凸輪之工作曲線。

4. 你能讓此凸輪迴轉嗎?

11.1
我有上本週5/24的課



11.2
==>某凸輪開始時先在0-100∘區間滯留,然後提升後在200至260∘區間滯留,其高度(衝程)為5公分,其餘l由260∘至360∘則為返程。升程採用等加速度運動,返程之運動型式自定。設刻度區間為10∘,試繪出其高度、速度及加速度與凸輪迴轉角度間之關係。
Ans:

關於這題,基本上,我們可以有兩種作法.

分別是可以利用講義中的function [y, yy, yyy]=parabol_cam(phi, phi_in, beta_range, direct, travel,rpm),或者,使用另外一個程式function plot_dwell(ctheta,s,pattern,range),這兩個程式同樣都可以解決這個問題.

關於parabol_cam的程式碼,我就不多詳述了.(貼上blog的時候,似乎系統對裡面一些字有意見,認為語法有問題,所以就不再貼上,詳細可見於講義中.),由於都是做差不多的事情,為了避免在分析時造成混淆,個人決定不採用parabol_cam,而是使用更加方便的plot_dwell來幫忙解決這個問題.

*******************************************************************************
function plot_dwell(ctheta,s,pattern,range)
%ctheta = cam angle (deg)--can be a matrix
%pattern = denote the type of motion used(a 3 element-row matrix)
% 1:uniform 2:parabolic 3:simple harmonic 4: cycloidal
% 5:polynomial motion
% example [4 3]
%range =the degrees the specific motion starts
% Output: y is for displacement, yy is the derivative of the displacement with
% respect to theta, and yyy the second derivative with respect % to theta.
% Example plot_dwell(0:10:360,2,[4 3],[90 180 240]);
figure(1);clf;
[y,yy,yyy]=dwell(ctheta,range,pattern)
h1=plot(ctheta,y*s,'b-',ctheta,yy*s,'k-',ctheta,yyy*s,'r-')
legend('Displacement','Velocity','Acceleration',3)
xlabel('Elapsed Angle, degrees')
grid
*********************************************************************************

關於這個function plot_dwell,我簡單說明一下:

ctheta:代表我們打算繪製哪個角度範圍內的圖形.
s:衝程.
pattern:代表升程以及返程時的運動方式.
range:代表的是升程是從哪個角度開始還有結束,以及返程是從哪裡開始.

有了這些條件,我們便可以開始行動解決問題了!!!

從題目所給的條件看來
第一項表示的是角度,故選擇0-360度之區間做圖,輸入0:10:360
第二項則是動件衝程:題目設定為5cm,所以輸入5
第三項表示形式,由於為等加速度運動,故寫入2
第四項表示運動始末的角度,故前兩項各為100.200,返程始於260度,因此第三項為360

而關於模式方面,由於返程運動模式自訂,故會分成五種狀況:
1:等速運動uniform
2:抛物線parabolic
3:簡諧simple harmonic
4:擺線cycloidal 
5:多項式polynomial motion

主程式1(返程等速度運動)
==>
plot_dwell(0:10:360,5,[2 1],[100 200 260])















等速度返程的運動情況


主程式2(返程等加速度運動,也就是拋物線!)
==>
plot_dwell(0:10:360,5,[2 2],[100 200 260])















等加速度返程的運動情況


主程式3(返程簡諧運動)
==>
plot_dwell(0:10:360,5,[2 3],[100 200 260])















簡諧運動返程的運動情況



主程式4(返程擺線運動)
==>
plot_dwell(0:10:360,5,[2 4],[100 200 260])















擺線運動返程的運動情況


主程式5(返程多項式運動)
==>
plot_dwell(0:10:360,5,[2 5],[100 200 260])















多項式運動返程的運動情況



11.3
==>設凸輪之半徑為15公分,以順時針方向旋轉,其從動件為梢型,垂直接觸,長為10公分,從動件之運動係依照第二項之運動型式。試繪出此凸輪之工作曲線。
Ans:

由於題目說的是梢形元件,所以我們可以直接套用講義上的一個function [x,y]=pincam(cth,r0,s,e,L,range,pattern,cw),利用這個function來幫助我們解決問題.

******************************************************************
function [x,y]=pincam(cth,r0,s,e,L,range,pattern,cw)
%Find the pin type cam with an offsect e
%Inputs:
% cth:angle of cam, degrees
% r0:radius of base circle
% e:offset
% s:stroke
% L:length of pin
% cw:rotation direction of cam(-counterclockwise,+clockwise
%pattern = denote the type of motion used(a 3 element-row matrix)
% 1:uniform 2:parabolic 3:simple harmonic 4: cycloidal
% 5:polynomial motion
% example [4 3]
%range =the degrees the specific motion starts, eg.[90 180 240]
% Example: [x y]=pincam([10 60],5,2,1,10,[90 180 240],[4 3],-1)
figure(1);
clf;
th=cth*pi/180;
s0=sqrt(r0*r0-e*e);
for i=1:length(cth)
t=th(i)*cw;
A=[cos(t) -sin(t);sin(t) cos(t)];
[ym,yy,yyy]=dwell(cth(i),range,pattern);
x0=s0+ym*s;
Sx=[0 x0 x0+L;e e e];
X=A\Sx;
x(i)=X(1,2);y(i)=X(2,2);
line(X(1,1:2),X(2,1:2));
line(X(1,2:3),X(2,2:3),'linewidth',3,'color','red')
end
hold on;
plot([0 x],[0 y],'ro',x,y,'k-')
axis equal
********************************************************************


關於這個function pincam,我簡單說明一下:
cth:凸輪角度,度數
r0:凸輪基圓半徑
e:偏置量
s:從動件衝程
L:從動件長度
cw:凸輪轉動方向(反時鐘為正,順時鐘為負)
pattern=運動的型式,二元素之列矩陣.
range=升程及返程之範圍,三元素列矩陣

從題目所給的條件看來
第一項表示角度,選擇0-360度之區間做圖,故輸入0:10:360
第二項則是表示突輪基圓半徑,題目為15cm,所以寫入15
第三項表示從動件衝程,題目設為5cm,因此寫5
第四項乃偏置量,因為題目沒有要求,所以設為0
第五項是從動件長度,題目為10cm,故輸入10
第六項表示運動始末的角度,故前兩項各為100.200,返程始於260度,故第三項為360
第七項為形式,因為皆為等加速度運動,所以選擇2
第八項表示凸輪轉動方向,題目所求為順時針,所以很明顯是-1

故主程式
==>
[x y]=pincam([0:10:360],15,5,0,10,[100 200 260],[2 2],-1);
















11.4
==>你能讓此凸輪迴轉嗎?
Ans:

在此我們用到11.3的function pincam,把這個程式作修改即可.
首先對裡頭一開始的凸輪繪製保留.
然後原先line出圖形的地方,刪除,以利於動畫的執行.
最後,把裡面在多加入一個旋轉迴圈,使這個凸輪迴轉就大功告成了!

改造後的新function
==>
function [x,y]=pincam2(cth,r0,s,e,L,range,pattern,cw)
%Inputs:
%cth:凸輪的角度
%r0:基圓半徑
%e:偏置量
%s:衝程
%L:梢長
%cw:順時或逆時
%range:運動範圍
figure(1);
%先叫出空白圖
pause(2);
%停兩秒,以利準備拍攝的程式
clf;
th=cth*pi/180;
s0=sqrt(r0*r0-e*e);
oo=37;
for nn=1:10:360 mm=nn*pi/180;
oo=oo-1;
clf;
axis([-30 30 -30 30])
for i=1:length(cth)t=th(i)*cw;A=[cos(t+mm) -sin(t+mm);sin(t+mm) cos(t+mm)];
[ym,yy,yyy]=dwell(cth(i),range,pattern);
x0=s0+ym*s;
Sx=[0 x0 x0+L;e e e];
X=A\Sx;x(i)=X(1,2);
y(i)=X(2,2);
end[yw,yww,ywww]=dwell(cth,range,pattern);
y1=yw*s+r0+L;
y2=yw*s+r0 ;
line([0 0],[y1(oo),y2(oo)],'linewidth',10,'color','blue');
line([0 30],[y1(oo),20],'linewidth',10,'color','red');
axis([-30 30 -30 30])
hold on;
plot([0 x],[0 y],'ro',x,y,'k-')
pause(0.03);
end


主程式
==>
[x y]=pincam2([0:10:360],15,5,0,10,[100 200 260],[2 1],-1)

3 則留言:

Terence 提到...

不好意思,遲了這麼久才貼上.
由於前陣子中毒已深的電腦終於發作了.
最後只好重灌,不少東西都遺失了.
所以最後很多全部都重做.
還請見諒.

匿名 提到...

你的圖好奇怪...

Terence 提到...

真的嗎???
(驚)
看起來......我覺得都是按照程式在跑.
模式上,應該沒有錯吧......