|
function worm3
4 U# W" |) H6 x2 W. d9 @clear$ ]9 `2 l7 D: ~
clc
4 N4 w, u0 I0 W. D+ _& Za=240.65;%中心距
8 \! r i8 h# p( p! Oz1=1;%蜗杆头数
- ~6 w1 m0 i7 h$ }' @z2=40;%齿轮齿数
; X" [' \$ L) b! l2 Qi12=z2/z1;%传动比
7 @9 i8 r! k0 c; Ozc=4;%蜗杆包围蜗轮齿数, G! f9 i; Z) R+ ~! c6 B8 P
d1=80;%蜗杆分度圆直径( v! g1 M- B! p7 n M. L* }# ~
d2=2*a-d1;%蜗轮分度圆直径: f" v s( n, Z- h
mt=d2/z2;%蜗轮端面模数2 w9 r$ O/ H- j
da2=417.36;%蜗轮齿顶圆直径" a3 L* G+ S3 E1 s. Z0 F- q
df2=381.24;%蜗轮齿根圆直径
2 {' T9 F! |7 W9 b s+ Bha=(da2-d2)/2;%齿顶高
7 E! {- X) ~% Q" ^- ^* O! B. w. z, Fhf=(d2-df2)/2;%齿根高
1 d, O# P+ P! u# H! x0 hda1=d1+2*ha;%蜗杆顶圆直径! f5 Y" d* E' G \" q, L$ ]$ ?
df1=d1-2*hf;%蜗杆根圆直径+ s! o+ }2 w( s
Rf1=a-df1/2;%蜗杆齿根圆弧半径3 F: y$ q9 N. ]; x3 l6 O
Ra1=a-da1/2;%蜗杆齿顶圆弧半径* c# ~) t6 ]6 o1 j% M
gama=atan(d2/d1/i12);%蜗杆喉部分度圆导程角
; D/ t3 { |! h9 C8 f8 m( @tau=2*pi/z2;%齿距角* D t: p, z% S" w
db=153;%主基圆直径7 {, d) C W* z3 D- Y6 J
alpha=asin(db/d2);%蜗轮分度圆压力角! j7 f7 q. h+ x5 g+ X& }0 F
phi_w=0.5*tau*(zc-0.45);%蜗杆包围蜗轮的工作半角
" K- [0 s. ~! W0 B! z+ ^+ L# gphi_0=alpha-phi_w;%工作起始角" ]2 K5 U1 Q( _$ S. d3 n
Lw=d2*sin(phi_w);%蜗杆工作部分长度
# a: m- h6 `9 \. dbeta=11/180*pi;%母平面倾斜角
' ]/ `: i* H. k, c4 r! ]# Fphi0min=phi_0;
' T- ?7 E7 E4 B+ s( jphi0max=phi_0+2*phi_w;
2 z4 }+ r& y F8 m. Y) Z8 }" O; Iu0=((d2/2)^2-(db/2)^2)^0.5;" J x, _/ ^: C& X; H' B
phi0=linspace(phi0min,phi0max,300);- s( f* z3 d3 `3 V% k
R=linspace(Ra1,Rf1,10);
- ~ K6 R5 @' {" ?* gphi1=phi0.*i12;
$ Y% ?7 G! q U; K vcath=2*alpha+162/z2/180*pi;
8 z$ G1 f+ ~; e% Y8 x$ p" K; B m4 G# P' }0 g
%预设矩阵
# D3 n" [) `- ~* m, y5 s- D! T6 zu1=zeros(length(phi0),length(R));v1=zeros(length(phi0),length(R));%甲面参数
" x: s) {: k" M; w& L# c5 x Wx01=zeros(length(phi0),length(R));y01=zeros(length(phi0),length(R));z01=zeros(length(phi0),length(R));%甲面的平面
@2 w* U! O2 c( T4 q+ s- k5 Gx11=zeros(length(phi0),length(R));y11=zeros(length(phi0),length(R));z11=zeros(length(phi0),length(R));%蜗杆甲面
# o# ] ?! l3 {3 r% A3 q) px13=zeros(length(R),length(phi0));y13=zeros(length(R),length(phi0));z13=zeros(length(R),length(phi0));%甲面的螺旋线形式2 F+ g" D3 E1 B; t
theta1=zeros(length(R),length(phi0));R1=zeros(length(R),length(phi0));Z1=zeros(length(R),length(phi0));%甲面的加工参数8 [' |# s. n7 ?' v8 p) U T* ^
, Y- }3 Y/ q) r% w2 x
u2=zeros(length(phi0),length(R));v2=zeros(length(phi0),length(R));%乙面参数
% {& }/ p. i: p# h) |! sx03=zeros(length(phi0),length(R));y03=zeros(length(phi0),length(R));z03=zeros(length(phi0),length(R));%乙面的平面2 k2 g# N( L x- L! ?) S
x02=zeros(length(phi0),length(R));y02=zeros(length(phi0),length(R));z02=zeros(length(phi0),length(R));%乙面的平面+ |' ?% L# x0 K) W' E
x12=zeros(length(phi0),length(R));y12=zeros(length(phi0),length(R));z12=zeros(length(phi0),length(R));%蜗杆乙面
) z9 x) m! m/ nx14=zeros(length(R),length(phi0));y14=zeros(length(R),length(phi0));z14=zeros(length(R),length(phi0));%甲面的螺旋线形式
% X' a! t& x0 P( m% F- itheta2=zeros(length(R),length(phi0));R2=zeros(length(R),length(phi0));Z2=zeros(length(R),length(phi0));%甲面的加工参数
2 }. j7 H$ g# l/ @- m$ x' _$ e! X: n4 X& v7 |' W
figure(1) D% V# T( p& {# _- ^1 q
for i=1:length(phi0)6 x+ H% n. ~$ F
for j=1:length(R)' f6 B7 ?, u- q+ w3 j; K
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)];
; z0 u/ I' h# E( c options=optimset('Display','off','TolFun',1e-7);
5 U0 R6 z/ o+ N* O- d" y x0=[u0 0];3 x0 F( l: N% w* B
x=fsolve(f1,x0,options);
! ~' V& i5 G$ K u1(i,j)=x(1);
5 G6 I$ o3 q- Q( y$ g% \4 v/ E v1(i,j)=x(2);
, E0 _2 Z% c- b$ L x01(i,j)=u1(i,j);
0 O4 y2 k# @* ^; m4 o" f9 Y y01(i,j)=v1(i,j).*sin(beta)-db/2;; |6 y# u% ~, L! U; {5 t0 D
z01(i,j)=v1(i,j).*cos(beta);; B1 p1 v( u8 c" \7 W
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));+ v9 \1 J* ?2 q! f5 q/ N- ~$ A
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));3 y5 r0 d7 E! Y
z11(i,j)=-sin(phi0(i)).*x01(i,j)-cos(phi0(i)).*y01(i,j);
6 |. k! }5 l( j) ?+ e1 Y end2 }6 n6 {- C1 R, y _
plot3(x11(i, ,y11(i, ,z11(i, ,'r')
# F* n7 D/ y* P, v; c/ J9 G hold on
( ^, l( G" L% L8 s5 Tend
5 [2 l! h4 [1 l: A9 T' @+ `% Naxis equal
+ X. `& c/ S4 J( q x
: ^1 m6 O- d- u6 Xfigure(1). s/ Y& i% A' k. U
for i=1:length(phi0)
9 E q& Z+ ~3 {) F7 t' Z& X for j=1:length(R)
( z& F# _- z+ h- t7 S. m* Z 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)];/ b3 z+ c h7 \+ |- P) z( n. V
options=optimset('Display','off','TolFun',1e-7);7 u" v3 w5 u2 |9 E8 g" t
x0=[u0 0];
& O- K$ o: Y& ~; z; _, x x=fsolve(f2,x0,options);# r$ ]) [3 h4 O6 ?
u2(i,j)=x(1);
/ V* t8 ?. H, Y$ v: g, i% b. L8 h9 S v2(i,j)=x(2);
. F; ]+ h$ B: ~" S' n3 B7 e- a) e x03(i,j)=u2(i,j);
( K# i; |" V, d y03(i,j)=v2(i,j).*sin(beta)+db/2;
3 T7 `' g( C; X" I z03(i,j)=v2(i,j).*cos(beta);
2 m3 E" L2 i, a5 ]8 V x02(i,j)=x03(i,j).*cos(cath)+y03(i,j).*sin(cath);' E+ b: W/ E" l, s. d) A) S) q1 d
y02(i,j)=-x03(i,j).*sin(cath)+y03(i,j).*cos(cath);8 h; `8 J G' c% `. a) |+ E7 |' @
z02(i,j)=z03(i,j);
0 z0 S! G, L6 b! U 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));
! L; V: R' N4 y% N% {* ]* c8 |' J 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));
! E# D4 Y0 G0 h' @+ |) o z12(i,j)=-sin(phi0(i)).*x02(i,j)-cos(phi0(i)).*y02(i,j);
1 b+ `5 ?1 C) F8 Q* A8 C end
$ U# y$ z; g! K0 J. p plot3(x12(i,:),y12(i,:),z12(i,:))
, F9 T% W% C, d6 d) M4 ` hold on
, c# Q' k1 n( k# V$ _9 ?4 cend
0 S K$ {" n$ k/ x- p; laxis equal
4 S2 ^2 g: j3 J( t6 k6 o: ~; ]% `8 c- `8 c6 J6 [3 G
figure(2)9 b, y1 o7 h) A; ]- T* M
for j=1:length(R)
$ F, {6 ^! z$ n, h3 f2 t6 ^ plot3(x11(:,j),y11(:,j),z11(:,j),'r')
. x& }4 h, R; q0 P0 F" d hold on
' G0 @, j" v, ^; Lend
6 }; ~ p0 x: }axis equal$ B. X6 g* b7 S: }2 x( h+ `5 x) Z }
figure(2)
% {6 G! p& J0 l/ J# I) { lfor j=1:length(R)
3 w2 M3 t. j' d# }7 r plot3(x12(:,j),y12(:,j),z12(:,j)) ^: u7 c) K9 T" R9 Q' @% _
hold on" x, w: s+ ^% V8 E7 l$ N
end
% n' _/ d$ w3 O# f* ]0 l# Raxis equal# A) g8 [% |; J/ W# k* j
1 \0 w" a; Z' C. R% E5 hx13=x11';%转换为螺旋线的格式" D) T! Y8 K6 B7 v" k
y13=y11';: _2 v2 r' |/ O) p
z13=z11';
* I* G1 m8 ~1 r9 N( l; k* Ix14=x12';
1 d1 X- s4 i; K9 n: T( by14=y12';3 Q" L' U O+ Y. ^' P$ K
z14=z12';' q8 t+ `. Q* I* ]9 ~6 s4 L$ C
* w5 s( q. u% l3 Nfor i=1:length(R). X! v% K1 J1 x0 Y
for j=1:length(phi0)7 f1 J1 X3 ? ^: E) Q
theta1(i,j)=cal_theta(x13(i,j),y13(i,j))/pi*180;
; [- r* b9 Y0 ] F8 b- r R1(i,j)=(x13(i,j)^2+y13(i,j)^2)^0.5;%车床X方向为直径值+ |/ L4 X6 b+ \ S
Z1(i,j)=z13(i,j);# h+ @! x3 T/ [. b s' m; u
theta2(i,j)=cal_theta(x14(i,j),y14(i,j))/pi*180;
0 T% F* m1 c d B R2(i,j)=(x14(i,j)^2+y14(i,j)^2)^0.5;
7 c9 n. x4 G; c" E( ~ Z2(i,j)=z14(i,j);
7 M# V! m2 r; r: y1 F8 _7 d end, [5 H$ ^' g4 E" U2 T4 }
end/ v$ R: S0 a5 T% _$ {' ?
$ V: P) O# O& @8 l0 ]$ j8 A- O; S
%角度转换为绝对式1 i( ?. `& M0 q* w) f: Y+ Q
for i=1:length(R)
4 b5 _. V. j# Y8 N3 z2 g6 J L% P for j=1 length(phi0)-1)
6 ^2 I" ]/ ~+ l" p0 m if theta1(i,j+1)<theta1(i,j)7 r+ y4 G$ i6 J& g/ k% s+ ]
for k=(j+1):length(phi0)- L" U$ c5 o2 n' e
theta1(i,k)=theta1(i,k)+360;
$ m; J: Q( L2 ~ end( z, o9 b1 P- f
end; I0 w$ Q7 c+ ?2 E% _) d2 M& \
if theta2(i,j+1)<theta2(i,j)5 X1 r8 c7 T0 g. n# C" K$ U
for k=(j+1):length(phi0), p8 d I5 v0 g4 C: W: G1 X9 Q
theta2(i,k)=theta2(i,k)+360;0 t7 b p# `/ p/ W' W" ?* ?
end
# `# o1 f6 P6 I- E end
: x. L, w& t- `+ D8 R end6 z7 h+ l2 l, L. _1 a& k
end
' S2 q/ I9 p9 G K) v5 N( V* ~" F% Q# c* s) f& r4 ~( c
assignin('base','X1',R1)
) s, {7 {$ Z# {/ h8 G$ x2 S, d6 }" Dassignin('base','Z1',Z1)
/ \ o2 u% C! q4 D) ?assignin('base','C1',theta1)
7 U. i+ e4 ~$ q2 qassignin('base','X2',R2)) _& q" W" }8 Z
assignin('base','Z2',Z2)0 g; Z `- D( S6 h! a/ S# Q
assignin('base','C2',theta2). C6 c6 M* o" ~
2 M1 J: a2 S( u6 `% [& {" a
%G代码的输出
' `0 y* N+ S+ W, ^7 K% fid=fopen('turncode.txt','wt');
: v3 V- I( G$ g6 O. n8 r% fprintf(fid,'O0001\n');6 {( b6 @- l, t+ G6 j
% for i=1:length(R)
& Y Y4 w2 {, F/ n# A4 X m3 u% for j=1:length(phi0)
# N1 A9 w1 U! {+ ?# `) l% fprintf(fid,'X=%0.4f\t',R1(i,j))
. o& W/ e) t: C" n% fprintf(fid,'Z=%0.4f\t',Z1(i,j))
. l$ {+ L3 t# M$ [% fprintf(fid,'C=%0.4f\n',theta1(i,j))+ p/ T# L% M/ Y1 P6 J, R2 e( I
% end) F& f& I7 v. ^% N
% end
, f( Q5 ^, B- P+ J2 [
. Z1 _( S3 O/ X- Y* T. k3 f6 ~# B: D$ d8 u% S
) p6 ^6 K" Z, g5 ^# \
6 J) h2 W P) F# g
function theta=cal_theta(x1,y1)
& Y' Y" V8 I, q; j7 o _$ P. ^3 vif (x1>0)&&(y1<0)* S+ P! s9 Y$ R+ z4 h4 _
theta=acos(x1./(x1^2+y1^2)^0.5);%电机转是角度还是弧度?- G! E( Z( m& A" j! e" ]
elseif (x1<0)&&(y1<0);* Z" k: s+ n5 v5 j( K. o5 E' y5 Q& n
theta=acos(x1./(x1^2+y1^2)^0.5);
+ L' Y, J {2 L: N' _6 Aelseif (x1<0)&&(y1>0);" [( w3 g8 H; x, J
theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);6 [( K( x* e1 q! }5 s
elseif (x1>0)&&(y1>0);% g0 w. t- f% e9 @
theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);! C* b) E- u: Z! x! F* C; i
elseif (x1>0)&&(y1>0);
* y( g2 e. q: z& Q theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);. W. L( _7 c. l) G" A
elseif (x1>0)&&(y1==0);' f6 m9 @* f+ \5 w% y
theta=0;) \( p7 r" |0 Z' _- V! b- B
elseif (x1<0)&&(y1==0);
: J9 A* b* F0 F theta=pi;
1 {$ z& P& b% H, ]3 L# `3 delseif (x1==0)&&(y1<0);
( U4 v B9 Q* t4 k2 P8 k- P* o* W theta=pi/2;: I" F n, P- S$ F
elseif (x1==0)&&(y1>0);* G4 ^* d" h! P5 a2 n3 ^- ]4 ]
theta=3*pi/2;& |6 p+ I5 N' m }) G; p2 d& b
end |
|