matlab带传动设计

选取中小型机械常见V带传输参数:

电动机工作功率Pd/kW =2.2
电动机满载转速nm/(r/min)=940
工作机的转速nw/(r/min)=55
传动比i1=2.8
最短工作年限=10年/日工作量<10h

设计内容︰

(1)V带的型号、长度Ld和根数Z;
(2)带轮结构尺寸:小带轮直径d1,大带轮直径d2;
(3)传动中心距a,小带轮包角α,带速v;
(4)轴上压力Fq,初压力F0,轮宽B;

步骤:
1.确定工作情况系数KA
2.传动比系数Ki
3.Pd和n1选型
4.确定带轮基准直径dd1、 dd2
5.确定带速v
6.确定传动中心距和带基准长度
7.选取相近的标准带长Ld
8.计算实际中心距a
9.计算小带轮包角α和包角系数Kα
10.确定P0,∆P0和V带根数Z
11.求初拉力F0(单根)
12.作用在轴上的压力Fp(合力)
13.确定合适的方案(结构尺寸)

方法:

1.输入P,n1, i输入载荷情况和每天工作时间(由i判断Ki)
2.根据工作状况和工作时间确定KA
3.根据Pd和n1选型,依据选型图
4.dd1=dd_standard (, : i)( i初始为1)
5.根据型号确定最大带速Vmax,并淘汰掉不合格的带型
6.根据dd2=i*dd1*(1-Epsilon)确定dd2,并进行标准化选取,并取dd2/2<100。
7.求得a推荐区间[a1-a2],并淘汰掉不在这个区间范围内的坐标(记为0)修正Ld(对应位置变成零)
8.计算小带轮包角ALF1和包角系数KALF,淘汰掉ALF1在[90,220]之外的情况,修正a和Ld_fact
9.根据小带轮的包角ALF1,确定合理情况的KALF1。
10.求得P0,∆P0,z并通过0 11.求初拉力Fo,作用在轴上的压力F和轮毂宽度B。
12.dd1是否是dd_standard最后列。

%第一部分,对数据的处理和输入
function [  ] = v(  )%定义第一个函数v
%计算v带传动中work_situation,Pd,n1,i, dd1,dd2,a,Ld,KL,ALF1,Z,F0,Q,B。
%% 输入v带传动各项数据
P=2.2;%输入名义功率P(kw)
n1=940;%主动轮(小轮)转速n1(r/min)
i=2.8;%传动比i
i_rate_change=0.05;
%为计算方便,将P,n1转化为国际单位制;
w1=n1*pi/30;%小带轮角速度
%% 输入实验所需表格
excel_KA=[1	1.1	1.2	1.1	1.2	1.3;1.1	1.2	1.3	1.2	1.3	1.4;1.2	1.3	1.4	1.4	1.5	1.6;1.3	1.4	1.5	1.5	1.6	1.8];%KA系数
excel_line=[0.9659	2.89975 ;0.9659	2.72280 ;0.9659	2.13101 ;1.16112	1.46891 ;
    1.21825	0.89902 ;1.22252	0.37241; 1.32193	-0.24592];
%v带传动线性系数,这种系数适用单位为Pd——kw,N1——r/mim
%带型对照表:Z——1;Z-A——2;A-B——3;B-C——4;C-D——5;D-E——6;E——7

excel_v_max=[25,25,25,25,30,30];%对Y(未列出),A,B,C型带v_max=25,D,E型带v_max=30。
excel_Kb=[0.2925	0.7725	1.9875	5.625	19.95	37.35]*0.001;%Kb为弯曲影响系数
%P0为根据表查得普通V带基本额定功率P0的计算公式计算出来的,K1,K2,K3为其系数。
excel_K1=[0.246	0.449	0.794	1.48	3.15	4.57];
excel_K2=[7.44	19.02	50.6	143.2	507.3	951.5];
excel_K3=[0.441	0.765	1.31	2.34	4.77	7.06]*10^(-4);
%输入标准值  
dd_standard=[50	63	71	75	80	90	100	112	125	132	140	150	160	180	200	224	250	280	315;%Z
75	80	85	90	100	106	112	118	125	132	140	150	160	180	200	224	250	280	315;%A
125	132	140	150	160	170	180	200	224	250	280	315	355	400	450	500	inf	inf	inf;%B
200	212	224	236	250	265	280	315	355	400	450	500	inf	inf	inf	inf	inf	inf	inf;%C
355	375	400	425	450	475	500	530	600	inf	inf	inf	inf	inf	inf	inf	inf	inf	inf];%D

