机械原理大作业-凸轮机构.doc_第1页
机械原理大作业-凸轮机构.doc_第2页
机械原理大作业-凸轮机构.doc_第3页
机械原理大作业-凸轮机构.doc_第4页
机械原理大作业-凸轮机构.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

harbin institute of technology大作业设计说明书课程名称: 机械原理 设计题目: 凸轮机构 院 系: 机电工程学院 班 级: 1108101 设 计 者: 马舜 学 号: 1110810115 指导教师: 陈明 丁刚 设计时间: 2013.06.12 哈尔滨工业大学一、 设计题目图 1序号升程mm升程运动角()升程运动规律升程许用压力角()回程运动角()回程运动规律回程许用压力角()远休止角()近休止角()1610090正弦加速度30803-4-5多项式7011080二、 推杆升程,回程运动方程1. 推杆升程方程(式中)2. 推杆回程方程(式中)其中,。并且取=1三、 推杆的位移、速度和加速度图像(1)推杆位移图 图 2(2)推杆速度图 图 3 (3)推杆加速度图 图 4三、 确定凸轮基圆半径和偏距(1)凸轮机构的线图图 5(2)确定凸轮的基圆半径r0和偏距e理论依据设以从动件的位移s为纵坐标(相当于从动件运动导路),以类速度为横坐标。当给定一系列的凸轮转角,则根据已知的运动规律,可以求得s和的值,从而作出曲线。由于题目为左偏置凸轮机构,故推程在s轴左边,回程在s轴右边。分别再作出升程压力角对应的极限直线和回程压力角对应的极限直线,有图像可得偏距e和s0的取值范围。从中选取最合理的偏距,从而得到基圆半径r0。r0和e取值综合考虑取偏距e=50mm,s0=100mm。故可得到基圆半径r0=111.80mm。用matlab进行编程时选取e=50.54mm,r0=101.09mm四、滚子半径rr的选择(1)理论依据为保证凸轮正常工作,其工作轮廓线曲率半径a、理论轮廓线和滚子rr半径三者应满足: 只有当rr时,a0,这时可以作出凸轮的工作轮廓线。综上所述,滚子半径rr不宜过大。但因为滚子装在销轴上,故亦不宜过小。一般推荐:式中,为凸轮理论轮廓外凸部分的最小曲率半径;=35mm。(2)滚子半径的取值由可求得在极坐标下曲线曲率半径的表达式:用vb编程求得理论轮廓曲线上最小的曲率半径为=78.56mm。故综合考虑取 rr=20mm。五、绘制理论轮廓线图 6六、绘制实际轮廓线 图7附录1:vb程序界面该程序有良好的人机交互界面,可以计算表中列出的所有凸轮参数值,只需要选择运动规律并输入值即可完成运算和绘图,易于更改参数,从而观察不同参数对凸轮轮廓的影响。对于偏距和基圆半径的确定,采用有限搜寻法,画出了偏距和基圆半径的取值区域,可根据不同环境下选择参数。最小曲率半径的计算用到了高等代数的弧微分知识,同样用搜寻法找出最小曲率半径的位置。根据曲率半径即所应用的场合确定棍子半径,进而可以画出凸轮实际轮廓线和滚子运动的模拟图。附录2:vb源程序(1)窗体部分private sub cmdcancle_click() unload meend subprivate sub cmdll_click() if tetr0.text = then msgbox 请输入偏距e和s0! exit sub end if call module3.lframeend subprivate sub cmdok_click() dim i as long pi = 3.1415936 h = val(teth.text) w = val(tetw.text) a1 = val(teta1.text) * pi / 180 a0 = val(teta0.text) * pi / 180 b1 = val(tetb1.text) * pi / 180 b0 = val(tetb0.text) * pi / 180 s1 = val(tets1.text) * pi / 180 s2 = val(tets2.text) * pi / 180 if h = 0 or w = 0 then msgbox 你输入的参数有误,请重新输入! exit sub end if if val(teta1.text) + val(tetb1.text) + val(tets1.text) + val(tets2.text) 360 then msgbox 你输入的角度值不正确,请重新输入! exit sub end if for i = 0 to 3600 module1.f = i * pi / 1800 call module1.action ss(i) = module1.s ddsf(i) = module1.dsf ddddsf(i) = module1.dddsf vv(i) = module1.v aa(i) = module1.a next i call module2.paintend subprivate sub cmdok1_click() dim i as long e = val(tete.text) s0 = val(tets0.text) r0 = sqr(e 2 + s0 2) tetr0.text = r0 for i = 0 to 10 * (val(form1.teta1.text) if tan(a0) (ddsf(i) - e) / (s0 + ss(i) then msgbox 您输入的偏距e和s0不满足升程压力角要求,请重新输入! exit sub end if next i for i = 10 * (val(form1.teta1) + val(form1.tets1) to 10 * (val(form1.teta1) + val(form1.tets1) + val(form1.tetb1) if tan(b0) (module4.pm - 3) then msgbox 您输入的滚子半径不满足要求,一般推荐 rrmin-,=35mm。 exit sub end if call module5.sframeend subprivate sub form_load() 位移图像定义 form1.pics.scale (-400, 130)-(4000, -30) form1.pics.line (0, -50)-(0, 150) form1.pics.line (-300, 0)-(3900, 0) form1.pics.line (-100, 120)-(0, 130) form1.pics.line -(100, 120) form1.pics.line (3800, -5)-(3900, 0) form1.pics.line -(3800, 5) form1.pics.drawstyle = 2 for i = 450 to 3600 step 450 form1.pics.line (i, 0)-(i, 100) form1.pics.currentx = i - 350: form1.pics.currenty = -10: form1.pics.print i / 10 next i for i = 20 to 100 step 20 form1.pics.line (0, i)-(3600, i) form1.pics.currentx = -450: form1.pics.currenty = i: form1.pics.print i next i 速度图像定义 form1.picv.scale (-400, 180)-(4000, -180) form1.picv.line (0, -170)-(0, 180) form1.picv.line (-300, 0)-(3900, 0) form1.picv.line (-100, 160)-(0, 180) form1.picv.line -(100, 160) form1.picv.line (3800, -10)-(3900, 0) form1.picv.line -(3800, 10) form1.picv.drawstyle = 2 for i = 450 to 3600 step 450 form1.picv.line (i, -140)-(i, 140) form1.picv.currentx = i - 450: form1.picv.currenty = -10: form1.picv.print i / 10 next i for i = -140 to 140 step 40 if i -20 then form1.picv.line (0, i)-(3600, i) end if form1.picv.currentx = -450: form1.picv.currenty = i: form1.picv.print i next i 加速度图像定义 form1.pica.scale (-400, 400)-(4000, -400) form1.pica.line (0, -390)-(0, 400) form1.pica.line (-300, 0)-(3900, 0) form1.pica.line (-100, 370)-(0, 400) form1.pica.line -(100, 370) form1.pica.line (3800, -20)-(3900, 0) form1.pica.line -(3800, 20) form1.pica.drawstyle = 2 for i = 450 to 3600 step 450 form1.pica.line (i, -320)-(i, 320) form1.pica.currentx = i - 450: form1.pica.currenty = -10: form1.pica.print i / 10 next i for i = -320 to 320 step 80 form1.pica.line (0, i)-(3600, i) form1.pica.currentx = -450: form1.pica.currenty = i: form1.pica.print i next i 类速度图像定义 form1.picdsf.scale (-200, 150)-(200, -200) form1.picdsf.line (0, -200)-(0, 150) form1.picdsf.line (-200, 0)-(200, 0) form1.picdsf.line (-8, 130)-(0, 150) form1.picdsf.line -(8, 130) form1.picdsf.line (190, -10)-(200, 0) form1.picdsf.line -(190, 10) form1.picdsf.drawstyle = 2 for i = -150 to 150 step 50 form1.picdsf.line (i, -200)-(i, 100) form1.picdsf.currentx = i - 30: form1.picdsf.currenty = -5: form1.picdsf.print i next i for i = -200 to 100 step 50 if i 0 then form1.picdsf.line (-150, i)-(150, i) form1.picdsf.currentx = -40: form1.picdsf.currenty = i: form1.picdsf.print i end if next i 凸轮轮廓图像定义 form1.pict.scale (-200, 200)-(250, -250) form1.pict.line (0, -240)-(0, 200) form1.pict.line (-200, 0)-(250, 0) form1.pict.line (-10, 190)-(0, 200) form1.pict.line -(10, 190) form1.pict.line (240, -8)-(250, 0) form1.pict.line -(240, 8) form1.pict.drawstyle = 2 for i = -180 to 240 step 60 form1.pict.line (i, -240)-(i, 180) form1.pict.currentx = i - 20: form1.pict.currenty = -5: form1.pict.print i next i for i = -240 to 180 step 60 if i 0 then form1.pict.line (-180, i)-(240, i) form1.pict.currentx = -50: form1.pict.currenty = i + 20: form1.pict.print i end if next iend sub(2)运动分析模块option explicitpublic pi as doublepublic a1 as double 升程运动角public a0 as double 升程许用压力角public h as double 行程public b1 as double 回程运动角public b0 as double 回程许用压力角public s1 as double 远休止角public s2 as double 近休止角public f as double 转角public w as double 角速度public s as double 位移public dsf as double 类速度public dddsf as double 类速度一阶导数public v as double 速度public a as double 加速度public ss(3600) as double 每点的位移public ddsf(3600) as double 每点的类速度public ddddsf(3600) as double 每点的类速度的一阶导数public vv(3600) as double 每点的速度public aa(3600) as double 每点的加速度public sub action() pi = 3.1415926 if f = a1 then select case form1.cbos.text case 等加等减速 if f = a1 / 2 and f = a1 and f = a1 + s1 and f = a1 + s1 and f = a1 + s1 + b1 / 2 and f = a1 + s1 + b1 and f = a1 + s1 + b1 + s2 then s = 0 dsf = 0 dddsf = 0 v = 0 a = 0 end ifend sub(3)画图模块option explicitpublic m as longpublic dm as doublepublic n as longpublic dn as doublepublic d as doublepublic sub paint() dim i as long m = 0 n = 0 dm = 0 dn = 0 画图像 for i = 0 to 3600 form1.pics.pset (i, ss(i), vbred form1.picv.pset (i, vv(i), vbred form1.pica.pset (i, aa(i), vbred form1.picdsf.pset (-ddsf(i), ss(i), vbred next i for i = 0 to 10 * val(form1.teta1.text) if (ss(i) - ddsf(i) / tan(a0) dm then dm = d m = i end if end if next i for i = 10 * (val(form1.teta1) + val(form1.tets1) to 10 * (val(form1.teta1) + val(form1.tets1) + val(form1.tetb1) if (ss(i) + ddsf(i) / tan(b0) dn then dn = d n = i end if end if next i form1.picdsf.drawstyle = 0 form1.picdsf.line (-ddsf(m), ss(m)-(ss(m) - ddsf(m) / tan(a0) + 200) * tan(a0), -200), vbblue form1.picdsf.line (-ddsf(n), ss(n)-(-(ss(n) + ddsf(n) / tan(b0) + 200) * tan(b0), -200), vbblue form1.picdsf.line (0, 0)-(-200 * tan(a0), -200), vbblueend sub(3)理论轮廓线模块option explicitpublic x(3600) as doublepublic y(3600) as doublepublic ss1 as doublepublic ss2 as doublepublic e as doublepublic s0 as doublepublic r0 as doublepublic sub lframe() dim i as long form1.pict.scale (-1.2 * sqr(s0 + h) 2 + e 2), 1.2 * sqr(s0 + h) 2 + e 2)-(1.2 * sqr(s0 + h) 2 + e 2), -1.2 * sqr(s0 + h) 2 + e 2) form1.pict.line (0, -1.2 * sqr(s0 + h) 2 + e 2)-(0, 1.2 * sqr(s0 + h) 2 + e 2) form1.pict.line (-sqr(s0 + h) 2 + e 2), 0)-(sqr(s0 + h) 2 + e 2), 0) for i = -sqr(s0 + h) 2 + e 2) to sqr(s0 + h) 2 + e 2) step sqr(s0 + h) 2 + e 2) / 4 if i 0 then form1.pict.line (0, i)-(sqr(s0 + h) 2 + e 2) / 10, i) form1.pict.currentx = -(s0 + h) 2 + e 2) / 10: form1.pict.currenty = i: form1.pict.print i end if next i for i = -sqr(s0 + h) 2 + e 2) to sqr(s0 + h) 2 + e 2) step sqr(s0 + h) 2 + e 2) / 4 if i 0 then form1.pict.line (i, 0)-(i, sqr(s0 + h) 2 + e 2) / 20) form1.pict.currentx = i: form1.pict.currenty = -(s0 + h) 2 + e 2) / 10: form1.pict.print i end if next i for i = 0 to 3600 f = i * pi / 1800 x(i) = (s0 + ss(i) * sin(f) + e * cos(f) y(i) = (s0 + ss(i) * cos(f) - e * sin(f) form1.pict.pset (x(i), y(i), vbred next i form1.pict.circle (0, 0), r0, vbblue form1.pict.circle (0, 0), e, vbblueend sub(4)用搜寻法计算最小曲率半径模块option explicitpublic xf1(3600) as doublep

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论