|
楼主 |
发表于 2014-5-29 18:58:45
|
显示全部楼层
function worm3
: o9 W- X7 y% bclear
: L, K1 g; i; t7 mclc, o, `$ c1 g1 ]- N I% F% K
a=240.65;%中心距: f, ], p& |9 o1 x& s+ z
z1=1;%蜗杆头数
1 A0 ^& O: m5 W# [1 P- ?z2=40;%齿轮齿数
4 X: d I9 \ H6 ri12=z2/z1;%传动比+ W' ]' P" a/ M& v- J+ q
zc=4;%蜗杆包围蜗轮齿数& M3 D: ~. _" ?) [. c; [0 u
d1=80;%蜗杆分度圆直径
; _( B# \& T3 Ld2=2*a-d1;%蜗轮分度圆直径; h2 e6 v5 v* E2 w" l
mt=d2/z2;%蜗轮端面模数
) U9 [, g( u4 e* L, C6 @, |da2=417.36;%蜗轮齿顶圆直径4 l+ W1 O j; j1 R( o) x
df2=381.24;%蜗轮齿根圆直径
7 C( V# P4 |8 k8 iha=(da2-d2)/2;%齿顶高3 W+ U% m' t9 n d) T# @. J
hf=(d2-df2)/2;%齿根高+ Y$ [9 g3 C" \7 `9 y' c* j0 T$ `
da1=d1+2*ha;%蜗杆顶圆直径/ u- j* G" ~. n" X1 K
df1=d1-2*hf;%蜗杆根圆直径
6 y% }" S. t) }" S$ aRf1=a-df1/2;%蜗杆齿根圆弧半径
; X( T/ _, f) c3 L$ YRa1=a-da1/2;%蜗杆齿顶圆弧半径2 K+ Z2 m& f. b$ a; [
gama=atan(d2/d1/i12);%蜗杆喉部分度圆导程角1 K% P* E- n/ e# F/ q. T
tau=2*pi/z2;%齿距角
. O c* c7 Z y' H* o6 edb=153;%主基圆直径( Y0 i! x4 R4 y" V3 i! ?
alpha=asin(db/d2);%蜗轮分度圆压力角
6 Y& N! U! a& g9 ]2 T6 qphi_w=0.5*tau*(zc-0.45);%蜗杆包围蜗轮的工作半角
# d+ N: I/ t' V# y1 o8 ~ ~phi_0=alpha-phi_w;%工作起始角9 S1 p1 b. r9 P4 e
Lw=d2*sin(phi_w);%蜗杆工作部分长度# ~: N. \. v& z
beta=11/180*pi;%母平面倾斜角
) G& D$ b& i6 ]phi0min=phi_0;3 O9 @! R6 M9 Z3 p) u4 R
phi0max=phi_0+2*phi_w; M6 [/ N% V* a6 B7 d9 `
u0=((d2/2)^2-(db/2)^2)^0.5;
" a: x/ _/ d* Y% b7 v4 F5 Jphi0=linspace(phi0min,phi0max,300);) n( X. A+ }2 y1 P+ o2 F2 W
R=linspace(Ra1,Rf1,10);+ s' h+ A. \$ x
phi1=phi0.*i12;
/ I' O: m0 t7 q7 Bcath=2*alpha+162/z2/180*pi;) K7 _6 a! _9 C- f# n, A; a: V" a" c
* w3 Q) N: F2 M+ _2 R }
%预设矩阵# j! h$ b# @' G- c) u" W
u1=zeros(length(phi0),length(R));v1=zeros(length(phi0),length(R));%甲面参数
! e9 R2 S) a% P# X8 lx01=zeros(length(phi0),length(R));y01=zeros(length(phi0),length(R));z01=zeros(length(phi0),length(R));%甲面的平面
' z$ b7 I+ L h1 z2 q8 s0 b/ M2 sx11=zeros(length(phi0),length(R));y11=zeros(length(phi0),length(R));z11=zeros(length(phi0),length(R));%蜗杆甲面
' O* j* x7 k1 b" e$ i+ E; F, n. b$ dx13=zeros(length(R),length(phi0));y13=zeros(length(R),length(phi0));z13=zeros(length(R),length(phi0));%甲面的螺旋线形式, Q5 g. B9 o- c+ J- }% Y
theta1=zeros(length(R),length(phi0));R1=zeros(length(R),length(phi0));Z1=zeros(length(R),length(phi0));%甲面的加工参数3 ^6 Y( q h& i+ O
3 j9 R' R4 V5 q5 r" Qu2=zeros(length(phi0),length(R));v2=zeros(length(phi0),length(R));%乙面参数" ~) N6 z9 e+ \, W, @; A* c0 l. a
x03=zeros(length(phi0),length(R));y03=zeros(length(phi0),length(R));z03=zeros(length(phi0),length(R));%乙面的平面
8 R0 [. \. z1 K& |2 y5 B# ox02=zeros(length(phi0),length(R));y02=zeros(length(phi0),length(R));z02=zeros(length(phi0),length(R));%乙面的平面6 n" Q5 M, s, _5 q' O2 s
x12=zeros(length(phi0),length(R));y12=zeros(length(phi0),length(R));z12=zeros(length(phi0),length(R));%蜗杆乙面
$ v! ]1 O% u; Q% m! ^7 j6 ix14=zeros(length(R),length(phi0));y14=zeros(length(R),length(phi0));z14=zeros(length(R),length(phi0));%甲面的螺旋线形式1 K1 c) V8 x! n2 n; L
theta2=zeros(length(R),length(phi0));R2=zeros(length(R),length(phi0));Z2=zeros(length(R),length(phi0));%甲面的加工参数
, l4 W: {7 C) x# T0 V- z$ {/ ?1 |9 j* L3 B8 ~7 g" W* _
figure(1)7 C2 {' }7 b D+ v$ K+ k3 F! ~( c
for i=1:length(phi0); F% M% W- {3 M( b
for j=1:length(R)
, W* ]1 l* C" H* P 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)];, Y, p6 i0 _" o4 O
options=optimset('Display','off','TolFun',1e-7);7 E1 a9 @0 o. ~/ S" A
x0=[u0 0];7 F% X1 }4 U1 V: W! D
x=fsolve(f1,x0,options);
% |: c* h. A/ R# A1 @1 s# J- X: S u1(i,j)=x(1);
$ k7 H" _5 ^: Z- g1 W* V! M v1(i,j)=x(2);/ \6 L p! E" P- P5 v
x01(i,j)=u1(i,j);
" f$ m5 h; Q: p7 e0 [) } y01(i,j)=v1(i,j).*sin(beta)-db/2;
3 p9 l' C# L+ Y) ~ z01(i,j)=v1(i,j).*cos(beta);4 X' n* @# Z. J
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));
. y# W' u% M8 }% O: { V 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));
b) V: u1 E, y: T: } z11(i,j)=-sin(phi0(i)).*x01(i,j)-cos(phi0(i)).*y01(i,j);, W6 p0 R P# j* o8 D
end
3 C/ t4 l7 J8 B plot3(x11(i, ,y11(i, ,z11(i, ,'r')
5 }6 m1 ^, I4 Q# ?! L7 t% x# n) y hold on
) `4 Q) ]1 E/ x& F' c# A$ T: iend
) `! n) a+ M4 u4 H5 `" M raxis equal
- X7 s" M' r$ W' P* i/ S
% W9 s- I: |0 n2 c0 y. Kfigure(1)) K% ?' p6 Q/ K( G- a' u
for i=1:length(phi0)
7 w" D$ C2 R- C/ h4 K for j=1:length(R). _# \% L# z( a7 y8 D* v m+ ~
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)];
5 ]0 E( o' u* ^. a8 C options=optimset('Display','off','TolFun',1e-7);2 e0 u) P |) w
x0=[u0 0];
: P3 \% l7 m# O3 a1 n0 i+ T2 V x=fsolve(f2,x0,options);
$ F1 e9 _3 J5 v$ n u2(i,j)=x(1);8 T5 m [, b7 @) ^6 u
v2(i,j)=x(2);' n" \0 d7 R6 M
x03(i,j)=u2(i,j);& l" `( c6 e- J
y03(i,j)=v2(i,j).*sin(beta)+db/2;
- v: S V7 t- W z03(i,j)=v2(i,j).*cos(beta);
) \6 ^9 `% B8 S7 E9 b( o& t! I x02(i,j)=x03(i,j).*cos(cath)+y03(i,j).*sin(cath);+ l5 r( L* Y0 c4 l, M+ S o
y02(i,j)=-x03(i,j).*sin(cath)+y03(i,j).*cos(cath);' s3 [8 x3 e% N2 Z, }' l1 C
z02(i,j)=z03(i,j);
- P: J2 D- B' D( I 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));
u* ]" g! [, v% ` 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));( z0 k. u5 M' ]" C
z12(i,j)=-sin(phi0(i)).*x02(i,j)-cos(phi0(i)).*y02(i,j);! w3 |& h6 \, P+ {
end( a% g4 e5 k! g/ E, ?
plot3(x12(i,:),y12(i,:),z12(i,:))
% v0 T. O: b2 K4 }# @; H( ~ hold on; l P0 g# k, ~% n7 N& I# ^
end( o9 P; U0 K# _ n% C$ U$ o
axis equal' e, F/ g. ~8 k7 p) Z
2 L: d# ^$ o7 o5 J' s- o
figure(2): c; x, v" }/ T. S
for j=1:length(R) ! [6 p4 F5 a4 A6 E! f% f
plot3(x11(:,j),y11(:,j),z11(:,j),'r')
/ G! c B- C- f- O" |2 V& |. z hold on
! q5 f5 P) }9 ~" L2 tend B9 R+ P ]6 V& K. a! _7 K
axis equal
% @* B$ j( x& kfigure(2)7 B. B1 l& C9 O3 X2 w6 p n
for j=1:length(R)
: B1 Q% K7 N2 n7 c plot3(x12(:,j),y12(:,j),z12(:,j)): c) @& Y+ Z. N; x) U3 K: k! q( V
hold on/ s5 D" }' Q3 V
end/ p* K# @6 ?7 T# `
axis equal
2 }; ] c& F$ v1 L0 K! Q- O( s4 J# ~+ }
x13=x11';%转换为螺旋线的格式
3 S6 u0 E9 g% U9 E5 c( o* N/ o1 Yy13=y11';
" Q L% H6 K7 C" @% i, Uz13=z11';
6 E, X9 |0 L4 r5 \# B, Y( b. e0 Gx14=x12';: @: }) T3 V) l' U
y14=y12';
: q( u- w. X. U0 w; ^" Iz14=z12';
, M6 |" H, A1 V
/ T& L- L' {' `: X) y6 Bfor i=1:length(R). a8 d( \7 e3 e( i4 o1 H6 F9 N
for j=1:length(phi0)5 Y1 u9 e# k7 R6 X/ U, ~
theta1(i,j)=cal_theta(x13(i,j),y13(i,j))/pi*180; j; [, K# b" R6 [! G' V4 S
R1(i,j)=(x13(i,j)^2+y13(i,j)^2)^0.5;%车床X方向为直径值
4 {% x6 n# F4 L' C' S/ T Z1(i,j)=z13(i,j);
& Z, z& P: z4 @4 U7 L+ X theta2(i,j)=cal_theta(x14(i,j),y14(i,j))/pi*180; c: s* H7 A( v& s$ B) u8 d3 [
R2(i,j)=(x14(i,j)^2+y14(i,j)^2)^0.5;9 l1 o; `% l: R8 |
Z2(i,j)=z14(i,j);
! L: D7 ]0 ]- x: m) n- ?$ \ end
7 B, J7 @5 G9 r" Y$ d; a9 w6 cend
( @. V+ s$ ^. w$ k$ U* I# y% G+ D$ P3 N9 T5 C" M4 G" g$ C
%角度转换为绝对式
C: q9 q0 q$ |2 G9 @; q1 vfor i=1:length(R)6 [+ J5 R/ @5 g a2 F% W4 `! e
for j=1 length(phi0)-1)
6 {6 p! I( r# z* R if theta1(i,j+1)<theta1(i,j)( K. n$ U- p- n& W0 m& L
for k=(j+1):length(phi0)
9 C, x3 f) Y9 T5 K- d theta1(i,k)=theta1(i,k)+360;
X- Q2 w8 B( f+ I end* Q/ B! c, [" E- r9 r& h
end7 h, N3 C B. |, Q$ p0 p, g" _* W! J
if theta2(i,j+1)<theta2(i,j)! |3 p: o2 K* F# ~, E
for k=(j+1):length(phi0)
- S L3 i! `9 e% p2 p theta2(i,k)=theta2(i,k)+360;
2 y( m0 o8 B! Z e/ `+ M end3 i4 P# X( {( m6 b$ M; k/ |7 l3 W. I+ k
end P( I7 D; p: x- A; }8 P( D8 }
end" b! u. R* w3 J( ]$ k6 [9 ?
end
* G! A$ X; _( m
( G! L2 @0 Y/ i( B; d: uassignin('base','X1',R1)' D; I' M$ ^$ s$ |5 T
assignin('base','Z1',Z1)
9 W# W% g2 s0 jassignin('base','C1',theta1). y+ V5 F8 @" u, e9 D
assignin('base','X2',R2)
/ M T6 f0 A7 {1 V% @" f; ~! `! i# Aassignin('base','Z2',Z2)
0 D. g2 u6 G: o9 }, r' v' n N3 X4 rassignin('base','C2',theta2)" ~- J8 W* u' E5 b+ ~
- n! u3 {6 q, Y%G代码的输出
' p, Z. |7 h8 g0 u8 i+ ?0 o% fid=fopen('turncode.txt','wt');
7 F1 G$ ~: c5 \ L1 u7 x% fprintf(fid,'O0001\n');
2 L/ U9 L H, t8 o4 v! z& q% for i=1:length(R)
1 C4 S7 G3 ]8 r9 r0 t4 y `% for j=1:length(phi0)! o' u" S) K) G2 y
% fprintf(fid,'X=%0.4f\t',R1(i,j))) y; \( |& V; I* F
% fprintf(fid,'Z=%0.4f\t',Z1(i,j))! @. Y3 X; s; v* y" [8 L
% fprintf(fid,'C=%0.4f\n',theta1(i,j))2 N6 C9 @( a- }* ]
% end
" o! j$ q+ |) }% P7 D L% end
6 B' K, d$ d! D' }) U0 Y: k; p/ @4 ^" B' b; v& ^ b
6 N) B H' j+ g9 o) F# ~- F* r8 r
/ |% @! l! p2 z# D6 V9 P" l! [5 m
3 J. q+ O! R! E+ S& ^! }
function theta=cal_theta(x1,y1)& h4 v( t7 z& D3 _. \
if (x1>0)&&(y1<0)
$ g% \. ?8 t* l) R1 A9 ? theta=acos(x1./(x1^2+y1^2)^0.5);%电机转是角度还是弧度?
, w1 t# P' Q2 pelseif (x1<0)&&(y1<0);- P! V J/ W" z/ x+ m* c$ |
theta=acos(x1./(x1^2+y1^2)^0.5);. Q3 |% c- O. I \
elseif (x1<0)&&(y1>0);1 m/ A% R. ?$ C% S- {9 X
theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);# ~. k7 _+ @0 f, B
elseif (x1>0)&&(y1>0);
5 S) p1 Q) `8 ?0 ^# P1 s3 L theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);
% B# x! V+ p+ m9 @+ F. kelseif (x1>0)&&(y1>0);' n4 g' ^6 J3 s @
theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);. A$ p8 j# P; J/ q
elseif (x1>0)&&(y1==0);6 f) h' P- E. v5 g5 t6 v2 y1 S
theta=0;
" i8 j9 U/ r! A5 Yelseif (x1<0)&&(y1==0);
" r+ K" s5 w6 ]: j+ N& w4 l, c) [ theta=pi;3 I8 r) V2 W! C8 q
elseif (x1==0)&&(y1<0);
4 f u5 A- q1 F; t& v3 ~; i theta=pi/2;1 ?- A0 q V& [& X4 z: z4 Y- n! W, @
elseif (x1==0)&&(y1>0); p" S5 d# \1 u6 a3 K
theta=3*pi/2;8 i9 c0 c+ h' I) r# ~$ p, b1 r
end |
|