|
function worm3
H4 c. b7 L) l3 rclear# q" J- n, T% W6 `- D" M
clc
4 b, w D) k' p9 r! Ya=240.65;%中心距! z7 y1 e) i6 @1 Z0 a& q: |3 o- D
z1=1;%蜗杆头数
7 g' r4 D* F% mz2=40;%齿轮齿数
F" G C. ]" u6 g: P2 T N# a% Mi12=z2/z1;%传动比2 Q. ] B# | u8 G
zc=4;%蜗杆包围蜗轮齿数
" b9 V$ {1 I; i8 E2 p7 n) @d1=80;%蜗杆分度圆直径
4 B' s3 t- ~: P3 n' h6 Ud2=2*a-d1;%蜗轮分度圆直径0 ^' n1 H2 e5 ~ ]5 r- U' W+ J
mt=d2/z2;%蜗轮端面模数; R& m8 ^3 { `( ?
da2=417.36;%蜗轮齿顶圆直径. j0 M0 N* g# ~1 _/ l0 Y h( I
df2=381.24;%蜗轮齿根圆直径7 L1 f. z7 n& l- {. ]% E/ ~
ha=(da2-d2)/2;%齿顶高0 B& Q0 T+ H' J7 i* D
hf=(d2-df2)/2;%齿根高6 O4 Z& B; p/ w0 c9 K
da1=d1+2*ha;%蜗杆顶圆直径
# m) o+ T) z( z8 _df1=d1-2*hf;%蜗杆根圆直径5 B. n! \; Z# L( c- K$ g, _% o- V1 J3 G; b
Rf1=a-df1/2;%蜗杆齿根圆弧半径: X& A7 G z+ f: _ G7 {1 A
Ra1=a-da1/2;%蜗杆齿顶圆弧半径. g& w& a q( R7 n
gama=atan(d2/d1/i12);%蜗杆喉部分度圆导程角+ Y K6 n Z" Y- l
tau=2*pi/z2;%齿距角! H/ X. _1 C5 H( m: J1 _
db=153;%主基圆直径
- d4 _% ?1 H& ealpha=asin(db/d2);%蜗轮分度圆压力角) }, t3 H" M( E) |, T% K
phi_w=0.5*tau*(zc-0.45);%蜗杆包围蜗轮的工作半角9 Z0 @: A% F5 a, i8 a
phi_0=alpha-phi_w;%工作起始角6 a9 e+ B- B7 E6 N# C
Lw=d2*sin(phi_w);%蜗杆工作部分长度+ f1 [& v- S" K. Y' b" C7 i8 |
beta=11/180*pi;%母平面倾斜角
0 c0 w$ L& S X6 l2 L6 h3 h2 U4 Cphi0min=phi_0;
% F/ U. O5 f7 V- Kphi0max=phi_0+2*phi_w;
" ]* X- ~" g. tu0=((d2/2)^2-(db/2)^2)^0.5;
# G6 W# i, L1 w( ^# b9 rphi0=linspace(phi0min,phi0max,300); J& [: f" l$ t
R=linspace(Ra1,Rf1,10);
5 |, o q0 h1 v& \; Iphi1=phi0.*i12;
/ ^- ]# t y/ i( ]' r1 _/ N) Ecath=2*alpha+162/z2/180*pi;
- m- `0 V" f' c9 ?5 ?
2 _4 Q4 t: O. K2 W# D: X+ r%预设矩阵
8 v* C; p( C4 N5 v- m8 ~u1=zeros(length(phi0),length(R));v1=zeros(length(phi0),length(R));%甲面参数- W; {- u; W/ i5 p# a; M. l$ D
x01=zeros(length(phi0),length(R));y01=zeros(length(phi0),length(R));z01=zeros(length(phi0),length(R));%甲面的平面4 j% u5 K# l8 }8 g8 I/ @
x11=zeros(length(phi0),length(R));y11=zeros(length(phi0),length(R));z11=zeros(length(phi0),length(R));%蜗杆甲面$ U2 O+ J7 r5 t. z( F* W
x13=zeros(length(R),length(phi0));y13=zeros(length(R),length(phi0));z13=zeros(length(R),length(phi0));%甲面的螺旋线形式) L" ]# U x. t* h* R) g9 P- X" e, e& ^
theta1=zeros(length(R),length(phi0));R1=zeros(length(R),length(phi0));Z1=zeros(length(R),length(phi0));%甲面的加工参数
& f, a* B9 z X% i8 T3 Q' f5 j) F" K5 {* Y$ i" e g3 T
u2=zeros(length(phi0),length(R));v2=zeros(length(phi0),length(R));%乙面参数
4 Y6 J$ K/ K) F/ p! r4 G3 R% Sx03=zeros(length(phi0),length(R));y03=zeros(length(phi0),length(R));z03=zeros(length(phi0),length(R));%乙面的平面% x3 v0 A# B8 l! y8 I& u! q
x02=zeros(length(phi0),length(R));y02=zeros(length(phi0),length(R));z02=zeros(length(phi0),length(R));%乙面的平面
% Q2 O( k7 ?9 I7 ]) F+ cx12=zeros(length(phi0),length(R));y12=zeros(length(phi0),length(R));z12=zeros(length(phi0),length(R));%蜗杆乙面
1 g0 k3 I$ D& D* e4 O. ~! jx14=zeros(length(R),length(phi0));y14=zeros(length(R),length(phi0));z14=zeros(length(R),length(phi0));%甲面的螺旋线形式5 i- n: q! C: I ]. _
theta2=zeros(length(R),length(phi0));R2=zeros(length(R),length(phi0));Z2=zeros(length(R),length(phi0));%甲面的加工参数. p4 f9 x- J. ]8 u. y9 r
3 r; \! u& e8 h1 j$ zfigure(1)1 `4 ]6 r3 S* W* {$ Q: D) P
for i=1:length(phi0)
; B- _* A) Z3 z) T for j=1:length(R)" ~+ ]$ L9 q) d' F h
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)];
H7 l9 n' `5 m: a0 d options=optimset('Display','off','TolFun',1e-7);
) l; g Y+ @3 x" Q4 H k x0=[u0 0];
5 f! m& r1 K3 d- `+ [ x=fsolve(f1,x0,options);2 D/ e) h5 H! ] j% L' I
u1(i,j)=x(1);* [5 z+ d) ?/ [$ Q
v1(i,j)=x(2);5 ^8 m/ x# V4 w; w2 _
x01(i,j)=u1(i,j);" I4 X7 `0 @- Z2 E! ?4 |& s0 V
y01(i,j)=v1(i,j).*sin(beta)-db/2;% {0 A; }& T# O0 K! @
z01(i,j)=v1(i,j).*cos(beta);
) n% ^2 O A9 S 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));
; C' j5 g. Q- q4 W4 P1 k! `# ~1 M 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));
: Y; j i' L& \, D9 O4 m( p z11(i,j)=-sin(phi0(i)).*x01(i,j)-cos(phi0(i)).*y01(i,j);
+ U# b' W* Q% o( ?6 D end
5 s$ e6 v/ b* u$ m) _ r plot3(x11(i, ,y11(i, ,z11(i, ,'r')' c9 s* }% Q; s! b0 W2 Q: V$ F
hold on) ^. j) y% `0 x+ u7 ]! R
end& n+ [7 M$ t' p# [4 C+ v, u$ D) ^
axis equal
/ l# H. Y O) ~$ \# o9 I+ k2 Z q' s5 r
figure(1), O, T0 `/ i% k2 h! I
for i=1:length(phi0)( L J0 {7 g. ^5 d
for j=1:length(R)' N9 z2 H+ L- j( x: ]6 w
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)];( Z. z5 D, R- K) K3 Z- r
options=optimset('Display','off','TolFun',1e-7);; S5 n2 H% n8 z, M
x0=[u0 0];
9 C' F7 |1 O- U U8 v x=fsolve(f2,x0,options);
: ~4 e" D/ b7 b5 o/ L u2(i,j)=x(1);) d; u! F" T& c6 V' ]- @. { O$ F
v2(i,j)=x(2);
5 _, x2 _# g2 t: I* r6 q b x03(i,j)=u2(i,j);
4 ~1 [+ J" _& ~" C' o y03(i,j)=v2(i,j).*sin(beta)+db/2;
+ x- K) T3 r+ J z03(i,j)=v2(i,j).*cos(beta);
8 D% F9 Z7 ` @2 M3 `. ]7 u x02(i,j)=x03(i,j).*cos(cath)+y03(i,j).*sin(cath);, D. `" P+ w! ]+ G2 ]" l
y02(i,j)=-x03(i,j).*sin(cath)+y03(i,j).*cos(cath);( }- N0 z6 c K
z02(i,j)=z03(i,j);; e/ U% |- N6 N2 b' 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));
) d) H! p& `* A8 E* y0 q 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));
0 T1 m, J, c/ {3 R* K6 D z12(i,j)=-sin(phi0(i)).*x02(i,j)-cos(phi0(i)).*y02(i,j);
7 J" V$ H0 m& V0 O5 r end j. Q* \" ?- H4 e, w: i5 _% L
plot3(x12(i,:),y12(i,:),z12(i,:))
* L# f/ `8 S$ D4 B hold on' t4 ?0 X3 ^$ l% E/ r9 j) c
end, j, {% O+ d, r7 j, C
axis equal
% s8 L: v: G. C+ W$ z
7 p% B/ d. z! F( @figure(2)$ n( F8 V% s1 ^) O' k/ s# h
for j=1:length(R) 2 n! b1 M+ D# H: G7 Y$ ]* i
plot3(x11(:,j),y11(:,j),z11(:,j),'r')
$ g/ I3 ?6 _, O5 Y! q3 c hold on% e% i2 b d1 N/ ~+ b) T) m3 [
end
7 X4 I; C4 e, T' g, Haxis equal
$ o# A2 t; c1 [7 `( nfigure(2)
& {+ d+ x5 Q. l$ Ffor j=1:length(R)
: F+ G. \# H% z5 l/ |+ j h H/ u6 Q plot3(x12(:,j),y12(:,j),z12(:,j))
: |, ~8 n3 h- c% }/ r8 ^( n hold on: w/ k# w+ G6 x; d- F
end
+ l1 W# P+ g h6 ~& c6 Z* Iaxis equal6 u* M5 z9 N$ g% a' q T
& \4 M; O) h: t- [& Q8 _
x13=x11';%转换为螺旋线的格式
* l* X2 h! G- s6 \: \y13=y11';
( I* \8 `' {9 s/ qz13=z11';
! t* ^) i4 N3 c& Ex14=x12';
$ N2 i) j/ X. I E' i1 {( w( ^y14=y12';
! ?/ _& T9 V3 c9 h: ?z14=z12';$ D7 G! w6 V4 Q5 r3 w
) s- ^- R9 i1 l
for i=1:length(R)
3 e) ` J* b B3 F! C( P, p+ \ for j=1:length(phi0)
" K" f1 A L' i5 I theta1(i,j)=cal_theta(x13(i,j),y13(i,j))/pi*180;
x. Z4 ^% A' Y7 E; Z- |9 S R1(i,j)=(x13(i,j)^2+y13(i,j)^2)^0.5;%车床X方向为直径值& d# h& i2 f6 O4 N6 o* a
Z1(i,j)=z13(i,j);
i6 F. E- o+ k# P& ] theta2(i,j)=cal_theta(x14(i,j),y14(i,j))/pi*180;" _7 f: N$ o5 [
R2(i,j)=(x14(i,j)^2+y14(i,j)^2)^0.5;
+ A6 x2 I" ] Y6 ~5 n Z2(i,j)=z14(i,j);
# k( Y7 u. t( E0 {8 V end
. ?/ ^1 V! x& M# ~, w9 o, M: m' @end
/ R$ q2 j) ?4 o9 ` S0 D! c% G! I3 _4 T( _
%角度转换为绝对式
7 T- s6 q: \/ ^! M( {* zfor i=1:length(R)0 r& `' e: l' b* u9 r
for j=1 length(phi0)-1)
4 O$ A A7 H8 S6 d if theta1(i,j+1)<theta1(i,j)
8 ^. ]3 X( H' k1 H, Z+ b, e for k=(j+1):length(phi0)" e4 ?; r$ d; D$ ?
theta1(i,k)=theta1(i,k)+360;
! E( Q9 u9 g9 {- R0 P' e. g6 n end" g# b) `$ S. V8 M
end( }8 M* q* u2 S2 N |/ S
if theta2(i,j+1)<theta2(i,j)
1 z G* ~* s3 D for k=(j+1):length(phi0)
) f+ j5 }% `9 p( K( |- x/ L theta2(i,k)=theta2(i,k)+360;
z* ]- n# Q/ g0 T end
L4 p4 K" ] Q7 u4 W. T, g7 L end% D2 x2 I9 h, b: Q- m
end5 q3 M0 m. l4 Y6 z5 S# w
end; H+ y/ g$ Q' K* `
. b0 @3 U/ T b% H
assignin('base','X1',R1)" W h5 X; |% G. i; B3 j, n2 U5 b
assignin('base','Z1',Z1)' a) ^7 I9 {7 `8 [
assignin('base','C1',theta1)
9 J3 X- I2 |0 q G! K! }/ R+ Dassignin('base','X2',R2)
8 c; v6 c( {. A8 M, Vassignin('base','Z2',Z2)
4 p& c! ~) P; k1 dassignin('base','C2',theta2)/ }8 @# x5 c- ?9 f5 ]$ \/ Q
1 l/ C" ?# J" u& |0 c& M t6 [%G代码的输出! r1 c0 d2 p9 Y1 H/ \
% fid=fopen('turncode.txt','wt');
6 A/ W" n* G6 n; z4 Y% m1 ?% fprintf(fid,'O0001\n');
& c" b4 m {8 y# b- C8 v- Q' C% i% for i=1:length(R)
% e' u8 U0 ^0 u: u$ {% for j=1:length(phi0)
4 X+ i# x- B) v \* v+ w# |% |8 ^% fprintf(fid,'X=%0.4f\t',R1(i,j))
( H3 r6 M! g! U. _7 v& A2 Y% q% fprintf(fid,'Z=%0.4f\t',Z1(i,j))
% n; O: M2 ?& i9 U" d3 p% fprintf(fid,'C=%0.4f\n',theta1(i,j))' ^0 n) o( g+ P: t0 X
% end
9 `9 |8 X' s9 c% m( ?7 R2 x% end
- G: }: U* Q8 S$ ` n
7 V' d( \/ T% @- _) Y' p
) r! r9 a5 ]- ]7 p
$ t- |! x+ p8 \% T6 y ~& p8 t! }& F3 m
! ?% J* Q: _5 Zfunction theta=cal_theta(x1,y1)
$ U- U E& ]6 r8 n k3 m" `if (x1>0)&&(y1<0)
* z! a5 V0 f% v/ ` theta=acos(x1./(x1^2+y1^2)^0.5);%电机转是角度还是弧度?
6 j; p. i2 c) [5 Welseif (x1<0)&&(y1<0);; V# M* C; ^+ Q' t9 B
theta=acos(x1./(x1^2+y1^2)^0.5);
. G" T3 Q6 x% P7 ~; Celseif (x1<0)&&(y1>0);
+ {8 ?% v, A( y) Y' K! f- f: ` theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);
' S4 E* |1 O0 E! G0 g/ @2 s/ Celseif (x1>0)&&(y1>0);- S2 h- j/ K" x& c6 f
theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);, ]/ ~* h7 y1 p: r* t
elseif (x1>0)&&(y1>0);" R2 n; H3 p5 Y+ ^9 c# X0 [- x
theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);% ?6 g \. N, q' x) x$ N
elseif (x1>0)&&(y1==0);
/ i: K# z- t$ G theta=0;) z* [7 e- L7 J
elseif (x1<0)&&(y1==0);2 H( y, R, j* f! K1 z, w5 {
theta=pi;
& C; ?/ C9 Y! ~ q; delseif (x1==0)&&(y1<0);
5 U" ^ x% k: u3 P theta=pi/2;
) r/ e$ S: u, r. ~elseif (x1==0)&&(y1>0);/ C% K, `/ c( O5 N, o" O
theta=3*pi/2;
! R/ K% P2 e0 pend |
|