|
function worm3
: i: a& E6 T* e; ?clear- z! {/ v0 I5 E, l# { R3 @6 i% c
clc
' j) e4 G2 p6 M& }: Da=240.65;%中心距# t- m8 U, d- H
z1=1;%蜗杆头数5 E' s) ~% \7 J
z2=40;%齿轮齿数
" I% }4 E2 E4 e+ a! _+ l% n8 N4 ei12=z2/z1;%传动比
: O/ X, F! y% izc=4;%蜗杆包围蜗轮齿数
: I( Z) K3 Y# {$ `$ p' Hd1=80;%蜗杆分度圆直径
, i0 s. L2 w9 w8 }0 }d2=2*a-d1;%蜗轮分度圆直径
, G" b3 [9 ~ X1 cmt=d2/z2;%蜗轮端面模数- X3 b/ Q! w7 }4 B5 s, R
da2=417.36;%蜗轮齿顶圆直径
3 X4 {9 p5 c- G! | V9 B5 g( Jdf2=381.24;%蜗轮齿根圆直径
! J: q# a: Q# `4 u0 Z/ ~( v+ Q Fha=(da2-d2)/2;%齿顶高! I+ r4 _" A7 d% [4 m7 q. o# V
hf=(d2-df2)/2;%齿根高
& M% _, Z8 ?8 m0 n4 O2 @da1=d1+2*ha;%蜗杆顶圆直径* T. h/ j6 A- }) I* e X4 o1 r
df1=d1-2*hf;%蜗杆根圆直径
7 Z! W" S4 a" | k! dRf1=a-df1/2;%蜗杆齿根圆弧半径+ ?/ d+ I9 Y5 {* S; X+ X4 g+ N
Ra1=a-da1/2;%蜗杆齿顶圆弧半径
% @; e$ t% y" Z1 `, xgama=atan(d2/d1/i12);%蜗杆喉部分度圆导程角& x3 A8 Y! k) _: ]9 b8 p `. E
tau=2*pi/z2;%齿距角" @8 x" x- a, `1 y
db=153;%主基圆直径' p3 \: Z: v; _* z/ w! I& v, Q" G
alpha=asin(db/d2);%蜗轮分度圆压力角
" M: g1 b0 q/ E2 m9 W3 aphi_w=0.5*tau*(zc-0.45);%蜗杆包围蜗轮的工作半角
$ l# ~2 _% v2 _4 L8 ?( Lphi_0=alpha-phi_w;%工作起始角8 R9 {5 L0 |- @( I6 `
Lw=d2*sin(phi_w);%蜗杆工作部分长度; D! c6 X/ ]: o
beta=11/180*pi;%母平面倾斜角! T- ^! |0 \7 V& d r6 G
phi0min=phi_0;4 r5 w. G p1 X6 B$ d
phi0max=phi_0+2*phi_w;
5 \6 D! C% X/ l, ?9 Vu0=((d2/2)^2-(db/2)^2)^0.5;% t6 F- g: s! f, F7 b$ S3 d
phi0=linspace(phi0min,phi0max,300);
. n l, |, g: |4 {R=linspace(Ra1,Rf1,10);
' p8 @& S6 i0 |7 r9 n5 {: ophi1=phi0.*i12;1 e7 D/ Q. U5 X4 f, R* M E2 z( `
cath=2*alpha+162/z2/180*pi;! e4 c# D: y$ s9 `' k
1 H; F& t. K7 ]9 f%预设矩阵; h- f1 H+ [1 N j4 y
u1=zeros(length(phi0),length(R));v1=zeros(length(phi0),length(R));%甲面参数
& X7 \5 ]8 Q" a$ E: q! dx01=zeros(length(phi0),length(R));y01=zeros(length(phi0),length(R));z01=zeros(length(phi0),length(R));%甲面的平面8 S2 Q) Y% B$ x+ K7 S- P
x11=zeros(length(phi0),length(R));y11=zeros(length(phi0),length(R));z11=zeros(length(phi0),length(R));%蜗杆甲面
4 P9 G: ]5 c$ Y1 i8 i/ Nx13=zeros(length(R),length(phi0));y13=zeros(length(R),length(phi0));z13=zeros(length(R),length(phi0));%甲面的螺旋线形式
7 j2 j# H& q! n5 ]theta1=zeros(length(R),length(phi0));R1=zeros(length(R),length(phi0));Z1=zeros(length(R),length(phi0));%甲面的加工参数; E* k. h) J0 }" i1 a# S* K
1 I% Q2 r/ i8 K9 ^8 y
u2=zeros(length(phi0),length(R));v2=zeros(length(phi0),length(R));%乙面参数* [# P: ]7 o4 K: Y7 C) Y
x03=zeros(length(phi0),length(R));y03=zeros(length(phi0),length(R));z03=zeros(length(phi0),length(R));%乙面的平面
+ G( F+ e# E+ [. H& i1 j, x0 Dx02=zeros(length(phi0),length(R));y02=zeros(length(phi0),length(R));z02=zeros(length(phi0),length(R));%乙面的平面) \: x o: w8 l1 ^& g" `3 Z
x12=zeros(length(phi0),length(R));y12=zeros(length(phi0),length(R));z12=zeros(length(phi0),length(R));%蜗杆乙面
$ e" Y8 Q( t* @& r' V6 Ox14=zeros(length(R),length(phi0));y14=zeros(length(R),length(phi0));z14=zeros(length(R),length(phi0));%甲面的螺旋线形式
8 R, g" H) K1 @2 A3 {9 m2 Jtheta2=zeros(length(R),length(phi0));R2=zeros(length(R),length(phi0));Z2=zeros(length(R),length(phi0));%甲面的加工参数# X: E: \, _3 S4 T
- J! @# d% _( Z- d1 q z
figure(1)8 w! i( ^1 i9 R( f
for i=1:length(phi0)2 R# A% h* B9 M/ @! K4 S
for j=1:length(R)4 T5 D! [+ _, O9 o! X1 Y
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)];6 |2 j8 o2 e1 O3 c
options=optimset('Display','off','TolFun',1e-7);1 m3 d+ O0 t2 H. h \; i
x0=[u0 0];; b" ~9 h! V1 v& {* @9 r& M
x=fsolve(f1,x0,options);. V7 h, u: ]! u& t7 P& B- z* a
u1(i,j)=x(1);
& W2 I8 m C( k) M& Y! t+ N+ s v1(i,j)=x(2);
: A; G8 c2 _7 c" c% c* q" n x01(i,j)=u1(i,j);
0 _/ B4 {' [+ ]' l0 B {! Y4 z$ s' } y01(i,j)=v1(i,j).*sin(beta)-db/2;3 L- [% a0 J g4 W
z01(i,j)=v1(i,j).*cos(beta);0 [2 T9 Y) n3 P 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));4 @- V( U N, R! E4 E/ P+ i; m+ e
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));
9 U2 c9 {8 E0 {; X" y4 r- `( [ z11(i,j)=-sin(phi0(i)).*x01(i,j)-cos(phi0(i)).*y01(i,j);
1 H9 i( {+ c- }( d X end
2 h8 `: [& u0 E# M; D: l) D plot3(x11(i,,y11(i,,z11(i,,'r')5 p! C0 B. X& U1 e: G+ x) w: O# i" Y
hold on
& S4 L& n, {" {; C Iend. v: i; B# N* w- J7 I: I( P/ t
axis equal
) C2 ~: p- j; g& J# w9 h3 N6 F8 ]0 U% [- {
figure(1)3 A$ o) l7 ?9 o2 P
for i=1:length(phi0)! Y: u& a; g9 z4 E2 G2 r# T$ b! W" }
for j=1:length(R)
- }3 l2 n3 r# n& z8 Z8 C 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)];
) c% q( _3 `) ]& v options=optimset('Display','off','TolFun',1e-7);1 C$ T4 ~7 K; g7 }' Q' W
x0=[u0 0];
3 {# o: S; ]4 \ x=fsolve(f2,x0,options);
, O+ {4 N) a# K) s# l u2(i,j)=x(1);
( Q1 y; G9 h5 b" h' P: o# I, | v2(i,j)=x(2);* N( B/ V8 R6 E4 l9 _0 |$ P- n
x03(i,j)=u2(i,j);" K G2 V# o$ J' h6 n
y03(i,j)=v2(i,j).*sin(beta)+db/2;$ Z3 }( G/ y9 v1 G) T4 N' @
z03(i,j)=v2(i,j).*cos(beta);, N* x3 D- F" j2 S! Y0 H- r
x02(i,j)=x03(i,j).*cos(cath)+y03(i,j).*sin(cath);# H+ L/ a& r5 W
y02(i,j)=-x03(i,j).*sin(cath)+y03(i,j).*cos(cath);% _4 e8 K2 }. i9 d# ]
z02(i,j)=z03(i,j);
7 B0 |2 y! P! V 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));$ M. Y7 z9 K1 t @
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)); ^ X) q2 P3 \* H
z12(i,j)=-sin(phi0(i)).*x02(i,j)-cos(phi0(i)).*y02(i,j);
4 d5 d3 q. Q! }2 W7 Y2 ] end
z0 ?- N( w& u7 M+ L: { plot3(x12(i,:),y12(i,:),z12(i,:))
i) d4 L6 f! b4 f& X2 O hold on
! j. W1 c3 C6 s3 A8 p% E$ G5 dend% m. f' S( l, u! `8 {
axis equal
+ @9 \1 P0 A% H, M% I" P& `' B, Z$ E% W9 e* X% D1 k! I |
figure(2)
- p+ V2 Y, f$ Z9 w3 u; H7 V$ vfor j=1:length(R)
8 ]: j# U, H6 [# |. v% x8 ?; a" J. u plot3(x11(:,j),y11(:,j),z11(:,j),'r')
! ?- L* ~1 @6 B$ u& o( m hold on
- y' T- }/ R2 G! z& }: Wend
* n D, f: p. r8 paxis equal2 R, {8 `! z U3 \. T. {
figure(2)
( R3 G9 Q( ?: a& B* n3 e4 B" Ffor j=1:length(R)
& M: [ N3 s) }( ~4 X1 U, F plot3(x12(:,j),y12(:,j),z12(:,j))
7 Z5 y( K& B: h. |. T' h hold on7 P- \. c: s. b2 N2 \# M* m
end
; g! X# E- r" R+ b# Eaxis equal
1 P1 W% d# a2 G7 h) @/ m5 I$ I5 z/ t( u
x13=x11';%转换为螺旋线的格式
) o) U0 p1 p# q# H: i" _, Gy13=y11';' U3 K G& o3 f9 D+ a: E1 h
z13=z11';
1 e) i5 J7 n+ n' R8 ~& Y% g3 |4 Ix14=x12';
! T. j- _3 `2 ]) |2 oy14=y12';
, `( j+ W' D' H0 @) }7 o/ {z14=z12';
( A8 b/ z6 y9 x- t
( X0 n" m7 S$ G/ O9 }for i=1:length(R)
) o4 z9 A% ]2 g! K& c: X0 U2 o# {% r for j=1:length(phi0)
6 p1 N# t( d- f W o0 s% c: u theta1(i,j)=cal_theta(x13(i,j),y13(i,j))/pi*180;
/ v, c6 Z, v; b- v R1(i,j)=(x13(i,j)^2+y13(i,j)^2)^0.5;%车床X方向为直径值
t- A9 x: J7 A3 U) A6 A( d7 b Z1(i,j)=z13(i,j);
# `1 D' B Y4 Q) e# n: A theta2(i,j)=cal_theta(x14(i,j),y14(i,j))/pi*180;( w6 z9 ~, I4 a& T6 K4 n
R2(i,j)=(x14(i,j)^2+y14(i,j)^2)^0.5;" a. G- G3 U" F' F6 Z) g
Z2(i,j)=z14(i,j);
- S# @4 l k: d' N end
" W1 @5 ~. E2 Q4 B4 ^end
8 f9 o. ^9 p. @6 Y! B( I5 G. h: Y
%角度转换为绝对式4 M; z5 k- o3 N5 Y- a: k
for i=1:length(R)
7 |8 ], }9 S# V& z9 W7 q- F v for j=1length(phi0)-1)
$ o. _$ D# @9 _, }- L) l5 Z4 D7 f if theta1(i,j+1)<theta1(i,j)6 L; ]; N( Z& @
for k=(j+1):length(phi0)+ c% ~, x1 v1 o, g0 k9 |
theta1(i,k)=theta1(i,k)+360;
, d- _: K; Y+ g% n1 t end
& {9 Z) D& R7 ]; T end
2 b+ ^. X8 s; i1 [# J. Q if theta2(i,j+1)<theta2(i,j)
0 N1 f8 R2 M( o7 o for k=(j+1):length(phi0)2 W8 U( F: O c, ~+ O5 E: `: u* n
theta2(i,k)=theta2(i,k)+360;- a1 m6 ~, T* \. R* e/ r r! j
end
- @+ V. H1 @1 U7 I; V4 P end- K! ]/ X: [! v4 X: L% _, |3 P7 B
end; [! V. d( m4 [$ a" U
end
" e/ h2 X% Q q8 M! j3 ?) g. }( f+ K
assignin('base','X1',R1)
7 {3 V; H& q$ G9 g$ I Fassignin('base','Z1',Z1)0 _ A+ X% d; f" T# I% p6 y
assignin('base','C1',theta1)) u& _8 j; ~# w7 `8 U
assignin('base','X2',R2)
0 ~, h7 U) R" D4 A; w% v) f/ Q; }assignin('base','Z2',Z2)6 {0 a' D" [7 X) ~8 N/ v# X% p
assignin('base','C2',theta2)1 ?7 K$ p2 ?3 l4 k" p
$ p0 }7 i. W6 S4 v
%G代码的输出
$ C8 ]/ v$ i3 [. Z% fid=fopen('turncode.txt','wt'); @# w; T5 j' B- N8 e1 P- h$ d
% fprintf(fid,'O0001\n');
0 i/ J5 m ^3 {7 T7 X- d% for i=1:length(R)4 N" a! K7 @; s8 K3 ^' \
% for j=1:length(phi0)
( w1 }, L+ Q+ K: Y+ N1 L% fprintf(fid,'X=%0.4f\t',R1(i,j))9 G% t8 k. M( M$ ]# S+ r7 S
% fprintf(fid,'Z=%0.4f\t',Z1(i,j))
- R, Q% v% h$ Y: w% H* p% fprintf(fid,'C=%0.4f\n',theta1(i,j))
% V1 y/ ~: w$ V8 I% end3 C( Y( P6 x; ^7 K8 X; U
% end
) v7 F" v( p% E# t0 C
I' ?5 J$ R; O1 T& t) b
. E( z ^0 v: z: u( {' X5 s9 g7 t' _& m( R! A; J5 E$ o
- _3 ]; `1 p6 J0 e: F$ i
function theta=cal_theta(x1,y1)
6 X6 b( j% g. X% z" g7 T* @if (x1>0)&&(y1<0)3 j: g% M6 B" F3 n. v! ^- o; O4 F
theta=acos(x1./(x1^2+y1^2)^0.5);%电机转是角度还是弧度?2 ~ N. ^" x9 N. j" C
elseif (x1<0)&&(y1<0);
% K8 \* c' _. t& a. Vtheta=acos(x1./(x1^2+y1^2)^0.5);) P: N& B, p# J- z6 M( X
elseif (x1<0)&&(y1>0);
/ C# j, D$ h) \5 E theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);5 U1 {3 y$ j, J1 r U" H
elseif (x1>0)&&(y1>0);! b$ L; a2 z) M* `
theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);) e: O/ g/ R# o3 I
elseif (x1>0)&&(y1>0);
( _ \0 r9 B: J7 Z theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);
6 C) U+ T- G3 h# telseif (x1>0)&&(y1==0);
6 B, J" m7 N# e/ H7 d+ y l6 u( v theta=0;$ N: o0 _8 [( k* f
elseif (x1<0)&&(y1==0);1 f; s; D: |* `* w3 Y/ x7 E
theta=pi;
4 P j. Q1 @+ ?. \* ^) @* g! Welseif (x1==0)&&(y1<0);
0 J" q8 H; L4 F# s* j3 _6 j theta=pi/2;( U: ?( G- K8 ]: g+ X% c6 ^
elseif (x1==0)&&(y1>0);- ?, h% O5 g, F1 y4 ~7 j0 n
theta=3*pi/2;
) o5 O& y' V6 u7 D( S" W1 Vend |
|