简介:这份机械原理大作业资源围绕凸轮机构的设计与分析展开,面向机械类本科生课程设计或大作业需求,完整呈现偏置直动滚子推杆盘形凸轮机构的求解过程。资源包内为一份doc文档,共1个文件,压缩包大小363KB,涵盖题目要求、详细参数表(含4-A、4-B、4-C等多个题号)、VB程序源代码及分析结果。文档基于VB编程实现凸轮轮廓计算,推程采用五次多项式、回程采用余弦加速度运动,并给出相关设计方程与代码逻辑,读者可直接对照理解凸轮轮廓的求解思路。除设计实例外,内容还系统介绍凸轮的定义与分类、设计要求、常用设计方法(VB编程与CAD软件)及分析方法(数学模型与仿真软件),可同时用于完成大作业和复习机械原理凸轮章节。该资源已有896人浏览学习,适合机械专业学生作为课程设计与期末复习的参考资料。
1. 凸轮大作业最迷惑人的地方:它长得像画图题,考的是运动学设计
凸轮大作业最让人迷惑的地方,是它长得像一道画图题。给一组运动角、行程和基圆半径,用分度器把反转法走一遍,描点连线,看上去就能交差。但真正动手才发现,压力角、滚子半径、运动规律这些看不见的参数,才是评分表上的大头。这篇按“选规律—求轮廓—校核—出图”的顺序,把直动从动件凸轮从手算推导到 MATLAB 计算的完整流程走一遍。新手能照着步骤跑通,熟手可以拿参数边界和避坑清单对标自己的写法。
2. 凸轮运动规律选型:四个常用规律怎么选,参数怎么定
凸轮大作业里最先落笔的不是轮廓,而是从动件的位移方程。理由很直接:凸轮轮廓上每个点的半径,等于基圆半径加上当前转角对应的从动件位移。运动规律选错,后面的坐标计算全部跟着错,返工量最大。这一章把四个常用规律讲透,再给出选型流程。
2.1 等速运动:公式最简单,刚性冲击也最硬
等速运动的位移方程是 s = h × φ/φ0,转角与位移线性对应,画出来就是一条斜线。速度是常量 v = hω/φ0,加速度除了始末两点为无穷大,中间全为零。
问题恰恰出在始末两点:运动一开始速度从 0 跳到 v_max,结束又突然归零,加速度在数学上是无穷大,机构表现为刚性冲击。实际机构里能听到“哐”的一声,推杆和轴承受损都很快。所以等速规律只适合低速轻载,比如手动机构、低速仪表机构。作业里如果凸轮转速明确给到 120 r/min 以下,用它写报告问题不大;转速再高就要换别的规律。
等速规律还有一个隐藏易错点:单位。很多人直接把 φ 从 0 到 90 代入公式,忘了求导数时角度要换弧度。位移公式本身写角度制也行,但 ds/dφ 一旦按角度制算,后面压力角等于多乘一个 π/180,整套校核数据全废。我习惯一上来就把角度全部定义成弧度制,后面不管求导还是画图都不用再换算。
2.2 等加速等减速运动:速度线性增减,冲击降到柔性
等加速等减速把推程分成两段:前半匀加速,后半匀减速。位移是两个抛物线拼接出来的:
- 推程前半:s = 2h(φ/φ0)²
- 推程后半:s = h − 2h((φ0 − φ)/φ0)²
速度线性增减,没有等速那种阶跃变化;但加速度在起点、中点、终点三处发生跳变,曲线出现折点,机构产生柔性冲击。柔性冲击比刚性冲击柔和,高速时依然能感觉到。工程上常用于中速中载场合,比如自动机床的进给凸轮。
大作业如果题目没指定运动规律,这是我见得最多的选择:手算好算,程序好写,报告也好讲。需要特别注意的是回程,回程位移从 h 降到 0,同样分两段,但初末位置和推程相反,方程不能照抄推程。还有一个高频错误是把分界角度死记成 45°,实际是 φ0/2:φ0 是 90° 时才是 45°,如果题目给 100°,分界就是 50°。分界都画错,后面坐标自然全对不上。
等加速等减速的推程速度函数是 ds/dφ = 4h·φ/φ0²,随角度线性增加,所以压力角峰值多半出现在推程中后段。这个规律可以用来自查:如果程序输出的最大压力角出现在完全不同的区域,大概率位移函数写错了。
2.3 余弦加速度与正弦加速度:冲击更小,公式更长
余弦加速度规律,也叫简谐运动规律,位移是 s = (h/2)[1 − cos(πφ/φ0)]。速度在始末两端为零,最大速度出现在中点;加速度在终点不为零,所以一个推程循环内,加速度在端点仍有突变,属于柔性冲击。
正弦加速度规律,也叫摆线运动规律,位移是 s = h[φ/φ0 − sin(2πφ/φ0)/(2π)]。它的速度、加速度在端点都为零,既无刚性冲击也无柔性冲击,是高速凸轮的首选。代价是公式里嵌套了一个三角函数,手动求导容易漏系数,但用 MATLAB 或 Python 算就无所谓。
两者最容易混淆的点都在“简谐”两个字上。记住一个区分标准:端点加速度是否为零。余弦在端点不为零,正弦为零;所以高速平稳需求选正弦,一般情况选余弦。报告里写一句“本设计采用摆线运动规律以避免冲击”,就是一个完整的加分理由。
把四个规律放到一起看更直观:
| 运动规律 | 推程最大速度因子 | 最大加速度因子 | 冲击性质 | 常见场合 |
|---|---|---|---|---|
| 等速 | 1.00 | ∞(理论) | 刚性冲击 | 低速轻载 |
| 等加速等减速 | 2.00 | 4.00 | 柔性冲击 | 中速中载 |
| 余弦加速度 | 1.57 | 4.93 | 柔性冲击 | 中速、要求不高 |
| 正弦加速度 | 2.00 | 6.28 | 无冲击 | 高速轻载 |
这张表每次做凸轮作业我都会先排一遍。速度因子在后期校核压力角时会用到:压力角和速度成正比,同样的基圆半径下,速度因子大的规律压力角也大,所以高速规律往往要配更大的基圆半径。
2.4 选型流程与报告叙述:先定场合,再定规律
动手写位移函数之前,我问自己三个问题:凸轮用在什么机构?题目有没有提振动、噪声、转速要求?我打算手算还是程序算?
使用场合决定转速量级。推杆形式决定后续校核项:尖顶推杆和滚子推杆要校核压力角,平底推杆不必,但要额外检查廓线是否凹陷。计算工具决定公式复杂度:手算 12 等分时,正弦公式抄错概率远高于等加速等减速;用 MATLAB 算,四种规律只是换一行公式的事。
选型本身很少被单独扣分,会被扣的是没有校核,或者位移函数与图对不上。所以报告里至少要写清楚一句:“本设计工况为中速轻载,选用等加速等减速运动规律,推程最大速度因子 2.00,加速度因子 4.00,冲击特性为柔性冲击”。这样说明白,老师就知道你做过判断。
3. 轮廓设计两条路线:反转法作图与解析法求坐标
运动规律选完,进入凸轮的硬核部分:求理论轮廓。常见两条路线,图解法的反转法和解析法的坐标公式。我的建议是两条都做一遍:图解帮你建立几何直觉,解析让程序落地,最后两者对不上时还能定位错误来源。
3.1 反转法作图:把凸轮反着转来定位推杆
反转法的本质是把“凸轮转动、推杆上下动”的相对运动,换算成“凸轮不动、推杆导路绕轴反转”。做法是给整个机构附加一个 −ω 角速度,凸轮看起来静止,推杆导路连同推杆绕凸轮轴心反向转动。每到一个角度位置,按运动规律给出的 s(φ) 沿导路量位移,把推杆滚子中心的位置描到图上,所有点连起来就是理论廓线。
具体作图步骤:
- 按基圆半径 r0 画基圆;
- 在基圆上按比例标出推程角、远休止角、回程角、近休止角;
- 每 15° 或 10° 取一个分点,把导路反转摆到对应方位;
- 沿导路方向,从基圆向外量取 s(φ);
- 描点后用曲线板平滑连接。
最常见的错误是把“先转导路”和“先量位移”的顺序搞反。先量位移再转导路,描出来的点看似差不多,实则每个点都偏了一个角度,角度越大偏差越明显。偏置直动推杆还要先画偏距圆,反转后的导路始终与偏距圆相切,位移沿导路方向量。这个几何关系直接对应下一节解析公式里的 e·sinφ 和 e·cosφ 项。
如果你的大作业要求交手绘图纸,建议把每个分点的编号、对应角度和 s 值列在图纸旁边。老师复核时能一眼看到数据来源。不少同学描点很漂亮,但没有任何中间数据,等于只给了结果没给过程,扣分点就在这种地方。
3.2 解析法坐标公式:对心与偏置两种情况一次写清
对心直动滚子推杆是大多数大作业的标准构型,理论廓线坐标公式:
- x = (r0 + s(φ))·cosφ
- y = (r0 + s(φ))·sinφ
坐标原点取凸轮回转中心,φ 从推程起点开始计量。要注意凸轮转向和 φ 的旋转方向必须一致,否则整个轮廓是镜像的。我习惯把凸轮转向定义为逆时针,φ 按逆时针递增,这样表达式最简洁,和手绘作图也能对上。
偏置直动推杆的坐标公式是:
- x = (r0 + s(φ))·cosφ ∓ e·sinφ
- y = (r0 + s(φ))·sinφ ± e·cosφ
符号取法取决于推杆导路相对轴心的偏置方向与凸轮转向。记忆方式是在草图上画一个偏置的导路:导路切偏距圆,切点与轴心的连线始终垂直于导路,投影下来就是那一对修正项。符号写反的后果是整个轮廓偏移方向反向,压力角也会错一截。所以 e 要单独设变量,并在注释里写清取正还是取负。
3.3 基圆半径与滚子半径:两个影响全局的设计参数
基圆半径 r0 不是凭感觉定的。教科书原则是在满足强度、结构、装配的前提下尽量取小,凸轮才紧凑;但 r0 越小压力角越大,越容易超标。常见做法是初选 r0 ≈ (1.5~3)h,行程 40 mm 时先取 60 mm,跑完压力角再调。如果压力角超了,优先增大 r0,而不是换运动规律,因为 r0 对压力角的影响是全局而直接的。
滚子半径 rt 有一条必须检查的边界:理论廓线最小曲率半径 ρ_min 必须大于 rt。若不满足,实际廓线会出现尖点甚至自交,滚子推杆到那个位置会卡住或磨损异常。校核方法是用解析式扫一遍理论廓线的曲率半径,取最小值 ρ_min,再保证 rt ≤ 0.8ρ_min。极限位置通常出现在推程与回程的过渡段,要重点看。
给一个初选参数参考:
| 参数 | 初选范围 | 调整方向 |
|---|---|---|
| r0 | (1.5~3)h | 压力角超 30° 就加大 |
| rt | ≤ 0.8ρ_min | 实际廓线自交就调小 |
| e | 0(对心)或 ≤ 0.5r0 | 想减小推程压力角可偏置 |
4. 用 MATLAB 把凸轮算出一套能交作业的结果脚本
手算只能交一份图样,程序却能拿到几百个离散点并顺带完成压力角校核。脚本按“位移 → 坐标 → 校核 → 出图”分层写,每段都能独立运行。
4.1 从运动规律生成位移数组
% 凸轮主参数 h = 40e-3; % 推杆行程 40 mm r0 = 60e-3; % 基圆半径 60 mm e = 0; % 偏距,对心直动取 0 phi0 = 90; % 推程运动角 90° phis = 60; % 远休止角 60° phi10 = 90; % 回程运动角 90° phi1s = 120; % 近休止角 120° step = 0.5; % 计算步长 0.5° phiAll = 0:step:360; n = length(phiAll); s = zeros(1, n); % 位移数组预分配 for i = 1:n phi = phiAll(i); if phi <= phi0 % 推程采用等加速等减速 if phi <= phi0/2 s(i) = 2*h*(phi/phi0)^2; % 前半匀加速 else s(i) = h - 2*h*((phi0-phi)/phi0)^2; % 后半匀减速 end elseif phi <= phi0 + phis s(i) = h; % 远休止 elseif phi <= phi0 + phis + phi10 % 回程采用余弦加速度规律 t = (phi - phi0 - phis) / phi10; s(i) = h/2 * (1 + cos(pi*t)); else s(i) = 0; % 近休止 end end这段代码的核心是分四段判断。推程用等加速等减速,回程用余弦加速度,这是刻意的组合:一份作业同时掌握两种规律,也分别体会它们的冲击特性。if 分支顺序必须按角度递增区间排列,顺序写反,位移函数就会串段。step 取 0.5° 是精度和计算量的折中,交作业用 1° 也行,但要检查分段点是否平滑。
4.2 理论廓线与压力角校核
% 角度转弧度,计算理论廓线 phiRad = deg2rad(phiAll); x = (r0 + s) .* cos(phiRad); y = (r0 + s) .* sin(phiRad); % 位移对转角求导,步长必须转弧度 ds_dphi = gradient(s, deg2rad(step)); % 压力角:tan(alpha) = ds/dphi / (r0+s),对心滚子直动推杆 alpha = atand(abs(ds_dphi) ./ (r0 + s)); % 检查是否超过许用压力角 30° over = find(alpha > 30); if isempty(over) fprintf('压力角校核通过,最大压力角 = %.2f°\n', max(alpha)); else fprintf('压力角超标点 %d 个,最大 %.2f°\n', length(over), max(alpha)); endgradient 用中心差分求导,位移曲线是分段多项式时它比 diff 更稳定。最容易被忽略的是 deg2rad(step):这一步把差分步长从度换算成弧度,否则 ds/dφ 会被放大 57.3 倍,压力角输出直接变成几百度的离谱结果。这个坑我踩过,第一次跑脚本看到最大压力角 800 多度,排查半天就是单位没换算。
压力角许用值按惯例,推程取 30°~38°,回程取 70°~80°;大作业统一按 30° 校核,写报告最安全。超标时优先放大基圆半径 r0,重新跑一次就能看到最大压力角明显下降。
4.3 实际廓线与出图检查
% 滚子半径 rt = 8e-3; % 单位内法矢量 dx = gradient(x, deg2rad(step)); dy = gradient(y, deg2rad(step)); modT = sqrt(dx.^2 + dy.^2); nx = -dy ./ modT; % 内法线方向 ny = dx ./ modT; % 实际廓线:理论廓线沿内法线偏移一个滚子半径 xc = x + rt.*nx; yc = y + rt.*ny; figure('Color','w'); plot(x*1000, y*1000, 'b--', 'LineWidth', 1.2); hold on; plot(xc*1000, yc*1000, 'r-', 'LineWidth', 1.5); axis equal; xlabel('x / mm'); ylabel('y / mm'); legend('理论廓线','实际廓线'); grid on;实际廓线是滚子中心沿内法线缩进一个滚子半径,不是简单圆角。法线方向取反,轮廓就会外扩,和图纸对不上。绘图后要检查推程起点与回程终点附近是否局部凹陷或自交,出现问题优先调小 rt 或加大 r0。坐标轴必须等比,不然圆会画成椭圆。
4.4 报告用数据表:让计算过程更透明
作业除了图还要有数据表。把 φ = 0°、45°、90°、135°、180°、225°、270°、315° 对应的位移、理论廓线坐标和压力角列成表,放在附录。0° 和 90° 两个特殊点可以手算验证:φ=0 时 s=0,x=r0,y=0;φ=90 时推程刚好结束,s=h,x=0,y=r0+h。
| φ/° | s/mm | x/mm | y/mm | α/°(脚本输出) |
|---|---|---|---|---|
| 0 | 0.00 | 60.00 | 0.00 | 0.00 |
| 90 | 40.00 | 0.00 | 100.00 | 由脚本输出 |
| 180 | 40.00 | -100.00 | 0.00 | 由脚本输出 |
| 270 | 0.00 | 0.00 | -60.00 | 由脚本输出 |
加一张最大压力角、最小曲率半径、滚子半径三个关键数值的总结表,报告就从一个“画图作业”升级成“设计计算书”。
5. 凸轮大作业避坑记录:六个高频翻车现场与解决办法
这一章写我见过和踩过的坑,按“现象 → 原因 → 解决”逐条排。每一条都对应某个真实的扣分项。
5.1 位移曲线在分段衔接处有明显转折
现象:位移曲线在推程与远休止交接处出现尖角,速度图出现台阶。 原因:所选规律在分界点速度不为零。等速规律推程终点速度为 v_max,远休止速度为零,两者相接,虽然位移连续,速度却不连续,产生刚性冲击。 解决:换成端点速度为零的规律,如余弦或正弦;如果必须保留等速段,就在等速段前后加过渡圆弧。作业里最省事的做法是改用等加速等减速,重新生成位移曲线再算一遍。
5.2 压力角算出来七八十度,手算却只有三四十
现象:MATLAB 输出最大压力角 80° 甚至更大,手算却正常。 原因:求导步长没转弧度,用 gradient(s, step) 时 step 还是度数,造成 ds/dφ 被放大 57.3 倍。另一个可能是远休止和近休止段用了数值差分,把零位移附近的噪声当成导数,压力角曲线出现一排尖刺。 解决:统一用 deg2rad(step);对远休止和近休止段直接设 ds = 0,不参与数值差分。这类问题通常在 5 分钟内定位,但卡半个小时的也大有人在。
5.3 实际廓线出现尖点或自交
现象:画出的实际廓线出现凹陷、尖点,甚至曲线自身交叉。 原因:滚子半径 rt 大于理论廓线最小曲率半径 ρ_min,包络线发生自交。很多人只检查了外凸段,忽略了推程与回程交汇附近的凹段。 解决:计算整圈曲率半径并取最小值 ρ_min,确保 rt ≤ 0.8ρ_min;如果实在不行就放大基圆半径。检查重点放在推程与回程过渡区域。
5.4 图纸轮廓左右不对称
现象:轮廓明显向一侧偏斜,与理论预期不一致。 原因:偏置直动推杆坐标公式里,∓e·sinφ 和 ±e·cosφ 的符号取反,整体偏移方向反向。 解决:画局部示意图,标出凸轮转向箭头和导路位置,用三角关系推一次符号,再对照程序里 e 的正负。花十分钟理清,比盲目调参数强得多。
5.5 理论廓线与实际廓线距离不对
现象:两条廓线之间距离不是滚子半径 rt,而是几十毫米。 原因:法向偏移方向取反,内偏变外偏,两条线间距变成了 2rt 或更大。 解决:取理论廓线上一个点,沿法向偏移 rt 后画一个半径 rt 的小圆,立刻能确认偏移方向对不对。第一张图就做这个校验,后面不用重画。
5.6 手绘图和 MATLAB 图方向相反
现象:手画图凸轮逆时针转,程序算出来却是顺时针的镜像。 原因:手工约定凸轮逆时针,程序里角度沿顺时针递增,两者互为镜像。 解决:在文档最前面写一句“凸轮旋转方向为逆时针,角度递增方向与之一致”,所有程序与作图遵守同一约定。这一行说明还能减少老师读图的成本。
6. 大作业加分技巧:压力角区间、曲率检查与动态模拟
如果前面五章都走通了,这份作业已经是中上水平。想再往上走,我建议补三件事,写进报告的设计校核章节。第一,按推程段和回程段分别统计最大压力角及出现角度,写“推程最大压力角 26.3°,出现在 φ≈60°”,比笼统写“最大 27°”更有说服力。第二,做曲率校核,把最小曲率半径 ρ_min 的位置和数值标在图上。第三,做一个动态模拟:凸轮转过 360°,推杆完成推—停—回—停,截几张连续画面放进附录。
for k = 1:4:length(x) plot(x*1000, y*1000, 'b-'); hold on; plot(xc*1000, yc*1000, 'r-'); plot(x(k)*1000, y(k)*1000, 'ko', 'MarkerFaceColor', 'k'); plot([0, x(k)*1000], [0, y(k)*1000], 'g-', 'LineWidth', 1); title(sprintf('转角 = %.1f° 位移 = %.2f mm', phiAll(k), s(k)*1000)); axis equal; xlim([-100 100]); ylim([-100 100]); grid on; hold off; drawnow; pause(0.05); end这个动态骨架十分钟能写完,却在报告里极有记忆点。多数人交上去的只有静态轮廓图,你放一张过程图或视频截图,视觉上完全不一样。代价很小,输出几张 PNG 到附录就行。
我的个人习惯是,收尾那天把原始计算数据、各版本脚本和图样全部归档,文件名带 v1、v2,绝不覆盖旧版。有一回我改基圆半径改到第三版,发现第一版参数最合适,如果当时没留旧文件,就得全部重跑。凸轮大作业比的往往不是一次算对,而是能不能快速试错、快速回到合理方案。希望帮到你。
本文还有配套的精品资源,点击获取