This is The Program to Compute Acceleration Your Motorbike

berbagi program

Assalamu’alaikum wR wB

Salam sejahtera buat kita semua, semoga kita semua selamat di perjalanan sampai ke tujuan.

Berikut ini ane sampaikan listing program untuk menghitung torsi, akselerasi, topspeed dan waktu tempuh dalam matlab. Program inilah yang ane pakai dalam menghitung akselerasi nvl,cb150, ninja250, perbandingan performa 5-speed dan 6 speed serta perbedaan karakter antara nvl dan cb150 saat drag di jalan lurus.

Program ini terbagi dalam dua file, yang satu file data (lain motor lain datanya, harus di-inputkan dalam file ini), satunya lagi file perhitungan. Silahkan di-copy bebas dan bisa langsung di-run dalam matlab. Jika ingin menerjemahkan dalam bahasa lain juga silahkan. Karena program ini buatan ane, manusia biasa tentunya akan dijumpai kesalahan2, oleh karena itu mohon koreksi dan masukannya, sehingga programnya semakin baik dan semakin benar.File pertama, data untuk cb150r

function [prim_red,ukuran_ban,final_red,red_gir,rpm,Torsi,Power]=dataCB150R

prim_red=75/23;

ukuran_ban=[100 80 17];
%ukuran_ban=[120 70 17];

gir_depan=15;
gir_belakang=45;
sproket_red=gir_belakang/gir_depan;
final_red=[gir_depan gir_belakang sproket_red];

red_gir=[3.083      %37/12
1.941       %33/17
1.5         %30/20
1.227       %27/22
1.041       %25/24
0.923];     %24/26

%dynojet otomotifnet.com
rpm=  [3250    3500    3750    4000    4250    4500 4750    5000    5250    5500    5750    6000    6250    6500    6750    7000    7250    7500    7750    8000    8250    8500    8750    9000    9250    9500    9750    10000   10250   10500   10750   11000   11250   11500];
Torsi=[9        9       9       9       9       8.9 8.8     9       9.25    9.6     10      10.2    10.1    10.25   10.3    10.6    10.8    10.7    10.8    10.8    10.7    10.5    10.4    10.1    10      9.9     9.7     9.5     9.3     9.1     8.8     8.4     8.25    7.2    ];
Power=[4.2      4.5     4.8     5.2     5.4     5.7 5.9     6.4     7       7.5     8.1     8.5     8.9     9.4     9.8     10.4    11      11.4    11.9    12.2    12.4    12.5    12.75   12.75   12.9    13.2    13.25   13.2    13.5    13.4    13.1    13      13      11.5];
%dynojet mplus
% rpm=  [3600:200:11400 11500];
% Torsi=[9.8      9.8     9.8     9.6     9.5     9.4     9.5     9.6     9.75    10.2    10.4    10.6    10.7    10.75   10.8    10.9    11.1    11.25   11.5    11.7    11.75   11.76   11.7    11.75    11.5    11.4    11.3    11  10.9    10.7    10.4    10.3    10.1    9.9     9.9     9.7     9.4     9.2     8.8     8.5     8];
% Power=[5        5.4     5.6     5.8     5.9     6.1     6.4     6.7     7       7.6     8.2     8.7     9       9.4     9.7     10.2    10.5    11      11.6    12.1    12.5    12.9    13.1    13.5    13.6    13.7    13.9    14      14  14      14.1    14.2    14.25   14.4    14.43   14.3    14.2    14.3    13.8    13.8    13];

file kedua, komputasi

clc
clear
close all
[prim_red,ukuran_ban,final_red,red_gir,rpm,Torsi,Power]=dataCB150R;
% [prim_red,ukuran_ban,final_red,red_gir,rpm,Torsi,Power]=dataNVL;
%Primary    reduction        Drive    Driven    Reduksi
prim_red=[23    75    prim_red];
%Gigi transmisi
gigi=length(red_gir);
gigi_rasio=red_gir
%Secondary reduction
scnd_red=final_red;

Ukuran_ban=ukuran_ban
diameter_ban=ukuran_ban(3)*25.4+2*ukuran_ban(1)*ukuran_ban(2)/1000
jari_jari_ban=diameter_ban/2
Keliling_ban=pi*diameter_ban
diameter_gir_belakang=(4/8)*25.4*scnd_red(2)/pi/2
reduksi_ban=diameter_ban/diameter_gir_belakang
berat=200  %kg

