4ストロークエンジンでは使用しないDetoのチャンネルを使って、フューエルパルス(以下FP)をロギングする。
FPは約0-5Vの出力で、立ち上がり間隔は1.0ccごと、パルス幅は0.5ccです。
Deto入力はVH3.5-5.0V、VL0.0-0.5Vで、300ms間に何回信号が入力されたかを記録します。また、パルス幅は2.5~14.0msということなので、FPのパルス立ち上がりを拾って3ms幅のパルスを出力する回路を組めば、ロギングできます。
汚い手書きですが、汎用基板用のサンプル回路です。
FPをトランジスタ、微分回路を通して555のトリガとし、RCの100Ω、33uFで約3.3msのワンショットパルスを作っています。
PICでカウンタを作ってトータル消費量をチェックするなどの使い方のほうが実用的です。
BEGIN{
FS=",";
RS="\n";
preLap = 0;
}
{
if($1 == "Time(s)"){ # ヘッダ処理
for (i=1;i<=NF;i++){
if($i == "DETO1"){ # Deto1のフィールドを取得
ColDeto = i;
}
if($i == "LAP"){ # LAPのフィールドを取得
ColLap = i;
}
}
} else {
Lap = $ColLap + 0; # ラップを整数値に
FUEL[Lap] += $ColDeto; # ラップごとに消費量加算
if(Lap > preLap){ # 新しいラップに入ったら
if(start > 0){ # ラップの開始時間が存在したら
LapTime[Lap - 1] = $1 - start; # 前の周のラップタイムを記録
}
start = $1; # ラップの開始時間を保存
}
preLap = Lap;
}
}
END {
CONVFMT = "%5.2f"; # 数値→文字列変換フォーマット
CourceLength = 2150; # コース長さ(m):筑波
n = asorti(FUEL,RESULT); # 配列を添字(ラップ)でソート。
print " LAP | Lap Time | FC(cc) | FC(km/l)";
print "-------+-------------+---------+----------";
for (i=1;i<=n;i++){
min = int(LapTime[RESULT[i]] / 60);
sec = LapTime[RESULT[i]] % 60;
if(LapTime[RESULT[i]] == 0){
fc = "";
} else {
fc = (CourceLength / FUEL[RESULT[i]]) ""; # 文字列に変換
}
printf "%5s | %2d'%6.3f | %5d | %-5s\n",RESULT[i],min,sec,FUEL[RESULT[i]],fc;
TOTAL += FUEL[RESULT[i]];
}
print "------------------------------------------";
printf "TOTAL %5dcc\n",TOTAL;
}