东海fyh126 发表于 2014-5-29 18:38:36

lingcheng 发表于 2014-5-29 18:34 static/image/common/back.gif
我大四毕业论文,实在图书馆没东西。捉急啊

简单点说就是角相位和进刀量的函数关系问题,,,,,,,,:lol

lingcheng 发表于 2014-5-29 18:40:53

东海fyh126 发表于 2014-5-29 18:38 static/image/common/back.gif
简单点说就是角相位和进刀量的函数关系问题,,,,,,,,

你也是大神啊,我有刀具轨迹的MATLAB代码,但是看不懂,尴尬

lingcheng 发表于 2014-5-29 18:57:36

lingcheng 发表于 2014-5-29 14:53 static/image/common/back.gif
大神求带啊,关于实例车削直廓环面蜗杆,包括齿根和齿顶

大神带我飞吧

lingcheng 发表于 2014-5-29 18:58:45

function worm3
clear
clc
a=240.65;%中心距
z1=1;%蜗杆头数
z2=40;%齿轮齿数
i12=z2/z1;%传动比
zc=4;%蜗杆包围蜗轮齿数
d1=80;%蜗杆分度圆直径
d2=2*a-d1;%蜗轮分度圆直径
mt=d2/z2;%蜗轮端面模数
da2=417.36;%蜗轮齿顶圆直径
df2=381.24;%蜗轮齿根圆直径
ha=(da2-d2)/2;%齿顶高
hf=(d2-df2)/2;%齿根高
da1=d1+2*ha;%蜗杆顶圆直径
df1=d1-2*hf;%蜗杆根圆直径
Rf1=a-df1/2;%蜗杆齿根圆弧半径
Ra1=a-da1/2;%蜗杆齿顶圆弧半径
gama=atan(d2/d1/i12);%蜗杆喉部分度圆导程角
tau=2*pi/z2;%齿距角
db=153;%主基圆直径
alpha=asin(db/d2);%蜗轮分度圆压力角
phi_w=0.5*tau*(zc-0.45);%蜗杆包围蜗轮的工作半角
phi_0=alpha-phi_w;%工作起始角
Lw=d2*sin(phi_w);%蜗杆工作部分长度
beta=11/180*pi;%母平面倾斜角
phi0min=phi_0;
phi0max=phi_0+2*phi_w;
u0=((d2/2)^2-(db/2)^2)^0.5;
phi0=linspace(phi0min,phi0max,300);
R=linspace(Ra1,Rf1,10);
phi1=phi0.*i12;
cath=2*alpha+162/z2/180*pi;

%预设矩阵
u1=zeros(length(phi0),length(R));v1=zeros(length(phi0),length(R));%甲面参数
x01=zeros(length(phi0),length(R));y01=zeros(length(phi0),length(R));z01=zeros(length(phi0),length(R));%甲面的平面
x11=zeros(length(phi0),length(R));y11=zeros(length(phi0),length(R));z11=zeros(length(phi0),length(R));%蜗杆甲面
x13=zeros(length(R),length(phi0));y13=zeros(length(R),length(phi0));z13=zeros(length(R),length(phi0));%甲面的螺旋线形式
theta1=zeros(length(R),length(phi0));R1=zeros(length(R),length(phi0));Z1=zeros(length(R),length(phi0));%甲面的加工参数

u2=zeros(length(phi0),length(R));v2=zeros(length(phi0),length(R));%乙面参数
x03=zeros(length(phi0),length(R));y03=zeros(length(phi0),length(R));z03=zeros(length(phi0),length(R));%乙面的平面
x02=zeros(length(phi0),length(R));y02=zeros(length(phi0),length(R));z02=zeros(length(phi0),length(R));%乙面的平面
x12=zeros(length(phi0),length(R));y12=zeros(length(phi0),length(R));z12=zeros(length(phi0),length(R));%蜗杆乙面
x14=zeros(length(R),length(phi0));y14=zeros(length(R),length(phi0));z14=zeros(length(R),length(phi0));%甲面的螺旋线形式
theta2=zeros(length(R),length(phi0));R2=zeros(length(R),length(phi0));Z2=zeros(length(R),length(phi0));%甲面的加工参数

figure(1)
for i=1:length(phi0)
    for j=1:length(R)
      f1=@(x)[(a-((x(1)*cos(phi0(i))-(x(2)*sin(beta)-db/2)*sin(phi0(i))-a)^2+(x(2)*cos(beta))^2)^0.5)^2+(x(1)*sin(phi0(i))+(x(2)*sin(beta)-db/2)*cos(phi0(i)))^2-R(j)^2;(x(1)*(cos(beta)/i12+sin(beta)*cos(phi0(i)))+(db/2*sin(phi0(i))-a)*sin(beta))/sin(phi0(i))-x(2)];
      options=optimset('Display','off','TolFun',1e-7);
      x0=;
      x=fsolve(f1,x0,options);
      u1(i,j)=x(1);
      v1(i,j)=x(2);
      x01(i,j)=u1(i,j);
      y01(i,j)=v1(i,j).*sin(beta)-db/2;
      z01(i,j)=v1(i,j).*cos(beta);
      x11(i,j)=-cos(phi1(i)).*cos(phi0(i)).*x01(i,j)+cos(phi1(i)).*sin(phi0(i)).*y01(i,j)-sin(phi1(i)).*z01(i,j)+a.*cos(phi1(i));
      y11(i,j)=sin(phi1(i)).*cos(phi0(i)).*x01(i,j)-sin(phi1(i)).*sin(phi0(i)).*y01(i,j)-cos(phi1(i)).*z01(i,j)-a.*sin(phi1(i));
      z11(i,j)=-sin(phi0(i)).*x01(i,j)-cos(phi0(i)).*y01(i,j);
    end
    plot3(x11(i,:),y11(i,:),z11(i,:),'r')
    hold on