Epsilon =0.02;%滑动系数
Ld=[200	224	250	280	315	355	400	450	500	560	630	710	800	900	1000	1120	1250	1400	1600	1800	2000	2240	2500	2800	3150	3550	4000	4500	5000];
KL=[0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.87 	0.89 	0.91 	0.94 	0.96 	0.99 	1.00 	1.03 	1.06 	1.08 	1.10 	1.14 	1.16 	1.18 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00;
    0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.81 	0.83 	0.85 	0.87 	0.89 	0.91 	0.93 	0.96 	0.99 	1.01 	1.03 	1.06 	1.09 	1.11 	1.13 	1.17 	1.19 	0.00 	0.00;
    0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.82 	0.84 	0.86 	0.88 	0.90 	0.92 	0.95 	0.98 	1.00 	1.03 	1.05 	1.07 	1.09 	1.13 	1.15 	1.18 	0.00; 
    0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.83 	0.86 	0.88 	0.91 	0.93 	0.95 	0.97 	0.99 	1.02 	1.04 	1.07 	1.09 	1.12 	1.15 	1.18 	1.21; 
    0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.00 	0.83 	0.86 	0.89 	0.91 	0.93 	0.96 	0.98 	1.00 	1.03 	1.06 	1.08 	1.11 	1.14 	1.17 	1.20]; 

%确定包角系数K_ALF
%根据小轮包角角度范围area_ALF1,确定包角系数KALF
area_ALF1=[220	210	200	190	180	170	160	150	140	130	120	110	100	90]; 
K_ALF=[1.20 	1.15 	1.10 	1.05 	1.00 	0.98	0.95	0.92	0.89	0.86	0.82	0.78	0.73	0.68];

%计算传动比系数Ki(取标准值)
% 1——1.01	    1
if 1<=i|i<1.015
    Ki=1;
end
% 1.02——1.04	1.0316
if 1.015<=i|i<1.045
    Ki=1.0316;
end
% 1.05——1.08	1.0276
if 1.045<=i||i<1.085
    Ki=1.0276;
end
% 1.09——1.12	1.0419
if 1.085<=i|i<1.125
    Ki=1.0419;
end
% 1.13——1.18	1.0567
if 1.125<=i|i<1.185
    Ki=1.0567;
end
% 1.19——1.24	1.0719
if 1.185<=i|i<1.245
    Ki=1.0719;
end
% 1.25——1.34	1.0875
if 1.245<=i|i<1.345
    Ki=1.0875;
end
% 1.35——1.91	1.1036
if 1.345<=i|i<1.515
    Ki=1.1036;
end
% 1.52——1.99	1.1202
if 1.515<=i|i<1.995
    Ki=1.1202;
end
% >2.00	      1.1373
if i>1.995
    Ki=1.1373;
end
m=[0.06	0.1	0.17 0.3 0.6];%单位长度质量m/(m/kg)
e=[12 15 19	25.5 37];%单1位mm
f=[8 10 1.5	17 23];%单位mm

