
Your current project is to evaluate the baseline spring and damper values for the Miata and propose new values that give better ride characteristics. Use a 1/4 car model (only looking at one wheel), which is the model we developed in section 4.42 of the book. For a Miata from google:
- m=250 kg
- k = 6000 kg/m = 6000*9.81 N/m
- b = 5370 N s/m.
- road.m: this one plots the road profile. Name it whatever you want.
Code: Select all
%% Initialization clear all; close all; hold off; clc; %%% put your NDND here for your own road. You can debug using the same %%% number as others, but your design must be based on YOUR number. This %%% seeds a random number generator that makes your own individual road %%% profile. ndid = 2112; %%% select sk0 to change quality of the road sk0 = 10/10^6; % very good road %sk0 = 40/10^6; % good road %sk0 = 160/10^6; % average road %sk0 = 640/10^6; % poor road %sk0 = 2560/10^6; % very poor road %%% DO NOT CHANGE ANY OF THESE!!! minwaveno = -2; maxwaveno = 2; N = 61; wavenos = logspace(minwaveno,maxwaveno,N); rng(ndid+floor(sk0+10^6*2)); phi = unifrnd(-pi,pi,1,N); %%% END OF DO NOT CHANGE ANY OF THESE roadlength = 1000; % 1km track %%% The y() function returns the height of the road at location x. %%% (Road height at location x) = y(sk0,wavenos,phi,x). Do not change the %%% first three arguments because they are used to make the road shape. x = linspace(0,1000,100000); %%% This will plot the road profile. This will change if you change NDID or %%% change sk0. plot(x,y(sk0,wavenos,phi,x)); %%% Baseline suspension values m = 250; k = 6000*9.81; b = 5370; g = 9.81; v = 30; % units are m/s t = linspace(0,roadlength/v,100000); %%% This will plot the road vs time if you are driving at speed v plot(t,y(sk0,wavenos,phi,t*v));
- y.m: this one returns the hight of the road at location x. You probably do not need to change this function. Name it "y.m" unless you want to find all the places in your program that use it.
Code: Select all
function h = y(sk0,wavenos,phi,x) h = 0; k0 = 1/(2*pi); n1 = -3; n2 = -2.25; coef1 = sqrt(2*pi/(length(wavenos))); for n=1:length(wavenos) wn = wavenos(n); coef2 = sqrt(sk0*(wn/k0)^n1*(wn<=k0) + sk0*(wn/k0)^n2*(wn>k0)); h = h + coef1*coef2*cos(2*pi*wn*x+phi(n)); end end
- dydx.m: returns the slope of the road at location x. You probably do not need to change this function. Name it "dydx.m" unless you want to find all the places it is used. You need the slope to compute the vertical velocity of the wheel.
Code: Select all
function dhdx = dydx(sk0,wavenos,phi,x) dhdx = 0; k0 = 1/(2*pi); n1 = -3; n2 = -2.25; coef1 = sqrt(2*pi/(length(wavenos))); for n=1:length(wavenos) wn = wavenos(n); coef2 = sqrt(sk0*(wn/k0)^n1*(wn<=k0) + sk0*(wn/k0)^n2*(wn>k0)); dhdx = dhdx - 2*pi*wn*coef1*coef2*sin(2*pi*wn*x+phi(n)); end end
- Write a program that computes the height of the car as it drives down the road. It should allow for different velocities, different k, different b and the various road types provided (good, very good, etc.).
- From the solution to the road height, determine the maximum compression or extension of the suspension. Car suspensions can compress only so much before they "bottom out" which is hard on the car frame. Also, a good suspension keeps the wheels in contact with the road, so negative accelerations in excess of gravity are bad. Finally, too much acceleration overall is fatiguing for drivers and passengers, so that should be minimized too. From the height solution, these can be determined.
- For various velocities and road types, determine the "best" k and b values, where your boss tells you what is best, e.g., max compression is 5 cm.