资源描述
摘 要齿轮机构是现代机械中最重要的传动机构,应用十分广泛。它是依靠轮齿齿廓直接接触来传递运动和动力的,具有传动比恒定,传动效率高,使用寿命长,适用范围广及承载能力高等特点,但也存在对制造和安装精度要求较高以及成本较高等缺点。使用 MATLAB 编程软件可以简化齿轮设计中的计算过程,只需将参数输入就可以计算出正确的结果。此设计编写了三个程序,分别为绘制标准直齿圆柱齿轮渐开线曲面,直齿轮几何尺寸设计,以及两齿轮相对滑动系数相等时的变位系数的选择。在编写程序的过程中需用到一些特殊曲线公式,例如绘制渐开线曲面轮廓时就用到了此曲线在直角坐标系中的表达式。另外,程序在运行中可能需要在程序代码中设置初始值,以便计算出正确的结果,所选初始值的大小应尽量接近正确的结果,在计算中有可能会出现输入值相同而计算结果不同,这可能是软件本身的问题,还需要弥补。本次设计一对齿轮,根据给定的参数,使用 Matlab 计算出齿轮的其他参数及几何尺寸。关键词:齿轮机构,Matlab 计算,初始值,几何尺寸ABTRACTGears of modern machinery are the most important transmission mechanism, a wide range of applications. It is to rely on direct contact with gear tooth profile and the power to transfer the exercise. MATLAB programming software used to simplify the calculation of gear design process, simply enter the parameters you can calculate the correct results. The preparation of this design, three procedures, respectively, rendering the standard spur gear involute surfaces, the design of spur gear geometry, as well as the coefficient of relative sliding between gear changes when the same selection coefficient. In the preparation of the procedures required to process some special curve formula, such as drawing involute surface contours on the use of this curve in the Cartesian coordinate system of expression. In addition, the procedures in the operation code may need to set the initial value for the purpose of calculating the correct result, the size of the initial value selected should be as close as possible to correct the results of the calculation in the input value may be calculated the same the result is different, this may be the software itself, but also need to be filled. The design of a pair of gears, according to the given parameters, the use of Matlab to calculate the other parameters and gear geometry.This is the design of a pair of gear. In accordance with the given parameters, the use of Matlab to calculate the other parameters and gear geometry.KEY WORDS:gears,Matlab programming,Initial value,gear geometry dimension目 录目目 录录 3第一章第一章 前前 言言 51.1 MATLAB 简介51.2 变量、函数与表达式61.2.1 MATLAB 变量名的定义规则61.2.2 数学运算符号以及标点符号71.2.3 数学函数71.2.4 数组与矩阵71.2.5 MATLAB 有两种常用的工作方式7第二章第二章 渐开线齿轮机构渐开线齿轮机构 82.1 渐开线齿轮的简介82.1.1 渐开线齿廓曲线82.1.2 渐开线的极坐标方程式92.1.3 渐开线齿廓曲线的计算102.2 渐开线直齿轮变位系数的选择102.2.1 关于渐开线直齿轮变位系数102.2.2 最小变位系数的求法112.2.3 齿轮干涉对变位系数的限制112.2.4 变位齿轮的啮合传动及几何尺寸112.3 按两齿轮相对滑动系数相等时的变位系数选择13第三章第三章 使用使用 MATLABMATLAB 编写简单程序编写简单程序 153.1 Matlab 编程绘制标准直齿圆柱齿轮渐开线曲面153.1.1 制作 MATLAB 界面153.2 Matlab 编程计算直齿轮的几何尺寸183.2.1 设计 MATLAB 界面的过程183.3 按等滑动系数原则选择变位系数20结结 论论 21致致 谢谢 22参参 考考 文文 献献 23附附 录录 一一 24附附 录录 二二 27附附 录录 三三 37第一章 前 言本次设计的目的是使用 Matlab 编一个程序,实现齿轮参数及几何尺寸的计算。齿轮机构用于传递原动机与工作机之间的运动和动力。它可以实现不同的匀速运动或按预定规律变化的运动,也可以改变运动的形式,如将转动转化为移动或相反。齿轮传动是机械中应用最为广泛的一种传动装置。这是因为它具备一系列显著的优点:(1)可以实现精确的匀速和变速运动,某些精密的减速装置,其运动误差可控制在 1 角分以内。 (2)既可用于高速和重载的传动,又可用于精密和微小的机械与仪表中,目前已有圆周速度 200m/s 和传动功率 500OOKW 的齿轮装置,而在微机械中,近年已制造出直径为数十微米的齿轮。本次设计需要使用Matlab 语言。1.1 MATLAB 简介MATLAB 是“矩阵实验室”(MatrixLaboratory)的缩写,它是一种以矩阵运算为基础的交互式程序语言。它把科学计算、结果的可视化和编程都集中在一个使用非常方便的环境中。典型的 MATLAB 应用包括:数值和符号计算,数据分析、检测和可视化,建模、仿真和科学与工程绘图,应用程序接口。MATLAB 工作空间,双击 Windows 桌面上的快捷图标或者从开始菜单的程序子菜单中单击 MATLAB6.5,在屏幕上创建一个 MATLAB 窗口。如图 1-1 所示:图 1-1 Matlab 主界面它主要包括以下几个窗口:Command Window(指令窗口):MAI,LAB 指令窗是 MATLAB 十分重要的组成部分,是用户与 MATLAB 进行交互的主要场所,是直接运行函数和脚本的窗体。在提示符后直接输入命令,按 Enter 键,该命令行即被执行 Current Directory(当前路径浏览器):当前路径浏览器是 MATLAB 系统文件保存、操作的默认路径管理器。在当前路径管理器用户可以查看、重命名或删除当前路径文件或文件夹,也可以改变文件默认保存路径,甚至可以对文件进行打开、执行等一系列操作。Workspace(工作台窗口):该程序窗口中列出了程序计算过程中产生的变量及其对应的数据的尺寸、字节和类型。选中一个变量,单击鼠标右键则可根据菜单进行相应的操作。Command History(指令历史窗口):该窗口记录用户每一次开启 MATLAB 的时间,以及每一次开启 MAILAB 后在 MATLAB 指令窗口中运行过的所有指令行。这些指令可以通过双击再次执行,也可以通过复制、粘贴来实现指令窗导入历史指令。Help Browser(帮助浏览器):查看或查询所有帮助文档。LaunchPad(发布平台):提供对工具箱演示程序和文档的访问。1.2 变量、函数与表达式1.2.1 MATLAB 变量名的定义规则变量名对大小写敏感,变量名第一个字符必须为英文字母,而且不能超过 63个字符,变量名可以包含字母、下划线、数字,但是不能为空格、标点等。在MATLAB 中,如果没有定义则不能对符号进行引用,在对变量进行引用时需要先用syms 命令创建符号变量和表达式。如:syms,常用特殊变量:ans:预设的缺省结果变量名;pi:圆周率 1.2.2 数学运算符号以及标点符号“+”加法运算:用于两个数相加或两个同阶矩阵相加;“-”减法运算:用于两个数相减或两个同阶矩阵相减;“*”乘法运算:用于两个数相乘或两个可乘矩阵相乘;“.*”点乘运算:用于两个同阶矩阵对应元素相乘;“./”点除运算:适用于两个同阶矩阵对应元素相除;“A”乘幂运算:适用于一个方阵的多少次方;“”反斜杠:表示左除,如 x=AB 可以得到矩阵方程 Ax=B 的解。MATLAB 每条命令后面为逗号或无标号,则显示命令结果;若命令后为分号,则禁止显示结果;“%”文字为注释;“”表示续行。1.2.3 数学函数下面给出 MATLAB 常用数学函数:)sin(x正弦函数;)cos(x 余弦函数;)sin(xa反正弦函数; )cos(xa反余弦函数,MATLAB 中函数的共同特点:若自变量x为矩阵,则函数值也为x的同阶矩阵。即对x的每一元素分别求函数值;若自变量x为通常情况下的一个数据,则函数值是对应于x的一个数据。1.2.4 数组与矩阵数组元素的查询和赋值:)(ix表示查询数组x的第i个元素;):(cbax表示查询数组x的从第a个元素开始步长为b到第c个元素;今 x=(2579)表示查询数组x的 2、5、7、9 个元素;今jix: )(x,表示给数组x的第i个元素重新赋值j。矩阵的建立:逗号或空格用于分隔某一行的元素,分号用于区分不同的行,回车也表示开始一个新行。其他字符串函数:num2str:数值转换成字符串;1.2.5 MATLAB 有两种常用的工作方式一种是直接交互的指令行操作方式;另一种是 M 文件的编程方式。前者程序可读性差,且难以存储。后者对复杂的问题,把命令组写成程序文件,当用户输入该程序文件的文件名和它的自变量,文件中的命令就被执行。M 文件有两种形式:命令文件和函数文件。这两种文件的扩展名相同,都是, .m” 。命令文件将输入的语句集合在一个以.m 为后缀的文件中,运行时只需输入文件名,MATLAB就会自动按顺序执行文件中的命令,这类似于 Dos 中的批处理文件。第二章 渐开线齿轮机构2.1 渐开线齿轮的简介2.1.1 渐开线齿廓曲线渐开线是齿轮传动中应用最广泛的齿廓曲线。渐开线的形成如下图 2-1 和图2-2 渐开线的齿廓,当一直线沿一圆周作纯滚动时,直线上任意一点的轨迹nn就是该圆的渐开线。这个圆称为渐开线的基圆,其半径用表示;直线称Abrnn为渐开线的发生线;角称为渐开线 AK 段的展角。kk图 2-1 渐开线的形成图 2-2 渐开线轮廓2.1.2 渐开线的极坐标方程式渐开线的坐标值常用以齿轮回转中心为极坐标表示,如上图 1-2 所示。图中和分别为齿顶圆半径和基圆半径;D 为渐开线与基圆的脚底,即渐开线的起arbr点;A 为渐开线与齿顶圆的交点,即渐开线齿廓的终点;K 点设为渐开线齿廓上的任意一点;与 K 点的压力角相等。由图 1-2 可知,以齿轮回转中心 O 为极k点,以 OD 为起始位置,以为参数的 K 点的向经可有下式求得:kkr (2-kbkrrcos/1)根据发生线在基圆上滚过的直线长度等于基圆上被滚过的圆弧长可得极角 = (2-2kkktan) 式(2-1)和(2-2)便是渐开线的极坐标方程式。 2.1.3 渐开线齿廓曲线的计算 若已知齿轮的模数、齿数、和分度圆上的压力角,则基圆半径mz (2-cos5 . 0 mzrb3) 极角又称为渐开线的展角或的渐开线函数,用 inv()表示。设为齿kkk*ah轮的齿顶高系数,则标准齿轮的齿顶圆半径、齿顶圆上的压力角和齿顶圆上ark的展角为。k渐开线上个点的极坐标(, )的计算既可以为自变量确定极角也krkkrk可以为自变量确定向经。当以为自变量时,从开始变到,每次递kkrkrkrbrar增,求得各点对应的,代入式(2-2)便可得各点的;当以为自变量rkkk时,由 00开始变到a,每次递增,得各点的,解超越方程(2-2)求得各kk对应点的,代入式(2-1)便可求得各点的,从而求得各点的极坐标值。kkr2.2 渐开线直齿轮变位系数的选择2.2.1 关于渐开线直齿轮变位系数用展成法加工齿轮时,当被切制齿轮的齿数=(0.250.4)。asm采用变位齿轮传动,不仅可以在被切制的齿轮齿数时避免根切,也可zminz以在实际中心距与标准中心距不相等时配凑中心距,还可以提高齿轮传动质aa量和承载能力。2.2.2 最小变位系数的求法对齿数少于的齿轮,为了避免根切,可以采用正变位,使刀具齿顶线不minz超过啮合极限点 N1,刀具的最小变位量应使刀具齿顶线通过 N1点。此时的变位系数称为最小变位系数,用表示。根据 CB2=2。的计算公式为aba =(1/2)(tan-tan)+z2(tana1z1aa2a-tan) a(2-7)其中 =arccos(/) (2-1abr1ar8)=arccos(/) (2-2abr2ar9)为啮合角。a2.2.4 变位齿轮的啮合传动及几何尺寸无侧隙啮合方程式:如前所述,对齿轮传动,理论上应该是无齿侧间隙的啮合传动。在传动过程中,因两轮节圆作纯滚动,故两轮节圆上的齿厚、和齿槽宽、之间的关1s2s1e2e系为= (2-1s2e10)= (2-2s1e11)而两轮节圆上的齿距应为= + = + = + (2-12)p1s1e2s2e1s2s经过推导可得inv=2(+)tan/(+)+inv (2-a1x2x1z2z13)上式为无侧隙啮合方程,它表明了两齿轮在无侧隙啮合时,啮合角与变位系数a之和+之间的关系,若+=0,则=,两齿轮的节圆与分度圆重合;若1x2x1x2xa+0,则,两齿轮的节圆与分度圆不重合。1x2xa变位齿轮的齿顶高:齿轮传动时,为了避免一齿轮的齿顶圆与另一齿轮的齿根圆接触,并保证有储存润滑油的间隙,在设计、安装时必须留有顶隙 ,一般 =。cc*cm=- (2-1ara2fr*cm14)=- (2-2ara1fr*cm15)经推导整理得=+(+-) (2-1ar1r*ah1xm16)=+(+-) (2-2ar2r*ah2xm17)式中:齿顶高变动系数,其值为=+-(-)/ (2-1x2xam18)变位齿轮的分度圆齿厚:当刀具作正变位时,与齿轮分度圆相切刀具节线上的齿槽宽较其中线上的齿槽宽增大了 2KJ,KJ=xmtan,故可得出变位齿轮的分度圆齿厚和分度圆齿槽宽计算公式s=/2+2xmtan (2-m19)e=/2-2xmtan (2-m20)对于负变位,式中x应以负值代入。变位直齿轮圆柱齿轮传动的基本尺寸计算:标准中心距a a=0.5m(1z+2z) (2-21)啮合角 t invt=(2(21xx )tana)/(1z+2z)+inva (2-22) 安装中心距 a cos/ )cos(aa (2-23)齿顶高变动系数 =21xx - (a-a)/m (2-24)分度圆齿厚s s=m/2+2xmtan (2-25)分度圆槽宽e e=m/2-2xmtan (2-26)分度圆直径d 1d=m1z (2-27) 2d=m2z (2-28)基圆直径bd 1bd=mz1cosa (2-29) cos22mzdb (2-30)节圆直径d 11cos/bdd (2-31) 22cos/bdd (2-32)齿顶高ah mxhhaa)(1*1 (2-33) mxhhaa)(2*2 (2-34)齿根高fh mxchhaf)(1*1 (2-35) mxchhaf)(2*2 (2-36)齿顶圆直径ad 1112aahdd (2-37) 21222aahdd (2-38)齿根圆直径fd 112ffhdd (2-39) 222ffhdd (2-40)2.3 按两齿轮相对滑动系数相等时的变位系数选择用电算法选择变位系数的优点是精确度高,程序一旦调试通过,选择变位系数的速度快,改变参数也很方便。缺点是从建立数学模型、设计框图、编制程序到上机调试通过需要的工作量比图表法大。此外,变位系数的选择还受到许多传动质量的限制,在设计程序时应考虑到这些问题。关于根据抗胶合及抗磨损最有利的质量指标选择变位系数的问题,目前一般认为应使啮合齿在开始啮合时主动齿轮齿根处的滑动系数1与啮合终了时从动齿轮齿根处的滑动系数2相等,即 1=2 (2-41)根据滑动系数是滑动弧与齿廓所走过的弧长之比的极限的概念和一对轮齿开始啮合点是主动轮的齿根和从动论的齿顶相接触,啮合终了时是主动轮的齿顶和从动论的齿根相接触,经适当推导可得 1和 2倒计时公式分别为1=)tantan)/1/()/1)(tan(tan221212attazzzz (2-42)2=)tantan)/1/()/1)(tan(tan112121attazzzz (2-43)式中1a 和2a分别为主动轮和从动论齿顶圆上的压力角,t为啮合角。当齿轮传动的实际中心距给定时,啮合角为 t=arcos(acost/) (2-44)两轮的变1a位系数之和x由无侧隙啮合方程式确定,即1ax=)tan2/()(2121invinvzzxxt (2-45)当求1a和2a时,用到齿顶圆半径1ar和2ar ,可用下列求出:1ar=1r+(*ah+1x-)m (2-46)其中的齿顶高降低系数和求时用到的分度圆分离系数 y 为=x-y, (2-47)y=(a-a)/m (2-48)由此可知,两轮齿根的滑动系数1和2与两轮的变位系数有关。在实际中心距给定的情况下,1x和2x两个变位系数中仅有一个是独立的。若1x取为独立变量,则1和2两个齿根滑动系数均是1x的函数。令f(1x)=1-2, (2-49)则使两轮齿根滑动系数相等的问题,就是以1x为变量求方程的根的问题。即)tantan)/1/()/1)(tan(tan221212attazzzz=)tantan)/1/()/1)(tan(tan112121attazzzz (2-50)第三章 使用 Matlab 编写简单程序3.1 Matlab 编程绘制标准直齿圆柱齿轮渐开线曲面3.1.1 制作 MATLAB 界面步骤 1打开 Matlab,界面如图 3-1 所示:图 3-1 Matlab 主界面 步骤 2点击 File 菜单,新建一个 GUI 文件,如图 3-2 所示:图 3-2 Matlab GUI 界面步骤 3步骤 3在 GUI 窗口中做出所需控件,如 text、edit text、pushbutton、frame 等。如下图 3-3 所示:图 3-3 输入界面步骤 4修改各个控件的属性,方法为:选定修改的控件,右击修改,如下图 3-4 所示: 图 3-4 GUI 中属性修改窗口步骤 5程序完成后,点击 Debug 下的 Run,在输入栏输入一组数据:齿轮=60,模数m=3,压力角=20,齿顶高系数*ah=1,运行后的界面如下图 3-5 所示: 图 3-5 渐开线的齿廓程序代码见附录一。3.2 Matlab 编程计算直齿轮的几何尺寸3.2.1 设计 MATLAB 界面的过程步骤 1方法与前面相同,打开 Matlab,创建一个 GUI 文件,在 GUI 窗口中做出所需控件,如下图 3-6 所示:图 3-6 齿轮几何计算界面步骤 2一次类推,修改其余的控件属性,编制参数界面(输入参数:一对相互啮合齿轮的齿数、模数、压力角、齿顶高系数、顶隙系数、变位系数) ,计算结果输出界面(输出结果:分度圆直径、基圆直径、齿顶圆直径、啮合角、节圆直径、分度圆齿厚、重合度、安装中心距) 。上述工作做完后,点击保存,将文件保存,保存后会自动跳出一个 M 文件如图 3-7 所示,在适当的命令下编写程序。图 3-7 直齿轮几何尺寸的程序代码窗口程序中用到函数:assignin 与 evalinMATLAB 通常的基本工作空间是base空间。MATLAB 在程序运行过程中,将为每个函数分配它自己的函数工作空间(从基本空间中分割出的一块, 以函数名作为其工作空间名),各个工作空间之间的变量是不能够直接引用的,在函数退出之后,该函数空间也就立即被注销。而对于脚本 M 文件,其工作空间与基 本工作空间base是共享的。因此,对于函数文件,运行结果除输出变量返回到基本工作空间或者其父工作空间(调用该函数的程序的工作空间)之外,其中 间变量不在基本工作空间或者其父工作空间保留。而脚本 M 文件运行结果,其运算过程中所用到的中间变量也将在基本工作空间base中保留。assignin 为工作空间的变量指派值,其语法为:assignin(WS,name,V) ,其中,WS 为工作空间名称,name为变量名,V是为该变量指派的值。 evalin 实现在工作空间中某个表达式字符串,并将结果返回,其语法为: evalin(WS,expression),其中,WS 为工作空间名称,expression为表达式符号串。 利用 assignin 与 evalin 指令,可以实现不同 M 文件主函数与子函数的工作空间变量的共享。 步骤 6程序完成后,点击 Debug 下的 Run,在输入栏输入一组数据:齿轮1z=13,齿轮2z=35,模数m=5,压力角=20,齿顶高系数*ah=1,顶隙系数*c=0.25,变位系数1x=0.4,2x=-0.4, 运行后的界面如下图 3-8 所示,程序代码见附录二。图 3-8 齿轮几何尺寸计算界面3.3 按等滑动系数原则选择变位系数步骤 1方法与前面相同,设计完后的界面如下图 3-9 所示:图 3-9 计算变位系数的界面步骤 2编制完成程序后,运行程序,在界面里输入一组数值,运行结果如图 3-10 所示,程序代码见附录三。图 3-10 计算变位系数的界面到此,设计完成。结 论用电算法计算直齿轮的几何尺寸和变位系数是一种常用的方法。它的优点是精确度高,程序一旦调试通过,计算齿轮的几何尺寸和变位系数的速度快,改变参数也很方便,操作也很方便。缺点是从建立数学模型、设计框图、编制程序到上机调试通过需要的工作量比图表法大。此外,变位系数的选择还受到许多传动质量的限制,在设计程序时应考虑到这些问题。使用 MATLAB 计算齿轮的参数是计算机软件发展的结果。设计人员在设计的时候可以摒弃从前那种找公式的方法,只需把所需公式输入到程序里即可。软件中有很多公式和函数,可以满足一般方程和等式的调用,况且使用方便。另外,此程序的修改冶很方便,若想修改其中的公式或参数,只需打开其程序代码改动即可。由于 MATLAB 软件不很成熟,该设计也存在一定的问题。例如,在选择初始值的时候,若选取不当,就会出现错误的结果,所以程序初始值的选取尤为重要。有的时候同样的程序运行两次会出现两种不同的结果。MATLAB 至今还不太成熟,在今后的发展中希望能多增加一下调试的专用工具,应增加自动选择初始值的功能,这样此软件会使用的更加方便。致 谢在毕业设计完成之际,我的心情万分激动。从设计的选题、资料的收集到设计的撰写编排整个过程中,我得到了许多的热情帮助。 我首先要感谢*,是他将我领入了信息安全的大门,并对我的设计提出了很多宝贵的意见,使我的设计工作有了目标和方向。这一段时间里,他对我进行了悉心的指导和教育,所以我能够不断地学习提高。同时,葛老师渊博的学识、严谨的治学态度也令我十分敬佩,是我以后学习和工作的榜样,导师一丝不苟、严谨认真的治学态度,精益求精、诲人不倦的学者风范,以及正直无私、磊落大度的高尚品格,更让我明白许多做人的道理,在此我对葛老师表示衷心的感谢!还要再次感谢葛老师对我的关心和照顾, 在此表示最诚挚的谢意。感谢同学们的帮忙和支持,让我在设计的过程中少走了不少弯路。感谢图书馆里的老师们,在百忙之中还为我们整理书库,每天急时把不同的书分类,让我们借阅的时后省了不少时间。感谢隔壁宿舍的同学,在我需要的时候为我提供网线,让我遇到我题的时候能够上网查阅资料,累的时候玩会游戏。设计的过程中,我学到了很多东西。同学们的团结合作在这次设计中体现的淋淋尽致,我更加认识到团队合作的重要性。最后,感谢所有关心我、帮助过我的老师、同学和朋友!作者:孙战豪参 考 文 献1 机械原理与设计/王三民,诸文俊主编. 北京:机械工业出版社,2000.122 机械设计基础/张建中主编. 北京:高等教育出版社,2007.83 MATLAB 6 实例教程、郝红伟编著. 北京:中国电力出版社,20014 机械原理/王春燕,陆凤仪主编.北京:机械工业出版社,2001.15 MATLAB 教程及实训/曹戈主编. 北京:机械工业出版社,2008.46 精通 MATLAB 7/王正林,刘明主编.北京:电子工业出版社,20067 MATLAB 实用教程/求是科技主编.北京:人民邮电出版社,20068 MATLAB 实用教程/郑阿奇主编.北京:电子工业出版社,20049 控制系统 MATLAB 计算及仿真实训/黄忠霖,周向明主编.北京:国防工业出版社,200610 基于 MATLAB 7.X 的系统分析与设计/楼顺天,姚若玉,冶继民主编.西安:西安电子科技大学出版社,200511 MATLAB 程序设计与实例实用/张铮主编.北京:中国铁道出版社,2003.1012 掌握和精通 MATLAB/张志通主编.北京:北京航空航天大学出版社,199713 MATLAVB 6 实训教程/王松主编.北京:中国电力出版社,200114 MATLAB 5.X 应用与技巧/蒙以正主编.北京:科学出版社,199915 机械原理/杨玉泉主编.北京:北京理工大学出版社,199516 机械原理与机械零件/何元庚主编.北京:高等教育出版社,199817 MATLAB 6.0 高级应用图形图像处理/清源计算机工作室主编.北京:机械工业出版社,2001.518 精通 GUI 图形图像界面编程/施晓红,周佳主编.北京:北京大学出版社,2003.1附 录 一绘制标准直齿圆柱齿轮渐开线曲面的程序代码function varargout = jkx(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, jkx_OpeningFcn, . gui_OutputFcn, jkx_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & isstr(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction jkx_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);set(gcf,name,标准直齿圆柱齿轮渐开线参数输入窗口);function varargout = jkx_OutputFcn(hObject, eventdata, handles)varargout1 = handles.output;function edit1_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit1_Callback(hObject, eventdata, handles)function edit2_CreateFcn(hObject, eventdata, handles) set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit2_Callback(hObject, eventdata, handles)function edit3_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit3_Callback(hObject, eventdata, handles)function edit4_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit4_Callback(hObject, eventdata, handles)function pushbutton1_Callback(hObject, eventdata, handles)figure;set(gcf,name,渐开线齿廓);m=str2num(get(handles.edit1,string);z=str2num(get(handles.edit2,string);a=str2num(get(handles.edit3,string);ha=str2num(get(handles.edit6,string);ra=m*(0.5*z+ha);%齿顶圆半径rb=0.5*m*z*cos(a*pi/180);%基圆半径rk=rb:0.01:ra;%向径范围aa=atan(sqrt(ra.2/rb.2)-1);%齿顶圆上的压力角wk=tan(aa)-aa;%齿顶圆上的展角w=0:pi/180:pi/3;x=rb*(cos(w)+w.*sin(w);y=rb*(sin(w)-w.*cos(w);plot(x,y,rb*cos(0:0.01:2*pi),rb*sin(0:0.01:2*pi),ra*cos(0:0.01:2*pi),ra*sin(0:0.01:2*pi)xlabel(x 轴 单位:mm,fontsize,9);ylabel(y 轴 单位:mm,fontsize,9);axis equal;title(标准直齿轮渐开线轮廓(基圆与齿顶圆之间的部分为该齿轮的渐开线),fontsize,11);text(ra*cos(pi/4),ra*sin(pi/4),leftarrow 齿顶圆,fontsize,10);text(rb*cos(0.8*pi),rb*sin(0.8*pi),leftarrow 基圆,fontsize,10);text(rb.*(cos(20*pi/180)+20.*pi/180.*sin(20.*pi/180),rb.*(sin(20*pi/180)-20.*pi/180.*cos(20.*pi/180),leftarrow 渐开线,fontsize,10);function pushbutton2_Callback(hObject, eventdata, handles)close%关闭窗口function edit6_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit6_Callback(hObject, eventdata, handles)附 录 二直齿轮几何尺寸设计的程序代码function varargout = untitled1(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, untitled1_OpeningFcn, . gui_OutputFcn, untitled1_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & isstr(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT function untitled1_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes untitled1 wait for user response (see UIRESUME)% uiwait(handles.figure1);set(gcf,name,直齿轮几何尺寸设计)% - Outputs from this function are returned to the command line.function varargout = untitled1_OutputFcn(hObject, eventdata, handles)varargout1 = handles.output;% - Executes during object creation, after setting all properties.function edit1_CreateFcn(hObject, eventdata, handles)% hObject handle to edit1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit1_Callback(hObject, eventdata, handles)% - Executes during object creation, after setting all properties.function edit2_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit2_Callback(hObject, eventdata, handles)function edit3_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit3_Callback(hObject, eventdata, handles)function edit4_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit4_Callback(hObject, eventdata, handles)% - Executes during object creation, after setting all properties.function edit5_CreateFcn(hObject, eventdata, handles).if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit5_Callback(hObject, eventdata, handles)function edit6_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit6_Callback(hObject, eventdata, handles)function edit7_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit7_Callback(hObject, eventdata, handles)function edit8_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit8_Callback(hObject, eventdata, handles)function edit9_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit9_Callback(hObject, eventdata, handles)function edit10_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit10_Callback(hObject, eventdata, handles)function edit11_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit11_Callback(hObject, eventdata, handles)function edit12_CreateFcn(hObject, eventdata, handles) set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit12_Callback(hObject, eventdata, handles)function edit13_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit13_Callback(hObject, eventdata, handles)function edit14_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit14_Callback(hObject, eventdata, handles)function edit15_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit15_Callback(hObject, eventdata, handles)function edit16_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit16_Callback(hObject, eventdata, handles)function edit17_CreateFcn(hObject, eventdata, handles) set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit17_Callback(hObject, eventdata, handles)function edit18_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);endfunction edit18_Callback(hObject, eventdata, handles)function pushbutton1_Callback(hObject, eventdata, handles)z1=str2num(get(handles.edit1,string);%将字符串转换成数值,赋给 z1.z2=str2num(get(handles.edit2,string);%将字符串转换成数值,赋给 z2.m=str2num(get(handles.edit3,string);%将字符串转换成数值,赋给 m.a=str2num(get(handles.edit4,string);%将字符串转换成数值,赋给 a.ha=str2num(get(handles.edit5,string);%将字符串转换成数值,赋给 ha.ct=str2num(get(handles.edit6,string);%将字符串转换成数值,赋给 ct.x(1)=str2num(get(handles.edit7,string);%将字符串转换成数值,赋给 x(1).x(2)=str2num(get(handles.edit19,string);%将字符串转换成数值,赋给 x(2).d(1)=m*z1;%将乘积赋给 d(1).set(handles.edit8,string,d(1);%将 d(1)转换成字符串,在文本框中显示.d(2)=m*z2;set(handles.edit9,string,d(2);%将 d(2)转换成字符串,在文本框中显示.db(1)=m*z1*cos(a*pi/180);%计算基圆直径
展开阅读全文