029_4BarLinkage.mw

連結された4本の棒の動き

イントロダクション

このワークシートでは、Maple を使って、連結された4本の棒のモデル化と、アニメーションを行います。

> restart;

問題の定義

装置の実際の寸法です。

a - ドライビングクランクの長さ
b - カプラ(連結器)の長さ

c - フォロアクランクの長さ

d - 固定クランクの長さ

長さ e と f のカプラに固定された点の、位置、速度、加速度を見つけます。
基本的な装置の配置は、パラメータ sect.1 と sect.2 により決まります。

例えば、sect.1 = 1 なら、装置はノーマルです。sect.1 = 2 の場合、装置はアンチパラレルです。

カプラ クランクに固定された点の位置は、パラメータ sect.2 により決まります。

sect.2 = 1 か 2 なら、カプラの点はカプラ クランクの反対側にあります。

メカニズムの位置の数(計算する点の数)は、n で与えられます。

解決方法

> with(geometry):
with(plots):
printlevel:=0:

Warning, the name changecoords has been redefined

位置の数 n を定義します。

> n:=48:

各パラメータをていぎします。

> a:=10:
b:=40:
c:=25:
d:=30:
e:=40:
f:=58:
delta:=2*Pi/n:
sect1:=1:
sect2:=2:

> circle(C,(x-d)^2+y^2=c^2,[x,y]):

> for i from 0 to n do
 phi:=i*delta:
 u:=evalf(a*cos(phi)):
 v:=evalf(a*sin(phi)):
 circle(B||i,(x-u)^2+(y-v)^2=b^2,[x,y]):
 intersection(Q||i,B||i,C):
 cx:=HorizontalCoord(Q||i[sect1]):
 cy:=VerticalCoord(Q||i[sect1]):
 linkage[i]:=polygonplot([[0,0],[u,v],[cx,cy],[d,0]],axes=none):
 circle(D||i,(x-u)^2+(y-v)^2=e^2,[x,y]):
 circle(F||i,(x-cx)^2+(y-cy)^2=f^2,[x,y]):
 intersection(W||i,F||i,D||i):
 ex||i:=HorizontalCoord(W||i[sect2]):
 ey||i:=VerticalCoord(W||i[sect2]):
 coupler[i]:=polygonplot([[u,v],[cx,cy],[ex||i,ey||i]],color=green,axes=none):
end do;

> curvex:=polygonplot([seq([ex||k,ey||k], k = 0..n)], color=red, style=LINE, scaling=constrained):

> T:=NULL:

> for s from 0 to n do
 q:=display(
      [coupler[s],linkage[s],curvex],
      scaling=constrained,title="Motion and coupler curve of four-bar linkage",
      axes=boxed
 ):
 T:=T,q
end do;

> display([T],insequence=true);

[Plot]

> vx||0:=ex||0-ex||n:
vy||0:=ey||0-ey||n:

> for i from 1 to n do
 vx||i:=ex||i-ex||(i-1):
 vy||i:=ey||i-ey||(i-1):
 ax||i:=vx||i-vx||(i-1):
 ay||i:=vy||i-vy||(i-1):
end do;

> ax||0:=vx||0-vx||n:
ay||0:=vy||0-vy||n:

> for i from 0 to n do
 v||i:=sqrt(vx||i^2+vy||i^2):
 a||i:=sqrt(ax||i^2+ay||i^2):
end do:

> pointplot([seq([i,vx||i],i=0..n)],style=LINE,title=`Velocity x`);

[Plot]

> pointplot([ seq([i,vy||i],i=0..n) ],style=LINE,title=`Velocity y`);

[Plot]

> pointplot([seq([i,v||i],i=0..n)],style=LINE,title=`Velocity abs`);

[Plot]

> pointplot([ seq([i,ax||i],i=0..n) ],style=LINE,title=`Acceleration x`);

[Plot]

> pointplot([seq([i,ay||i],i=0..n)],style=LINE,title=`Acceleration y`);

[Plot]

> pointplot([seq([i,a||i],i=0..n)],style=LINE,title=`Acceleration abs`);

[Plot]

参考書籍

このワークシートでは、グラフィックスによるものと、位置、速度、加速度に対する有限差分法によるものを紹介します。詳しくは下記の書籍をご覧ください。
Hrones-Nelson:

Analysis of the Four Bar Mechanism, Wiley, New York, 1951.