%% 查表求传动比系数Ki,查KA, 计算Pd,选带型
% %输入载荷情况和工作小时,根据这个确定KA。
% disp(['确定工作状况']);
% disp(['载荷平稳         1']);
% disp(['载荷变动小       2']);
% disp(['载荷变动较大     3']);
% disp(['载荷变动剧烈     4']);
% work_situation = input('Input a number:');
% disp(['You input number is:',num2str(work_situation)]);
% %确定工作时间
% disp(['确定工作时间']);
% disp(['t<10          1']);
% disp(['1016          3']);
% work_time_everyday = input('Input a number:');
% disp(['You input number is:',num2str(work_time_everyday)]);
work_situation=1;
work_time_everyday=1;
%根据工作状况和工作时间确定KA
if n1>=600;
    KA=excel_KA(work_situation,work_time_everyday);
else
    KA=excel_KA(work_situation,work_time_everyday+3);
end
Pd=KA*P;%确定设计功率
%根据Pd和n1选型
%思路:根据选型图给出的对数坐标系,各带传动关系在初始段皆为直线,对各v带传动直线进行线性拟合,
%将点(Pd,KA)带进图中,确定包夹住(Pd,KA)的两条直线,根据这两条直线的型号,确定三种带传动型号,在下式中分别计算。
%确定包夹点直线的思路为将Pd带入各个直线方程,计算出对应的转速Nc,比较n1和解出的Nc大小,选择比n1大的和比n1小的两条直线。
for j=1:6
    Nc(j)= 10^excel_line(j,2)* (Pd)^excel_line(j,1);
end
for j=1:6
    if (Nc(j)-n1)>0
        line=j;       %退出循环后,点(Pd,KA)位于line(i)和line(i+1)之间。
    end
end
line_style=zeros(1,6);%选择line_style储存带型,如果选择,则为1,否则为0。
%line_style对应带型为:Z—1;A—2;B—3;C—4;D—5;E—6
switch line
    case 1  %选择Z带和A带
        line_style(1)=1;
        line_style(2)=1;
    case 2  %选择Z、A、B带
        line_style(1)=1;
        line_style(2)=1;
        line_style(3)=1;        
    case 3  %选择A、B、C带
        line_style(2)=1;
        line_style(3)=1;     
        line_style(4)=1;
    case 4  %选择B、C、D带 
        line_style(3)=1;     
        line_style(4)=1;
        line_style(5)=1;
    case 5  %选择C、D、E带
        line_style(4)=1;
        line_style(5)=1;
        line_style(6)=1;
    case 6  %选择D、E带
        line_style(5)=1;
        line_style(6)=1;        
    case 7  %选择E带
        line_style(6)=1;  
end
%% 确定dd1,dd2
%带型用TYPE标记,表示行向量的意义
for length=1:19
    dd1=dd_standard(:,length)';  %dd1依次遍历dd_standard中的所有数    
    for TYPE=1:5
        V(TYPE)=w1*dd1(TYPE)/1000/2;   %计算带速
        if V(TYPE)>excel_v_max(TYPE)
            line_style(TYPE)=0;
        end
    end
    dd2=i*dd1*(1-Epsilon);
    dd2=standard(dd2);%使用standard函数对dd2进行标准化选取
    for TYPE=1:5
        if dd2(TYPE)/2>100|dd1>dd2
            dd2(TYPE)=inf;%根据轴承座高度和底盘距离淘汰不合适的情况。
        end%原程序是对小轿车分析用到轴承座高度,这里不用但删了代码就跑不了
        judge_i=dd2(TYPE)/dd1(TYPE)/(1-Epsilon)/i;
        if judge_i>(1+i_rate_change) | judge_i<(1-i_rate_change)
            dd2(TYPE)=inf;%除去因为标准化导致的传动比误差过大的情况。
        end
    end

%% 确定不同带型实际长度Ld_fact
    % a=(dd1+dd2)%初始中心距推荐选择原则为0.7*(dd1+dd2)——2*(dd1+dd2)
    for TYPE=1:5%不考虑E型带,一般用不上。
       Ld_fact(TYPE,:)=Ld.*line_style(TYPE);
       for j=1:29
           if KL(TYPE,j)==0
               Ld_fact(TYPE,j)=0;
           end
       end
    end
        % 公式:Ld=2*a+pi/2*(dd1+dd2)+(dd2-dd1)^2/4/a;
