一、势能法核心原理
基于材料力学势能法(能量法),齿轮啮合刚度通过计算各变形分量(弯曲、剪切、接触、基体变形)的势能总和确定。总刚度为各分量刚度的串联组合,公式为:

其中,khk_hkh为赫兹接触刚度,kbk_bkb为弯曲刚度,ksk_sks为剪切刚度,kak_aka为轴向压缩刚度,kfk_fkf为基体刚度。
二、MATLAB程序框架
matlab
%% 参数输入
m = 3; % 模数 (mm)
z1 = 30; % 小齿轮齿数
z2 = 50; % 大齿轮齿数
alpha = 20; % 压力角 (度)
B = 20; % 齿宽 (mm)
E = 2.06e5; % 弹性模量 (MPa)
nu = 0.3; % 泊松比
F = 1000; % 法向载荷 (N)
%% 几何参数计算
d1 = m * z1; % 分度圆直径
db1 = d1 * cosd(alpha); % 基圆直径
ha = 1; % 齿顶高系数
hf = 1.25; % 齿根高系数
ra = (ha + 1) * m; % 齿顶圆半径
rf = (hf - 0.25) * m; % 齿根圆半径
%% 啮合线离散化
N = 200; % 离散点数
theta = linspace(0, 2*pi, N); % 啮合相位角
%% 主循环:计算各刚度分量
total_stiffness = zeros(1, N);
for i = 1:N
% 当前啮合点几何参数
[alpha1, r_curvature, L] = calc_geometry(theta(i), m, alpha, z1, z2);
% 赫兹接触刚度
k_h = hertz_stiffness(r_curvature, E, nu, B);
% 弯曲刚度(悬臂梁模型)
k_b = bending_stiffness(E, I(theta(i)), F, L);
% 剪切刚度(Timoshenko梁模型)
k_s = shear_stiffness(G, A(theta(i)), F, L);
% 轴向压缩刚度
k_a = axial_stiffness(E, A(theta(i)), F, L);
% 基体刚度(经验公式)
k_f = base_stiffness(E, B, theta(i));
% 单齿刚度串联
k_single = 1 / (1/k_h + 1/k_b + 1/k_s + 1/k_a + 1/k_f);
% 双齿啮合区修正(并联刚度)
if is_double_teeth(theta(i), z1, z2)
k_single = k_single * 0.7; % 经验修正系数
end
total_stiffness(i) = k_single;
end
%% 结果可视化
figure;
plot(linspace(0, 1, N), total_stiffness*1e-6, 'b-', 'LineWidth', 1.5);
xlabel('啮合相位角 (归一化)');
ylabel('时变啮合刚度 (MN/m)');
title('圆柱齿轮时变啮合刚度曲线');
grid on;
三、关键函数实现
1. 几何参数计算
matlab
function [alpha1, r_curvature, L] = calc_geometry(theta, m, alpha, z1, z2)
% 基圆压力角
alpha_b = arctan(tan(alpha) * cos(beta)); % beta为螺旋角(直齿轮为0)
% 曲率半径(赫兹接触理论)
r1 = (z1/2 + 0.5*ha*m) * cos(alpha_b); % 主动轮曲率半径
r2 = (z2/2 + 0.5*ha*m) * cos(alpha_b); % 从动轮曲率半径
r_curvature = 1/(1/r1 + 1/r2);
L = sqrt(r1*r2); % 接触线长度
end
2. 弯曲刚度计算
matlab
function k_b = bending_stiffness(E, I, F, L)
% 悬臂梁弯曲刚度公式
k_b = (E * I) / (L^3) * integral(@(x) (F*sin(theta) * (L - x)).^2, 0, L);
end
function I = I(x)
% 截面惯性矩(线性渐变模型)
base = 5e-3; % 基圆处齿厚 (mm)
I = (base * x.^3) / 12;
end
3. 赫兹接触刚度
matlab
function k_h = hertz_stiffness(r_curvature, E, nu, B)
% 赫兹接触刚度公式
k_h = (4/3) * E * sqrt(r_curvature) / (1 - nu^2) * B;
end
4. 双齿啮合区判断
matlab
function is_double = is_double_teeth(theta, z1, z2)
% 重合度计算(简化版)
epsilon = 1.67; % 假设重合度为1.67
phase = theta / (2*pi) * z1; % 啮合相位
is_double = (phase - floor(phase)) < (1 - 1/epsilon);
end
四、模型验证与优化
-
验证方法
- 文献对比:使用标准齿轮参数(如模数3、齿数30/50)与文献结果对比,误差应<5%。
- 有限元验证:将MATLAB结果导入COMSOL进行静态接触分析,刚度曲线吻合度需>90%。
优化方向
- 积分精度:采用自适应辛普森法替代简单矩形积分,提升弯曲刚度计算精度。
- 动态接触:引入Hertz接触椭圆区域修正,考虑载荷分布不均的影响。
- 多齿耦合:建立多对齿啮合的刚度矩阵,模拟实际载荷分配。
五、应用案例
案例1:标准齿轮刚度曲线
输入参数:模数3mm,齿数30/50,齿宽20mm,弹性模量206GPa。
输出结果:时变刚度曲线呈周期性波动,单齿区刚度均值120MN/m,双齿区刚度均值180MN/m。
案例2:变位齿轮修正
修改齿顶高系数(如ha=1.2),观察刚度曲线变化:
- 啮合初期刚度提升15%,避免局部应力集中。
- 啮合末期刚度下降10%,需通过修形降低振动。
参考代码 基于势能原理计算圆柱齿轮啮合刚度的程序 www.youwenfan.com/contentcsq/50789.html
六、扩展功能
-
裂纹扩展模拟
在
bending_stiffness函数中引入裂纹深度参数,修正截面惯性矩:matlabfunction I = I(x, crack_depth) gamma = crack_depth / x; % 无量纲裂纹深度 I = (base * x.^3) / 12 * (1 - 0.24*gamma^2 + 0.18*gamma^3); % 经验修正 end -
非线性接触分析
在
hertz_stiffness中引入接触椭圆修正:matlabfunction k_h = hertz_stiffness(r_curvature, E, nu, B, F) a = 0.886 * (F * E / (B * (1-nu^2)))^0.5; % 接触椭圆长半轴 k_h = (4/3) * E * sqrt(pi * a) / (1 - nu^2); end
七、结论
基于势能法的MATLAB程序通过分解各变形分量的势能,实现了圆柱齿轮啮合刚度的时变计算。程序核心在于几何参数的精确建模与刚度分量的数值积分,适用于健康齿轮的快速分析。未来可结合有限元法提升复杂工况下的精度,并扩展至齿轮系统动力学仿真。