Contents
Springs and dampers
Springs, bars, heave and roll elements
What each spring gives the wheel, and in which motion: corner springs, anti-roll bars, and the heave and roll elements of a decoupled car.
Three kinds of element can hold the body up, and they differ less in how stiff they are than in which motion of the wheels they see. This page turns each into the rate the wheel feels, works out a bar's rate from its tube, and shows why a corner spring is exactly a heave element plus a roll element. That identity is how a decoupled car can start out riding and rolling exactly as a car with corner springs and a bar does.
Three elements, one mode at a time
A corner spring sits between one wheel and the body and sees that wheel alone. A heave element is driven by both wheels of an axle and sees their mean: both wheels up and it compresses, one up and one down and it does not move. A roll element sees half their difference, the mirror image. An anti-roll bar is a roll element; so is a shock spanning the two rockers of a decoupled axle.
| Element | Heave | Pitch | Roll |
|---|---|---|---|
| Corner spring | works | works | works |
| Heave element | works | works | free |
| Roll element or bar | free | free | works |
Pitch is the two axles moving opposite ways, each axle's wheels together, so it works whatever works in heave. Ride and roll rates builds the car's three stiffnesses from these elements once each is stated at the wheel.
At the wheel: the motion ratio squared
A spring is driven through the linkage, so it does not see the wheel's travel. Its motion ratio MR is how far it moves per millimetre the wheel does (Wishbones and struts). Move the wheel by and the spring compresses by , pushing back with ; by virtual work that force reaches the wheel multiplied by MR again:
- the spring's rate and the damper's coefficient, at the unit
- the unit's travel per millimetre of wheel travel
- the same at the wheel
A damper converts the same way: its speed is the wheel's times MR, and its force reaches the wheel through MR again. The template's corner damper, 2.5 N·s/mm, is 2.495 N·s/mm at the front wheel. That is for a linear damper; a curve converts point by point (Dampers). Because the ratio is squared, a 10 % error in it is a 21 % error in the rate.
The heave element
One element between the two rockers of an axle. Its ratio is its change of length per millimetre of travel of both wheels, and since one element works for two, each wheel gets half its rate at the wheel (Wishbones and struts derives it):
- the heave element's rate, at the element
- its change of length per millimetre of travel of both wheels
The roll element
A shock between the two rockers' bars is a roll element: in heave the rockers turn alike and it moves bodily, in roll they turn opposite ways and it changes length. Each of its eyes moves along it per millimetre of its own wheel, so when one wheel rises by and the other falls by the shock shortens by . Its force through that travel does the work of two wheels:
- the roll element's rate, at the element
- one eye's travel along it per millimetre of one wheel, the other wheel moving opposite
- the force at each wheel,
The factor 2 is the shock spanning both bars. A bar's rate is stated at one drop link already, so for a bar it is 1 and .
A bar from its tube
A U-bar is a tube of length turning in two bearings, with an arm of length at each end and a drop link from each arm to its wheel's linkage. Push one link up by and the other down by : each arm turns , opposite ways, so the tube twists end to end and resists with a torque . At the tip of an arm that torque is a force over . Each arm also bends as a cantilever, and the two compliances add:
- the tube's outside and inside diameters, 16 and 13 mm
- the shear and Young's moduli of steel
- the drop link's travel per millimetre of wheel travel
This is the bar the Kinematics tool's roll-element editor starts from, hung from the template's front rocker: a steel tube as long as the drop links put its arms apart. Compliances in series add, so a bar is never stiffer than its softest part, and stiff arms are worth as much as a thick tube. A drop link that stretches adds a third term to equation (6); this one's links are rigid.
The decoupling identity
Write the corner spring's force on one wheel in terms of what the axle's two wheels do, with the travel of this wheel and of its partner:
The first term is a heave element of at the wheel, the second a roll element of . A corner spring is both at once, which is why it couples the car's heave to its roll. An axle's stiffness in each motion is the sum of what works in it:
with and the heave and roll elements at the wheel. So a decoupled axle can be set up to behave exactly as a coupled one: give its heave element the corner spring's wheel rate, and its roll element the corner spring's plus the bar's. The template was built that way. Its front axle was sized from a 35 N/mm corner spring at a motion ratio of 0.999 and a 20 N/mm bar; its heave element gives each wheel 34.93 N/mm, the corner spring's 34.93, and its roll element 54.93 N/mm, the corner spring's plus 20. The dampers follow the same rule, at 2.495 N·s/mm in both. From there the two motions can be tuned apart, which is the point of decoupling.
What the model assumes
- Every rate is linear and taken at the static ride. The motion ratios are read there and do not change with travel; Kinematics and compliance follows them through the stroke.
- A heave element sees nothing in roll and a roll element nothing in heave. A real linkage leaks a little of each into the other, and the Kinematics tool shows how much.
- The bar's tube twists and its arms bend, each as a slender elastic beam. The bearings hold the tube without friction or play, and the ends of the tube do not warp.
- A gapped third spring, one that only engages after some travel, has no rate at the static ride; here it reads zero.
In the app
Kinematics, under "Elements" in the readout rail, gives each axle's heave and roll element ratios, the roll element at its link, and the damping each element gives the wheel. The element editors set a heave or roll element's spring and damper, or switch a roll element between a shock and a bar; a bar's rate comes from its section and arms.
Vehicle Dynamics reads the elements at the wheel, as equations (1) to (3) give them. With a suspension geometry on the car, the springs, bars and elements come from it.
Check it yourself
The script converts the template's corner springs and both elements to the wheel, checks the identity on both axles, and works the starting U-bar's rate from its tube.
>> springs_and_elements Quantity This script PaceDynamics Diff ----------------------------------------------------------------------------- front corner spring, N/mm 34.929 34.929 0% front corner damper, N*s/mm 2.49493 2.49493 0% front heave element, N/mm 34.929 34.929 2e-14% front = corner spring 34.929 34.929 2e-14% front roll element, N/mm 54.929 54.929 0% front = corner spring + bar 54.929 54.929 0% front heave damper, N*s/mm 2.49493 2.49493 1.8e-14% front roll damper, N*s/mm 2.49493 2.49493 0% rear corner spring, N/mm 38.7348 38.7348 0% rear corner damper, N*s/mm 2.42093 2.42093 0% rear heave element, N/mm 38.7348 38.7348 0% rear = corner spring 38.7348 38.7348 0% rear roll element, N/mm 53.7348 53.7348 0% rear = corner spring + bar 53.7348 53.7348 0% rear heave damper, N*s/mm 2.42093 2.42093 0% rear roll damper, N*s/mm 2.42093 2.42093 1.8e-14% bar: polar moment J, mm^4 3630.01 3630.01 0% bar: torsion GJ/L, N*mm/rad 1.60443e+06 1.60443e+06 0% bar: twist alone, N/mm 189.873 189.873 0% bar: arms alone, N/mm 520.461 520.461 0% bar: at the link, N/mm 139.12 139.12 0% bar: at the wheel, N/mm 49.9874 49.9874 1.4e-14% All 22 quantities agree with PaceDynamics (largest difference 2e-14 %).
The script
%% Springs, bars, heave and roll elements: each one's rate at the wheel % % Companion to the documentation page "Springs, bars, heave and roll elements". Runs % unchanged in GNU Octave (7 or later) and MATLAB. Edit the car in example_springs.m and run: % % >> springs_and_elements % % An element of rate k that moves MR mm per mm of the wheel gives the wheel k*MR^2: its % force reaches the wheel through MR, and so does its travel. The two elements of a % decoupled axle differ only in how they share that: % % heave element one part between both rockers: k * MR^2 / 2 at each wheel, in heave % roll element one part between both rockers: 2 * k * MR^2 at each wheel, in roll % % A corner spring of k_w at the wheel is exactly a heave element of k_w and a roll element % of k_w, so the template's elements were sized to give what its corner springs and bars % gave. The script checks that, and works the starting U-bar's rate from its tube. % % The motion ratios come from the Kinematics tool, which solves the linkage for them; the % script takes them as given. % % References: W. F. Milliken and D. L. Milliken, Race Car Vehicle Dynamics (SAE, 1995), % ch. 16; W. C. Young and R. G. Budynas, Roark's Formulas for Stress and Strain (McGraw-Hill, % 2002), on torsion and bending of round tubes. % % Part of the PaceDynamics documentation, https://pacedyn.dev/docs % SPDX-License-Identifier: MIT [car, app] = example_springs(); app = app.springs; axles = {'front', 'rear'}; for i = 1:2 a = car.(axles{i}); c = a.corner; %% The corner spring and damper, at the wheel: k * MR^2 k_corner = c.springRate * c.mr^2; % N/mm c_corner = c.damper * c.mr^2; % N*s/mm %% The heave element: one part, both wheels, so each wheel takes half k_heave = a.heave.rate * a.heave.mr^2 / 2; % N/mm at each wheel, in heave c_heave = a.heave.damper * a.heave.mr^2 / 2; %% The roll element: one part between the bars, which moves with both eyes k_roll = a.roll.leverage * a.roll.rate * a.roll.mr^2; % N/mm at each wheel, in roll c_roll = a.roll.leverage * a.roll.damper * a.roll.mr^2; %% The identity: heave = corner (+ any third spring), roll = corner + bar pd_compare([axles{i} ' corner spring, N/mm'], k_corner, app.(axles{i}).cornerWheel); pd_compare([axles{i} ' corner damper, N*s/mm'], c_corner, app.(axles{i}).cornerDamperWheel); pd_compare([axles{i} ' heave element, N/mm'], k_heave, app.(axles{i}).heaveWheel); pd_compare([axles{i} ' = corner spring'], k_corner, app.(axles{i}).heaveWheel); pd_compare([axles{i} ' roll element, N/mm'], k_roll, app.(axles{i}).rollWheel); pd_compare([axles{i} ' = corner spring + bar'], k_corner + c.bar, app.(axles{i}).rollWheel); pd_compare([axles{i} ' heave damper, N*s/mm'], c_heave, app.(axles{i}).heaveDamper); pd_compare([axles{i} ' roll damper, N*s/mm'], c_roll, app.(axles{i}).rollDamper); end %% A U-bar from its tube: twist and bending in series b = car.bar; J = pi * (b.od^4 - b.id^4) / 32; % mm^4, polar second moment I = J / 2; % mm^4, in bending K_t = b.G * J / b.barLength; % N*mm/rad, the tube in torsion % One link up s, the other down s: the tube twists 2s/a end to end, and the force at a tip % is the torque over the arm. k_twist = 2 * K_t / b.armLength^2; % N/mm at the link k_arm = 3 * b.E * I / b.armLength^3; % N/mm, each arm a cantilever k_link = 1 / (1 / k_twist + 1 / k_arm); % in series: compliances add k_wheel = k_link * b.mr^2; % N/mm at the wheel pd_compare('bar: polar moment J, mm^4', J, app.bar.J); pd_compare('bar: torsion GJ/L, N*mm/rad', K_t, app.bar.torsional); pd_compare('bar: twist alone, N/mm', k_twist, app.bar.barTwist); pd_compare('bar: arms alone, N/mm', k_arm, app.bar.armBending); pd_compare('bar: at the link, N/mm', k_link, app.bar.rateAtLink); pd_compare('bar: at the wheel, N/mm', k_wheel, app.bar.wheelRate); pd_compare();
Download: springs_and_elements.m · example_springs.m · pd_compare.m. The scripts are MIT licensed.
Further reading
- W. F. Milliken and D. L. Milliken, Race Car Vehicle Dynamics (SAE, 1995), ch. 16 and 17, on wheel rates and anti-roll bars.
- W. C. Young and R. G. Budynas, Roark's Formulas for Stress and Strain (McGraw-Hill, 2002), on torsion and bending of round tubes.
- J. C. Dixon, Suspension Geometry and Computation (Wiley, 2009), on motion ratios and decoupled layouts.