Contents
Foundations
Sprung and unsprung mass
The body on its springs and the wheels under them, and what the two masses do to the ride.
A car's mass comes in two kinds. The sprung mass is everything the springs carry: the chassis, the driver, the battery, the motor if it sits on the chassis. The unsprung mass is everything between the springs and the road: the wheel and tyre, the upright and hub, the brake if it sits at the wheel, and a share of the links, driveshafts and springs. The two move differently, and the ride of a car is mostly the story of how.
Two kinds of mass
The app takes the unsprung mass per corner as you enter it, 8 kg on the template, and the sprung mass as what is left. It splits the sprung mass between the axles in the same proportion as the car's weight:
- the car's mass with the driver
- the unsprung mass of one corner
- the share of the weight on the front axle
Equation (2) assumes the unsprung masses split between the axles like the whole car does. On the template the four corners weigh the same, so the front axle's true share of them is a half, not 0.47: the split is out by about a kilogram.
The quarter car
To see how the two masses move, take one corner of the car: its share of the sprung mass on the suspension, and the unsprung mass on the tyre.
The suspension is a spring and a damper in parallel; the tyre is a stiffer spring . Measuring each mass's height from where it stands, the road moves the tyre and the two masses answer:
- the suspension's rate and damping at the wheel in heave: corner spring and heave element, corner damper and heave damper
- the tyre's vertical rate and damping
Ride and wheel hop
Two masses on two springs have two ways to vibrate. In the ride mode the body bounces and the wheel follows: the body sits on the suspension and the tyre in series, which is softer than either. In the wheel-hop mode the wheel bounces between the road and a body too heavy to follow: the wheel sits on both springs at once.
- one corner's sprung mass, half the axle's
The two are far apart, 3.3 Hz and 21 Hz at the front of the template, so each can be read as if the other were not there. The ride frequency is the one engineers set: soft enough to keep the tyre on a bumpy road, stiff enough to hold the aerodynamic platform. More on the springs that set it on Ride and roll rates.
Damping
The damping ratio says how quickly the ride mode dies away: 1 is critical, the fastest return without overshoot, and a race car runs about 0.3 to 0.7. The textbook writes it , as if the damper compressed by everything the body moves. It does not: the tyre is under the damper, and the damper compresses only by the suspension's share of the motion. On a stiff suspension over a soft tyre that share is small, and the formula overstates the damping several times over.
So the app reads the damping ratio off the ride mode itself. Equations (3) and (4) written as for the state have two pairs of eigenvalues ; the ride mode is the pair in which the body carries most of the kinetic energy, and
What the road does to the body
Drive over a road that rises and falls at frequency , and the body rises and falls by some multiple of it. That multiple is the transmissibility, from equations (3) and (4) with :
Below the ride frequency the body follows the road. Around it the body moves more than the road, by a factor the damping sets: 1.75 at the front of the template. Above it the body is isolated, and near the wheel-hop frequency the wheel itself shakes while the body barely notices. A lighter unsprung mass moves wheel hop higher and keeps the tyre's load steadier over bumps, which is why it is worth paying for.
What the model assumes
- The car is four independent quarter cars: no pitch or roll coupling between corners.
- Everything is linear: the springs, the dampers (one rate in bump and rebound) and the tyre, which never leaves the road.
- The sprung mass splits between the axles like the whole car's weight.
- A roll element or anti-roll bar does nothing in this model, because both wheels of an axle rise together.
In the app
Vehicle Dynamics › Ride over road draws "Body-to-road transmissibility" for the front and rear corner, as in Fig. 3, and states the wheel-hop frequency above it.
Vehicle Dynamics › Balance & loads, under "Ride & roll (steady state)", lists the sprung mass, the ride frequencies and the damping ratios ζ F/R.
The unsprung mass per corner is a car parameter, "unsprung mass/corner".
Check it yourself
The script builds each axle's quarter car from example_car.m, finds its two modes with eig, and evaluates equation (8) at five of the chart's frequencies.
>> quarter_car Quantity This script PaceDynamics Diff ----------------------------------------------------------------------------- Sprung mass [kg] 268 268 0% Sprung mass, front axle [kg] 125.96 125.96 0% Sprung mass, rear axle [kg] 142.04 142.04 0% One front wheel, standing [N] 691.605 691.605 0% One rear wheel, standing [N] 779.895 779.895 0% Ride frequency, front [Hz] 3.26536 3.26536 0% Wheel-hop frequency, front [Hz] 21.4216 21.4216 0% Ride damping ratio, front [-] 0.487629 0.487629 2.6e-13% |z_s/z_r| at 1.4 Hz, front 1.17896 1.17896 3.8e-14% |z_s/z_r| at 2.5 Hz, front 1.46462 1.46462 9.1e-14% |z_s/z_r| at 5.0 Hz, front 1.61126 1.61126 2.8e-14% |z_s/z_r| at 10.0 Hz, front 0.479167 0.479167 3.5e-14% |z_s/z_r| at 20.0 Hz, front 0.109293 0.109293 2.5e-14% Ride frequency, rear [Hz] 3.19647 3.19647 1.4e-14% Wheel-hop frequency, rear [Hz] 21.7011 21.7011 0% Ride damping ratio, rear [-] 0.4467 0.4467 1.2e-13% |z_s/z_r| at 1.4 Hz, rear 1.20079 1.20079 5.5e-14% |z_s/z_r| at 2.5 Hz, rear 1.57103 1.57103 2.8e-14% |z_s/z_r| at 5.0 Hz, rear 1.46737 1.46737 1.5e-13% |z_s/z_r| at 10.0 Hz, rear 0.403365 0.403365 1.4e-14% |z_s/z_r| at 20.0 Hz, rear 0.0971867 0.0971867 0% All 21 quantities agree with PaceDynamics (largest difference 2.6e-13 %).
The script
%% Sprung and unsprung mass: the quarter car % % Companion to the documentation page "Sprung and unsprung mass". Runs unchanged in GNU % Octave (7 or later) and MATLAB. Edit the car in example_car.m and run: % % >> quarter_car % % One corner of the car as two masses: the sprung mass m_s (its share of the body) on the % suspension spring k_s and damper c_s, and the unsprung mass m_u (wheel, upright, brake) % on the tyre k_t. The road z_r moves the tyre; z_u and z_s are the wheel and the body. % % m_s z_s'' = -k_s (z_s - z_u) - c_s (z_s' - z_u') % m_u z_u'' = k_s (z_s - z_u) + c_s (z_s' - z_u') - k_t (z_u - z_r) - c_t (z_u' - z_r') % % Two modes: the body bouncing on the spring and tyre in series (ride), and the wheel % bouncing between the two (wheel hop). The ride frequency is the textbook one; the % damping ratio is read off the ride mode itself, because the damper compresses by the % spring's share of the body's motion, not all of it. % % Reference: T. D. Gillespie, Fundamentals of Vehicle Dynamics (SAE, 1992), ch. 5. % % Part of the PaceDynamics documentation, https://pacedyn.dev/docs % SPDX-License-Identifier: MIT [car, app] = example_car(); app = app.mass; g = 9.81; % m/s^2 series = @(a, b) a .* b ./ (a + b); %% Masses m_u = 4 * car.unsprungPerCorner; % kg, the four corners m_s = car.massTotal - m_u; % kg, sprung m_sf = m_s * car.frontMassFrac; % kg, sprung, on the front axle m_sr = m_s * (1 - car.frontMassFrac); W = car.massTotal * g; % N static = W * [car.frontMassFrac, 1 - car.frontMassFrac] / 2; % N, one wheel, front and rear pd_compare('Sprung mass [kg]', m_s, app.sprungMass); pd_compare('Sprung mass, front axle [kg]', m_sf, app.sprungFront); pd_compare('Sprung mass, rear axle [kg]', m_sr, app.sprungRear); pd_compare('One front wheel, standing [N]', static(1), app.staticFront); pd_compare('One rear wheel, standing [N]', static(2), app.staticRear); %% A quarter car per axle % The suspension at the wheel in heave: corner spring and heave element, corner damper % and heave damper (a roll element does not move when both wheels rise together). axle = {'front', 'rear'}; ms = [m_sf, m_sr] / 2; % kg, one corner ks = [car.wheelRateFront + car.heaveSpringFront, car.wheelRateRear + car.heaveSpringRear] * 1e3; % N/m cs = [car.damperFront + car.heaveDamperFront, car.damperRear + car.heaveDamperRear] * 1e3; % N*s/m kt = [car.tireRateFront, car.tireRateRear] * 1e3; % N/m ct = car.tireDamping * 1e3; % N*s/m mu = max(0.1, car.unsprungCornerMass); % kg for i = 1:2 a = app.(axle{i}); % Ride: the body on the spring and the tyre in series. Wheel hop: the wheel on both at once. f_ride = sqrt(series(ks(i), kt(i)) / ms(i)) / (2 * pi); f_hop = sqrt((ks(i) + kt(i)) / mu) / (2 * pi); % The two modes of the state matrix, state [z_s, z_s', z_u, z_u']. A = [0, 1, 0, 0; -ks(i) / ms(i), -cs(i) / ms(i), ks(i) / ms(i), cs(i) / ms(i); 0, 0, 0, 1; ks(i) / mu, cs(i) / mu, -(ks(i) + kt(i)) / mu, -(cs(i) + ct) / mu]; [V, D] = eig(A); lambda = diag(D); % The ride mode: the oscillating one whose motion is mostly the body's (by kinetic energy). best = 0; zeta = NaN; for j = 1:4 if imag(lambda(j)) <= 0, continue; end es = ms(i) * abs(V(1, j))^2; eu = mu * abs(V(3, j))^2; share = es / (es + eu); if share >= 0.5 && share > best best = share; zeta = -real(lambda(j)) / abs(lambda(j)); end end % Transmissibility: how far the body moves for each millimetre of road, at frequency f. w = 2 * pi * a.gainFreq; spring = ks(i) + 1i * cs(i) * w; % the suspension's complex stiffness tyre = kt(i) + 1i * ct * w; H = spring .* tyre ./ ((spring - ms(i) * w.^2) .* (spring + tyre - mu * w.^2) - spring.^2); pd_compare(sprintf('Ride frequency, %s [Hz]', axle{i}), f_ride, a.rideFreq); pd_compare(sprintf('Wheel-hop frequency, %s [Hz]', axle{i}), f_hop, a.wheelHopFreq); pd_compare(sprintf('Ride damping ratio, %s [-]', axle{i}), zeta, a.dampingRatio); for j = 1:numel(w) pd_compare(sprintf(' |z_s/z_r| at %4.1f Hz, %s', a.gainFreq(j), axle{i}), abs(H(j)), a.gain(j)); end end pd_compare();
Download: quarter_car.m · example_car.m · pd_compare.m. The scripts are MIT licensed.
Further reading
- T. D. Gillespie, Fundamentals of Vehicle Dynamics (SAE, 1992), ch. 5, on ride.
- W. F. Milliken and D. L. Milliken, Race Car Vehicle Dynamics (SAE, 1995), ch. 16.
- J. C. Dixon, The Shock Absorber Handbook, 2nd ed. (Wiley, 2007), on damping a quarter car.