滚动轴承动力学模型代码 #指定了某篇paper复现,具体都如图打包在文件夹了,保证程序可以打开。 给出轴承三维模型solidworks软件打开2019+版本可以打开。

打开SolidWorks轴承模型时,金属滚珠与保持架的精密配合让人想起小时候拆解机械闹钟的经历。不过这次我们要用Python把轴承的舞蹈轨迹转化成微分方程——这可比拆玩具刺激多了。

先看看动力学模型的核心方程组。这里用龙格库塔法解算的微分方程,像极了给每个滚珠装上传感器:
def bearing_equations(t, y):
x, dx, z, dz, q, dq = y
# 赫兹接触理论计算接触力
Fn = (contact_deformation**1.5) * stiffness_coeff
# 考虑离心力与陀螺力矩
centrifugal = omega**2 * (cage_radius - 0.5*ball_diameter)
# 耦合非线性方程组
dydt = [dx,
(Fn * math.sin(q) - damping*dx)/mass,
dz,
(Fn * math.cos(q) - damping*dz)/mass - gravity,
dq,
(torque_ball - friction_torque)/inertia]
return np.array(dydt)
这段代码藏着三个魔鬼细节:赫兹接触的非线性指数、离心力导致的时变刚度,以及滚珠自转带来的陀螺效应。某次我忘记给角度q做模2π处理,结果滚珠在仿真中表演了720度空翻。

可视化部分更有意思。用Matplotlib的3D轴系生成轴承运行轨迹,配上渐变色映射接触应力:
def plot_real_time(ax, states):
ax.clear()
# 绘制保持架轨迹
ax.plot(states[:,0], states[:,2], zs=0, zdir='y', c='#2F5597')
# 生成滚珠位置热力图
theta = np.linspace(0, 2*np.pi, num_balls+1)
x_balls = cage_radius * np.cos(theta)
z_balls = cage_radius * np.sin(theta)
# 用接触力值映射颜色
colors = plt.cm.jet(contact_forces/max_force)
ax.scatter(x_balls, z_balls, c=colors, s=50, depthshade=False)
# 添加轴承座标系箭头
ax.quiver(0,0,0, 0.1,0,0, color='r', lw=2)
ax.set_zlim(-0.05, 0.15)
当第一次看到滚珠群在三维空间中跳出力学芭蕾时,我仿佛听见了金属的呼吸——虽然这可能只是CPU风扇在哀嚎。调试时发现保持架振动幅值异常,检查半天才发现是没考虑润滑油的挤压阻尼,补上个tanh速度项才让仿真回归现实。

最后把SolidWorks模型导出的质量参数写成JSON配置,让程序自动读取:
{
"bearing": {
"inner_race_dia": 52.3,
"outer_race_dia": 77.8,
"ball_count": 12,
"pretension": 0.0032
},
"material": {
"youngs_modulus": 210e9,
"poissons_ratio": 0.3
}
}
这个模型跑完20秒仿真大约需要喝两杯咖啡的时间。建议把求解器的max_step参数设为角接触周期的1/5,否则可能在高速工况下错过重要的接触事件。就像用慢镜头观察蜂鸟振翅,合适的步长才能捕捉动力学的微妙韵律。
132万+

被折叠的 条评论
为什么被折叠?