rpm=rpm;
Torsi=Torsi;
Power=Power;
rpmx=rpm(1):10:rpm(length(rpm));
torsix=spline(rpm,Torsi,rpmx);
powerx=spline(rpm,Power,rpmx);

rpm=rpmx;
Torsi=torsix;
Power=powerx;

speed=[ ];
torsi_per_speed=[ ];
akselerasi=[ ];

for i=1:length(rpm)
for j=1:gigi
speed(i,j)=Keliling_ban*rpm(i)*60/(gigi_rasio(j)*prim_red(3)*scnd_red(3))/1000000;
torsi_per_speed(i,j)=Torsi(i)*gigi_rasio(j);
%         torsi_per_speed(i,j)=Torsi(i)*gigi_rasio(j)/reduksi_ban;
akselerasi(i,j)=torsi_per_speed(i,j)*prim_red(3)*scnd_red(3)/(diameter_ban/2/1000)/berat;%m/det
end
end
% num2str(akselerasi*berat)
%num2str(speed)
x_max=max(max(speed));
figure, plot(speed,rpm);hold on
plot(max(rpm)*ones(1,x_max*1.1),’y’);hold on
plot(max(rpm)*1.1*ones(1,x_max*1.1),’r’);hold off;
% legend(‘gigi-1′,’gigi-2′,’gigi-3′,’gigi-4′,’gigi-5’);
legend(‘gigi-1′,’gigi-2′,’gigi-3′,’gigi-4′,’gigi-5′,’gigi-6’);
title(‘Perubahan Kecepatan Setiap Gigi vs RPM’);
xlabel(‘Kecepatan (km/jam)’);
ylabel (‘rpm’);
grid on;

figure, plot(rpm,Torsi,’r-‘,rpm,Power,’g-‘);
legend(‘Torsi (N.m)’,’Power (HP)’);
title(‘Torsi dan Power’);
ylabel(‘Torsi (N.m)  Power (HP)’);
xlabel (‘rpm’);
grid on;

figure,plot(speed,torsi_per_speed);
legend(‘gigi-1′,’gigi-2′,’gigi-3′,’gigi-4′,’gigi-5′,’gigi-6’);
title(‘Perubahan Torsi Per gigi vd Kecepatan’);
ylabel(‘Torsi (N.m)’);
xlabel (‘Kecepatan (km/jam)’);
grid on;

figure,plot(speed,akselerasi);
legend(‘gigi-1′,’gigi-2′,’gigi-3′,’gigi-4′,’gigi-5′,’gigi-6’);
title(‘Perubahan Akselerasi Per gigi vd Kecepatan’);
ylabel(‘Akselerasi (m/s2)’);
xlabel (‘Kecepatan (km/jam)’);
grid on;
grid minor;

% shift gear  1  2  3   4   5
%shift_speed=input (‘Masukkan posisi kecepatan dalam kurung […] = ‘);
%shift_speed=[42.5 64 85 103 118];% km/jam R15
% shift_speed=[42.5 63 83 103]; %NVL std high shift
% shift_speed=[42.5 64 84 105]; %NVL std over shift
% shift_speed=[42.5 55 77 90]; %NVL std low shift
shift_speed=[42.5 67 86 102 117.5];%cb150r
%num2str(speed)

rounding=1000;
shift_rpm=[ ];
for i=1:length(shift_speed)
for j=1:size(speed,1)
round_speed(j,i)=abs(round(speed(j,i)*rounding/shift_speed(i))-rounding);
if round_speed(j,i)==0
shift_rpm=[shift_rpm rpm(j)];
break
end
end
end
% num2str(round_speed)
% shift_rpm
shift_gear=shift_rpm’
redline=11500;

shift1=rpm(1);
shift2=[];
for i=1:length(shift_gear)
rpm_down=shift_gear(i)*gigi_rasio(i+1)/gigi_rasio(i);
rpm_down2=round(rpm_down/10);
rpm_down2=rpm_down2*10;
shift1=[shift1;rpm_down2];
end
shift2=[shift_gear’ redline];

acc_all=[ ];
vel_all=[ ];
for j=1:gigi
n=find(rpm==shift1(j));
m=find(rpm==shift2(j));
acc=akselerasi(n:m,j);
vel=speed(n:m,j);
acc_all=[acc_all
acc];
vel_all=[vel_all;vel];
end
data=[acc_all vel_all];

