MATLAB的曲柄滑块和四杆机构的综合设计解析Word文档下载推荐.docx
- 文档编号:18209974
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:9
- 大小:64.37KB
MATLAB的曲柄滑块和四杆机构的综合设计解析Word文档下载推荐.docx
《MATLAB的曲柄滑块和四杆机构的综合设计解析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MATLAB的曲柄滑块和四杆机构的综合设计解析Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
并且可
2.仿真问题数学模型
(1)四杆机构的设计:
在用矢量法建立机构的位宜方程时,需将构件用矢量来表示,并作出机构的封闭矢量多边形。
如图1所示,先建立一直角坐标系。
设各构件的长度分別为厶、厶、厶、J,其方位角为◎、02、%、血。
以各杆矢量组成一个封闭矢量多边形,即ABCDA.其个矢量之和必等于零。
易知:
厶+厶=厶+爲
角位移方程的分量形式为:
Lycos0+厶COSq=厶COSq+厶COS
L,sinQ+厶sin仇=厶sinq+厶sinQ要求th3,那么
dsin&
dO门门
=——cos0=ecos&
dtdt
dcos0d8・.
=sin0=-eosin6dtdt
(mv)=vu+uv
在角位移方程分量形式中,由于假左机架为参考系,矢量I与X轴重合.q二0,则有非线性超越方程组:
“2)=厶COS0+厶COS-厶一厶4COS$=0
►
f2(0^O4)=L,sinO.+厶sinQ-Z^sinQ=0
可以借助牛顿-辛普森数值解法或Matlab自带的fsolve函数求出连杆3的角位移$和摇杆4的角位移2。
求解具有n个未知量兀(上12…小)的线性方程组:
4西+如勺+…+气£
=勺
他內+如吃+…+5兀=仇
式中,系列矩阵a是一个阶方阵:
'
你...
A=:
J.:
\aml…%丿
A的逆矩阵为A-*;
常数项b是一个n维矢量:
/?
=(勺,仇,…如了
因此,线性方程组解的矢量为:
兀=(心吃,…心)丁=Arb
非线性超越方程组是求解连杆3和摇杆4角速度和角加速度的依据。
(2)曲柄滑块的设计:
由图可知,C滑块的位移总是与AB,BC和他们之间的角度存在着一左的关系,关系如下:
LASABXcos(0)+y/BC2—AB2Xcos02
通过以上这个式子,我们就可以来求C点的位移.速度,加速度。
3.MatIab实现方法
(1)怎么设计四杆机构:
创建函数FoutBarPosition,函数fsolve通过他确定弘,然后知道&
3,2后,来求取各个点的坐标,通过plot命令在指定的区域内连线,取点,画图。
(2)怎么设计曲柄滑块机构:
通过解方程的方法,用solve来求取C滑块的坐标,用d辻f函数求取C滑块的速度,加速度曲线,通过plot命令在指定的区域内连线,取点,画图。
4.MatIab代码
(1)建新的函数在点m文件中:
functiont=fourbarposition(th,th2,L2ZL3fL4ZLI)t=[L2*cos(th2)+L3*cos(th
(1))-L4*cos(th
(2))-LI;
...L2*sin(th2)+L3*sin(th(l))-L4*sin(th
(2))];
(2)主程序如下:
E获取杆长
ll=str2double(get(handles.editl,1string1));
12=str2double(get(handles.edit2,'
string1));
13=str2double(get(handles.edit3,1string1));
14=str2double(get(handles.edit4z1string1));
15=str2double(get(handles.edit8,'
$定义变量
苗骨块和四杆机构的设计
symsts;
f=15/k2-12/v2-s/s2+2*12*s*cos(t);
ff=solve(f,s);
vv=diff(fff1);
aa=diff(ff,2);
th2=0:
pi/15:
6*pi;
times=length(th2);
wyy(1,i)wyy(2,i)vyy(l,i)vyy(2,i)ayy(1,i)ayy(2Zi)end
fori=l:
91eval(subs(ff
(1)zt,th2(i)));
eval(subs(ff
(2),tzth2(i)));
eval(subs(vv
(1)zt,th2(i)));
eval(subs(vv
(2)ft,th2(i)));
eval(subs(aa
(1)zt,th2(i)));
eval(subs(aa
(2)ft,th2(i)));
times
ifwyy(1,i)>
0wy(i)=wyy(1,i);
else
wy(i)=wyy(2,i);
end
ifvyy(l,i)>
vy(i)=vyy(lzi);
else
vy(i)=vyy(2zi);
ifayy(1,i)>
0ay(i)=ayy(lzi);
ay(i)=ayy(2zi);
end
th34=zeros(length(th2),2);
%%建立一个N彳亍2列的零矩阵
options=optimset(1display1z1off1);
form=l:
length(th2)$用fsove函数求解关于th3,th4的非线性超越方程,
结果保存在th34中
th34(mz:
)=fsolve(1fourbarposition1,[11]z.・•
options,th2(m)12,13f14,11);
$求各个的坐标
Ex=wy;
Ey=zeros(size(th2));
Cy=12*sin(th2)+13*sin(th34(:
1)1);
Cx=12*cos(th2)+13*cos(th34(:
Bx=[12*cos(th2)];
By=[12*sin(th2)];
Ax=zeros(size(th2));
Ay=zeros(size(th2));
Dx=ll+zeros(size(th2));
Dy=zeros(size(th2));
Ev=vy;
Ew=zeros(size(th2));
Ea=ay;
En=zeros(size(th2));
&
求位移,速度,加速度的范围:
g=[AxBxCxDxEx];
m=[AyByCyDyEy];
maxX=max(g);
minX=min(g);
maxY=max(m);
minY=min(m);
maxwy=max(Ex);
minwy=min(Ex);
maxvy=max(Ev);
minvy=min(Ev);
maxay=max(Ea+50);
minay=min(Ea-50);
画动画图
axes(handles・axesl);
plot([Ax(i),Bx(i)]z[Ay(i)zBy(i)],1linewidth'
z3);
holdon
plot([Bx(i),Cx(i)],[By(i)rCy(i)],1linewidth1,3);
plot([Ax(i),Dx(i)],[Ay(i)fDy(i)],1linewidth9f3);
plot([Cx(i)zDx(i)],[Cy(i)zDy(i)],1linewidth1,3);
plot([Bx(i),Ex(i)],[By(i),Ey(i)],1linewidth1,3);
plot([-10000,Ax(i)],[0zAy(i)]z1linewidth1z3);
plot([10000,Ax(i)],[0,Ay(i)],1lineWiduh1,3);
plot([Ex(i)+10fEx(i)-10],[Ey(i)+10,Ey(i)+10]);
plot([Ex(i)+10zEx(i)-10],[Ey(i)-10,Ey(i)-10]);
plot([Ex(i)-10zEx(i)-10],[Ey(i)+10,Ey(i)-10]);
plot([Ex(i)+10,Ex(i)+10],[Ey(i)+10fEy(i)-10]);
plot(0z0,1or1,1linewidth1f3)
plot(Bx(i),By(i)z1or1,1linewidth1,3)plot(Cx(i)rCy(i)z1or1z1linewidth1,3)plot(Dx(i)fDy(i)z1or1z1linewidth1,3)plot(Ex(i),Ey(i),1or1z1linewidth1,3)axisequal;
axis([minXzmaxXzminYzmaxY]);
axisoff;
holdoff;
pause(0・1)
$画滑块位移图
axes(handles.axes3);
plot(th2(1:
i),wy(1:
i)z*linewidth1z3);
axis([0,2*pi,minvjy,maxwy])
pause(0.1)
E画滑块速度图
axes(handles.axes4);
i),vy(1:
i)z1linewidth1,3);
axis([0,2*pi,minvy,maxvy])
pause(0.1)
$画滑块加速度图
axes(handles・axes5);
i),ay(1:
i),1linewidth1,3);
axis([0,2*pi,minayzmaxay])
判断杆长的代码:
12=str2double(get(handles.edit2,1string1));
13=str2double(get(handles.edit3,1string1));
14=str2double(get(handles.edit4z1string1));
lall=ll+12+13+14;
lmax=max([11121314]);
lmin=min([11121314]);
if(lmax+lmin)>
(lall-lmax-lmin)
set(handles.edit5,String1,1不符合杆长条件,请重斜输入1);
set(handles・edit6,1string1z11);
set(handles・edit?
1string1z11);
if12>
14
set(handles.edit6z'
string*,'
不符合A点的周转条件,请重新输入'
);
set(handles.edit5,1string1,11);
set(handles.edit7,1string1,11);
set(handles.edit7,1string1,1・彳勺合条彳牛,可t乂运动'
set(handles.edit5,1string1,11);
set(handles.edit6,1string1,1f);
关闭代码:
close
5.仿真结论
(1)如图所示为界面。
L.1.-zI*I,士出i*;
.E・L.2;
上、\iW4r*iI'
--n?
I-3#□谨申!
杆色废・—4轴鑽和十應
I5为曲佃U坯曲谨杆
(3)当满足杆长条件,但是且不满足A点的周转条件时:
(4)下图为正常运行时的界面:
400
200
连杆、滑块机械运动
6.遇到的问题和解决的方式
我们首先遇到的最大的问题是设计一个什么机构,当时我们想了很久,然后决定弄一个滑块和四杆机构的综合。
接下来是怎么设计四杆机构,我们通过查书籍和网上的资料,了解到用矢量方程方法来设计是一种很好的形式,通过对范例的学习,我们能够正确使用这种方法来设计四杆机构。
接下来是设计的滑块,我们是利用解方程的方法,来求解滑块的坐标。
方法掌握后,我们通过综合上课所学的知识,和各种资料,成功的设计出了这种机构。
虽然设计时间有点长,但是我们觉得很值得,我们很有成就感。
7.课程学习意见和建议
通过这个学期对计算机仿真技术这门课程的学习,我们认识到了随着计算机技术的发展,计算机仿真得到了非常广泛的应用,已经成为科学硏究的一种重要手段。
经过这次设讣,我们认真复习了机械原理有关连杆和滑块设计相应原理设计,同时Matlab的编程水平得到了一定程度的提高,加强了图形化编程能力。
当然在本次设计中,我们发现了自己还存在很多不足,如matlab中很多功能还是我们不会使用的。
针对这些不足,我们将进行相关理论知识的学习与积累,不断完善自己。
最后,感谢老师在本次课程给予的技术指导!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 曲柄 机构 综合 设计 解析