PICの初期設定
CCS-Cのおまじない
FUSEのセットです。内部クロックはH4で4逓倍させます。(10MHZX4=40MHz)だからといって、20MHZ取り付けて80MHZでは動きません。内部最大は40MHZですので・・・
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/__/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
//
// SPEED COUNTER
/
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/__/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#include <18f8720.h>
#fuses H4,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP
#device ADC=10//A/D変換10ビットモード
#USE DELAY(CLOCK=40MHZ, CRYSTAL=10MHZ)
#use RS232(BAUD=230400, XMIT=PIN_C6,RCV=PIN_C7)
//割り込み優先設定//
#PRIORITY CCP4,CCP5,CCP3,CCP2,CCP1,TIMER1
馬力計算
転載を快く承諾して頂いた株式会社パワーハウス・アクセル様に感謝いたします。
以下に記載の馬力計算に関わる版権は株式会社パワーハウス・アクセル殿が所有しております。
URL:http://www.poweraccel.co.jp/right_top.html
計算基本式と補正係数基本値
馬力=((車両総重量x到達速度(秒速)の2乗)/2g)ー((車両総重量x開始速度(秒速)の2乗)/2g)/75kgm(1馬力の意味)/所要秒数
消費馬力=(計測終了時の運動エネルギー)ー(計測開始時の運動エネルギー)/75kgm/減速所要秒数
駆動系の伝達ロス:横置きエンジンで約10%
RF車で12%から15%
乗用車タイプ4輪駆動車では20%から25%伝達ロス
馬力計算には速度変化を利用して計算を行います。類似の方法では加速度センサを利用する手もありますが、3軸データを合成する必要があるのと、振動ノイズ除去など処理が複雑になるため、一番簡単で、実現しやすい速度変化にて算出します。
摩擦、空気抵抗のロス計算は実車にて計測し、近似式を推定する方法とします。この方法は、HONDAのマニュアルベースであるATのようにニュートラル走行しても、ATに負担がかからない車向けですのでCVTで行うとミッションが壊れる可能性があります。またニュートラル走行は慣性力がなくなるので、死亡事故、人身事故、その他全ての事故、車両損壊を起こすか誘発する恐れがありますので、一般公道では絶対に行わないでください。(自己責任で行って下さい。ミッションが壊れる可能性が大きいのでやめたほうがいいです)クローズドなサーキット等の走行会(単独走行が可能な走行会)で主催者の了承を得てデータを採取すること。
※高負荷でニュートラルからドライブへの切替は非常に危険です。
DOWNLOADページにあるオデッセイABA RB2のデータでも大差ないですので、オデッセイのデータを使用するのが簡単です。
あるスピードで走行しているときギアをニュートラルにしたとします。減速させる力は空気抵抗+転がり抵抗+駆動系摩擦になります
この消費抵抗から馬力が計算できます。
以下がオデッセイの消費抵抗データとします。
| 速度 | 経過時間 | 時間差 |
| 180 | 560.4770725 | 0 |
| 179 | 565.7435525 | 5.266479981 |
| 178 | 571.0555383 | 5.311985841 |
| 177 | 576.4124339 | 5.356895536 |
| 176 | 581.8136429 | 5.401209065 |
| 175 | 587.2585694 | 5.444926428 |
| 174 | 592.746617 | 5.488047626 |
| 173 | 598.2771897 | 5.530572659 |
| 172 | 603.8496912 | 5.572501526 |
| 171 | 609.4635254 | 5.613834228 |
| 170 | 615.1180962 | 5.654570765 |
| 169 | 620.8128073 | 5.694711136 |
| 168 | 626.5470627 | 5.734255342 |
| 167 | 632.320266 | 5.773203382 |
| 166 | 638.1318213 | 5.811555257 |
| 165 | 643.9811323 | 5.849310966 |
| 164 | 649.8676028 | 5.88647051 |
| 163 | 655.7906367 | 5.923033888 |
| 162 | 661.7496378 | 5.959001101 |
| 161 | 667.7440099 | 5.994372149 |
| 160 | 673.7731569 | 6.029147031 |
| 159 | 679.8364827 | 6.063325748 |
| 158 | 685.933391 | 6.0969083 |
| 157 | 692.0632857 | 6.129894686 |
| 156 | 698.2255706 | 6.162284906 |
| 155 | 704.4196495 | 6.194078961 |
| 154 | 710.6449264 | 6.225276851 |
| 153 | 716.900805 | 6.255878575 |
| 152 | 723.1866891 | 6.285884134 |
| 151 | 729.5019826 | 6.315293528 |
| 150 | 735.8460894 | 6.344106756 |
| 149 | 742.2184132 | 6.372323818 |
| 148 | 748.6183579 | 6.399944715 |
| 147 | 755.0453274 | 6.426969447 |
| 146 | 761.4987254 | 6.453398013 |
| 145 | 767.9779558 | 6.479230414 |
| 144 | 774.4824224 | 6.50446665 |
| 143 | 781.0115292 | 6.52910672 |
| 142 | 787.5646798 | 6.553150624 |
| 141 | 794.1412782 | 6.576598364 |
| 140 | 800.7407281 | 6.599449937 |
| 139 | 807.3624334 | 6.621705346 |
| 138 | 814.005798 | 6.643364589 |
| 137 | 820.6702257 | 6.664427666 |
| 136 | 827.3551203 | 6.684894578 |
| 135 | 834.0598856 | 6.704765325 |
| 134 | 840.7839255 | 6.724039906 |
| 133 | 847.5266438 | 6.742718322 |
| 132 | 854.2874444 | 6.760800573 |
| 131 | 861.0657311 | 6.778286658 |
| 130 | 867.8609076 | 6.795176577 |
| 129 | 874.672378 | 6.811470331 |
| 128 | 881.4995459 | 6.82716792 |
| 127 | 888.3418152 | 6.842269343 |
| 126 | 895.1985898 | 6.856774601 |
| 125 | 902.0692735 | 6.870683694 |
| 124 | 908.9532701 | 6.883996621 |
| 123 | 915.8499835 | 6.896713382 |
| 122 | 922.7588175 | 6.908833978 |
| 121 | 929.6791759 | 6.920358409 |
| 120 | 936.6104626 | 6.931286674 |
| 119 | 943.5520814 | 6.941618774 |
| 118 | 950.5034361 | 6.951354709 |
| 117 | 957.4639305 | 6.960494478 |
| 116 | 964.4329686 | 6.969038082 |
| 115 | 971.4099541 | 6.97698552 |
| 114 | 978.3942909 | 6.984336793 |
| 113 | 985.3853828 | 6.9910919 |
| 112 | 992.3826337 | 6.997250842 |
| 111 | 999.3854473 | 7.002813618 |
| 110 | 1006.393228 | 7.007780229 |
| 109 | 1013.405378 | 7.012150675 |
| 108 | 1020.421303 | 7.015924955 |
| 107 | 1027.440406 | 7.01910307 |
| 106 | 1034.462091 | 7.02168502 |
| 105 | 1041.485762 | 7.023670804 |
| 104 | 1048.510822 | 7.025060422 |
| 103 | 1055.536676 | 7.025853875 |
| 102 | 1062.562728 | 7.026051163 |
| 101 | 1069.58838 | 7.025652285 |
| 100 | 1076.613037 | 7.024657242 |
| 99 | 1083.636103 | 7.023066034 |
| 98 | 1090.656982 | 7.02087866 |
| 97 | 1097.675077 | 7.01809512 |
| 96 | 1104.689792 | 7.014715415 |
| 95 | 1111.700532 | 7.010739545 |
| 94 | 1118.706699 | 7.00616751 |
| 93 | 1125.707699 | 7.000999308 |
| 92 | 1132.702934 | 6.995234942 |
| 91 | 1139.691808 | 6.98887441 |
| 90 | 1146.673726 | 6.981917713 |
| 89 | 1153.648091 | 6.97436485 |
| 88 | 1160.614306 | 6.966215822 |
| 87 | 1167.571777 | 6.957470628 |
| 86 | 1174.519906 | 6.948129269 |
| 85 | 1181.458098 | 6.938191745 |
| 84 | 1188.385756 | 6.927658055 |
| 83 | 1195.302284 | 6.916528199 |
| 82 | 1202.207086 | 6.904802179 |
| 81 | 1209.099566 | 6.892479992 |
| 80 | 1215.979128 | 6.879561641 |
| 79 | 1222.845175 | 6.866047124 |
| 78 | 1229.697112 | 6.851936441 |
| 77 | 1236.534341 | 6.837229593 |
| 76 | 1243.356268 | 6.82192658 |
| 75 | 1250.162295 | 6.806027402 |
| 74 | 1256.951827 | 6.789532057 |
| 73 | 1263.724268 | 6.772440548 |
| 72 | 1270.479021 | 6.754752873 |
| 71 | 1277.21549 | 6.736469032 |
| 70 | 1283.933079 | 6.717589027 |
| 69 | 1290.631192 | 6.698112855 |
| 68 | 1297.309232 | 6.678040519 |
| 67 | 1303.966604 | 6.657372017 |
| 66 | 1310.602711 | 6.636107349 |
| 65 | 1317.216958 | 6.614246516 |
| 64 | 1323.808748 | 6.591789518 |
| 63 | 1330.377484 | 6.568736354 |
| 62 | 1336.922571 | 6.545087025 |
| 61 | 1343.443412 | 6.52084153 |
| 60 | 1349.939412 | 6.49599987 |
| 59 | 1356.409974 | 6.470562045 |
| 58 | 1362.854502 | 6.444528054 |
| 57 | 1369.2724 | 6.417897898 |
| 56 | 1375.663072 | 6.390671576 |
| 55 | 1382.025921 | 6.362849089 |
| 54 | 1388.360351 | 6.334430436 |
| 53 | 1394.665767 | 6.305415618 |
| 52 | 1400.941572 | 6.275804635 |
| 51 | 1407.187169 | 6.245597486 |
| 50 | 1413.401963 | 6.214794171 |
プログラムの都合で計測開始を50KM時点の時間にします。また計測時間をそれぞれ時間差分だけ差し引くデータを作成します。
| 速度 | 経過時間 |
| 180 | 1413.401963 |
| 179 | 1408.135483 |
| 178 | 1402.823497 |
| 177 | 1397.466602 |
| 176 | 1392.065393 |
| 175 | 1386.620466 |
| 174 | 1381.132419 |
| 173 | 1375.601846 |
| 172 | 1370.029345 |
| 171 | 1364.41551 |
| 170 | 1358.76094 |
| 169 | 1353.066229 |
| 168 | 1347.331973 |
| 167 | 1341.55877 |
| 166 | 1335.747215 |
| 165 | 1329.897904 |
| 164 | 1324.011433 |
| 163 | 1318.088399 |
| 162 | 1312.129398 |
| 161 | 1306.135026 |
| 160 | 1300.105879 |
| 159 | 1294.042553 |
| 158 | 1287.945645 |
| 157 | 1281.81575 |
| 156 | 1275.653465 |
| 155 | 1269.459386 |
| 154 | 1263.234109 |
| 153 | 1256.978231 |
| 152 | 1250.692347 |
| 151 | 1244.377053 |
| 150 | 1238.032946 |
| 149 | 1231.660623 |
| 148 | 1225.260678 |
| 147 | 1218.833708 |
| 146 | 1212.38031 |
| 145 | 1205.90108 |
| 144 | 1199.396613 |
| 143 | 1192.867507 |
| 142 | 1186.314356 |
| 141 | 1179.737758 |
| 140 | 1173.138308 |
| 139 | 1166.516602 |
| 138 | 1159.873238 |
| 137 | 1153.20881 |
| 136 | 1146.523916 |
| 135 | 1139.81915 |
| 134 | 1133.09511 |
| 133 | 1126.352392 |
| 132 | 1119.591591 |
| 131 | 1112.813305 |
| 130 | 1106.018128 |
| 129 | 1099.206658 |
| 128 | 1092.37949 |
| 127 | 1085.537221 |
| 126 | 1078.680446 |
| 125 | 1071.809762 |
| 124 | 1064.925766 |
| 123 | 1058.029052 |
| 122 | 1051.120218 |
| 121 | 1044.19986 |
| 120 | 1037.268573 |
| 119 | 1030.326954 |
| 118 | 1023.3756 |
| 117 | 1016.415105 |
| 116 | 1009.446067 |
| 115 | 1002.469082 |
| 114 | 995.4847449 |
| 113 | 988.493653 |
| 112 | 981.4964022 |
| 111 | 974.4935885 |
| 110 | 967.4858083 |
| 109 | 960.4736576 |
| 108 | 953.4577327 |
| 107 | 946.4386296 |
| 106 | 939.4169446 |
| 105 | 932.3932738 |
| 104 | 925.3682134 |
| 103 | 918.3423595 |
| 102 | 911.3163083 |
| 101 | 904.290656 |
| 100 | 897.2659988 |
| 99 | 890.2429328 |
| 98 | 883.2220541 |
| 97 | 876.203959 |
| 96 | 869.1892436 |
| 95 | 862.178504 |
| 94 | 855.1723365 |
| 93 | 848.1713372 |
| 92 | 841.1761023 |
| 91 | 834.1872279 |
| 90 | 827.2053101 |
| 89 | 820.2309453 |
| 88 | 813.2647295 |
| 87 | 806.3072588 |
| 86 | 799.3591296 |
| 85 | 792.4209378 |
| 84 | 785.4932798 |
| 83 | 778.5767516 |
| 82 | 771.6719494 |
| 81 | 764.7794694 |
| 80 | 757.8999078 |
| 79 | 751.0338606 |
| 78 | 744.1819242 |
| 77 | 737.3446946 |
| 76 | 730.522768 |
| 75 | 723.7167406 |
| 74 | 716.9272086 |
| 73 | 710.154768 |
| 72 | 703.4000151 |
| 71 | 696.6635461 |
| 70 | 689.9459571 |
| 69 | 683.2478442 |
| 68 | 676.5698037 |
| 67 | 669.9124317 |
| 66 | 663.2763243 |
| 65 | 656.6620778 |
| 64 | 650.0702883 |
| 63 | 643.501552 |
| 62 | 636.9564649 |
| 61 | 630.4356234 |
| 60 | 623.9396235 |
| 59 | 617.4690615 |
| 58 | 611.0245334 |
| 57 | 604.6066355 |
| 56 | 598.215964 |
| 55 | 591.8531149 |
| 54 | 585.5186844 |
| 53 | 579.2132688 |
| 52 | 572.9374642 |
| 51 | 566.6918667 |
| 50 | 560.4770725 |
エクセルでグラフを作成します。作成した曲線で右クリックして近似曲線の追加を選択します。