%% 计算中心距a,修正Ld_fact
    a1=0.7*(dd1+dd2);%推荐a极小值
    a2=2*(dd1+dd2);%推荐a极大值
    for TYPE=1:5;    
        for j=1:size(Ld_fact,2)
            mid=(  2*Ld_fact(TYPE,j)-pi*( dd1(TYPE)+dd2(TYPE) )  )^2-8*( dd2(TYPE)-dd1(TYPE) )^2;
            if mid<0    %淘汰掉a为复数(有虚数部分)的可能。这步我也没看懂
                mid=0;
            end
            a(TYPE,j)=(    2*Ld_fact(TYPE,j)-pi*(dd1(TYPE)+dd2(TYPE))+sqrt(mid)    )/8;
            if Ld_fact(TYPE,j)==0 | a(TYPE,j)a2
                a(TYPE,j)=0;
                Ld_fact(TYPE,j)=0;%对不在[a1,a2]范围内的坐标置0.
            end
        end
    end
%% 计算小带轮包角ALF1和包角系数KALF,修正a和Ld_fact
    for TYPE=1:size(dd1,2)   
        ALF1(TYPE,:)=180-( dd2(TYPE)-dd1(TYPE) )*a(TYPE,:).^(-1)*57.3;
    end
    KALF=zeros(5,size(ALF1,2));
    for TYPE=1:5
        for j=1:size(ALF1,2)
            if ALF1(TYPE,j)<90|ALF1(TYPE,j)>220     %如果包角在85——90或220——225之间,怎么办?
                ALF1(TYPE,j)=-inf;%标记不符合90——220的角。
                a(TYPE,j)=0;%根据包角关系淘汰
                Ld_fact(TYPE,j)=0;%根据包角关系淘汰
            end
            for k=1:14
                if (area_ALF1(k)-ALF1(TYPE,j))>0
                    signal=k; %退出循环后,ALF1(TYPE,j)在area_ALF1(k)——area_ALF1(k+1)之间
                end
            end
            if ALF1(TYPE,j)~=-inf
                if signal~=14%获得包角系数KALF
                    if ( area_ALF1(signal)-ALF1(TYPE,j) )>( ALF1(TYPE,j)-area_ALF1(signal+1) )   
                        KALF(TYPE,j)=K_ALF(signal+1);
                    else
                        KALF(TYPE,j)=K_ALF(signal);
                    end
                end                
            end
        end
    end
%% 求合理情况下Z的根数,淘汰掉Z>=10的情况,并修正a,Ld_fact,ALF1和KALF。
    for TYPE=1:5
        P0(TYPE)=(excel_K1(TYPE)*V(TYPE)^(-0.09)-excel_K2(TYPE)/dd1(TYPE)-excel_K3(TYPE)*V(TYPE)^2)*V(TYPE);%求得P0
        DIFP0(TYPE)=excel_Kb(TYPE)*n1*(1-1/Ki);%求得ΔP0
        Z(TYPE,:)=Pd/(  P0(TYPE)+DIFP0(TYPE)  )*(  KL(TYPE,:).*KALF(TYPE,:) ).^-1;%求得v带根数Z
        for j=1:size(Z,2)
            if Z(TYPE,j)<=0||Z(TYPE,j)>9%当Z>9时,直接舍去,不考虑<9.5的情况。
                Z(TYPE,j)=-inf;
                ALF1(TYPE,j)=-inf;%根据V带根数Z淘汰
                KALF(TYPE,j)=0;%根据V带根数Z淘汰
                a(TYPE,j)=0;%根据V带根数Z淘汰
                Ld_fact(TYPE,j)=0;%根据V带根数Z淘汰
            else
                Z(TYPE,j)=ceil(Z(TYPE,j));%向上取整
            end
        end    
    end   