figure, plot(vel_all,acc_all);
title(‘Akselerasi vs Kecepatan’);
xlabel(‘Kecepatan (km/jam)’);
ylabel (‘Akselerasi (m/det2)’);grid on
grid minor
vel0=0;
s_tot=0;
t_tot=0;
perf_all=[ ];
vel_all=vel_all*1000/3600;
x_vel=1:length(vel_all);
smoothing=1:0.1:length(vel_all);
vel_all=spline(x_vel,vel_all,smoothing);
acc_all=spline(x_vel,acc_all,smoothing);
max_speed=speed(size(speed,1),size(speed,2))
max_speed=max_speed*1000/3600;

finish=800;

for i=1:length(vel_all)
%
t=(vel_all(i)-vel0)/acc_all(i);
s=s_tot+vel0*t+0.5*acc_all(i)*t^2;
t_tot=t_tot+t;
s_tot=s;
vel0=vel_all(i);
perf_all=[perf_all;
t_tot s vel_all(i)*3600/1000 acc_all(i)];
if s_tot>=finish
break
end

end

perf_all;
t_tot;
s_tot;
t=0;
%             p=size(1,perf_all)
velnol=perf_all(size(perf_all,1),3);
vel0=velnol*1000/3600;
acc0=perf_all(size(perf_all,1),4);
s_tot=s_tot;
t_tot=t_tot;
det_t=0.01;
perf_all2=[];

while s_tot<finish
s=s_tot+vel0*det_t+0.5*acc0*det_t^2;
t=t+det_t;
t_tot=t_tot+det_t;
if vel0<max_speed
vel0=vel0+acc0*det_t;
else
vel0=max_speed;
end
s_tot=s;
perf_all2=[perf_all2;
t_tot s_tot vel0*3600/1000 acc0];
end

t_tot2=t_tot;
s_tot2=s_tot;
velend=vel0*3600/1000;
perf=[perf_all;perf_all2];
%num2str(perf)

figure, plot(perf(:,1),perf(:,4));
title([‘Akselerasi sampai Jarak ‘ num2str(finish) ‘ m dan Waktu yang dibutuhkan’]);
xlabel(‘Waktu (detik)’);
ylabel (‘Akselerasi (m/det2)’);grid on
text(0.5*max(perf(:,1)),0.9*max(perf(:,1)),[‘Akselerasi =’ num2str(perf(size(perf,1),4)) ‘ m/det2’]);
text(0.5*max(perf(:,1)),0.85*max(perf(:,1)),[‘Waktu =’ num2str(perf(size(perf,1),1)) ‘ detik’]);

figure, plot(perf(:,1),perf(:,3));
title([‘Kecepatan puncak sampai Jarak ‘ num2str(finish) ‘ m dan Waktu yang dibutuhkan’]);
xlabel(‘Waktu (detik)’);
ylabel (‘Kecepatan (km/jam)’);grid on
text(4.5,x_max*0.75,[‘Kecepatan =’ num2str(perf(size(perf,1),3)) ‘ km/jam’]);
text(4.5,x_max*0.7,[‘Waktu =’ num2str(perf(size(perf,1),1)) ‘ detik’]);

figure, plot(perf(:,1),perf(:,2));
title([‘Jarak ‘ num2str(finish) ‘ m dan Waktu yang dibutuhkan’]);
xlabel(‘Waktu (detik)’);
ylabel (‘Jarak Tempuh (m)’);grid on
text(0.5*max(perf(:,1)),0.9*max(perf(:,2)),[‘Jarak =’ num2str(perf(size(perf,1),2)) ‘ m’]);
text(0.5*max(perf(:,1)),0.85*max(perf(:,2)),[‘Waktu =’ num2str(perf(size(perf,1),1)) ‘ detik’]);

Jangan lupa, belajar matlab dulu, bagi yang belum faham. Semoga bermanfaat, wassalamu’alaikum wR wB.

28 Komentar

4 Trackbacks / Pingbacks

  1. Analisis Akselerasi dan Topspeed NVL dan R15 | motorgoodness
  2. Analisis Akselerasi dan Topspeed NVL dan R15 – UratMalu
  3. Mencari Nilai Koreksi Antara Analisis dan Riil Tes untuk Menentukan Rugi Lintasan | motorgoodness
  4. Mencari Nilai Koreksi Antara Analisis dan Riil Tes untuk Menentukan Rugi Lintasan – UratMalu

Semoga tercerahkan dan komen mas bro juga ikut mencerahkan