1、机械原理各机构运动学分析说明基于mat lab的机械原理杆件运动分析2012-6-5目录一概述 2二程序编制过程 21.铰链四杆机构 22.倒杆机构 53.曲柄滑块机构 84.popupmenu设计 105.保存 11三总结 12一概述大二时学习机械原理课程的时候,杆件的运动分析用的是作图法,不经效率较低,而且不精确。用解析法求数学表达式繁杂,易出错。为了解决以上问题,我用mat lab做了一个分析铰链四杆机构、曲柄滑块机构和倒杆机构的分析。只要输入数据,便可以分别做出各个杆件或滑块的位移、速度、加速度图像,如果需要的话可对生成图像分别保存,简单实用。 二程序编制过程1.铰链四杆机构基本功能:
2、用if语句,如果符合杆长条件则按要求计算,如果不符合,则输出相应提示信息。程序段: l1=str2num(get(handles.edit1,string);l2=str2num(get(handles.edit2,string);l3=str2num(get(handles.edit3,string);l4=str2num(get(handles.edit4,string);w1=str2num(get(handles.edit5,string); th1=0:0.1:2*pi;if (l1+l2=l3+l4)&(l1+l3=l2+l4)&(l1+l4=l2+l3)&(l1l3)&(l1l2
3、)&(l1=l4)|(l4+l2l3+l1)&(l4+l3l1+l2)&(l4+l1l2+l3)&(l4=l1)&(l4l2)&(l430+25):2.倒杆机构这些都是一些简单的程序。程序段:l1=str2num(get(handles.edit1,string);l2=str2num(get(handles.edit2,string);w1=str2num(get(handles.edit5,string); th1=0:0.1:2*pi;th2=asin(-l1*sin(th1)/l2);%位置分析th2=asin(-l1*sin(th1)./l2);%杆2的角位移xc=l1*cos(th
4、1)+l2*cos(th2);%滑块的位置变化 %速度分析vc=-l1*w1*sin(th1-th2)./cos(th2); %滑块c的速度w2=-l1*w1*cos(th1)./(l2*cos(th2);%杆2的角速度%加速度分析ac=-(l1*w1.*w1.*cos(th1-th2)+l2*w2.*w2)./(l2*cos(th2); %滑块c的加速度a2=(l1*w1.*w1.*sin(th1)+l2*w2.*w2.*sin(th2)./(l2*cos(th2);%杆2的角加速度 plot(handles.axes2,th1,th2); title(handles.axes2,杆2角位移
5、变化曲线) xlabel(handles.axes2,th1); ylabel(handles.axes2,角位移rad); axes(handles.axes2); grid on; plot(handles.axes4,th1,xc); title(handles.axes4,滑块的位置变化) xlabel(handles.axes4,th1); ylabel(handles.axes4,位移); axes(handles.axes4); grid on; plot(handles.axes6,th1,vc); title(handles.axes6,滑块c的速度曲线) xlabel(ha
6、ndles.axes6,th1); ylabel(handles.axes6,速度); axes(handles.axes6); grid on; plot(handles.axes7,th1,w2); title(handles.axes7,杆2的角速度曲线) xlabel(handles.axes7,th1); ylabel(handles.axes7,杆2角速度); axes(handles.axes7); grid on; plot(handles.axes8,th1,ac); title(handles.axes8,滑块c的加速度) xlabel(handles.axes8,th1)
7、; ylabel(handles.axes8,加速度); axes(handles.axes8); grid on; plot(handles.axes9,th1,a2); title(handles.axes9,杆2的角加速度) xlabel(handles.axes9,th1); ylabel(handles.axes9,加速度); axes(handles.axes9); grid on; else if z1=2l1=str2num(get(handles.edit1,string);l4=str2num(get(handles.edit4,string);w1=str2num(get
8、(handles.edit5,string); th1=0:0.1:2*pi; %位置分析th3=atan(l1*sin(th1)+l4)./(l1*cos(th1); %杆3的位置变化s=l1*cos(th1)./cos(th3);%滑块2在杆3上的位移变化 %速度分析vb2b3=-l1*w1*sin(th1-th3);%滑块2相对于杆3的速度w3=l1*w1*cos(th1-th3)./s;%杆3的角速度 %加速度分析ab2b3=s.*w3.2-l1*cos(th1-th3)*w1.2;%滑块2相对于杆3的加速度a3=-(2*vb2b3.*w3+l1*w1.2.*sin(th1-th3).
9、/s;%杆3的角加速度 plot(handles.axes2,th1,th3); title(handles.axes2,杆3角位移变化曲线) xlabel(handles.axes2,th1); ylabel(handles.axes2,角位移rad); axes(handles.axes2); grid on; plot(handles.axes4,th1,s); title(handles.axes4,滑块2在杆3上的位移变化) xlabel(handles.axes4,th1); ylabel(handles.axes4,位移); axes(handles.axes4); grid o
10、n; plot(handles.axes6,th1,vb2b3); title(handles.axes6,滑块2相对于杆3的速度) xlabel(handles.axes6,th1); ylabel(handles.axes6,速度); axes(handles.axes6); grid on; plot(handles.axes7,th1,w3); title(handles.axes7,杆3的角速度曲线) xlabel(handles.axes7,th1); ylabel(handles.axes7,杆3角速度); axes(handles.axes7); grid on; plot(h
11、andles.axes8,th1,ab2b3); title(handles.axes8,滑块2相对于杆3的加速度) xlabel(handles.axes8,th1); ylabel(handles.axes8,加速度); axes(handles.axes8); grid on; plot(handles.axes9,th1,a3); title(handles.axes9,杆2的角加速度) xlabel(handles.axes9,th1); ylabel(handles.axes9,加速度); axes(handles.axes9); grid on;效果如图:3.曲柄滑块机构程序:l
12、1=str2num(get(handles.edit1,string);l4=str2num(get(handles.edit4,string);w1=str2num(get(handles.edit5,string); th1=0:0.1:2*pi; %位置分析th3=atan(l1*sin(th1)+l4)./(l1*cos(th1); %杆3的位置变化s=l1*cos(th1)./cos(th3);%滑块2在杆3上的位移变化 %速度分析vb2b3=-l1*w1*sin(th1-th3);%滑块2相对于杆3的速度w3=l1*w1*cos(th1-th3)./s;%杆3的角速度 %加速度分析
13、ab2b3=s.*w3.2-l1*cos(th1-th3)*w1.2;%滑块2相对于杆3的加速度a3=-(2*vb2b3.*w3+l1*w1.2.*sin(th1-th3)./s;%杆3的角加速度 plot(handles.axes2,th1,th3); title(handles.axes2,杆3角位移变化曲线) xlabel(handles.axes2,th1); ylabel(handles.axes2,角位移rad); axes(handles.axes2); grid on; plot(handles.axes4,th1,s); title(handles.axes4,滑块2在杆3上
14、的位移变化) xlabel(handles.axes4,th1); ylabel(handles.axes4,位移); axes(handles.axes4); grid on; plot(handles.axes6,th1,vb2b3); title(handles.axes6,滑块2相对于杆3的速度) xlabel(handles.axes6,th1); ylabel(handles.axes6,速度); axes(handles.axes6); grid on; plot(handles.axes7,th1,w3); title(handles.axes7,杆3的角速度曲线) xlabe
15、l(handles.axes7,th1); ylabel(handles.axes7,杆3角速度); axes(handles.axes7); grid on; plot(handles.axes8,th1,ab2b3); title(handles.axes8,滑块2相对于杆3的加速度) xlabel(handles.axes8,th1); ylabel(handles.axes8,加速度); axes(handles.axes8); grid on; plot(handles.axes9,th1,a3); title(handles.axes9,杆2的角加速度) xlabel(handle
16、s.axes9,th1); ylabel(handles.axes9,加速度); axes(handles.axes9); grid on;效果如下:4.popupmenu设计当选中不同的杆件时,见面发生对应变化,这里面界面button比较多,不同的杆件需要不同edit text的数值,所以容易混乱。用if语句编制如下:z1=get(handles.popupmenu1,value);if z1=1 tu1=imread(jiaolian.png);axes(position,0.01,0.4,0.2,0.3);%显示图像image(tu1);axis offset(handles.edit7
17、,string,铰链四杆机构运动分析)set(handles.gan3,visible,on)set(handles.gan2,visible,on) set(handles.gan4,visible,on) set(handles.edit3,visible,on) set(handles.edit2,visible,on) set(handles.edit4,visible,on) set(handles.edit6,visible,on)elseif z1=2 tu3=imread(qubingyaogan.jpg);axes(position,0.01,0.4,0.2,0.3);ima
18、ge(tu3);axis offset(handles.gan3,visible,off)set(handles.gan4,visible,on) set(handles.gan2,visible,off) set(handles.edit4,visible,on) set(handles.edit3,visible,off) set(handles.edit2,visible,off) set(handles.edit6,visible,off)set(handles.edit7,string,倒杆机构运动分析) else z1=3 tu2=imread(qubinghuakaui.jpg)
19、;axes(position,0.01,0.4,0.2,0.3);image(tu2);axis offset(handles.gan3,visible,off) set(handles.gan4,visible,off) set(handles.gan2,visible,on) set(handles.edit2,visible,on) set(handles.edit3,visible,off) set(handles.edit4,visible,off) set(handles.edit6,visible,off) set(handles.edit7,string,曲柄滑块机构运动分析)
20、end 5.保存生成了图像,对其保存:FileName, PathName, filterindex = uiputfile(*.jpg,JPEG(*.jpg);. *.bmp,Bitmap(*.bmp);. *.gif,GIF(*.gif);. *.*, All Files (*.*),. Save Picture,Untitled); if filterindex h = getframe(handles.axes9); imwrite(h.cdata,PathName,FileName);end三总结做了这个大作业之后,感觉matlab这个软件功能十分强大,自己不过只用了它的冰山一角,而且大部分都是用的课本上简单的基础命令。在调试程序的过程中,虽然改正一次次的错误很辛苦,但自己从这些错误中学到了这些命令的用法,也看到了matlab的灵活性、实用性。其次,这也是对以前专业基础课的一个升华,学到了知识要综合利用,这样才能使知识得到交融,自己对它们也会有新的认识,从而”温故而知新“,获得意想不到的效果。今后的学习生活中,遇到一些实际问题完全可以用matlab编一些程序来解决,尤其是涉及数值计算和图像处理。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1