%% 求初拉力F0,左右在轴上的压力FQ,轮毂宽度B
for TYPE=1:1:5   
    for j=1:1:size(a,2)
        if a(TYPE,j)~=0
            F0(TYPE,j)=500*Pd/V(TYPE)/Z(TYPE,j)* (    (2.5-KALF(TYPE,j))/KALF(TYPE,j)    )+m(TYPE)*V(TYPE)^2;
            Q(TYPE,j)=2*F0(TYPE,j)*Z(TYPE,j)*sin(ALF1(TYPE,j)/2/180*pi);
            B(TYPE,j)=( Z(TYPE,j)-1 )*e(TYPE)+2*f(TYPE);            
        else
            F0(TYPE,j)=0;
            Q(TYPE,j)=0;
            B(TYPE,j)=0;
        end
    end
end
output(work_situation,Pd,n1,i, dd1,dd2,a,Ld,KL,ALF1,Z,F0,Q,B,length);
end
end

%第二部分输出到表格
function [  ] = output(work_situation,Pd,n1,i, dd1,dd2,a,Ld,KL,ALF1,Z,F0,Q,B,length)
global row;
global result;
if length==1
    
    %工作状况,显示位置(3,A—B)
    result{3,1}='载荷情况为:';
    switch work_situation
        case 1
            result{3,2}='载荷平稳';
        case 2
            result{3,2}='载荷变动小';
        case 3
            result{3,2}='载荷变动较大';        
        case 4
            result{3,2}='载荷变动剧烈';        
    end

    %工作时间,显示位置(4,A—B)
    result{4,1}='工作时间'; 
    result{4,2}='10年1班';
    %电动机工作功率Pd/kW,显示位置(5,A—B)
    result{5,1}='电动机工作功率Pd/kW'; 
    result{5,2}=Pd;
    %电动机满载转速n1/(r/min),显示位置(6,A—B)
    result{6,1}='电动机满载转速n1/(r/min)'; 
    result{6,2}=n1;
    %传动比i,显示位置(7,A—B)
    result{7,1}='传动比i'; 
    result{7,2}=i;
    %排列方式为'带型' 'dd1' 	'dd2' 	'a' 	'Ld' 	'KL' 	'ALF1' 	'Z',	'F0' 	'Q' 	'B'
    result{8,1}='带型';result{8,2}='dd1';result{8,3}='dd2';result{8,4}='a';result{8,5}='Ld';result{8,6}='KL';result{8,7}='ALF1';result{8,8}='Z';result{8,9}='F0';result{8,10}='Q';result{8,11}='B';
    row=9;
end

for TYPE=1:1:5   
    for j=1:1:size(a,2)
        if a(TYPE,j)~=0
            %带型(第1列)
            switch TYPE
                case 1
                    result{row,1}=char('Z型带');
                case 2
                    result{row,1}='A型带';
                case 3
                    result{row,1}='B型带';
                case 4
                    result{row,1}='C型带';
                case 5
                    result{row,1}='D型带';
            end
             %dd1(第2列)
             result{row,2}=dd1(TYPE);
             %dd2(第3列)
             result{row,3}=dd2(TYPE);
             %a(第4列)
             result{row,4}=a(TYPE,j);
             %Ld(第5列)
             result{row,5}=Ld(j);
             %KL(第6列)
             result{row,6}=KL(TYPE,j);
             %ALF1(第7列)
             result{row,7}=ALF1(TYPE,j);
             %Z(第8列)
             result{row,8}=Z(TYPE,j);
             %F0(第9列)
             result{row,9}=F0(TYPE,j);
             %Q(第10列)
             result{row,10}=Q(TYPE,j);
             %Q(第11列)
             result{row,11}=B(TYPE,j);
             row=row+1;
        end
    end
end
if length==19
    writecell(result,'v_result.xlsx');
end
end



