shogouki's 技術系メモ

WindowsPhoneとか、WPFとか、Androidとかその辺の技術メモ

i-stopキャンセラーをArduinoで自作する

i-stop(アイドリングストップ)とは

アイドリングストップは、その名の通り、不要なアイドリングを止めることにより燃料消費を抑えるためのものですが、私の車(アテンザ)に搭載されているディーゼルエンジンは再始動時のバッテリー負荷が高く、バッテリーの寿命が短くなると考えられます。

そうすると、せっかく燃料消費を抑えてもバッテリー交換が早まってしまえば、環境負荷的にも金銭的にもあまり意味がなくなってしまいます。

i-stopをオフにするには

i-stopは、エンジン始動後にスイッチクラスターのi-stopボタンを長押しする事で有効/無効を切り替えることができますが、状態が記憶されないため、車に乗ってエンジンを掛けるたびにボタンを長押しして無効に切り替える必要があります。

それでは面倒なのでエンジン始動後、自動的にi-stopボタンを長押ししたことにして無効にするのが、"i-stopキャンセラー"です。

i-stopキャンセラーは4000円~で市販もされていますが、たかが数秒後にボタン長押しをエミュレートする装置に4000円も出すのはなんかもったいないです。

ネットではボンネットスイッチを外す方法も紹介されていますが、この方法は完全に無効化してしまうため、ボタンで再度有効にすることができないのと、イモビアラームも無効になってしまうらしいという問題があります。

i-stopボタンの解析

次に、i-stopボタンの仕組みを解析します。

ボタンの代わりなんだから、フォトカプラでアイソレーションしてスイッチさせれば…と思いますが、調べてみると、どうやらスイッチクラスターのスイッチによって抵抗値を変えることでハーネスの本数を減らす仕組みになっているようです。

i-stop OFF SWITCH INSPECTION

i-stopボタンは約85Ωにする必要がありますが、手元には330Ωの抵抗しかありません。しかし、4本並列にすることでなんと82.5Ωになります!

念のためブレッドボードに4本並列にしたものを、上記マニュアルを参考に、キーON後コネクタのB-Cにつなぐと、「ピピッ」と音がしたので大丈夫そうです。

Arduinoを使う

Arduinoは安価なマイコンで、プログラミングも簡単にできるため、ちょっとしたものを作るときにはよく使われます。

正規品のArduino Unoは3000円ほどしますが、クローン品は500円程度で入手可能です。さらに、今回はデジタルI/Oが一つあればいいので、より小さくシンプルな DigiSpark のクローン品を使います。

DigiSparkはさらに安く、Amazonでも300円程度です。 ここまでくると、555タイマーでディレイ・ワンショットを組むよりも、プログラムで解決した方が安く済みそうです。

また、DigiSparkはレギュレータも搭載しているため、直接12Vで駆動できるのもメリットです。

Arduinoのプログラミング

Arduinoの電源ON後、10秒経過後に2秒間出力をONにするプログラムを書きます。

1番の出力はボード上のLEDに接続されているため、これを動作確認用にして、フォトカプラは0番の出力で制御することにします。

動作後は無限ループに入って終了ですが、スリープモードにした方がいいのかもしれません。(そこまで消費電力は気にしなくてよいと思いますが…)

DigiSparkにプログラムを書き込むにはArduinoIDEにボード情報を追加したり、ドライバーをインストールする必要があり、また書き込みボタン押下後の特定のタイミングでUSBポートに差し込む必要がありますが、ネット上で既にたくさん紹介されているので割愛します。

プログラムが書き込めたら、USBポートに差しなおして10秒後に2秒間LEDが光ることを確認します。

電子工作

コントローラーは出来たので、次に、ユニバーサル基板にフォトカプラ、抵抗、DigiSparkを半田付けします。

車に組み込み

プラスはリアモニター用?に配線してあったものを利用。

f:id:shogouki3:20190126024232j:plain

マイナスはハンドル下にあったターミナルに接続

f:id:shogouki3:20190126024607j:plain

あとはスイッチクラスターの配線をエレクトロタップで分岐してそれぞれArduinoに接続して完成!

しばらく使ってみましたが、問題なく動作してます。