AVRマイコンで燃費計(燃費計測野郎)を作ってみました!?
(最終更新2008/10)
(初版公開2008/06)

※重要※

■はじめに&お断り事項■
このページの内容は非常に危険な事をやっています。
このページを参考にして、車が壊れても当方では一切の責任を負いません
上記理由等から、製作に関わる代行も行っておりません。

また、参考に作りたいという方は、最後まで全て読んで理解してから作業してください
失敗すると車の方が本当に壊れます


■なんで作ったのか?
自家用車に燃費計が付いているから、ビートにも欲しいなと思った訳です
すでにネット上で公開されている物は高機能なんですが、そこまでは要らないしAVRで自作している方も少ないので、作ってみました。
■とりあえず目標として
シンプルな装置とプログラムは全部BASICで作る
■燃費計算の仕組みと機能
一般的な方法として「走行距離÷使用燃料」でマイコンに自動計算させています

この装置の機能はシンプルで、下記4機能のみです
・装置の電源が入って切れるまでの燃費(今回燃費計測)
・装置をリセットするまでの燃費(合計燃費計測)
・走行距離表示
・使用燃料量表示
■製作とプログラムについて

マイコン用プログラムはMCS社製のBASCOM−AVR(体験版)にて製作されています
ソースファイルをいじる人はBASCOM−AVR体験版で修正してコンパイルすることが可能です
今回はATMEGA48を使っていますが、ATMEGA88/168でも動作します。ただしコンパイル時に”m48def.dat” を該当マイコンに書き換えてコンパイルして下さい。
ATMEGA48以外を使用する場合、コンパイル時に体験版制限エラーが出てしまうかもしれないですが、その場合は48のままコンパイルした物でも動くと思います
※ コンパイル済みのプログラムもアップロードしてあります

この装置は8Mhz動作専用です。マイコンのヒューズビットの書き換えが必要になります

■回路について
参考回路を公開しています。回路図の描き方が良く判らないので、決まりごとを無視しているかもしれません
また、何度か基板を作成しなおしているので、回路とプログラム(ポートの割り当て関係)に効率の悪い部分があります。
■プログラムの書き込みについて

