




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
直动从动件盘型凸轮机凸轮设计简介:凸轮是一个具有曲线轮廓或凹槽的构件,一般为主动件,作等速回转运动或往复直线运动。与凸轮轮廓接触,并传递动力和实现预定的运动规律的构件,一般做往复直线运动或摆动,称为从动件。凸轮机构在应用中的基本特点在于能使从动件获得较复杂的运动规律。因为从动件的运动规律取决于凸轮轮廓曲线,所以在应用时,只要根据从动件的运动规律来设计凸轮的轮廓曲线就可以了。由凸轮的回转运动或往复运动推动从动件作规定往复移动或摆动的机构。凸轮具有曲线轮廓或凹槽,有盘形凸轮、圆柱凸轮和移动凸轮等,其中圆柱凸轮的凹槽曲线是空间曲线,因而属于空间凸轮。从动件与凸轮作点接触或线接触,有滚子从动件、平底从动件和尖端从动件等。尖端从动件能与任意复杂的凸轮轮廓保持接触,可实现任意运动,但尖端容易磨损,适用于传力较小的低速机构中。在带滚子的直动从动件盘形凸轮机构中,凸轮回转一周从动件依次作升-停-降-停4个动作。从动件位移s(或行程高度h)与凸轮转角(或时间t)的关系称为位移曲线。从动件的行程h有推程和回程。 凸轮轮廓曲线决定于位移曲线的形状。在某些机械中,位移曲线由工艺过程决定,但一般情况下只有行程和对应的凸轮转角根据工作需要决定,而曲线的形状则由设计者选定,可以有多种运动规律。传统的凸轮运动规律有等速、等加速等减速、余弦加速度和正弦加速度等。等速运动规律因有速度突变,会产生强烈的刚性冲击,只适用于低速。等加速-等减速和余弦加速度也有加速度突变,会引起柔性冲击,只适用于中、低速。正弦加速度运动规律的加速度曲线是连续的,没有任何冲击,可用于高速。曲线是凸轮机构设计的关键,常用的设计方法有解析法和图解法以带滚子的对心直动从动件为例,用图解法时,在确定位移曲线 s、滚子中心初始位置和凸轮基圆半径r0后,凸轮廓线可由反转法得到,即使凸不动,找出滚子相对于凸轮的一系列位置,用光滑曲线连接各滚子中心B1、B2、B3等点即得凸轮的理论廓线,再作这些滚子的包络线即得到凸轮的实际廓线。选择滚子半径rr,应小于理论廓线的最小曲率半径,以免产生干涉。用解析法时,同样先要确定从动件的位移变化规律s=s()、基圆半径r0和滚子半径rr,从而得到凸轮理论廓线的参数方程x-rsi,yrcos,式中r=r0+s。凸轮实际廓线是一系列滚子圆组成的曲线族的包络线,曲线族的方程为f(x1,y1)=(x1-x)2+(y1-y)2-r婄=0,所以联解f(x1,y1,)0可得曲线族的包络线,即实际廓线(见共轭曲线)。基圆半径选得越小,压力角越大,设计所得的凸轮尺寸虽小,但对受力情况不利,严重的还会发生自锁现象,因此在空间允许的条件下应选取较大的基圆半径以改善凸轮的受力情况。用计算机进行凸轮廓线设计能提高效率,并能从多方面综合考虑进行优化设计。这样可用以求得各种运动规律下的从动件的位移、速度、加速度等值和凸轮廓线坐标值,算出凸轮廓线上任意点的曲率半径、压力角和应力,满足接触强度和抗磨的角度,以获得最小尺寸的凸轮,而且还可画出凸轮的空间图形。解析法设计凸轮简介:解析法设计凸轮用图解法设计凸轮的轮廓曲线,简便易行,但误差较大,所以对于精度要求较高的凸轮(如高速凸轮、靠模凸轮等),往往不能满足要求,这时就需用解析法进行设计。 用解析法设计凸轮轮廓线的实质是建立凸轮轮廓线的数学方程式。已知偏距e,基圆半径r,从动件的运动规律ss(),升-停-降-停4个动作角度分别为j1、j2、j3、j4,凸轮以等角速度沿逆时针方向回转,要求设计此凸轮的轮廓曲线。设取凸轮回转中心O为极点,以起始向径OB0为极轴,则凸轮理论廓线上任一点B的向径和极角可分别表示为 (1) (2)其中 为初始角度 为固定倾斜角 为反转转过的角度式(1)、(2)即为该凸轮的理论廓线方程。由此就可以得到凸轮轮廓线坐标值(VC6不支持极坐标画圆弧):以及从动件顶端坐标值:由从动件顶端坐标可以画出从动件的轮廓。速度曲线和加速度曲线可以对s分别求一阶导和二阶导,得到曲线的y值,x值则均匀变化即可。从而得到曲线坐标:程序设计简介:程序选用VC6.0实现,选则CDC来绘图。程序中需要画凸轮的轮廓图,位置、速度、加速度曲线;还要出现凸轮的动画展示。因此设计程序使用了MFC单文档程序,相应的文档用以绘制轮廓图,位置、速度、加速度曲线,而动画展示则在其中插入一个窗口来实现。因为需要向程序输入一定的数据,因而建立一个输入窗口来实现输入。单文档窗口如下:输入窗口如下:动画窗口如下:程序代码实现简介(调试环境VC6.0):核心代码如下:CDrawingSetDialog类(输入数据类):#include stdafx.h#include machine.h#include DrawingSetDialog.h#includeDynamic_pictureDialog.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CDrawingSetDialog dialogCDrawingSetDialog:CDrawingSetDialog(CWnd* pParent /*=NULL*/): CDialog(CDrawingSetDialog:IDD, pParent)m_e = 10.0f; /初始化m_h = 50.0f;m_r = 40.0f;m_j1 = 90;m_j2 = 90;m_j3 = 90;m_j4 = 90;m_flag = 0;CDrawingSetDialog:CDrawingSetDialog(int who,CWnd* pParent /*=NULL*/): CDialog(CDrawingSetDialog:IDD, pParent)whoflag=who;m_e = 10.0f;m_h = 50.0f;m_r = 40.0f;m_j1 = 90;m_j2 = 90;m_j3 = 90;m_j4 = 90;m_flag =0;void CDrawingSetDialog:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CDrawingSetDialog)DDX_Text(pDX, IDC_E, m_e);DDX_Text(pDX, IDC_H, m_h);DDV_MinMaxFloat(pDX, m_h, 0.f, 1.e+023f);DDX_Text(pDX, IDC_R, m_r);DDV_MinMaxFloat(pDX, m_r, 0.f, 1.e+018f);DDX_Text(pDX, IDC_J1, m_j1);DDV_MinMaxInt(pDX, m_j1, 0, 360);DDX_Text(pDX, IDC_J2, m_j2);DDV_MinMaxInt(pDX, m_j2, 0, 360);DDX_Text(pDX, IDC_J3, m_j3);DDV_MinMaxInt(pDX, m_j3, 0, 360);DDX_Text(pDX, IDC_J4, m_j4);DDV_MinMaxInt(pDX, m_j4, 0, 360);DDX_Radio(pDX, IDC_FLAG0, m_flag);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CDrawingSetDialog, CDialog)/AFX_MSG_MAP(CDrawingSetDialog)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CDrawingSetDialog message handlersvoid CDrawingSetDialog:OnOK() UpdateData(TRUE);if(m_em_r)AfxMessageBox(错误!ER); /错误提示if(360!=m_j1+m_j2+m_j3+m_j4) AfxMessageBox(错误!m_j1+m_j2+m_j3+m_j4 !=360);if(1=whoflag)CDynamic_pictureDialog dlg(m_r,m_e,m_h,m_j1,m_j2,m_j3,m_j4,m_flag); dlg.DoModal();CDialog:OnOK();CDynamic_pictureDialog类(实现动画):#include stdafx.h#include machine.h#include Dynamic_pictureDialog.h#includemath.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CDynamic_pictureDialog dialogCDynamic_pictureDialog:CDynamic_pictureDialog(CWnd* pParent /*=NULL*/): CDialog(CDynamic_pictureDialog:IDD, pParent)m_r=100; /初始化 m_e=10; m_h=50; m_j1=90; m_j2=90; m_j3=90; m_j4=90; m=400; n=250; m_flag=0;e0=0;wflag=1; CDynamic_pictureDialog:CDynamic_pictureDialog(float r,float e,float h,int j1,int j2,int j3,int j4,int flag,CWnd* pParent) : CDialog(CDynamic_pictureDialog:IDD, pParent)m_r=r; m_e=e; m_h=h; m_j1=j1; m_j2=j2; m_j3=j3; m_j4=j4; m=350; n=270; m_flag=flag;e0=0;wflag=1; void CDynamic_pictureDialog:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CDynamic_pictureDialog)/ NOTE: the ClassWizard will add DDX and DDV calls here/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CDynamic_pictureDialog, CDialog)/AFX_MSG_MAP(CDynamic_pictureDialog)ON_WM_TIMER()ON_BN_CLICKED(IDC_START, OnStart)ON_BN_CLICKED(IDC_STOP, OnStop)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CDynamic_pictureDialog message handlersvoid CDynamic_pictureDialog:panduan()CDC *pDC=GetDC(); /取得设备环境 CPen pen,*poldpen;if(0=wflag) pen.CreatePen(0,3,RGB(255,10,0); poldpen=pDC-SelectObject(&pen); huatu(pDC); /调用绘图 else pen.CreatePen(0,3,RGB(192,192,192); poldpen=pDC-SelectObject(&pen); e0-; huatu(pDC); /调用绘图 e0+; pDC-SelectObject(poldpen); pen.DeleteObject(); ReleaseDC(pDC); void CDynamic_pictureDialog:huatu(CDC *pDC)double pi=3.141592653; /辅助变量double s,s0,s11,s12,s2,r;double x,y,e,y0=m_r*sin(e); e=e0*pi/180+acos(m_e/m_r);pDC-MoveTo(m+(int)m_r*cos(e),n-m_r*sin(e); /画凸轮轮廓线 for(int j=0;j=360-m_j4)s0=s11=s12=s2=0;else if(j=360-m_j4-m_j3)s0=m_h-m_h*(j-180)/m_j3; s11=m_h-m_h*(j-180)*(j-180)/(m_j3*m_j3); s12=m_h*(j-m_j3-180)*(j-m_j3-180)/(m_j3*m_j3);s2=m_h-0.5*m_h*(1-cos(double)pi*(j-180)/m_j3);else if(j=360-m_j4-m_j3-m_j2)s0=s11=s12=s2=m_h;elses0=m_h*j/m_j1; s11=m_h*j*j/(m_j1*m_j1);s12=m_h-m_h*(j-m_j1)*(j-m_j1)/(m_j1*m_j1); s2=0.5*m_h*(1-cos(double)pi*j/m_j1);if(0=m_flag)s=s0;else if(1=m_flag)s=s11; else if(2=m_flag)s=s12;else s=s2;r=sqrt(m_e*m_e+(sqrt(m_r*m_r-m_e*m_e)+s)*(sqrt(m_r*m_r-m_e*m_e)+s); e=e0*pi/180+acos(m_e/m_r)+j*pi/180;if(j=360-e0) y0=s+sqrt(m_r*m_r-m_e*m_e);x=m+r*cos(e);y=n-r*sin(e); pDC-LineTo(int)x,(int)y);pDC-MoveTo(m+(int)m_e,n-(int)y0); /画从动件轮廓线 pDC-LineTo(m+(int)m_e-10,n-(int)y0-40);pDC-LineTo(m+(int)m_e-10,n-(int)y0-100);pDC-LineTo(m+(int)m_e+10,n-(int)y0-100);pDC-LineTo(m+(int)m_e+10,n-(int)y0-40);pDC-LineTo(m+(int)m_e,n-(int)y0); void CDynamic_pictureDialog:OnTimer(UINT nIDEvent) e0=e0+1; /旋转角度加一if(360=e0)e0=0;wflag=1-wflag; /调整画笔if(1=startstop) panduan();CDialog:OnTimer(nIDEvent);void CDynamic_pictureDialog:OnStart() SetTimer(0,10,NULL); /建立计时器对应函数OnTimerstartstop=1; /开始与结束之间切换void CDynamic_pictureDialog:OnStop() startstop=0; wflag=1; e0=e0+1; panduan();CMachineView类(绘制轮廓线和各曲线):#include stdafx.h#include stdafx.h#include machine.h#include machineDoc.h#include machineView.h#include math.h#include DrawingSetDialog.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMachineViewIMPLEMENT_DYNCREATE(CMachineView, CView)BEGIN_MESSAGE_MAP(CMachineView, CView)/AFX_MSG_MAP(CMachineView)ON_COMMAND(IDM_DRAWIN_SET, OnDrawinSet)ON_COMMAND(IDM_DYNAMIC_PICTURE, OnDynamicPicture)/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)END_MESSAGE_MAP()/ CMachineView construction/destructionCMachineView:CMachineView()m_r=40; /初始化 m_e=10; m_h=50; m_j1=90; m_j2=90; m_j3=90; m_j4=90; m=200; n=120; flag=3;CMachineView:CMachineView()BOOL CMachineView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CView:PreCreateWindow(cs);/ CMachineView drawingvoid CMachineView:OnDraw(CDC* pDC)CMachineDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ CMachineView printingBOOL CMachineView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CMachineView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid CMachineView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printing/ CMachineView diagnostics#ifdef _DEBUGvoid CMachineView:AssertValid() constCView:AssertValid();void CMachineView:Dump(CDumpContext& dc) constCView:Dump(dc);CMachineDoc* CMachineView:GetDocument() / non-debug version is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CMachineDoc);return (CMachineDoc*)m_pDocument;#endif /_DEBUG/ CMachineView message handlersvoid CMachineView:OnDrawinSet() CDrawingSetDialog dlg; /新建窗口并打开,方便输入数据dlg.DoModal();m_r=dlg.m_r; /读取输入的数据 m_e=dlg.m_e; m_h=dlg.m_h; m_j1=dlg.m_j1; m_j2=dlg.m_j2; m_j3=dlg.m_j3; m_j4=dlg.m_j4; flag=dlg.m_flag; CDC *pDC=GetDC(); /取得设备环境 CPen pen,*poldpen; pen.CreatePen(0,1,240);poldpen=pDC-SelectObject(&pen);pDC-TextOut(m-(int)m_r*3,n+(int)m_r*1.5,轮廓线); /画轮廓线坐标 pDC-MoveTo(m,n-(int)m_r*3); pDC-LineTo(m,n+(int)m_r*3); pDC-MoveTo(m-(int)m_r*3,n);pDC-LineTo(m+(int)m_r*3,n);int m0,n0,m1,n1,m2,n2,ss,vv,aa;m0=m+(int)m_r*9, n0=n; /画位置曲线坐标 pDC-TextOut(m0-(int)m_h*2,n0+(int)m_h*1.5,位置曲线); pDC-MoveTo(m0-(int)m_r,n0); pDC-LineTo(m0-(int)m_r+(int)m_h*4,n0); pDC-MoveTo(m0,n0+(int)m_h*1.5);pDC-LineTo(m0,n0-(int)m_h*1.5);m1=m, n1=n+(int)m_r*3+(int)m_h*2; /画速度曲线坐标pDC-TextOut(m1-(int)m_h*2,n1+(int)m_h*1.5,速度曲线); pDC-MoveTo(m1,n1-(int)m_h*1.5); pDC-LineTo(m1,n1+(int)m_h*1.5); pDC-MoveTo(m-(int)m_h*0.5,n1);pDC-LineTo(m+(int)m_h*4,n1); m2=m+(int)m_r*9, n2=n+(int)m_r*3+(int)m_h*2; /画加速度曲线坐标 pDC-TextOut(m2-(int)m_h*2,n2+(int)m_h*1.5,加速度曲线);pDC-MoveTo(m2,n2-(int)m_h*1.5); pDC-LineTo(m2,n2+(int)m_h*1.5); pDC-MoveTo(m2-(int)m_h*0.5,n2);pDC-LineTo(m2+(int)m_h*4,n2); double pi=3.141592653; /辅助变量double s,s0,s11,s12,s2,r;double v,v0,v11,v12,v2;double a,a0,a11,a12,a2;double x,y,e,x0,y0; x0=m+(int)m_r,y0=n,ss=n0,vv=n1,aa=n2,s=0,v=0,a=0; /画位置、速度、加速度各条曲线及轮廓线 pDC-Ellipse(m-(int)m_r,n-(int)m_r,m+(int)m_r,n+(int)m_r); /画基圆 for(int j=0;j360-m_j4) /j4s0=s11=s12=s2=v0=v11=v12=v2=a0=a11=a12=a2=0;else if(j360-m_j4-m_j3) /j3s0=m_h-m_h*(j-180)/m_j3; s11=m_h-m_h*(j-180)*(j-180)/(m_j3*m_j3); s12=m_h*(j-m_j3-180)*(j-m_j3-180)/(m_j3*m_j3);s2=m_h-0.5*m_h*(1-cos(double)pi*(j-180)/m_j3);v0=0-m_h*90/m_j1;v11=0-2*m_h*90*(j-180)/(m_j3*m_j3);v12=2*m_h*90*(j-m_j3-180)/(m_j3*m_j3);v2=0-0.5*m_h*sin(double)pi*(j-180)/m_j3)*180/m_j3;a0=0;a11=0-2*m_h*90*90/(m_j3*m_j3);a12=2*m_h*90*90/(m_j3*m_j3);a2=0-0.5*m_h*cos(double)pi*(j-180)/m_j3)*180*180/(m_j3*m_j3);else if(j360-m_j4-m_j3-m_j2) /j2s0=s11=s12=s2=m_h,v0=v11=v12=v2=a0=a11=a12=a2=0;else /j1s0=m_h*j/m_j1; s11=m_h*j*j/(m_j1*m_j1);s12=m_h-m_h*(j-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年机动车维修技术人员资格考试相关法规知识题库及答案
- 生物多样性保护在2025年生态修复工程中的经济效益分析
- 2025-2030中国热封漆市场运营策略与销售前景监测报告
- lol题目及答案大全
- 2025年工业机器人在柔性制造系统中的集成与应用策略研究报告
- 2025年环保设备制造业市场深度分析:竞争与产品创新并行
- 生态旅游度假区旅游项目投资回报与可持续发展研究报告
- 金融行业数据资产化与合规管理研究报告
- 2025-2030环境信息披露制度对企业行为影响评估
- 石家庄市网格员考试真题2024
- DL∕T 1362-2014 输变电工程项目质量管理规程
- 业务跟单培训
- 河北省唐山市路北区2023-2024学年八年级下学期期末数学试题
- DL-T-5161.13-2018电气装置安装工程质量检验及评定规程第13部分:电力变流设备施工质量检验
- 安全顾问聘请协议
- 设备材料进场报验单
- 班组长计划管理能力考试题库-上(选择题)
- 八年级物理下册期末试卷综合测试卷(含答案)
- (完整版)《机械制造工艺基础》教案
- 小学四年级数学口算题(每页60道直接打印).文档
- 抖音剪辑合同
评论
0/150
提交评论