ウインカーLED化計画・制御ソフトウェア製作

愛車のバイクVFR750F(RC36)に乗る機会が減るこの時期は、ハイシーズンが快適になるようにチャレンジタイムなんです。
そこで、ウインカーをLED化して省電力にすることで、ウインカーポジション(車幅灯)機能を追加しちゃうんです。


前回までに『ウインカーバルブをLEDに換装すると電流が少なくなるため現行のウインカーリレーは使えない。』ので、『ウインカーリレーから作り直す必要がある。』という結果になりました。
そして、そのリレーの中心部は『一個数百円のワンチップコントローラを使用する。』結論に至ったのでした。


名前こそ『コントローラ』ですが、仕掛けは『コンピュータそのもの』なんです。
今回使用するチップ『PIC16F84A』の概要は…

  • 13本のTTL互換の入出力ピンを持つ。ピン単位で入力・出力がプログラム可能。うち1本はオープンドレイン。内部でプルアップ機構も持っています。
  • 約1,000回書き換えることができるプログラム空間用フラッシュメモリを内蔵しています。
  • ユーザー用SRAMメモリ空間と、設定値等の保持用に電源断でも内容が消えないEEPROM空間も内蔵しています。
  • その他、一般的な制御に必要な機能一式(ウォッチドックタイマ、割り込み、スタックポインタ、8ビットタイマー/プリスケーラー、オシレータ駆動、スリープ、コードプロテクト等)
  • 5V単一電源で、電流20mA。18ピンDIP。
  • 1ワード長に統一された35命令。ビット操作、バイト操作、論理演算、条件分岐等最小にして十分のシンプルな命令体系。
  • ソフトウェア開発環境はフリーソフトとして無償公開しています。

といったところです。


長い前置きでしたが、今回はウインカーリレーのソフトウェアの設計・製作をします。
制御ソフトウェアは、ステートと呼ぶ状態を持ち、状態間をある条件で推移するという考え方で設計をしていきます。
f:id:vfr750f2:20060118225328g:plain:h306
ウインカーリレーは、

  1. 待機状態……灯火類を全て消灯している状態
  2. ポジション待機状態……ウインカーポジション(車幅灯)のみ点灯している状態
  3. ウインカー点滅状態……ウインカーに電流が流れたことを検知して、どちらかのウインカーを点滅させている状態
  4. ハザード点滅状態……ハザードスイッチが押下されたことを検知して、両方のウインカーを点滅させている状態

があります。
このソフトを機能させるための信号の入力・出力は以下のようにしました。

  • 入力1……ウインカーの電流を検知すると1、非検知なら0の『ウインカー点灯検知信号
  • 入力2……スモールライト点灯の電圧を検知すると1、非検知なら0の『ポジション検知信号
  • 入力3……ハザードスイッチの押下を検知すると1、非検知なら0の『ハザードスイッチ検知信号
  • 出力1……ウインカーランプへの電力供給する『ウインカーFETゲート信号』。1でウインカーに電力供給、0で非供給。
  • 出力2……フロントウインカーのみへ電力供給する『ホディションFETゲート信号』。1でウインカーに電力供給、0で非供給。
  • 出力3……全てのウインカーに電力の供給をする『ハザードFETゲート信号』。1でウインカーに電力供給、0で非供給。

これらの入出力を使用して、各ステート間へ状態推移させていくのです。
ウインカー点滅状態、ハザード点滅状態の時は、該当のFETを定周期でON/OFFさせて点滅効果を出します。
ウインカーを点滅させるとその電圧を検知して、ウインカーブザーが『ピッ』音を発します。白バイ(VFR750P RC35)に使用されていたウインカーブザー( https://tarsama.hatenadiary.com/entry/20060115/LED )を解析したのですが、外付け回路で発振信号を入力する必要は無く、単純にウインカー回路に電力が供給されたことを検知すると勝手に音が鳴るようになっていました。音色の調整等はありません。


驚いたことに、Microchip社のフリーの開発環境『MPLAB IDE v7.3』では、プログラムのアセンブルはもちろんできますが、作成したプログラムを1行ずつ実行する『デバッカ』も付いていて、各ピンの入出力を手動でいろいろと変化させながらプログラムの動作状態や変数、メモリの内容までも机上で確かめることができます。
さらに、各信号のタイミングなどをシミュレーションする『シミュレーター』までついていて、ロジックアナライザのような各信号間の相関関係なども『実機がなくてもパソコン上で全て確認することができる!』ほど高機能な開発ツールなんです。


おかげで、実際のチップに焼きこむときには既にプログラムのデバッグは終わっているんです。
とはいっても、ほとんどがビット操作と条件分岐だけなので、数時間でプログラム開発は終わってしまいました。
重ね重ね、いい時代になりましたよ!

https://…/2006/01/26/ ウインカーLED化計画・純正部品手配