function [ dd2 ] = standard( dd2 )
%对dd2进行标准化取值
%输入标准值
dd2=[137.2000  205.8000  343.0000  548.8000  974.1200];
dd_standard=[50	63	71	75	80	90	100	112	125	132	140	150	160	180	200	224	250	280	315;%Z
75	80	85	90	100	106	112	118	125	132	140	150	160	180	200	224	250	280	315;%A
125	132	140	150	160	170	180	200	224	250	280	315	355	400	450	500	inf	inf	inf;%B
200	212	224	236	250	265	280	315	355	400	450	500	inf	inf	inf	inf	inf	inf	inf;%C
355	375	400	425	450	475	500	530	600	inf	inf	inf	inf	inf	inf	inf	inf	inf	inf];%D
for i=1:5
    for j=1:length(dd_standard)
        if dd2(i)>dd_standard(i,j)
            sign=j;
        end
    end
    if sign==19||dd_standard(i,sign+1)==inf
        dd2(i)=inf;
    else
        if (    dd2(i)-dd_standard(i,sign) )>(  dd_standard(i,sign+1)-dd2(i) )
            dd2(i)=dd_standard(i,sign+1);        
        else
            dd2(i)=dd_standard(i,sign);
        end      
    end
end

function [  ] = output(work_situation,Pd,n1,i, dd1,dd2,a,Ld,KL,ALF1,Z,F0,Q,B,length)
global row;
global result;
if length==1
    
    %工作状况,显示位置(3,A—B)
    result{3,1}='载荷情况为:';
    switch work_situation
        case 1
            result{3,2}='载荷平稳';
        case 2
            result{3,2}='载荷变动小';
        case 3
            result{3,2}='载荷变动较大';        
        case 4
            result{3,2}='载荷变动剧烈';        
    end

    %工作时间,显示位置(4,A—B)
    result{4,1}='工作时间'; 
    result{4,2}='10年1班';
    %电动机工作功率Pd/kW,显示位置(5,A—B)
    result{5,1}='电动机工作功率Pd/kW'; 
    result{5,2}=Pd;
    %电动机满载转速n1/(r/min),显示位置(6,A—B)
    result{6,1}='电动机满载转速n1/(r/min)'; 
    result{6,2}=n1;
    %传动比i,显示位置(7,A—B)
    result{7,1}='传动比i'; 
    result{7,2}=i;
    %排列方式为'带型' 'dd1' 	'dd2' 	'a' 	'Ld' 	'KL' 	'ALF1' 	'Z',	'F0' 	'Q' 	'B'
    result{8,1}='带型';result{8,2}='dd1';result{8,3}='dd2';result{8,4}='a';result{8,5}='Ld';result{8,6}='KL';result{8,7}='ALF1';result{8,8}='Z';result{8,9}='F0';result{8,10}='Q';result{8,11}='B';
    row=9;
end

for TYPE=1:1:5   
    for j=1:1:size(a,2)
        if a(TYPE,j)~=0
            %带型(第1列)
            switch TYPE
                case 1
                    result{row,1}=char('Z型带');
                case 2
                    result{row,1}='A型带';
                case 3
                    result{row,1}='B型带';
                case 4
                    result{row,1}='C型带';
                case 5
                    result{row,1}='D型带';
            end
             %dd1(第2列)
             result{row,2}=dd1(TYPE);
             %dd2(第3列)
             result{row,3}=dd2(TYPE);
             %a(第4列)
             result{row,4}=a(TYPE,j);
             %Ld(第5列)
             result{row,5}=Ld(j);
             %KL(第6列)
             result{row,6}=KL(TYPE,j);
             %ALF1(第7列)
             result{row,7}=ALF1(TYPE,j);
             %Z(第8列)
             result{row,8}=Z(TYPE,j);
             %F0(第9列)
             result{row,9}=F0(TYPE,j);
             %Q(第10列)
             result{row,10}=Q(TYPE,j);
             %Q(第11列)
             result{row,11}=B(TYPE,j);
             row=row+1;
        end
    end
end
if length==19
    xlswrite('v_result.xls',result);
end
end
end%end多了一个但不影响,可能是为了保证完全结束

求求三连啦

你可能感兴趣的:(matlab实战,matlab,开发语言)