1、哈工大机械设计V带传动电算设计说明书MatlabGUI版272020年4月19日文档仅供参考Harbin Institute of Technology上机电算设计说明书课程名称: 机械设计 设计题目: V带传动设计 院 系: 机电工程学院 班 级: 设 计 者: pyx 学 号: * 指导教师: 设计时间: 2015年10月30日 哈尔滨工业大学目录1.设计方案21.1设计要求21.2设计思路21.3设计程序框图22.程序源码42.1开始界面42.2设计界面52.3导入表格182.4清除界面193.变量说明204.程序运行结果214.1不同带型不同直径结果214.2 多组可选的值264.3特
2、殊工作情况274.4容错功能275.参考文献281.设计方案1.1设计要求(1)程序中的变量名应尽可能与使用教材或标准相一致。(2)程序中的变量名应给以适当的注释,如名称、单位等,增加程序易读性和易用性。(3)程序头部应给出程序的适用范围。(4)程序输出结果应完整给出机械零部件设计需要的几何及结构参数。1.2设计思路考虑到设计中需要许多表格数据,所以采用Matlab进行编程,这样的话将书中的表格键入.mat文件中,方便编程计算的时候调用,大大简化了编程的工作量,同时也提高了软件的计算效率。要让软件智能就要让人的参与度越少越好,软件在内部对数据进行处理,只给出一些存在范围的参数供用户选择输入,比
3、如带的型号,基准直径,预估中心距等等。而其余的相关系数在用户输入相关的原始数据之后便通过程序自动确定了。输入所要设计的V带的原始数据之后,通过查看选型图确定V带的型号,对于不同的型号V带在满足传动比误差以及带速度的条件的前提下,经计算有若干基准直径可供设计选用,或者没有满足条件的,则说明没有符合条件的设计。假设存在符合条件,选择完基准直径,由于预估中心距满足以下的不等式:,由此预估中心距存在一个范围,用户需要自己选择合适的,这一点很好的体现了人机交互,在这之后以用户确定的参数为基准进行后续的计算,并输出最终的设计结果,至此整个设计过程结束。当然用户可以通过选择不同的基准直径以及输入合理范围内不
4、同的预估中心距来比较设计的结果,最终选择合适的设计方案。1.3设计程序框图开始输入选择工作机载荷情况,原动机的类型,一天工作时间输出设计功率查看带型图,选择带型号,确定相关系数查看可选值,选择的值根据的取值范围:,输入的值输出设计结果:结束 N Y NY Y N Y Y2.程序源码本软件是基于Matlab R2014a编制的,总共有4个.m文件,下面是个文件的源代码,及相关的说明。2.1开始界面文件名为V_Belt_Design_Welcome.m,该文件为程序的开始界面。%-%-机械设计电算V带传动设计-开始界面%- function varargout = V_Belt_Design_We
5、lcome(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, V_Belt_Design_Welcome_OpeningFcn, . gui_OutputFcn, V_Belt_Design_Welcome_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = s
6、tr2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% 以上为初始化语句,勿修改! function V_Belt_Design_Welcome_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;guidata(hObject, handles); function varargout =
7、 V_Belt_Design_Welcome_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output; function pushbutton1_Callback(hObject, eventdata, handles)close(V_Belt_Design_Welcome);run(V_Belt_Design); function pushbutton2_Callback(hObject, eventdata, handles)open( Readme.html);2.2设计界面文件名为V_Belt_Design.
8、m,该文件为程序的设计计算界面。%-%-机械设计电算V带传动设计-设计界面%-function varargout = V_Belt_Design(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, V_Belt_Design_OpeningFcn, . gui_OutputFcn, V_Belt_Design_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if n
9、argin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% 以上为初始化语句,勿修改! function V_Belt_Design_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;gui
10、data(hObject, handles); function varargout = V_Belt_Design_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output; %-%- function PrimeMotor_Callback(hObject, eventdata, handles)function PrimeMotor_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0
11、,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function WorkingHours_Callback(hObject, eventdata, handles)function WorkingHours_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,Backgroun
12、dColor,white);end %-设计计算按钮-function pushbutton1_Callback(hObject, eventdata, handles) clc;Load_Table; %导入相关表格global Pd;global dd1;global dd2;global a0min;global a0max;i=str2double(get(handles.edit3,String);%传动比n1=str2double(get(handles.edit2,String);%小带轮转速(r/min)a0=str2double(get(handles.edit17,Stri
13、ng); %-%-图5.17带型选取表,5.1查m(kg/m)-%-TYPE=get(handles.BeltType,value);switch TYPE case 2 BeltType=2;%Z; m=0.06;%质量 ddMIN=dd_for_Z;%重新统一命名 rang_dd=length(ddMIN);%可供选择直径的数目 case 3 BeltType=3;%A; m=0.1; ddMIN=dd_for_A; rang_dd=length(ddMIN); case 4 BeltType=4;%B; m=0.17; ddMIN=dd_for_B; rang_dd=length(ddM
14、IN)-3;%去掉表格中的0 case 5 BeltType=5;%C; m=0.3; ddMIN=dd_for_C; rang_dd=length(ddMIN)-7; case 6 BeltType=6;%D; m=0.6; ddMIN=dd_for_D; rang_dd=length(ddMIN)-10; case 7 BeltType=7;%E; m=0.9; ddMIN=dd_for_E; rang_dd=length(ddMIN)-13; otherwise errordlg( 请查图选择带型,错误提示); end %-%-表5.4带轮基准直径的确定-%-num_of_dd1=0;d
15、d_choice=Table5_4P0(:,1);%将表5.4中的dd作为供选择的基准直径dd2for index_for_dd=1:1:rang_dd dd2_temp=i*ddMIN(index_for_dd); delta_dd2=abs(dd_choice-dd2_temp); dd2_m,index_dd2=min(delta_dd2); dd2_middle=dd_choice(index_dd2);%dd2_middle为选择dd2的一个国标中间变量 error=abs(dd2_middle-dd2_temp)/ddMIN(index_for_dd)/i);%误差 if (err
16、or= VMAX Clear_All; errordlg( 带速不符合要求,请重新输入,错误提示);end %判断用户是否已经输入a0 if (a0=0|a0a0max)&user_selection_value=1 errordlg( 请输入正确的a0,错误提示);end %由表5.2选择基准长度LdLdBasic=2*a0+pi*(dd1+dd2)/2+(dd2-dd1)2/(4*a0);delta_Ld=abs(Table5_2KL(:,1)-LdBasic);Ld_m,index_Ld=min(delta_Ld);Ld=Table5_2KL(index_Ld,1); a=a0+(Ld-
17、LdBasic)/2;%实际中心距 %小轮包角计算(度)ALF1=180-(dd2-dd1)/a)*57.3; %-%-V带根数确定-%- Kb=Table5_5Kb(BeltType);if i=1 & i=1.02 &i=1.05 & i=1.09 & i=1.13 & i=1.19 & i=1.25 & i=1.35 & i=1.52 & i2 i_serial=9; else i_serial=10; end end end end end end end endend %由大作业指导书P39表5.6计算P0K1=Table_P0factor(1,BeltType-1); K2=Tab
18、le_P0factor(2,BeltType-1);K3=Table_P0factor(3,BeltType-1);P0=(K1*V(-0.09)-K2/dd1-K3*V2)*V; Kb=Table5_5Kb(BeltType);%由表5.5查得Ki=Table5_6Ki(i_serial);%由表5.6查得DIFP0=Kb*n1*(1-1/Ki);%功率增量%由表5.9确定包角修正系数KALFdelta_ALF1=abs(Table5_9Kalpha(1,:)-ALF1);ALF1_m,index_ALF1=min(delta_ALF1);KALF=Table5_9Kalpha(2,inde
19、x_ALF1); %由表5.2确定长度系KLLd_row=Table5_2KL(:,1);Ld_serial=find(Ld_row=Ld);KL=Table5_2KL(Ld_serial,BeltType+1);%暂不考虑Y型带 %计算带的根数Z=round(Pd/(P0+DIFP0)*KALF*KL) %-%-初拉力的计算,作用在轴上的力计算-%-F0=500*Pd*(2.5-KALF)/(Z*V*KALF)+m*V2; FQ=2*Z*F0*sin(ALF1*pi/360);%ALF1得先转成弧度制 %-%-数据输出-%-Pdstr=num2str(Pd);dd1str=num2str(d
20、d1);dd2str=num2str(dd2);Ldstr=num2str(Ld);astr=num2str(a);ALF1str=num2str(ALF1);Zstr=num2str(Z);F0str=num2str(F0);FQstr=num2str(FQ);set(handles.edit4,String,Pdstr);set(handles.edit5,String,dd1str);set(handles.edit6,String,dd2str);set(handles.edit7,String,Ldstr);set(handles.edit8,String,astr);set(han
21、dles.edit9,String,ALF1str);set(handles.edit10,String,Zstr);set(handles.edit11,String,F0str);set(handles.edit12,String,FQstr);%-%-选择工作机,表5.7工作情况系数KA的确定-%-function LoadChoose_SelectionChangeFcn(hObject, eventdata, handles)global loading;loading=0;Load_State=get(eventdata.NewValue,Tag);switch Load_Stat
22、e case steady%载荷平稳 loading=1; set(handles.WokingExample,String,液体搅拌机;离心式水泵;通风机和鼓风机(P7.5kW);离心式压缩机;轻型输送机); case smallchange%载荷变动小 loading=2; set(handles.WokingExample,String,带式运输机;发电机;旋转式水泵;金属切削机床;剪床;压力机;印刷机;振动筛通风机(7.5kW); case bigchange%载荷变动较大 loading=3; set(handles.WokingExample,String,螺旋式运输机;斗式提升机
23、;往复式水泵和压缩机;锻锤;磨粉机;锯木机和木工机械;纺织机械); case superchange%载荷变动很大 loading=4; set(handles.WokingExample,String,破碎机(旋转式、鄂式等);球磨机;棒磨机;起重机;挖掘机;橡胶辊压机); otherwise errordlg( 请选择工作机工作情况,错误提示); end function pushbutton2_Callback(hObject, eventdata, handles)global loading;global Pd;Load_Table;P=str2double(get(handles.
24、edit1,String);%额定功率(kW) %-%-表5.7工作情况系数KA的确定-%-设计功率的确定-%- %选择一天工作时间Hours=get(handles.WorkingHours,value);switch Hours case 2 TimeLength=1;% 16 otherwise errordlg( 请选择一天工作时间,错误提示); end %选择原动机工作类型MotorType=get(handles.PrimeMotor,value);switch MotorType %表5.7工作情况系数KA的确定 case 2 KA=Table5_7KA(loading,Time
25、Length); case 3 KA=Table5_7KA(loading,TimeLength+3); otherwise errordlg( 请选择原动机工作类型,错误提示); end%反复启动、正反转频繁、工作条件恶劣if get(handles.special_situation,Value)=1 KA=1.1*KA;End%设计功率确定Pd=KA*P;Pdstr=num2str(Pd);set(handles.edit4,String,Pdstr); %输出设计功率V_type=imread(V_Type.jpg); axes(handles.axes1);imshow(V_type
26、); %选型图显示%-%-V带中心距和长度确定-%-function dd1_user_selection_Callback(hObject, eventdata, handles)global dd1;global dd2;global a0min;global a0max;a0min=0.7*(dd1+dd2);a0max=2*(dd1+dd2);a0minstr=num2str(a0min);a0maxstr=num2str(a0max);set(handles.edit15,String,a0minstr);set(handles.edit16,String,a0maxstr);use
27、r_selection_value=get(handles.dd1_user_selection,value)pushbtstr1=查看设计值;if user_selection_value=1 set(handles.pushbutton1,String,pushbtstr1);end function BeltType_Callback(hObject, eventdata, handles) TYPE=get(handles.BeltType,value)pushbtstr=查看dd1的值;if TYPE=1 set(handles.pushbutton1,String,pushbtst
28、r);endfunction pushbutton3_Callback(hObject, eventdata, handles)Clear_All; %清除界面 function pushbutton4_Callback(hObject, eventdata, handles)%跳转至开始界面close(V_Belt_Design); run(V_Belt_Design_Welcome);%-%-相关控件的库函数-%-function BeltType_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,Bac
29、kgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function edit1_Callback(hObject, eventdata, handles)function edit1_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,Bac
30、kgroundColor,white);end function edit2_Callback(hObject, eventdata, handles)function edit2_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function edit3_Callback(hObject, eventdata, h
31、andles)function edit3_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function edit4_Callback(hObject, eventdata, handles)function edit4_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function edit5_Callback(hObject, eventdata, handles)function