私はプログラムの書き込みにはISPを使用しています。
公開している回路図にはライター部の回路は書かれていませんので、別途ライター用意してください
※もし自作される場合は、ストロベリーリナックス社(http://strawberry-linux.com/)にてRS232C用のISP変換機が販売されています。パソコンにRS232Cがある場合は、このISP変換機が最も安価だと思います

■使用部品について
回路図の中に使用部品リスト一覧を書き込んであります。ほとんどネット通販で調達可能です
■製作費用について

部品代は3000円前後です。送料や単体で購入できない部品や、新規でAVRを始める場合は5000円以上は必要です
これは、細かい部品は1個単位で買えないのと、何店舗か利用しないと部品がそろわない為です

■車との接続方法
接続に必要な配線
・アクセサリー電源
・アース(GND)
・スピード信号(黄色・赤) ※白・青の隣です。黄色・赤は2本あるので注意。また赤・黄色は違います
・インジェクタ信号(黄色) ※私は3番インジェクタに接続しています。


信号線はシールド付きのケーブルを使って下さい(普通の線だとオーディオ等に変なノイズが入るようになります)
ホームセンター等で売っているオーディオ用のシールド付ケーブルを切って使うのが簡単だと思います
電源ラインには1A未満のヒューズを入れてください。

ECUからインジェクター信号線・スピード信号線を探して結線してください
結線は確実に行ってください。適当にやるとエンジンが不調になります。

■ハードウェア上の制限
正確な数値というよりは参考値レベルだと割切ってください

・ビート以外の車では試してないので、どうなるかわかりません
・インジェクタやスピード信号が特殊な車種には対応していません

燃料消費量99.9リットルまでしか計算しないように作ってあります。
EEPROMに走行、ガソリンデータを書き込んでいる為、装置寿命があります

■回路図と部品リスト
回路図の中に部品リストを書き込んであります
回路図バージョン4-2
■マイコンプログラム

プログラムバージョン 1.13J---------ソースファイル
プログラムバージョン 1.13J---------コンパイル済HEXファイル(ATmega48)


■画面の説明と使い方■


■ハードウェアの説明
MENUキー・・・画面を切り替えます
UPキー・・・・・・数値を増やします(+)
DOWNキー・・数値を減らします(−)&実行
設定スイッチ・・画面表示を通常モード・設定モードを切り替える為のスイッチです

LED・・・・・・・・インジェクターの状態&エンジン停止確認ランプ

■エンジンを切るときの注意■
エンジンを切ったときに走行データを書きこんでいます。ACC状態で一呼吸おいてから電源を切ってください
書き込み終了時インジェクターモニターが点滅をします
※インジェクタモニターについての補足※
燃料噴射中に点灯し無噴射状態では消灯します。エンジンブレーキ中には消灯する事がありますが、ECUの燃料カット機能が動作しているので正常な状態です。
通常モード(設定スイッチを通常モードにした状態です)

●起動画面

電源を入れるとこの状態になります
※追記・・・公開版は"ネンピケイソクヤロウ"と表示されます

●合計モード
データクリアするまでの状態を表示します
AVG(AVeraGe)--燃費(100m単位)
R(Run)--------走行距離(100m単位)
F(Fuel)--------消費燃料(100cc単位)

●今回表示モード
エンジンをかけてから燃費計の電源が切れるまでを表示します

●データクリアモード
燃料・走行データをクリアします

DOWNキーを押す事で実行され、合計モード画面に切り替わります
設定モード表示(設定スイッチを設定側にした状態に追加表示される画面です)
○デバックモード
スピード信号・インジェクション信号を表示します
データクリアモードでリセットされます

SPD=スピード信号のカウント数
INJ=インジェクション信号時間

○セッティング スピードパルス設定
1信号あたりの走行距離を設定します。単位はミリです

UPキー・DOWNキーで数値を設定してください
※ビートの場合は392位を設定しています(392ミリ)

○セッティング インジェクション設定
1秒当たりの燃料噴射量(cc)を10倍して設定します

UPキー・DOWNキーで数値を設定してください
数値が小さいほど燃費が良く表示されます
※ビートの場合は111位を設定しています(11cc)

○設定記録モード
スピードパルスやインジェクション設定の内容を記録させます

DOWNキーを押すと実行され、合計モード画面に切り替わります
 
■初期設定

私のホンダビート用初期数値が入っていますので、流用される場合はインジェクタ数値・スピード信号数値の初期設定を変更する場合があります
※初期値※
SET SPEED PULS = 392
SET INJECT PULS = 111


設定方法(簡単な方法)
簡単に設定する事ができますが、設定値を何度か設定しなおす必要があります

○スピードパルス
車のトリップメータと燃費計の走行距離データをリセットします。そして何キロか走って下さい
燃費計にはいい加減な走行距離が表示されますが、”SET SPPED PLUS”画面で、数値を変更して
車のODOメータと同じ距離が表示されるように、調整して下さい
※ポイント
・エンジンはかけたままにする
・SET SPEED PULS画面にてDOWN/UPボタンで数値を変更
・MENUボタンで画面を切り替えて燃費計の走行距離を確認する

○インジェクタ数値
普段、満タン方法などで計算している燃費と燃費計の数字が同じになるように
"SET INJECT PLUS"画面にてDOWN/UPボタンで数値を変更
MENUボタンで画面を切り替えて燃費計の燃費を確認する

または、燃料が満タンの時にリセットして、次回給油の時の給油量と燃料消費量が同じになるように数値を変更する

  
この値はあくまでも参考値ですので、あとは実走して数字が合うように(妥協できる数値に)調整して行きます


設定方法(一応正規な方法)
面倒ですが、たぶん正規の手順です。作った人間が言うのも何ですが、私はこの方法を使っていません

1−−セルフのスタンド等で燃料を出来る限り満タンにする
2−−車のトリップメータをリセット
3−−車をACC状態にして燃費計の電源を入れる
4−−データクリアモードにして、クリアを実行する
5−−燃費計を設定モードにする(スイッチを切り替える)
6−−エンジンをかけて走行(10キロ〜20キロ位)
7−−燃料補給前にデバックモードを表示させ、SPDとINJの数値を調べる
8−−燃料を入れ、使ったガソリンの量と走行距離を調べる

○スピードパルスの計算方法
  走行距離(ミリ)÷SPD数値

○インジェクション数値の計算方法
   ガソリン使用量(cc)÷(INJ÷100)

これらの2個の 初期データを燃費計に入力してください

この値はあくまでも参考値ですので、あとは実走して数字が合うように(妥協できる数値に)調整して行きます

 

 

■製作例等

ユニバーサル基板にて製作したテスト用です

撮影時には設定スイッチがありませんでした
このページはこの基板をベース作成しました

ビートへの実装を考えて小型化したバージョンです
感光基板にて基板を起こして製作を簡略化したものです

基板とLCDを分割した状態


非常に単純な構造です

側面


かなり厚いですが、実物はこれよりも5ミリほど薄くなっています。(撮影時にスペーサが無かった)
ボタン類は全て側面上へ移動しました

使用部品

基板を作ってしまいましたが、部品数はこれだけです。
一応セラロック仕様になっていますが、AVRの内臓発振回路でも動作します。

ユニバーサル基板でも十分製作可能な物です。

 

■参考にした場所等

○ブレッドボードラジオ(http://bbradio.hp.infoseek.co.jp/index.html)・・・・BASCOCM−AVRの使い方について
○O-Family(http://www.ne.jp/asahi/shared/o-family/index.htm)・・・・BASCOM−AVRマニュアル等。助かりました
○Palmの燃費計(http://www.geocities.jp/elec_craft/Nenpi-kei.htm)・・・PICマイコンによる燃費計(高機能)
○Presso in the Room(http://presso.sub.jp/index.php)・・・・PICマイコン+パームを使った元祖燃費計
○MCSエレクトロニクス(http://www.mcselec.com/)・・・BASCOM−AVRの販売元・体験版あり


■追記

●補正数値(参考)
スピードパルス ODOメータ基準 392〜393
GPS基準 397位
インジェクタ 111→107
上記が私のビートの場合のベスト値でした

スピードパルスについては規格で決まっているらしく1パルス 392.5ミリのようです。タイヤ計が違ったりする場合は走行距離も変るので、ナビなどのGPSと比較して修正するのも方法です

●エンジン停止検知はインジェクタ時間が20ミリ秒以上続き、スピードパルス0の時エンジン停止としています
ビートの場合、ACC状態ではインジェクタに電圧がかかっているようなので、それを利用しています

●エンジンスタート時の燃料噴射はカウントしていないと思います(電源が断続的に切れているため)

●画面表示をカスタムしたい場合は、プログラム最後の方にある、コメント”LCD表示用”から下が画面表示部分です

●燃料タンクに燃料を入れすぎると危険です。またキャニスターなどのパーツ寿命を縮める原因になるので、補正がすんだら給油時にフル満タンにするのはやめた方が良いと思います


 

■最後に
このプログラムやハードウェアは発展中です。私の家にビートが有る限り何かしら変更する予定です

あと回路自体には安全回路がまるっきり入っていません。見るからにダイレクトです。
装置や電子部品が壊れると、車両そのものに悪影響が出ると思います


さらに、まだバグ取り等を完全に済ませていません。私が個人的に使っている限りは不具合出ていませんが、想定外の使い方まで想定していませんので、変な使い方をするとどう動くか全く予想が付きません
(例えば、エンジン入切りを激しくやってみたり、ACC・入切りを繰り返したり・・・高熱に晒してみたりと)


トップページに戻る