2007年5月29日 星期二

作業 11



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


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

3你能讓此凸輪迴轉嗎?


本週(5/24)有來上課。



若偏置量為0

一、利用plot_dwell函式分別計算並繪出各種運動情形的加速度及速度以及位移的關係曲線,
其中位移曲線及相當於工作曲線,由於間隔為10度時圖形曲線並不是那麼連續,
如起始以及結束區與理論不太合,故我又繪置了間隔為1度的圖形曲線做比較

二、利用pincam函式繪出凸輪外型以及梢形從動件在凸輪工作時與凸輪相對之位置

三、利用pincam_rotate函式做出凸輪運動時的動畫

四、重複二、三,以反時針旋轉做比較


A 升程-等加速度運動,返程-等速度運動


位移(工作)曲線及速度、加速度之關係圖



10度
>> plot_dwell (0:10:360,5,[2 1],[100 200 260]);


























1度
>> plot_dwell (0:1:360,5,[2 1],[100 200 260]);

























凸輪外型與從動件工作圖及動畫



順時針旋轉

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






















>>[x y]=pincam_rotate([0:10:360],15,5,0,10,[100 200 260],[2 1],1);







反時針旋轉

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





















>>[x y]=pincam_rotate([0:10:360],15,5,0,10,[100 200 260],[2 1],-1);






B 升程-等加速度運動,返程-等加速度運動

位移(工作)曲線及速度、加速度之關係圖


10度
>> plot_dwell (0:10:360,5,[2 2],[100 200 260]);





















1度
>> plot_dwell (0:1:360,5,[2 2],[100 200 260]);


















凸輪外型與從動件工作圖及動畫


順時針旋轉

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


















>>[x y]=pincam_rotate([0:10:360],15,5,0,10,[100 200 260],[2 2],1);





反時針旋轉

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

















>>[x y]=pincam_rotate([0:10:360],15,5,0,10,[100 200 260],[2 2],-1);





C升程-等加速度運動,返程-簡諧運動


位移(工作)曲線及速度、加速度之關係圖

10度
>> plot_dwell (0:10:360,5,[2 3],[100 200 260]);


















1度
>> plot_dwell (0:1:360,5,[2 3],[100 200 260]);



















凸輪外型與從動件工作圖及動畫



順時針旋轉

>>[x y]=pincam ([0:10:360],15,5,0,10,[100 200 260],[2 3],1);



















>>[x y]=pincam_rotate([0:10:360],15,5,0,10,[100 200 260],[2 3],1);





反時針旋轉

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



















>>[x y]=pincam_rotate([0:10:360],15,5,0,10,[100 200 260],[2 3],-1);





D升程-等加速度運動,返程-擺線運動


位移(工作)曲線及速度、加速度之關係圖

10度

>> plot_dwell (0:10:360,5,[2 4],[100 200 260]);


















1度

>> plot_dwell (0:1:360,5,[2 4],[100 200 260]);





















凸輪外型與從動件工作圖及動畫


順時針旋轉


>>[x y]=pincam ([0:10:360],15,5,0,10,[100 200 260],[2 4],1);






















>>[x y]=pincam_rotate([0:10:360],15,5,0,10,[100 200 260],[2 4],1);




反時針旋轉

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






















>>[x y]=pincam_rotate([0:10:360],15,5,0,10,[100 200 260],[2 4],-1);





E升程-等加速度運動,返程-多項式曲線

位移(工作)曲線及速度、加速度之關係圖

10度
>> plot_dwell (0:10:360,5,[2 5],[100 200 260]);


















1度
>> plot_dwell (0:1:360,5,[2 5],[100 200 260]);



















凸輪外型與從動件工作圖及動畫


順時針旋轉


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



















>>[x y]=pincam_rotate([0:10:360],15,5,0,10,[100 200 260],[2 5],1);




反時針旋轉

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





















>>[x y]=pincam_rotate([0:10:360],15,5,0,10,[100 200 260],[2 5],-1);




跑凸輪動畫之程式如下,其餘dwell及pincam皆為網路講義之程式






function [x,y]=pincam_rotate(cth,r0,s,e,L,range,pattern,cw)
%繪製凸輪轉動動畫
%Inputs:
% cth:凸輪的角度
% r0:基圓半徑
% e:偏置量
% s:衝程
% L:梢長
% cw:順時或逆時
%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 運動範圍

figure(1);
th=cth*pi/180;
th2=10*pi/180;
s0=sqrt(r0*r0-e*e);   

%利用迴圈來跑動畫
for i=1:length(cth)
clf;
t=th(i)*cw;

[ym1,yy,yyy]=dwell(cth,range,pattern);
nn=length(ym1);
d2r=pi/180;
if cw==1,
theta=linspace(0,360,nn)'*d2r;
else
theta=linspace(360,0,nn)'*d2r;
end

xx3=0;yy3=0;
rp=[(s0+ym1'*s).*cos(pi/2+theta-cw*th2*(i-1)) (s0+ym1'*s).*sin(pi/2+theta-cw*th2*(i-1))];
xx3=rp(:,1);yy3=rp(:,2);
axis([-30 30 -30 30]);
axis equal
line(xx3,yy3,'linewidth',2,'color','m');
%繪出凸輪外型

t2=linspace(pi/2,2.5*pi,361);
C1=r0/8*exp(j*t2');
x1=real(C1);
y1=imag(C1);
line(x1,y1,'LineWidth',2); hold on;
C2=r0/4*exp(j*t2');
x2=real(C2);
y2=imag(C2);
line(x2,y2,'LineWidth',2);
line([x2(91) x2(91)],[y2(91) y2(91)-r0/4],'LineWidth',2);
line([x2(271) x2(271)],[y2(271) y2(271)-r0/4],'LineWidth',2);
line([x2(91)-r0/4 x2(271)+r0/4],[y2(271)-r0/4 y2(271)-r0/4],'LineWidth',2,'linestyle',':'); hold on;
%繪出凸輪的基座

theta=linspace(0,360,361)'*pi/180;
rb=[s0*cos(theta) s0*sin(theta)];
line(rb(:,1),rb(:,2),'color','k');
%繪出基圓

[ym2,yy,yyy]=dwell(cth(i),range,pattern);
x02=s0+ym2*s;
Sx=[0 x02 x02+L;e e e];
B=[cosd(90) -sind(90);sind(90) cosd(90)];
X2=B*Sx;
xx1=X2(1,1:2);
yy1=X2(2,1:2);
xx2=X2(1,2:3);
yy2=X2(2,2:3);
line(xx1,yy1);
line(xx2,yy2,'linewidth',3,'color','red');
%繪出梢的位置
pause(0.1);
hold on;
end;


1 則留言: