Project

Vehicle Dynamics - Optimization of bump oscillation profile using MATLAB

AIM: To calculate the natural frequencies of the vehicle at different conditions and optimize the bump oscillation profile.

OBJECTIVE:

1. Calculate the following parameters. Use the same front and rear spring rates for all three load conditions.The front sprung mass natural frequency target at half load is 1.15 Hz. Keep this fixed

  • Recommended rear sprung mass frequency based on speed and wheelbase at half load condition
  • Front sprung mass natural frequency at half load . This will be based on (i).
  • Front spring rate
  • Rear spring rate
  • Front sprung mass natural frequencies at curb and GVW
  • Rear sprung mass natural frequencies at curb and GVW
  • Front unsprung mass natural frequency at all three load conditions
  • Rear unsprung mass natural frequency at all three load conditions
  • Rear/Front frequency ratio for all three load conditions

2. Plot the bump oscillation profile for all three load conditions

GIVEN:

Front sprug mass frequency, `f_f=1.15Hz`

SOLUTION:

I. Calculations to determine the required parameters:

1. Recommended rear sprung mass frequency (`f_r`)

Time lag, `t_l`= `(wheelbase)/(speed) = (2700*10^-3)/(60*(0.447))=0.101sec`

`f_r =1/((1/f_f)-t_l)=1/((1/1.15)-0.101)=``1.301Hz`

2. Front sprung mass frequqency, `f_f = 1.15Hz`

3. Front spring rate (`K_(s_f)`)

We know, `f_f = 1/(2pi)sqrt(K_(r_f)/m_(s_f))`

`therefore 1.15 = 1/(2pi)*sqrt(K_(r_f)/456.875`

`=> K_(r_f) = 23.854N/(mm)`

Now, `K_(r_f) = (K_(w_f)*K_(t_f))/(K_(w_f)+K_(t_f))`

`=> K_(r_f) = (K_(r_f)*K_(t_f))/(K_(t_f)-K_(r_f))= (245*23.854)/(245-23.854)=``26.426N/(mm)`

Now, motion ratio

`MR^2= K_w/K_s`

`=> K_(s_f) = K_(w_f)/(MR^2)=26.426/(0.97)^2=28.086N/(mm)`

4. Rear spring rate (`K_(s_r)`)

Using same procedure as above, we determine the rear spring rate and it is found be,

`K_(s_r)= 39.251N/(mm)`

5. Front sprung mass frequency

frequency formula is, `f_(s_f) = 1/(2pi)sqrt(K_(r_f)/m_(s_f)`

(i) At curb, front natural frequency = `1.221Hz`

(ii) At GVW, front natural frequency = `1.128Hz`

6. Rear sprung mass frequency

formula, `f_(s_r) = 1/(2pi)sqrt(K_(r_r)/m_(s_r)`

(i) At curb, rear natural frequency = `1.544Hz`

(ii) At GVW, rear natural frequency = `1.196Hz`

7. Front unsprung mass natural frequency at all three conditions

frequency formula for unsprung mass is, `f_u = 1/(2pi)sqrt((K_w+K_t)/m_u`

The frequency is equal at all three conditions, front natural frequency = `12.361Hz`

8. Rear unsprung mass natural frequency at all three conditions

frequency formula for unsprung mass is, `f_u = 1/(2pi)sqrt((K_w+K_t)/m_u`

The frequency is equal at all three conditions, rear natural frequency = `15.192Hz`

9. Rear/Front frequency ratios

mass Curb Half Load GVW
Sprung Mass 1.264 1.131 1.061
Unsprung Mass 1.229 1.229 1.229

Excel sheet (snapshot):

(drive link for the excel sheet: https://drive.google.com/file/d/1ZCEFlJXVvtHrVT0YBLMW5n7dSwybBHd_/view?usp=sharing )

II. MATLAB code to plot Bump oscillation profile:

The following code calculates the parameters and plots the bump oscillation profiles for all the three conditions.

The snapshots of the output of following code are attached below the code.

Code:

clear all 
close all
clc

%% bump oscillation profile at half load

%weights in kg per corner
Ws_front = 456.875;
Ws_rear = 380.625;
Wu_front = 45;
Wu_rear = 30;

WB = 2700;  %wheel base in mm
V = 60;   %speed of vheicle in mph

%motion ratios
MR_f = 0.97;
MR_r = 0.85;

%time lag in sec
tl = (WB*(10^(-3)))/(60*(0.447));

%recommended natural frequencies at half load
fs_front = 1.15;
fs_rear = 1/((1/fs_front)-tl);

%rates in N/mm
%tire rate (same for all)
kt = 245;

%ride rates
kr_front = (((fs_front*2*pi)^2)*(Ws_front))/1000;
kr_rear = (((fs_rear*2*pi)^2)*(Ws_rear))/1000;

%wheel rates
kw_front = (kt*kr_front)/(kt-kr_front);
kw_rear = (kt*kr_rear)/(kt-kr_rear);

%spring rates
ks_front = kw_front/(MR_f)^2;
ks_rear = kw_rear/(MR_r)^2;

%unsprung mass frequencies
fu_front = (1/(2*pi))*((kw_front+kt)*1000/Wu_front)^0.5;
fu_rear = (1/(2*pi))*((kw_rear+kt)*1000/Wu_rear)^0.5;

%plotting the graphs
%time range in sec
time = linspace(0,3.5,400);

i = 1;
for t = linspace(0,3.5,400)
    As_front(i) = exp(-t)*sin(2*pi*fs_front*t);
    As_rear(i) = exp(-t)*sin(2*pi*fs_rear*(t-tl));
    Au_front(i) = exp(-t)*sin(2*pi*fu_front*t);
    Au_rear(i) = exp(-t)*sin(2*pi*fu_rear*(t-tl));
    i=i+1;
end

figure(1)
subplot(2,1,1)
plot(time,As_front,'linewidth',2)
hold on
plot(time,As_rear,'linewidth',2)
title('Bump oscillation profile for Sprung mass at half load')
xlabel('Time (s)')
ylabel('Amplitude (m)')
legend('Front','Rear')
grid on

subplot(2,1,2)
plot(time,Au_front,'linewidth',2)
hold on
plot(time,Au_rear,'linewidth',2)
title('Bump oscillation profile for Unsprung mass')
xlabel('Time (s)')
ylabel('Amplitude (m)')
legend('Front','Rear')
grid on

saveas(1,'half_load','jpeg')


%% bump oscillation profile at curb

%weights in kg per corner
Wsc_front = 405;
Wsc_rear = 270;
Wuc_front = 45;
Wuc_rear = 30;

%motion ratios
MR_f = 0.97;
MR_r = 0.85;

%spring rates
ksc_front = ks_front;
ksc_rear = ks_rear;

%wheel rates
kwc_front = ksc_front*(MR_f)^2;
kwc_rear = ksc_rear*(MR_r)^2;

%ride rates
krc_front = (kt*kwc_front)/(kt+kwc_front);
krc_rear = (kt*kwc_rear)/(kt+kwc_rear);

%sprung mass frequencies
fsc_front = (1/(2*pi))*((krc_front*1000)/Wsc_front)^0.5;
fsc_rear = (1/(2*pi))*((krc_rear*1000)/Wsc_rear)^0.5;

%unsprung mass frequencies
fuc_front = (1/(2*pi))*((kwc_front+kt)*1000/Wuc_front)^0.5;
fuc_rear = (1/(2*pi))*((kwc_rear+kt)*1000/Wuc_rear)^0.5;

%plotting the graphs
%time range in sec
time = linspace(0,3.5,400);

j = 1;
for tc = linspace(0,3.5,400)
    Asc_front(j) = exp(-tc)*sin(2*pi*fsc_front*tc);
    Asc_rear(j) = exp(-tc)*sin(2*pi*fsc_rear*(tc-tl));
    Auc_front(j) = exp(-tc)*sin(2*pi*fuc_front*tc);
    Auc_rear(j) = exp(-tc)*sin(2*pi*fuc_rear*(tc-tl));
    j=j+1;
end

figure(2)
subplot(2,1,1)
plot(time,Asc_front,'linewidth',2,'color','red')
hold on
plot(time,Asc_rear,'linewidth',2,'color','yellow')
title('Bump oscillation profile for Sprung mass at curb')
xlabel('Time (s)')
ylabel('Amplitude (m)')
legend('Front','Rear')
grid on

subplot(2,1,2)
plot(time,Auc_front,'linewidth',2,'color','red')
hold on
plot(time,Auc_rear,'linewidth',2,'color','yellow')
title('Bump oscillation profile for Unsprung mass')
xlabel('Time (s)')
ylabel('Amplitude (m)')
legend('Front','Rear')
grid on

saveas(2,'curb','jpeg')


%% bump oscillation profile at GVW 

%weights in kg per corner
Wsg_front = 475;
Wsg_rear = 450;
Wug_front = 45;
Wug_rear = 30;

%motion ratios
MR_f = 0.97;
MR_r = 0.85;

%spring rates
ksg_front = ks_front;
ksg_rear = ks_rear;

%wheel rates
kwg_front = ksg_front*(MR_f)^2;
kwg_rear = ksg_rear*(MR_r)^2;

%ride rates
krg_front = (kt*kwg_front)/(kt+kwg_front);
krg_rear = (kt*kwg_rear)/(kt+kwg_rear);

%sprung mass frequencies
fsg_front = (1/(2*pi))*((krg_front*1000)/Wsg_front)^0.5;
fsg_rear = (1/(2*pi))*((krg_rear*1000)/Wsg_rear)^0.5;

%unsprung mass frequencies
fug_front = (1/(2*pi))*((kwg_front+kt)*1000/Wug_front)^0.5;
fug_rear = (1/(2*pi))*((kwg_rear+kt)*1000/Wug_rear)^0.5;

%plotting the graphs
%time range in sec
time = linspace(0,3.5,400);

k = 1;
for tg = linspace(0,3.5,400)
    Asg_front(k) = exp(-tg)*sin(2*pi*fsg_front*tg);
    Asg_rear(k) = exp(-tg)*sin(2*pi*fsg_rear*(tg-tl));
    Aug_front(k) = exp(-tg)*sin(2*pi*fug_front*tg);
    Aug_rear(k) = exp(-tg)*sin(2*pi*fug_rear*(tg-tl));
    k=k+1;
end

figure(3)
subplot(2,1,1)
plot(time,Asg_front,'linewidth',2,'color','blue')
hold on
plot(time,Asg_rear,'linewidth',2,'color','green')
title('Bump oscillation profile for Sprung mass at GVW')
xlabel('Time (s)')
ylabel('Amplitude (m)')
legend('Front','Rear')
grid on

subplot(2,1,2)
plot(time,Aug_front,'linewidth',2,'color','blue')
hold on
plot(time,Aug_rear,'linewidth',2,'color','green')
title('Bump oscillation profile for Unsprung mass')
xlabel('Time (s)')
ylabel('Amplitude (m)')
legend('Front','Rear')
grid on

saveas(3,'GVW','jpeg')

(drive link for the code file: https://drive.google.com/file/d/1YS_PDP5v3Bqki6cMTWH4cNLADGI3E8DK/view?usp=sharing )

Output:

1. Half load condition

2. Curb condition

3. GVW condition

CONCLUSION:

1. All the frequencies for all teh three conditions have been determined based on the given data.

2. Bump oscillation profile have been plotted for all three conditions. We can see from the graphs that the front and rear frequencies are almost in phase with each other at half load and GVW conditions, i.e., they are optimized.

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.