近似曲線は多項式で3次式にします

オプションタブでグラフに数式を表示するをチェックします

このように近似式が表示されます

表示された近似式で右クリックし、データラベルの書式設定を選択します。

分類は数値、桁数を拡張します。

拡張された数式が表示されるので、この係数を使用します。

プログラムソース(ccs-c用)
Cの係数はエクセルで求めた多項式の数値をコピーして以下のようにします。se1=-0.0000993609038253;
se2=0.0306038754237536;
se3=3.88401302883352;
se4=302.186845501079;
//0.05s毎に割込み
#int_timer1
void isr1()
{
・
・
・
・
・
if(counter==10||counter==20)
{
start_rpm=gear_rpm;//(float)number1*30;//*2;
}
if((counter==10||counter==20))
{
//計測を安定させる移動平均処理:
ave_speed[3]=end_speed;
end_speed=(ave_speed[1]+ave_speed[2]+ave_speed[3])/3;
ave_speed[1]=ave_speed[2];
ave_speed[2]=ave_speed[3];
if((counter==10||counter==20))
{
end_rpm=(float)gear_rpm;
if(counter>19)
number1=0;
}
end_rpm=gear_rpm;
toutatu_byou=0.5;//0.5秒サンプリング
total_weight=sonota_weight+(mantan-(totalinjecton-mukou_count)*gas*gas_hosei)*0.75;
kaiten_kasan_weight=25;
los1=(pstart_speed*pstart_speed*pstart_speed)*se1+(pstart_speed*pstart_speed)*se2-pstart_speed*se3+se4;
los2=(end_speed*end_speed*end_speed)*se1+(end_speed*end_speed)*se2-end_speed*se3+se4;
gensoku_byou=los1-los2;
power1=((car_weight+total_weight)*(end_speed/3.6)*(end_speed/3.6)/19.6);
power2=((car_weight+total_weight)*(pstart_speed/3.6)*(pstart_speed/3.6)/19.6);
power=(power1-power2)/75/toutatu_byou;
hosei_power1=((car_weight/((100-dentatu_los)/100)+total_weight)*(end_speed/3.6)*(end_speed/3.6)/19.6);
hosei_power2=((car_weight/((100-dentatu_los)/100)+total_weight)*(pstart_speed/3.6)*(pstart_speed/3.6)/19.6);
hosei_power=(hosei_power1-hosei_power2)/75/gensoku_byou+power;
jiku_power=hosei_power/((100-kaiten_kasan_weight)/100);
if(jiku_power<0)
jiku_power=0;
if(sw1!=70&&abs(pstart_speed-end_speed)<=0.2)
{
jiku_power=0;
}
pstart_speed=end_speed;
start_rpm=end_rpm;
}
・
・
・
・
}