|
function worm33 W1 j) V; |% G4 Y
clear
9 o, O9 p8 d/ z* l8 b0 [0 M- oclc5 p$ ~& S6 U/ M6 X
a=240.65;%中心距
" e1 z- O: J* W9 A% N, H! z8 @/ K+ Cz1=1;%蝸桿頭數
: n! E" Y% v! J4 t( Wz2=40;%齒輪齒數
8 b5 V# i& h* x( v- x2 Ki12=z2/z1;%傳動比; ^: h4 {0 D8 A2 d n* h9 ]
zc=4;%蝸桿包圍蝸輪齒數3 e2 S4 y& h( \( a, D# Z
d1=80;%蝸桿分度圓直徑
' f5 y Y" D. C# n" ^d2=2*a-d1;%蝸輪分度圓直徑
. K: q" V( a8 ?8 ^/ j tmt=d2/z2;%蝸輪端面模數+ u' z: E9 ]6 U% I' [; H. v
da2=417.36;%蝸輪齒頂圓直徑
" B |9 Y9 b2 s) h+ h* e- Bdf2=381.24;%蝸輪齒根圓直徑) C4 j* v( r5 j p6 c3 L' J
ha=(da2-d2)/2;%齒頂高% g# ^7 R; W$ L2 S9 R
hf=(d2-df2)/2;%齒根高
; [$ u5 l& w$ u9 [6 @) r, c& z' @da1=d1+2*ha;%蝸桿頂圓直徑
1 ^+ _2 E- F/ r7 o+ O+ hdf1=d1-2*hf;%蝸桿根圓直徑
0 F# x3 V3 w9 W: I7 Y0 bRf1=a-df1/2;%蝸桿齒根圓弧半徑
, y! _! R6 X- `9 Q' m/ KRa1=a-da1/2;%蝸桿齒頂圓弧半徑
: B) [3 P- [7 _' ?# w9 L0 _3 ugama=atan(d2/d1/i12);%蝸桿喉部分度圓導程角! K: S' _' m: C8 H
tau=2*pi/z2;%齒距角
2 H) c# D( Y$ o; P% n7 A) V l. Ndb=153;%主基圓直徑
, _) o1 L+ L4 d' o% ? b: [. zalpha=asin(db/d2);%蝸輪分度圓壓力角
: Q. C+ R, M3 w* Aphi_w=0.5*tau*(zc-0.45);%蝸桿包圍蝸輪的工作半角
( e+ R. K! _+ V- C. F: _5 a5 {phi_0=alpha-phi_w;%工作起始角1 K* J- s1 `7 x- W# V9 q6 k
Lw=d2*sin(phi_w);%蝸桿工作部分長度) Y7 U) `2 r- R6 n5 m1 ~- t9 O
beta=11/180*pi;%母平面傾斜角
5 b& B0 R# I2 P: Z1 b" Yphi0min=phi_0;
: W! j9 H- ~: E: c X, T/ Vphi0max=phi_0+2*phi_w;
! s) X2 M. h( M, i: Yu0=((d2/2)^2-(db/2)^2)^0.5;
1 H5 @2 T/ {% }/ i) [phi0=linspace(phi0min,phi0max,300);
9 y) W2 @( e* ?; b* cR=linspace(Ra1,Rf1,10);
: _/ \& M9 X3 ?! aphi1=phi0.*i12;9 I3 m( f$ |6 ?8 n
cath=2*alpha+162/z2/180*pi;
; d: E7 Y7 u' o* [; v" p9 H* w1 i6 k1 P
%預設矩陣( o! ?9 _! z- U# z& [
u1=zeros(length(phi0),length(R));v1=zeros(length(phi0),length(R));%甲面參數
% P: M N! V4 k$ |x01=zeros(length(phi0),length(R));y01=zeros(length(phi0),length(R));z01=zeros(length(phi0),length(R));%甲面的平面6 C3 C" y& m. x1 Y% [
x11=zeros(length(phi0),length(R));y11=zeros(length(phi0),length(R));z11=zeros(length(phi0),length(R));%蝸桿甲面
7 B, [+ z6 C/ c: W, Ux13=zeros(length(R),length(phi0));y13=zeros(length(R),length(phi0));z13=zeros(length(R),length(phi0));%甲面的螺旋線形式
, W% y$ [4 I$ H* J, Btheta1=zeros(length(R),length(phi0));R1=zeros(length(R),length(phi0));Z1=zeros(length(R),length(phi0));%甲面的加工參數
1 k; k# H1 M# v N
, S/ O' s3 s( D" ]& w9 Y+ Z Pu2=zeros(length(phi0),length(R));v2=zeros(length(phi0),length(R));%乙面參數
' ~+ G& P9 t3 yx03=zeros(length(phi0),length(R));y03=zeros(length(phi0),length(R));z03=zeros(length(phi0),length(R));%乙面的平面
" L. M( F0 ~8 o$ j6 T9 [3 Q8 Sx02=zeros(length(phi0),length(R));y02=zeros(length(phi0),length(R));z02=zeros(length(phi0),length(R));%乙面的平面
2 K+ o2 |' @& Q" ]x12=zeros(length(phi0),length(R));y12=zeros(length(phi0),length(R));z12=zeros(length(phi0),length(R));%蝸桿乙面! c0 H) I$ p0 n2 B
x14=zeros(length(R),length(phi0));y14=zeros(length(R),length(phi0));z14=zeros(length(R),length(phi0));%甲面的螺旋線形式
9 c% Z' K9 u: @( W# q1 xtheta2=zeros(length(R),length(phi0));R2=zeros(length(R),length(phi0));Z2=zeros(length(R),length(phi0));%甲面的加工參數
- g; I6 I2 _/ \) e8 ]% ]5 v( k1 f
figure(1)
5 c* u9 q( W# U) f8 ?for i=1:length(phi0)
; Y$ e" h5 c9 M. Q for j=1:length(R)
7 }5 v& m2 N2 y 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)];
5 Z0 e* Z, {) J options=optimset('Display','off','TolFun',1e-7);$ B3 Q, @3 }- |1 [# u4 v
x0=[u0 0];2 S6 D5 q( k# q4 W/ W- ~% P3 f
x=fsolve(f1,x0,options);
3 M0 ?! U/ c6 \: ]. |4 z0 B9 Y+ B u1(i,j)=x(1);2 q8 p% @6 V' D) ^& D& C7 Q
v1(i,j)=x(2);' o' e% t- B$ g6 j
x01(i,j)=u1(i,j);$ j* r7 J/ q2 Y3 q' U
y01(i,j)=v1(i,j).*sin(beta)-db/2;
$ ]' n& _. S7 m( b$ E3 |) K8 W z01(i,j)=v1(i,j).*cos(beta);
1 F9 I* ?; g/ ^/ V+ X 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));" t- P) x5 t* s/ n
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));
# v% _6 f2 ]4 z8 d" e0 M; w z11(i,j)=-sin(phi0(i)).*x01(i,j)-cos(phi0(i)).*y01(i,j);
1 M! V& s1 [# ~' G end
3 v* p! s0 I3 \0 `4 G. K' F plot3(x11(i, ,y11(i, ,z11(i, ,'r')
`+ R6 v0 O. O; S hold on/ _& ~& R" V$ Q0 a; }8 n! Z
end7 m/ C8 X7 S: s3 W* }
axis equal
F9 ~" a! G" R9 n" _; c+ ~" ?* Z
1 b0 x# x- c. T& G! R- N8 c# j+ jfigure(1), h. v r5 \# Y# c# V
for i=1:length(phi0)
7 k) \! \) T( m5 _/ K- J for j=1:length(R)
1 e2 g" d3 v' y' k 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)];9 A3 |( A% Z% h3 V' M
options=optimset('Display','off','TolFun',1e-7);
5 G1 {; d) x. O9 ]9 a x0=[u0 0];2 t y/ J1 h" z9 D( r
x=fsolve(f2,x0,options);' I3 D+ E' O4 t" G
u2(i,j)=x(1);
j, z+ F; g6 ^9 z9 j0 H4 \ v2(i,j)=x(2);9 o `! ^6 T2 f
x03(i,j)=u2(i,j);
. V% K# A: G$ w# F: @ y03(i,j)=v2(i,j).*sin(beta)+db/2;
+ Y4 i3 A; ^! ~6 o$ @( i+ p' z$ w4 b3 m z03(i,j)=v2(i,j).*cos(beta);
2 l) M2 x2 X. s8 g- J) d' |9 [+ L, Q x02(i,j)=x03(i,j).*cos(cath)+y03(i,j).*sin(cath);
* Y. X7 a9 `, q/ b" a( | y02(i,j)=-x03(i,j).*sin(cath)+y03(i,j).*cos(cath);( e; _3 a. I, z6 j- M. l. @
z02(i,j)=z03(i,j);' ^; d. B8 R3 o3 j9 f8 r) ^3 \
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$ E: t7 W4 u' r, d4 w' n
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));$ {3 ^, d/ H; T) p$ g/ J* c( A# C
z12(i,j)=-sin(phi0(i)).*x02(i,j)-cos(phi0(i)).*y02(i,j);6 U) F3 ]* x( q3 K( O
end
5 q- p+ k+ F: C plot3(x12(i,:),y12(i,:),z12(i,:))' k) @. p4 k, H0 Y$ G
hold on
" g9 [; E- M; Rend9 \1 U8 |, c& a# j* W/ v
axis equal* v+ I& D" T" N5 N
/ O4 q. P5 {# ^- o
figure(2)+ @/ U! N! Y: @2 v7 I
for j=1:length(R)
+ q. h+ M8 n4 y7 i plot3(x11(:,j),y11(:,j),z11(:,j),'r')3 A: z* {6 ]& b8 c, M/ D: Q
hold on0 a% W% A' v/ |+ [
end3 Y: P+ e A0 f2 X0 l* W
axis equal
+ _8 y& P" B" M, bfigure(2)
. X5 U; _( z% ^9 pfor j=1:length(R) 5 o' g1 S7 E* D# F" ^, C9 D
plot3(x12(:,j),y12(:,j),z12(:,j))
5 {/ d3 J7 }; x0 ~6 { hold on6 J5 n/ S0 R8 `" E: D% T& g$ E
end
+ W. ^5 D9 x+ M, U) k5 x7 Laxis equal
) w$ |3 [+ o8 _/ U& A3 E
8 x1 s9 l. B9 [0 R+ H# W' I) ax13=x11';%轉換為螺旋線的格式; q: ?3 e( \4 K5 z3 C
y13=y11';
" Z$ N* R$ C$ X: Iz13=z11';8 v; M8 k' n% q# v" K q
x14=x12';! `( d# O: `; i v6 |
y14=y12';
9 ?; K& B: v* a& r, F5 u8 F& R" Bz14=z12';
# v N6 [! I$ K" X7 V' R# P* y+ {! S2 p
for i=1:length(R)
1 O+ s' L# r- s5 r for j=1:length(phi0)
% t$ d2 t$ C7 Y& e p8 v# } theta1(i,j)=cal_theta(x13(i,j),y13(i,j))/pi*180;2 h) n7 K& S# u) b2 E1 `
R1(i,j)=(x13(i,j)^2+y13(i,j)^2)^0.5;%車床X方向為直徑值
3 h7 F. I" F/ q/ X Z1(i,j)=z13(i,j);
$ G9 s, T6 g1 E/ r K theta2(i,j)=cal_theta(x14(i,j),y14(i,j))/pi*180;
8 Y; G& B5 y9 O3 } R2(i,j)=(x14(i,j)^2+y14(i,j)^2)^0.5;
. c6 s& S: o. s# _4 c4 W- N Z2(i,j)=z14(i,j);
" b6 [. A- Y5 d9 T, l end6 J9 y3 I/ Y) p) g8 M! \
end
) R# c) V3 q4 E% ~* M5 H, c3 S
: N7 ?: P! f- ]( \$ P%角度轉換為絕對式( N+ ^/ K# O, G1 F
for i=1:length(R)- \+ @; r8 M4 {! F$ L4 U
for j=1 length(phi0)-1)
\ u) r( D( ?& V( g if theta1(i,j+1)<theta1(i,j)' D- y& H" F( u& z" J8 [, D
for k=(j+1):length(phi0), t# u( R+ I7 w. e
theta1(i,k)=theta1(i,k)+360;
, s' h$ G6 a$ v6 D: J1 I7 U end$ f8 @& d8 M; _3 g- v& L B
end5 T( @- A+ W& d4 A' s
if theta2(i,j+1)<theta2(i,j)* b$ Q1 X8 H( w" ^" h$ i& _
for k=(j+1):length(phi0) Q: ?0 O/ X$ c! A
theta2(i,k)=theta2(i,k)+360;. D7 Q9 E$ A* ?" n4 b+ ~
end
* I" i3 _9 ?% S, V4 D9 B end1 w% Z) I: _: E `9 Z+ I! V
end
- h1 N0 x) h; y9 `1 Rend, ?' ], `5 o- R! A1 ]; s- r7 f* O
# k: Y' x8 Q. h% ~- v1 h( f/ Sassignin('base','X1',R1)
! w) R) b! N o) w( A+ Passignin('base','Z1',Z1)# Q7 Q5 l" |) M4 w' }: [- I3 i
assignin('base','C1',theta1)
9 O: H+ D6 |5 v% i% {assignin('base','X2',R2)0 Y9 v% p5 Y" w8 P1 u0 Z
assignin('base','Z2',Z2)5 F8 S4 F: M# N; e4 P6 k. o" R! _
assignin('base','C2',theta2)2 u" f ]6 F3 w$ {& } q7 r
0 H' l/ ^; |3 f B* {2 h
%G代碼的輸出
. L2 |' B# m5 m4 }% fid=fopen('turncode.txt','wt');7 q3 z' t+ ]- r* f( c. X3 P
% fprintf(fid,'O0001\n');
# Y& C9 b! k/ d$ b% for i=1:length(R)
6 g# F1 p' K& z/ I2 M% for j=1:length(phi0)
8 W' D4 y ^ C% fprintf(fid,'X=%0.4f\t',R1(i,j))+ v5 l' U9 X2 L/ Y. F- y2 {9 i
% fprintf(fid,'Z=%0.4f\t',Z1(i,j))
2 J* r/ k$ U( ?$ U' g- F5 q& C% fprintf(fid,'C=%0.4f\n',theta1(i,j))
+ C# f7 w+ o+ @+ s2 F% end
9 q+ \; P! |. j! m. v- `% end
2 R; K2 b. t2 D8 w$ {4 j, r4 v: ~) I& R+ g4 o% h
9 L9 V$ K' v9 P/ u6 }
7 I2 F4 P( V0 Z( d9 p9 }/ {
6 b6 U; l5 h, l# y/ I
function theta=cal_theta(x1,y1)
C9 Q, ~* M* z1 u' @3 Wif (x1>0)&&(y1<0)
( N0 {4 r2 B! h% n; c; `# g! G! T theta=acos(x1./(x1^2+y1^2)^0.5);%電機轉是角度還是弧度?
" S% a# h! @$ T: t& telseif (x1<0)&&(y1<0);9 @8 `# z0 ~# w8 I) h! ~' N
theta=acos(x1./(x1^2+y1^2)^0.5);
4 r5 k; Q% d$ Z' J) @6 n" Melseif (x1<0)&&(y1>0);
0 \: V, |0 _! h6 ~ theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);
1 ] j# ]; A! U9 h' Welseif (x1>0)&&(y1>0);
9 @' p9 E; X0 L C/ j theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);
3 n# f, n6 c; Q0 O4 w9 m' f% yelseif (x1>0)&&(y1>0);3 M: w l" u: m; v# V3 D* {
theta=2*pi-acos(x1./(x1^2+y1^2)^0.5);
# R1 S( L: e$ Melseif (x1>0)&&(y1==0);
4 @' {# F4 s# D8 m9 L0 Y* J, h theta=0;( q1 t& x* F7 M1 }
elseif (x1<0)&&(y1==0);. i0 v% ]. ]: }0 _- ]: a- G0 p7 w0 r9 P
theta=pi; u6 d7 o% F ]) w5 S7 Y% q/ _
elseif (x1==0)&&(y1<0);
2 `- h7 {. }% O! X( ~; \ theta=pi/2;# r4 z$ o& P. K6 z
elseif (x1==0)&&(y1>0);* d& |! M1 _, ?
theta=3*pi/2;
" m% C- u* ~5 b* K- m2 cend |
|