end
axis equal

figure(1)
for i=1:length(phi0)
    for j=1:length(R)
      f2=@(x)[(a-(((x(1)*cos(cath)+(x(2)*sin(beta)+db/2)*sin(cath))*cos(phi0(i))-(-x(1)*sin(cath)+(x(2)*sin(beta)+db/2)*cos(cath))*sin(phi0(i))-a)^2+(x(2)*cos(beta))^2)^0.5)^2+((x(1)*cos(cath)+(x(2)*sin(beta)+db/2)*sin(cath))*sin(phi0(i))+(-x(1)*sin(cath)+(x(2)*sin(beta)+db/2)*cos(cath))*cos(phi0(i)))^2-R(j)^2;(x(1)*(cos(beta)/i12+sin(beta)*cos(phi0(i)-cath))+(-db/2*sin(phi0(i)-cath)-a)*sin(beta))/sin(phi0(i)-cath)-x(2)];
      options=optimset('Display','off','TolFun',1e-7);
      x0=;
      x=fsolve(f2,x0,options);
      u2(i,j)=x(1);
      v2(i,j)=x(2);
      x03(i,j)=u2(i,j);
      y03(i,j)=v2(i,j).*sin(beta)+db/2;
      z03(i,j)=v2(i,j).*cos(beta);
      x02(i,j)=x03(i,j).*cos(cath)+y03(i,j).*sin(cath);
      y02(i,j)=-x03(i,j).*sin(cath)+y03(i,j).*cos(cath);
      z02(i,j)=z03(i,j);
      x12(i,j)=-cos(phi1(i)).*cos(phi0(i)).*x02(i,j)+cos(phi1(i)).*sin(phi0(i)).*y02(i,j)-sin(phi1(i)).*z02(i,j)+a.*cos(phi1(i));
      y12(i,j)=sin(phi1(i)).*cos(phi0(i)).*x02(i,j)-sin(phi1(i)).*sin(phi0(i)).*y02(i,j)-cos(phi1(i)).*z02(i,j)-a.*sin(phi1(i));
      z12(i,j)=-sin(phi0(i)).*x02(i,j)-cos(phi0(i)).*y02(i,j);
    end
    plot3(x12(i,:),y12(i,:),z12(i,:))
    hold on
end
axis equal

figure(2)
for j=1:length(R)
    plot3(x11(:,j),y11(:,j),z11(:,j),'r')
    hold on
end
axis equal
figure(2)
for j=1:length(R)
    plot3(x12(:,j),y12(:,j),z12(:,j))
    hold on
end
axis equal

x13=x11';%转换为螺旋线的格式
y13=y11';
z13=z11';
x14=x12';
y14=y12';
z14=z12';

for i=1:length(R)
    for j=1:length(phi0)
      theta1(i,j)=cal_theta(x13(i,j),y13(i,j))/pi*180;
      R1(i,j)=(x13(i,j)^2+y13(i,j)^2)^0.5;%车床X方向为直径值
      Z1(i,j)=z13(i,j);
      theta2(i,j)=cal_theta(x14(i,j),y14(i,j))/pi*180;
      R2(i,j)=(x14(i,j)^2+y14(i,j)^2)^0.5;
      Z2(i,j)=z14(i,j);
    end
end

%角度转换为绝对式
fori=1:length(R)
    for j=1:(length(phi0)-1)
      if theta1(i,j+1)<theta1(i,j)
            for k=(j+1):length(phi0)
                theta1(i,k)=theta1(i,k)+360;
            end
      end
         if theta2(i,j+1)<theta2(i,j)
            for k=(j+1):length(phi0)
                theta2(i,k)=theta2(i,k)+360;
            end
      end
    end
end

assignin('base','X1',R1)
assignin('base','Z1',Z1)
assignin('base','C1',theta1)
assignin('base','X2',R2)
assignin('base','Z2',Z2)
assignin('base','C2',theta2)

%G代码的输出
% fid=fopen('turncode.txt','wt');
% fprintf(fid,'O0001\n');
% fori=1:length(R)
%   for j=1:length(phi0)
%         fprintf(fid,'X=%0.4f\t',R1(i,j))
%         fprintf(fid,'Z=%0.4f\t',Z1(i,j))
%         fprintf(fid,'C=%0.4f\n',theta1(i,j))
%   end
% end




function theta=cal_theta(x1,y1)
if (x1>0)&&(y1<0)
    theta=acos(x1./(x1^2+y1^2)^0.5);%电机转是角度还是弧度?
elseif (x1<0)&&(y1<0);
theta=acos(x1./(x1^2+y1^2)^0.5);
elseif (x1<0)&&(y1>0);
    theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);
elseif (x1>0)&&(y1>0);
    theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);
elseif (x1>0)&&(y1>0);
    theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);
elseif (x1>0)&&(y1==0);
    theta=0;
elseif (x1<0)&&(y1==0);
    theta=pi;
elseif (x1==0)&&(y1<0);
    theta=pi/2;
elseif (x1==0)&&(y1>0);
    theta=3*pi/2;
end

东海fyh126 发表于 2014-5-29 22:26:57

我也看不懂,,,,,:lol

jxcrxssh 发表于 2014-6-27 22:00:58

看了头晕,有这么复杂,算了路过!

car1982 发表于 2014-6-28 09:32:24

不懂


页: 1 [2]
查看完整版本: 求直廓环面蜗杆实际车削步骤