2011-04-29, 19:52
#1
Jag har försökt göra en fysiksimulator idag i Matlab. Programmet simulerar att ett rullande objekt accelereras på ett platt eller lutande plan.
Jag undrar ifall svaren jag får i programmet är rimliga och om fysiken ser korrekt ut.
Varje gång man kör koden kan man också testa den drivande motorns vridmoment och effekt.
(alltså bänka motorn)
Programmet har jag byggt helt efter fysikformlerna i läroboken och alla variabler är inte så svåra att hitta på internet.
Enligt mitt program har en Volvo S40 2.0t en topphastighet på 227 km/h vilket stämmer mycket bra med verkligheten, 0-100 går på neråt 6 sekunder, programmet tar dock ingen hänsyn till hjulspinn men man kan fixa start och idle rpm så att starten blir precis så långsam man vill(simulera hjulspinn alltså).
Programmet fungerar så att accelerationen räknas ut och plussas på hastigheten. Så funktionen är v=v0+F/m+g*sinx där F är alla krafter och x vinkeln på planet.
Krafterna är följande: vridmoment*utväxling*friktion-luftmotstånd.
Förklaringar till alla variabler finns i programmet, det viktigaste är dock att tänka efter, ändrar man motorns vridtop är det till exempel klokt att ändra vart växlingarna sker och i sin tur måste man ändra över vilket intervall man ska plotta när man ska bänka motorn för att få en fin graf över vrid och hästkrafter.
Alla sorters motor jag kan tänka mig går att simulera någorlunda här är några jag gjorde i lite hast:
(variablernas värden) Bara å ersätta direkt in i programmet.
Volvo S40 2.0t
Ferrari 458 Italia(ganska dåligt gjord)
Koenigsegg CCR
Formula 1 med 775hp vid 17200rpm:P
Försökte att simulera en buss förut tyckte dock att accelerationen blev för dålig men topphastigheten blev rätt... som sagt vill gärna ha feedback ifall det finns några brister i fysiken. Och ja växlingstiden har fuskats till, om den är 1 kommer en växling ge en ett tapp på 2*1m/s
Jag undrar ifall svaren jag får i programmet är rimliga och om fysiken ser korrekt ut.
clear all
v(1)=0; %starting speed (m/s)
M=1250; %total weight (kg)
disp=2000; %engine displacement (cc) (L4~2000 V6~3000 V8~5000)
a=300; %torque (value) (100=low power~100Nm+ 1000=high power~500Nm+)
b=7700; %torque peak(RPM) diesel(2000-3000) petrol(3500-7000) formula1(15000+)
rpm=6000;%launch rpm Starting RPM
idle=4000; %idle rpm (set close to launch rpm to simulate quick launch)
ratio=35; %starting gear ratio (slow car~40 fast car~20)
gears=6; %number of gears
gear=1; %allways start in 1st
shift=8800; %shifting rpm (set to ~120%torque peak for maximum acceleration)
range=0.81; %range of gears (0.7-0.9) Means that next gear will have x ratio of current gear.
shiftingtime=1; %app. shifting time
turbo=0; %Bar 0=off 1~+130Nm (0-2)
turborpm=1750; %RPM to activate turbo
friction=0.9; %drivetrain powerloss 0.9 if 2-wheel drive 0.8 if 4-wheel drive
k=0.4; %drag coeficient (0.35-0.45 for road cars)
Area=2; %frontal area (affects drag)
slope=0; %flat road=0 up=-1 down=1
slopeangle=3; %angle of slope
runtime=100; %time of simulation (s)
rpmh(1)=rpm;
time(1)=0;
j=0;
for t=1:runtime*10
if turbo>0
if rpm>turborpm
j=turbo;
else
j=0;
end
end
drag=k*1.2/2*Area*v(t)^2/M;
v(t+1)=v(t)+0.1*(ratio*(a*((rpm/b)^2-(rpm/(1.2*b))^4)+disp*0.04+j*100*log(b/(0.1*rpm)))*friction/M-drag+slope*9.82*sin(slopeangle/360*2*pi));
if rpm>=shift
if gear<gears
ratio=ratio*range;
gear=gear+1
v(t+1)=v(t+1)-2*shiftingtime;
end
end
rpm=v(t+1)*ratio*60/(2*pi);
if rpm<=idle
rpm=idle;
end
rpmh(t+1)=rpm;
time(t+1)=t/10;
end
figure
plot(time,v*3.6)
title('speed')
xlabel('time')
ylabel('km/h')
figure
plot(time,rpmh)
title('rpm')
xlabel('time')
ylabel('rpm')
finalspeed=3.6*v(t)
v(1)=0; %starting speed (m/s)
M=1250; %total weight (kg)
disp=2000; %engine displacement (cc) (L4~2000 V6~3000 V8~5000)
a=300; %torque (value) (100=low power~100Nm+ 1000=high power~500Nm+)
b=7700; %torque peak(RPM) diesel(2000-3000) petrol(3500-7000) formula1(15000+)
rpm=6000;%launch rpm Starting RPM
idle=4000; %idle rpm (set close to launch rpm to simulate quick launch)
ratio=35; %starting gear ratio (slow car~40 fast car~20)
gears=6; %number of gears
gear=1; %allways start in 1st
shift=8800; %shifting rpm (set to ~120%torque peak for maximum acceleration)
range=0.81; %range of gears (0.7-0.9) Means that next gear will have x ratio of current gear.
shiftingtime=1; %app. shifting time
turbo=0; %Bar 0=off 1~+130Nm (0-2)
turborpm=1750; %RPM to activate turbo
friction=0.9; %drivetrain powerloss 0.9 if 2-wheel drive 0.8 if 4-wheel drive
k=0.4; %drag coeficient (0.35-0.45 for road cars)
Area=2; %frontal area (affects drag)
slope=0; %flat road=0 up=-1 down=1
slopeangle=3; %angle of slope
runtime=100; %time of simulation (s)
rpmh(1)=rpm;
time(1)=0;
j=0;
for t=1:runtime*10
if turbo>0
if rpm>turborpm
j=turbo;
else
j=0;
end
end
drag=k*1.2/2*Area*v(t)^2/M;
v(t+1)=v(t)+0.1*(ratio*(a*((rpm/b)^2-(rpm/(1.2*b))^4)+disp*0.04+j*100*log(b/(0.1*rpm)))*friction/M-drag+slope*9.82*sin(slopeangle/360*2*pi));
if rpm>=shift
if gear<gears
ratio=ratio*range;
gear=gear+1
v(t+1)=v(t+1)-2*shiftingtime;
end
end
rpm=v(t+1)*ratio*60/(2*pi);
if rpm<=idle
rpm=idle;
end
rpmh(t+1)=rpm;
time(t+1)=t/10;
end
figure
plot(time,v*3.6)
title('speed')
xlabel('time')
ylabel('km/h')
figure
plot(time,rpmh)
title('rpm')
xlabel('time')
ylabel('rpm')
finalspeed=3.6*v(t)
Varje gång man kör koden kan man också testa den drivande motorns vridmoment och effekt.
(alltså bänka motorn)
for rpm=0:100:9000
if turbo>0
if rpm>turborpm
j=turbo;
else
j=0;
end
end
N(t)=a*((rpm/b)^(2)-(rpm/(1.2*b))^4)+(1+j)*disp*0.04+j*100*log(b/(0.1*rpm));
rpmf(t)=rpm;
hp(t)=N(t)*2*pi*rpm*1.34/60000;
t=t+1;
end
figure
plot(rpmf,N,'b',rpmf,hp,'r');
ht = title('Dyno sheet','FontSize', 16);
legend('torque(Nm)','hp','location','northwest')
xlabel('rpm')
if turbo>0
if rpm>turborpm
j=turbo;
else
j=0;
end
end
N(t)=a*((rpm/b)^(2)-(rpm/(1.2*b))^4)+(1+j)*disp*0.04+j*100*log(b/(0.1*rpm));
rpmf(t)=rpm;
hp(t)=N(t)*2*pi*rpm*1.34/60000;
t=t+1;
end
figure
plot(rpmf,N,'b',rpmf,hp,'r');
ht = title('Dyno sheet','FontSize', 16);
legend('torque(Nm)','hp','location','northwest')
xlabel('rpm')
Programmet har jag byggt helt efter fysikformlerna i läroboken och alla variabler är inte så svåra att hitta på internet.
Enligt mitt program har en Volvo S40 2.0t en topphastighet på 227 km/h vilket stämmer mycket bra med verkligheten, 0-100 går på neråt 6 sekunder, programmet tar dock ingen hänsyn till hjulspinn men man kan fixa start och idle rpm så att starten blir precis så långsam man vill(simulera hjulspinn alltså).
Programmet fungerar så att accelerationen räknas ut och plussas på hastigheten. Så funktionen är v=v0+F/m+g*sinx där F är alla krafter och x vinkeln på planet.
Krafterna är följande: vridmoment*utväxling*friktion-luftmotstånd.
Förklaringar till alla variabler finns i programmet, det viktigaste är dock att tänka efter, ändrar man motorns vridtop är det till exempel klokt att ändra vart växlingarna sker och i sin tur måste man ändra över vilket intervall man ska plotta när man ska bänka motorn för att få en fin graf över vrid och hästkrafter.
Alla sorters motor jag kan tänka mig går att simulera någorlunda här är några jag gjorde i lite hast:
(variablernas värden) Bara å ersätta direkt in i programmet.
Volvo S40 2.0t
clear all
v(1)=0; %starting speed (m/s)
M=1360; %total weight (kg)
disp=2000; %engine displacement (cc) (L4~2000 V6~3000 V8~5000)
a=133; %torque (value) (100=low power~100Nm+ 1000=high power~500Nm+)
b=4500; %torque peak(RPM) diesel(2000-3000) petrol(3500-7000) formula1(15000+)
rpm=1750;%launch rpm Starting RPM
idle=1750; %idle rpm (set close to launch rpm to simulate quick launch)
ratio=35; %starting gear ratio (slow car~40 fast car~20)
gears=5; %number of gears
gear=1; %allways start in 1st
shift=6000; %shifting rpm (set to ~120%torque peak for maximum acceleration)
range=0.715; %range of gears (0.7-0.9) Means that next gear will have x ratio of current gear.
shiftingtime=0.7; %app. shifting time
turbo=0.3; %Bar 0=off 1~+130Nm (0-2)
turborpm=1800; %RPM to activate turbo
friction=0.9; %drivetrain powerloss 0.9 if 2-wheel drive 0.8 if 4-wheel drive
k=0.33; %drag coeficient (0.3-0.5 for road cars)
Area=2.3; %frontal area (affects drag)
slope=0; %flat road=0 up=-1 down=1
slopeangle=3; %angle of slope
runtime=100; %time of simulation (s)
rpmh(1)=rpm;
time(1)=0;
j=0;
v(1)=0; %starting speed (m/s)
M=1360; %total weight (kg)
disp=2000; %engine displacement (cc) (L4~2000 V6~3000 V8~5000)
a=133; %torque (value) (100=low power~100Nm+ 1000=high power~500Nm+)
b=4500; %torque peak(RPM) diesel(2000-3000) petrol(3500-7000) formula1(15000+)
rpm=1750;%launch rpm Starting RPM
idle=1750; %idle rpm (set close to launch rpm to simulate quick launch)
ratio=35; %starting gear ratio (slow car~40 fast car~20)
gears=5; %number of gears
gear=1; %allways start in 1st
shift=6000; %shifting rpm (set to ~120%torque peak for maximum acceleration)
range=0.715; %range of gears (0.7-0.9) Means that next gear will have x ratio of current gear.
shiftingtime=0.7; %app. shifting time
turbo=0.3; %Bar 0=off 1~+130Nm (0-2)
turborpm=1800; %RPM to activate turbo
friction=0.9; %drivetrain powerloss 0.9 if 2-wheel drive 0.8 if 4-wheel drive
k=0.33; %drag coeficient (0.3-0.5 for road cars)
Area=2.3; %frontal area (affects drag)
slope=0; %flat road=0 up=-1 down=1
slopeangle=3; %angle of slope
runtime=100; %time of simulation (s)
rpmh(1)=rpm;
time(1)=0;
j=0;
Ferrari 458 Italia(ganska dåligt gjord)
clear all
v(1)=0; %starting speed (m/s)
M=1480; %total weight (kg)
disp=4500; %engine displacement (cc) (L4~2000 V6~3000 V8~5000)
a=670; %torque (value) (100=low power~100Nm+ 1000=high power~700Nm+)
b=7000; %torque peak(RPM) diesel(2000-3000) petrol(3500-7000) formula1(15000+)
rpm=5500;%launch rpm Starting RPM
idle=5000; %idle rpm (set close to launch rpm to simulate quick launch)
ratio=30; %starting gear ratio (slow car~40 fast car~30)
gears=7; %number of gears
gear=1; %allways start in 1st
shift=8800; %shifting rpm (set to ~120%torque peak for maximum acceleration)
range=0.825; %range of gears (0.7-0.9) Means that next gear will have x ratio of current gear.
shiftingtime=0.3; %app. shifting time
turbo=0; %Bar 0=off 1~+130Nm (0-2)
turborpm=1750; %RPM to activate turbo
friction=0.9; %drivetrain powerloss <0.9 if 2-wheel drive <0.8 if 4-wheel drive
k=0.47; %drag coeficient (0.3-0.5 for road cars)
Area=1.8; %frontal area (affects drag)
slope=0; %flat road=0 up=-1 down=1
slopeangle=3; %angle of slope
runtime=10; %time of simulation (s)
rpmh(1)=rpm;
time(1)=0;
j=0;
v(1)=0; %starting speed (m/s)
M=1480; %total weight (kg)
disp=4500; %engine displacement (cc) (L4~2000 V6~3000 V8~5000)
a=670; %torque (value) (100=low power~100Nm+ 1000=high power~700Nm+)
b=7000; %torque peak(RPM) diesel(2000-3000) petrol(3500-7000) formula1(15000+)
rpm=5500;%launch rpm Starting RPM
idle=5000; %idle rpm (set close to launch rpm to simulate quick launch)
ratio=30; %starting gear ratio (slow car~40 fast car~30)
gears=7; %number of gears
gear=1; %allways start in 1st
shift=8800; %shifting rpm (set to ~120%torque peak for maximum acceleration)
range=0.825; %range of gears (0.7-0.9) Means that next gear will have x ratio of current gear.
shiftingtime=0.3; %app. shifting time
turbo=0; %Bar 0=off 1~+130Nm (0-2)
turborpm=1750; %RPM to activate turbo
friction=0.9; %drivetrain powerloss <0.9 if 2-wheel drive <0.8 if 4-wheel drive
k=0.47; %drag coeficient (0.3-0.5 for road cars)
Area=1.8; %frontal area (affects drag)
slope=0; %flat road=0 up=-1 down=1
slopeangle=3; %angle of slope
runtime=10; %time of simulation (s)
rpmh(1)=rpm;
time(1)=0;
j=0;
Koenigsegg CCR
clear all
v(1)=0; %starting speed (m/s)
M=1300; %total weight (kg)
disp=4700; %engine displacement (cc) (L4~2000 V6~3000 V8~5000)
a=700; %torque (value) (100=low power~100Nm+ 1000=high power~700Nm+)
b=5750; %torque peak(RPM) diesel(2000-3000) petrol(3500-7000) formula1(15000+)
rpm=1500;%launch rpm Starting RPM
idle=1500; %idle rpm (set close to launch rpm to simulate quick launch)
ratio=30; %starting gear ratio (slow car~40 fast car~30)
gears=6; %number of gears
gear=1; %allways start in 1st
shift=7500; %shifting rpm (set to ~120%torque peak for maximum acceleration)
range=0.742; %range of gears (0.7-0.9) Means that next gear will have x ratio of current gear.
shiftingtime=1; %app. shifting time
turbo=0.87; %Bar 0=off 1~+130Nm (0-2)
turborpm=3000; %RPM to activate turbo
friction=0.9; %drivetrain powerloss <0.9 if 2-wheel drive <0.8 if 4-wheel drive
k=0.3; %drag coeficient (0.3-0.5 for road cars)
Area=2; %frontal area (affects drag)
slope=0; %flat road=0 up=-1 down=1
slopeangle=3; %angle of slope
runtime=200; %time of simulation (s)
rpmh(1)=rpm;
time(1)=0;
j=0;
v(1)=0; %starting speed (m/s)
M=1300; %total weight (kg)
disp=4700; %engine displacement (cc) (L4~2000 V6~3000 V8~5000)
a=700; %torque (value) (100=low power~100Nm+ 1000=high power~700Nm+)
b=5750; %torque peak(RPM) diesel(2000-3000) petrol(3500-7000) formula1(15000+)
rpm=1500;%launch rpm Starting RPM
idle=1500; %idle rpm (set close to launch rpm to simulate quick launch)
ratio=30; %starting gear ratio (slow car~40 fast car~30)
gears=6; %number of gears
gear=1; %allways start in 1st
shift=7500; %shifting rpm (set to ~120%torque peak for maximum acceleration)
range=0.742; %range of gears (0.7-0.9) Means that next gear will have x ratio of current gear.
shiftingtime=1; %app. shifting time
turbo=0.87; %Bar 0=off 1~+130Nm (0-2)
turborpm=3000; %RPM to activate turbo
friction=0.9; %drivetrain powerloss <0.9 if 2-wheel drive <0.8 if 4-wheel drive
k=0.3; %drag coeficient (0.3-0.5 for road cars)
Area=2; %frontal area (affects drag)
slope=0; %flat road=0 up=-1 down=1
slopeangle=3; %angle of slope
runtime=200; %time of simulation (s)
rpmh(1)=rpm;
time(1)=0;
j=0;
Formula 1 med 775hp vid 17200rpm:P
clear all
v(1)=0; %starting speed (m/s)
M=580; %total weight (kg)
disp=2000; %engine displacement (cc) (L4~2000 V6~3000 V8~5000)
a=500; %torque (value) (100=low power~100Nm+ 1000=high power~500Nm+)
b=15000; %torque peak(RPM) diesel(2000-3000) petrol(3500-7000) formula1(15000+)
rpm=6000;%launch rpm Starting RPM
idle=4000; %idle rpm (set close to launch rpm to simulate quick launch)
ratio=50; %starting gear ratio (slow car~40 fast car~20)
gears=7; %number of gears
gear=1; %allways start in 1st
shift=17000; %shifting rpm (set to ~120%torque peak for maximum acceleration)
range=0.85; %range of gears (0.7-0.9) Means that next gear will have x ratio of current gear.
shiftingtime=1; %app. shifting time
turbo=0; %Bar 0=off 1~+130Nm (0-2)
turborpm=1750; %RPM to activate turbo
friction=0.9; %drivetrain powerloss 0.9 if 2-wheel drive 0.8 if 4-wheel drive
k=1; %drag coeficient (0.3-0.5 for road cars)
Area=1.1; %frontal area (affects drag)
slope=0; %flat road=0 up=-1 down=1
slopeangle=3; %angle of slope
runtime=100; %time of simulation (s)
rpmh(1)=rpm;
time(1)=0;
j=0;
v(1)=0; %starting speed (m/s)
M=580; %total weight (kg)
disp=2000; %engine displacement (cc) (L4~2000 V6~3000 V8~5000)
a=500; %torque (value) (100=low power~100Nm+ 1000=high power~500Nm+)
b=15000; %torque peak(RPM) diesel(2000-3000) petrol(3500-7000) formula1(15000+)
rpm=6000;%launch rpm Starting RPM
idle=4000; %idle rpm (set close to launch rpm to simulate quick launch)
ratio=50; %starting gear ratio (slow car~40 fast car~20)
gears=7; %number of gears
gear=1; %allways start in 1st
shift=17000; %shifting rpm (set to ~120%torque peak for maximum acceleration)
range=0.85; %range of gears (0.7-0.9) Means that next gear will have x ratio of current gear.
shiftingtime=1; %app. shifting time
turbo=0; %Bar 0=off 1~+130Nm (0-2)
turborpm=1750; %RPM to activate turbo
friction=0.9; %drivetrain powerloss 0.9 if 2-wheel drive 0.8 if 4-wheel drive
k=1; %drag coeficient (0.3-0.5 for road cars)
Area=1.1; %frontal area (affects drag)
slope=0; %flat road=0 up=-1 down=1
slopeangle=3; %angle of slope
runtime=100; %time of simulation (s)
rpmh(1)=rpm;
time(1)=0;
j=0;
Försökte att simulera en buss förut tyckte dock att accelerationen blev för dålig men topphastigheten blev rätt... som sagt vill gärna ha feedback ifall det finns några brister i fysiken. Och ja växlingstiden har fuskats till, om den är 1 kommer en växling ge en ett tapp på 2*1m/s
__________________
Senast redigerad av mr13377 2011-04-29 kl. 19:57.
Senast redigerad av mr13377 2011-04-29 kl. 19:57.
Kommer programmet att laddas upp senare när parmetrarna är klara?