Bearing Stiffness Calculation Using MATLAB: Static and Dynamic Models

Static Stiffness Model Based on Hertz Contact Theory

Theoretical Foundation

The static stiffness calculation for bearings relies on Hertz contact theory. The fundamental expression is:

(K=\n 3}{2}ZED^{1.5}(1−\kappa)^{1.5}\cos^3\alpha)

The parameters are defined as follows:

  • (Z): Number of rolling elements
  • (E): Elastic modulus
  • (D): Rolling element diameter
  • (\kappa=1−\frac{D}{D_p}\cos\alpha) (contact angle coefficient)
  • (D_p): Pitch diameter

MATLAB Implementation

function K = compute_bearing_stiffness(num_elements, dia_elements, dia_pitch, modulus, angle)
    % Compute contact angle coefficient
    contact_coeff = 1 - (dia_elements / dia_pitch) * cos(angle);
    
    % Calculate static stiffness
    K = (5/2) * num_elements * modulus * dia_elements^1.5 ...
        * contact_coeff^1.5 * cos(angle)^3;
end

% Configuration parameters for deep groove ball bearing
num_elements = 10;        % Number of rolling balls
dia_elements = 0.01;     % Ball diameter (m)
dia_pitch = 0.1;         % Pitch diameter (m)
modulus = 210e9;         % Elastic modulus (Pa)
angle = deg2rad(15);     % Contact angle (radians)

% Compute stiffness value
stiff_val = compute_bearing_stiffness(num_elements, dia_elements, dia_pitch, modulus, angle);
fprintf('Static stiffness: %.2e N/m\n', stiff_val);

This implementation directly applies the static stiffness formula and is suitable for preliminary design of deep groove ball bearings and tapered roller bearings.

Dynamic Stiffness Model with Nonlinear Effects

Theoretical Framework

Dynamic stiffness analysis requires incorporating nonlinear contact effects. The governing equation includes a cubic nonlinearity term:

(m\ddot{x} + c\dot{x} + k_0 x + k_3 x^3 = F_0 \sin(\omega t))

Where (k_3) represents the nonlinear stiffness coefficient, typically obtained through finite element analysis or experimental calibration.

Simulation Implementation

% System parameters
mass = 0.5;        % Equivalent mass (kg)
damping = 25;      % Damping coefficient (Ns/m)
lin_stiff = 1e5;   % Linear stiffness (N/m)
nonlin_coeff = 1e8; % Nonlinear stiffness (N/m³)
force_amp = 2000;  % Excitation amplitude (N)
freq_exc = 173;    % Excitation frequency (Hz)

% Define system of differential equations
motion_eq = @(t, state) [
    state(2);
    (force_amp * sin(2 * pi * freq_exc * t) ...
     - damping * state(2) ...
     - lin_stiff * state(1) ...
     - nonlin_coeff * state(1)^3) / mass
];

% Simulation settings
time_span = [0 0.1];    % Time duration (s)
initial_state = [0; 0]; % Initial conditions

% Numerical integration
[time_vec, state_vec] = ode45(motion_eq, time_span, initial_state);

% Visualization
figure;
subplot(2,1,1);
plot(time_vec, state_vec(:,1));
title('Displacement Response');
xlabel('Time (s)'); ylabel('Displacement (m)');

subplot(2,1,2);
plot(time_vec, state_vec(:,2));
title('Velocity Response');
xlabel('Time (s)'); ylabel('Velocity (m/s)');

This approach is particularly valuable for nonlinear dynamic simulation in bearing fault diagnosis applications.

Finite Element Analysis Integration

Parametric Modeling Workflow

  1. Geometry Generation: Create 3D bearing models programmatically in MATLAB
  2. Material Properties:
material.youngs_mod = 210e9;  % Elastic modulus
material.poisson = 0.3;       % Poisson ratio
material.density = 7800;      % Density (kg/m³)
  1. Mesh Generation: Execute ANSYS APDL scripts
system('ansys1943 -b -i mesh_script.txt -o mesh_result.txt');
  1. Stiffness Matrix Extraction:
global_stiff = importdata('stiffness_matrix.txt');

Multi-Body Dynamics Coupling

Interface with MATLAB/Simulink for real-time stiffness matrix computation:

% Define directional stiffness components
stiff_tangential = 1e6;  % Tangential stiffness
stiff_radial = 5e5;      % Radial stiffness
stiff_bending = 2e6;     % Bending stiffness

% Construct stiffness matrix
stiffness_matrix = [
    stiff_tangential, 0, 0;
    0, stiff_radial, 0;
    0, 0, stiff_bending
];

% Create state-space model for dynamics coupling
sys_model = ss(system_matrix, input_matrix, output_matrix, feed_matrix);

Engineering Validation Example

Consider the angular contact ball bearing 71938 as a validation case:

  1. Analytical Prediction: Theoretical calculation yields axial stiffness of 850 N/μm
  2. FEA Comparison:
% Load FEA results
fea_results = readtable('fea_stiffness.csv');

% Comparative visualization
figure;
hold on;
plot(theoretical_curve, 'r-o', 'LineWidth', 2);
plot(fea_curve, 'b-s', 'LineWidth', 2);
legend('Analytical', 'FEA');
title('Axial Stiffness Validation');
xlabel('Load (N)'); ylabel('Stiffness (N/μm)');

Validation outcomes show deviation less than 3%, confirming the accuracy of the analytical model.

Advanced Applications

Optimization Design

Integrate MATLAB Optimization Toolbox for stiffness-to-weight ratio optimization in bearing design.

Fault Simulation

Introduce stiffness degradation faults into dynamic models:

% Progressive stiffness degradation model
current_stiff = base_stiff * (1 - 0.05 * time_param);

Vibration Analysis

Conduct frequency-domain analysis using FFT:

frequency_spectrum = fft(displacement_data);
freq_axis = (0:length(frequency_spectrum)-1) * (sample_rate / length(frequency_spectrum));
plot(freq_axis, abs(frequency_spectrum));

Apply this approach to analyze stiffness-induced excitation frequencies and their impact on bearing performance.

Tags: MATLAB Bearing Stiffness Hertz Contact Theory Dynamic Analysis Finite Element Analysis

Posted on Wed, 09 Sep 2026 16:14:38 +0000 by Johnlbuk