Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Suspension_report

311 vues

Publié le

  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Suspension_report

  1. 1. 1 4 Suspension Model Analysis and Optimization Report Patrick Corbin
  2. 2. The purpose of the project was to write a Matlab program to simulate a 1 4 suspension model for a Tesla vehicle over a variety of roads, and use the program to optimize the suspension system’s performance for di↵erent spring and damping coe cients, k and b. Road and Suspension Modeling: The road profile was modeled by combining 61 sine and cosine functions over a 1 km domain. Five di↵erent road types, (very good, good, average, poor, and very poor), were created by adding roughness to the roads in the form of coe cients multiplied by the 61 sine and cosine functions. The suspension system was modeled as a 1 4 suspension model (shown in Figure 1 in Appendix A) which is described by the di↵erential equation: m d2 z dt2 + b( dz dt dy dt ) + k(z y) = 0, (1) where z and its derivatives represent the position, velocity, and acceleration of the vehicle and y and its derivative describe the height and rate of change of height of the road. y data was calculated from the road profile described above and z data was calculated using a numerical approximation of Eqn. 1 calculated with the function ode45 in Matlab. Analysis and Optimization Results: Initial analysis was performed by using standard values for the vehicle’s mass, spring constant, and damper constant (i.e. k = (6000)9.81 N/m, b = 5370 N-s/m, and m = 250 kg) to calculate the maximum velocity and corresponding maximum damping force for each road type for which the suspension system met the following criteria along the entirety of the road: maximum vertical acceleration, amax, is less than 2g and maximum suspension compression, cmax, is less than 5 cm. As expected, the rougher the road type the lower the maximum velocity meeting the design criteria was. The maximum damper force corresponding to the maximum velocities were generally larger for rougher roads. Table 1 in Appendix A tabulates the maximum velocity and damper force for each road type. Optimization e↵orts focused on combining di↵erent k and b values such that the vehicle could perform at high velocities under relatively low damping forces. The quality of this performance was described by the merit function, f(k, b, sk0) = 8vmax fdmax, (2) where sk0 is the quality of the road, vmax is the maximum velocity meeting design criteria, and fdmax is the maximum damping force for a given vmax. The optimization was performed by analyzing the value of the merit function, f(k, b, sk0), for 120 di↵erent combinations of k and b where k = (1000)9.81 : 1000 : (12000)9.81 N/m and b = 0.1(.07)(2) p km : .02(.07)(2) p km : 2(.07)(2) p km. Data was also collected for the value of vmax, fdmax, and the maximum suspension compression and vertical acceleration at the system’s failure. The analysis yielded that the optimal values of k and b for an average road to be 9810 N/m and 219.25 N-s/m which were the smallest b and k combination tested. Analysis and Optimization Interpretation: Several notable conclusions can be drawn from the above optimization data. First, as shown in Figure 2a in Appendix B, about half the k and b combinations’ maximum velocities topped out because of the vertical acceleration constraint and about half because of the suspension compression constraint. What this means is that for particular k and b values, one of these two parameters tends to limit the system’s operable velocity range. For example, Figure 4a in Appendix B shows a graph of suspension compression versus k and b. As shown in the figure, for low k values the maximum suspension compression is largely independent of b. For large k and b values however, the compression becomes largely independent of k and dependent on b. In Figure 4b, a di↵erent functional dependence on k and b exists for the maximum vertical acceleration. 1
  3. 3. For low k and b values, the acceleration is dependent on both k and b, but for large k and b values, the acceleration becomes independent of both variables. Also, from comparing Figures 5 and 6, it is apparent that low values of k an b are correlated with suspension failures whereas high values of k an b are correlated with vertical acceleration failures. Second, for moderately large k values (i.e. k > (2000)9.81 N/m) the maximum velocity is relatively independent of k and peaks for a b value of about 4000 N-s/m (as shown in Figure2b). This illustrates the physical intuition that increasing the damping capacity of the suspension system can, for moderate values of b, decrease the amount a car shakes by absorbing energy (which yields higher operable velocities), but, for higher values of b, can absorb too much energy and cause the car to de-accelerate vertically too quickly (shake more and yield lower operable velocities). Third and finally, graphs of the merit function value vs. b and k (Figure 3b) and the maximum damping force vs. b and k (Figure 3a) are inverses of each other (as the damping force increases, the merit function decreases) and are independent from k, which illustrates that the value of the merit function is almost exclusively depend on the damping force and not on the maximum velocity. This suggests that the merit function function overvalues reducing the damping force and undervalues maximizing the maximum operable velocity. Conclusions: In future analyses of the 1 4 suspension model, I suggest that lower values of k and b be tested when op- timizing the car’s performance in that the lowest values of the set tested were deemed optimal. Additionally, I suggest that the merit function be adjusted to more properly value maximizing the maximum operable velocity. This could be achieved by multiplying the vmax term in Eqn. 2 by a factor of 1000 or 10000 instead of 8. 2
  4. 4. Appendix A Table 1: Maximum Velocity and Damping Force meeting design criteria Road Type Maximum Velocity (km/hr) Maximum Damping Force (N) very good 140 4.3014e03 good 120 7.1625e03 average 70 7.7758e03 poor 40 8.6382e03 very poor 20 8.1931e03 Figure 1: A representation of 1 4 suspension model. 3
  5. 5. Appendix B max compression at failure (m) 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 maxverticalaccelerationatfailure(m/s2 ) 0 5 10 15 20 25 30 damping coefficient (N/m) 0 5000 10000 15000 maximumvelocity(m/s) 0 5 10 15 20 25 k = 1000*9.81 N/m k = 2000*9.81 N/m k = 3000*9.81 N/m k = 4000*9.81 N/m k = 5000*9.81 N/m Figure 2: A plot of parameters at design failure (left) and maximum velocity vs. damping coe cient (right). damping coefficient (N-s/m) 0 5000 10000 15000 maximumdampingforce(N) 0 2000 4000 6000 8000 10000 12000 14000 k = 1000*9.81 N/m k = 2000*9.81 N/m k = 3000*9.81 N/m k = 4000*9.81 N/m k = 5000*9.81 N/m damping coefficient (N-s/m) 0 5000 10000 15000 meritfunctionvalue -14000 -12000 -10000 -8000 -6000 -4000 -2000 0 k = 1000*9.81 N/m k = 2000*9.81 N/m k = 3000*9.81 N/m k = 4000*9.81 N/m k = 5000*9.81 N/m Figure 3: Plots of maximum damping force (left) and merit function value (right) vs. the damping coe cient. 4
  6. 6. damping coefficient (N-s/m) 0 5000 10000 15000 maximumsuspensioncompressionfailure(m) 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 k = 1000*9.81 N/m k = 2000*9.81 N/m k = 3000*9.81 N/m k = 4000*9.81 N/m k = 5000*9.81 N/m damping coefficient (N-s/m) 0 5000 10000 15000 maximumverticalaccelerationatfailure(m) 0 5 10 15 20 25 30 k = 1000*9.81 N/m k = 2000*9.81 N/m k = 3000*9.81 N/m k = 4000*9.81 N/m k = 5000*9.81 N/m Figure 4: Plots of maximum suspension compression (left) and maximum vertical acceleration (right) vs. the damping coe cient 5
  7. 7. Appendix C roadv2.m %road.m clear all; close all; hold off; rng(901949872); % put your NDID number inside the rng function mmin = -2; mmax = 1; % min and max wave numbers: bumps from 10cm to 100m N = 61; % how many terms to include in road surface function roadlength = 1000; % 1km track wavenos = logspace(mmin,mmax,N); phi = unifrnd(0,2*pi,1,N); % individualized phase shifts %%% change sk0 to change quality of the road %sk0 = (2+8)/2/10^6; % very good road %sk0 = (8+32)/2/10^6; % good road %sk0 = (32+128)/2/10^6; % average road %sk0 = (128+512)/2/10^6; % poor road sk0 = (512+2048)/2/10^6;% very poor road %% Initial Parameters x = linspace(0,roadlength,100000); k = 6000*9.81; m = 250; b = 5370; v = 30*(3600/1000); icz = y(sk0,wavenos,phi,0); iczdot = dydx(sk0,wavenos,phi,0); tmax = 1000/v; h = waitbar(0,’Brians computer is faster than mine’); % Data Matrices for vmax,fdmax,f(merit function),amax,cmax(max compression) fdata = zeros(1,120); vdata = zeros(1,120); adata = zeros(1,120); fddata = zeros(1,120); cdata = zeros(1,120); % Calc = 1 provides plots of the road profile, the car’s vertical position, % the suspension compression, and the car’s vertical acceleration % Calc = 2 find the maximum velocity and corresponding damping force that % for the quality of road selected above % Calc =3 finds the optimal values for the spring constant ’k’ and the % damping coeffiecient ’b’ that meet the design criteria for the quality of % road selected above calc =2; %% Calculate and Plot Road Profile %plot(x,y(sk0,wavenos,phi,x)); %xlabel(’x’); %ylabel(’y’); %title(’Road Profile’); %% Calculate and Plot Suspension Properties if calc==1 6
  8. 8. % t = time and z = car height [t,z] = ode45(@(t,z) carrhs(t,z,sk0,wavenos,phi,v,m,b,k),[0 tmax],[icz iczdot]); % Road Position versus Ride Height figure(2) plot(v.*t,z(:,1)) xlabel(’x’); ylabel(’ride height’); % yh = height of the road at a given x yh = y(sk0,wavenos,phi,v.*t); % comp = compression of the suspension comp = z(:,1)-yh; % Road Position versus suspension compression figure(3) plot(v.*t,comp) xlabel(’x’); ylabel(’suspension compression’); % accl = vertical acceleration of the car accl = (b/m)*(v.*dydx(sk0,wavenos,phi,v.*t)-z(:,2))+(k/m)*(y(sk0,wavenos,phi,v.*t)-z(:,1)); % Road Postion versus Vertical Acceleration figure(4) plot(v.*t,accl) xlabel(’x’); ylabel(’vertical acceleration’); elseif calc == 2 v = (1000/3600).*[10:10:140]; vmax = 0; vstep = 0; done = 0; while (done==0) vloop = v(1+vstep); tmax = 1000/vloop; % t = time and z = car height [t,z] = ode45(@(t,z) carrhs(t,z,sk0,wavenos,phi,vloop,m,b,k),[0 tmax],[icz iczdot]); % yh = height of the road at a given x yh = y(sk0,wavenos,phi,vloop.*t); % comp = compression of the suspension comp = z(:,1)-yh; % accl = vertical acceleration of the car accl = (b/m)*(vloop.*dydx(sk0,wavenos,phi,vloop.*t)-z(:,2))+(k/m)*(y(sk0,wavenos,phi,vloop.*t)-z amax = abs(max(accl)); cmax = abs(max(comp)); done =1; if amax<=2*9.81 && cmax<=.05 if vloop>vmax 7
  9. 9. vmax = vloop; % ydot = slope of the road ydot = dydx(sk0,wavenos,phi,vmax.*t); % fdmax = damper force fdmax = max(abs(b.*(ydot-z(:,2)))); end done =0; end vstep = vstep +1; if vstep>=14 done =1; end end vmax = vmax*(3600/1000); elseif calc == 3 v = (1000/3600).*[10:10:140]; vmax = 0; fdmax = 0; fmax = -1000000000; k = 9.81.*[1000:1000:12000]; brange = [.1:.2:2]; b = zeros(length(k),length(brange)); for i=1:length(k) for j = 1:length(brange) b(i,j) = brange(j).*(2).*(.7).*sqrt(k(i).*m); end end wstep = 0; for n =1:length(k) for mm=1:size(b,2) vstep = 0; vmax = 0; done = 0; waitbar(wstep/120,h); while (done==0) vloop = v(1+vstep); tmax = 1000/vloop; % t = time and z = car height [t,z] = ode45(@(t,z) carrhs(t,z,sk0,wavenos,phi,vloop,m,b(n,mm),k(n)),[0 tmax],[icz iczd % yh = height of the road at a given x yh = y(sk0,wavenos,phi,vloop.*t); % comp = compression of the suspension comp = z(:,1)-yh; % accl = vertical acceleration of the car accl = (b(n,mm)/m)*(vloop.*dydx(sk0,wavenos,phi,vloop.*t)-z(:,2))+(k(n)/m)*(y(sk0,waveno amax = abs(max(accl)); cmax = abs(max(comp)); done = 1; 8
  10. 10. if amax<=2*9.81 && cmax<=.05 if vloop>vmax vmax = vloop; % ydot = slope of the road ydot = dydx(sk0,wavenos,phi,vmax.*t); % fdmax = damper force for v = vmax fdmax = max(abs(b(n,mm).*(ydot-z(:,2)))); done = 0; end end vstep = vstep+1; if vstep>=14 done =1; end end f = 8*vmax-fdmax; if f>fmax kideal = k(n); bideal = b(n,mm); fmax = f; end wstep = wstep+1; fdata(1,mm+10*(n-1)) = f; vdata(1,mm+10*(n-1)) = vmax; fddata(1,mm+10*(n-1)) = fdmax; adata(1,mm+10*(n-1)) = amax; cdata(1,mm+10*(n-1)) = cmax; end end end carrhs.m function zdot = carrhs(t,z,sk0,wavenos,phi,v,m,b,k) zdot = zeros(2,1); zdot(1) = z(2); zdot(2) = (b/m)*(v.*dydx(sk0,wavenos,phi,v.*t)-z(2))+(k/m)*(y(sk0,wavenos,phi,v.*t)-z(1)); dydx.m 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 y.m function h = y(sk0,wavenos,phi,x) h = 0; k0 = 1/(2*pi); n1 = -3; n2 = -2.25; coef1 = sqrt(2*pi/(length(wavenos))); 9
  11. 11. 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 splots.m % splots.m close all load(’avgrddata’) %% Useful Suspension Plots figure(1) plot(cdata,adata,’ko’) xlabel(’max compression at failure (m)’) ylabel(’max vertical acceleration at failure (m/s^2)’) set(gca,’FontSize’,14,’FontName’,’Arial’) grid on figure(2) for i =1:12 plot(b(i,1:10),vdata(1+10*(i-1):10+10*(i-1))) hold on end xlabel(’damping coefficient (N/m)’) ylabel(’maximum velocity (m/s)’) legend(’k = 1000*9.81 N/m’,’k = 2000*9.81 N/m’,’k = 3000*9.81 N/m’,’k = 4000*9.81 N/m’,’k = 5000*9.81 N/ set(gca,’FontSize’,14,’FontName’,’Arial’) grid on figure(3) for i =1:12 plot(b(i,1:10),fddata(1+10*(i-1):10+10*(i-1))) hold on end xlabel(’damping coefficient (N-s/m)’) ylabel(’maximum damping force (N)’) legend(’k = 1000*9.81 N/m’,’k = 2000*9.81 N/m’,’k = 3000*9.81 N/m’,’k = 4000*9.81 N/m’,’k = 5000*9.81 N/ set(gca,’FontSize’,14,’FontName’,’Arial’) grid on figure(4) for i =1:12 plot(b(i,1:10),fdata(1+10*(i-1):10+10*(i-1))) hold on end xlabel(’damping coefficient (N-s/m)’) ylabel(’merit function value’) legend(’k = 1000*9.81 N/m’,’k = 2000*9.81 N/m’,’k = 3000*9.81 N/m’,’k = 4000*9.81 N/m’,’k = 5000*9.81 N/ set(gca,’FontSize’,14,’FontName’,’Arial’) grid on figure(5) 10
  12. 12. for i =1:12 plot(b(i,1:10),cdata(1+10*(i-1):10+10*(i-1))) hold on end xlabel(’damping coefficient (N-s/m)’) ylabel(’maximum suspension compression failure (m)’) legend(’k = 1000*9.81 N/m’,’k = 2000*9.81 N/m’,’k = 3000*9.81 N/m’,’k = 4000*9.81 N/m’,’k = 5000*9.81 N/ set(gca,’FontSize’,14,’FontName’,’Arial’) grid on figure(6) for i =1:12 plot(b(i,1:10),adata(1+10*(i-1):10+10*(i-1))) hold on end xlabel(’damping coefficient (N-s/m)’) ylabel(’maximum vertical acceleration at failure (m)’) legend(’k = 1000*9.81 N/m’,’k = 2000*9.81 N/m’,’k = 3000*9.81 N/m’,’k = 4000*9.81 N/m’,’k = 5000*9.81 N/ set(gca,’FontSize’,14,’FontName’,’Arial’) grid on 11

×