Alex Uchida
Introduction
The suspension pictured above is from a 1990 Mazda Miata. The Miata suspension design uses a common 4 link suspension to provide great handling performance. In this project I used the position, velocity, and acceleration from the input force to calculate the bearing reaction forces on the suspension components.
Input Force
The input force is provided by the surface of the road profile. Using a cosine wave to simulate the surface of the road, the angle theta 2 can be used as the input to the system.
Calculating the Input
(1)Position
Solving the loop equations in MATLAB provides the unknown link lengths and angles.
Solving for unknowns
(4)Velocity and Acceleration Analysis
Taking the first derivative of the loop equations with respect to time produces two new loop equations that can be solved to find the velocity at each link. Taking the second derivative of the loop equations with respect to time produces two new loop equations that can be solved for the acceleration of each link. The matrices corresponding to velocity and acceleration are shown below in the MATLAB code.
MATLAB Code
clear all %Alex Uchida
dtr = pi/180;
% link lengths
r2a = 8.25;
r2b = 5;
r3 = 8.5;
r4 = 4.73; % calculated from matlab
r5 = 15.44; % calculated from matlab
r34 = 4.25;
r32 = 4.25;
% Solving for Input(theta2) from road profile
amp = 2; % amplitude
L = 11; % distance between bumps (ft)
v = 30; % velocity (mph)
V = (v*5280)/3600; % velocity (ft/s)
W = (V/L)*2*pi;
theta2 = (amp*cos(W))/(13.5*dtr);
theta2_dot = -(amp*W*sin(W))/(13.5);
theta2_ddot = (amp*W*W*cos(W))/13.5;
% angles
theta3 = 90*dtr;
theta4 = 33.46*dtr; %from matlab
theta5 = 87.88*dtr; %from matlab
% assumptions
m2 = 5; % arm mass (lb)
m3 = 50; % wheel mass (lb)
ig3 = 52; % 1/12(b)(r3^3)
ig2 = 205; % 1/12(b)(r2a+rsb)^3
grav = 387.24; % in/s^2
ag2x = .01;
ag3x = .001;
%make the matrix easier
s2 = sin(theta2);
c2 = cos(theta2);
s3 = sin(theta3);
c3 = cos(theta3);
s4 = sin(theta4);
c4 = cos(theta4);
s5 = sin(theta5);
c5 = cos(theta5);
%solving for velocity
A = [0, 0, -r5*s5, c5;
0, 0, r5*c5, s5;
-r3*s3, -r4*s4, 0, 0;
r3*c3, r4*c4, 0, 0];
b = [r2a*theta2_dot*s2; -r2a*theta2_dot*c2; (r2a*theta2_dot*s2) + (r2b*theta2_dot*s2); (-r2a*theta2_dot*c2) - (r2b*theta2_dot*c2)];
v = inv(A)*b;
theta3_dot = v(1);
theta4_dot = v(2);
theta5_dot = v(3);
r5_dot = v(4);
%solving for acceleration
c = [((r2a*theta2_ddot*s2) + (r2a*theta2_dot*theta2_dot*c2) + (r5*theta5_dot*theta5_dot*c5) + (2*r5_dot*theta5_dot*s5));
((-r2a*theta2_ddot*c2) + (r2a*theta2_dot*theta2_dot*s2) + (r5*theta5_dot*theta5_dot*s5) - (2*r5_dot*theta5_dot*c5));
((r2a*theta2_ddot*s2) + (r2a*theta2_dot*theta2_dot*c2) + (r2b*theta2_ddot*s2) + (r2b*theta2_dot*theta2_dot*c2) + (r3*theta3_dot*theta3_dot*c3) + (r4*theta4_dot*theta4_dot*c4));
((-r2a*theta2_ddot*c2) + (r2a*theta2_dot*theta2_dot*s2) - (r2b*theta2_ddot*c2) + (r2b*theta2_dot*theta2_dot*s2) + (r3*theta3_dot*theta3_dot*c3) + (r4*theta4_dot*theta4_dot*s4))];
a = inv(A)*c;
theta3_ddot = a(1);
theta4_ddot = a(2);
theta5_ddot = a(3);
r5_ddot = a(4);
%solving for bearing reaction forces
B = [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0;
0, 0, 0, 0, c4, 1, 0, 0, 0, 0, 0, 0;
0, 0, 0, 0, s4, 0, 1, 0, 0, 0, 0, 0;
0, 0, 0, 0, (r34*c3*s4 - r34*s3*c4), -r32*sin(theta3+pi), r32*cos(theta3+pi), 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, (c5+c2);
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, (s5+s2);
0, 0, 0, 0, 0, 0, 0, -r2b*s2, r2b*c2, -r2a*s2, r2a*c2, 1;
1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0;
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1;
0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0];
d = [0; 0; m3*ag3x; m3*grav; ig3*theta3_ddot; m2*ag2x; m2*grav; (ig2*theta2_ddot +100); 0; 0; 0; 0];
F = inv(B)*d;
%all units for force are in psi
F43 = F(1)
F41 = F(2)
F52 = F(3)
F51 = F(4)
F34 = F(5)
F32x = F(6)
F32y = F(7)
F23x = F(8)
F23y = F(9)
F21x = F(10)
F21y = F(11)
F25 = F(12)