2013年4月17日水曜日

20x4行のLCDを用いたバイク用のマルチモニター(構成案)

最初に説明しておきますが、これは友人にバイクのギアポジションを表示するシステムを開発して欲しいとの依頼を受け、構想を練っているうちに自分のバイクもいろいろ表示できるマルチモニターを作ってみたくなり、考えてみた物です。
ここに書いてあることを真似するのも馬鹿にするのも自由ですが、あくまでもメモであると言うことをご理解の上お読み下さるようお願いします。

今回は久々に画像無しの読者を一切考えない記事になりました。
今回、書いてある文字を計算してみたら、なんと5000文字を遙かに超えているというキチガイじみた記事になっていましたw
3行以上読めない方はまずこの記事を見た瞬間に拒絶反応を起こすレベルかもしれませんね。
飛ばし読みで構いませんので、興味がある方は読んで頂けると嬉しいです。

-------------------------------------------------------------


まずは液晶のレイアウトを考えてみる。何を表示するかは大体決まっていて、速度、回転、ギアポジション、電圧、水温、油温、気温くらい。
プログラムはまだ考えず、どういう物を作るかに重点を置いて考える。

・表示のレイアウト

横に20列、立てに4行ある液晶を使用する。
  12345678901234567890
1
2
3
4

以下に使用(表示)例を記す。


  12345678901234567890[列]
1 ???[km/h] ?????[rpm] ←速度と回転数をtimerで250ms毎に更新
2 GEAR_POSITION = ?    ←現在のギアポジション(7SEGLEDでも表示)
3 VOLTAGE = ??.?[V]    ←車両の電圧
4 ********************  ←回転数をバーグラフで表示(TEMPが100℃以上で警告文字に変更)
[行]

切り替え↑↓

  12345678901234567890
1 ???[km/h] ?????[rpm]
2 TEMP   WATER=??.?[c] ←水温
3 AIR=??[c]OIL=??.?[c]  ←気温と油温
4 ******************** ←TEMPが100℃以上で警告文字に変更

切り替え↑↓

  12345678901234567890
1 ???[km/h] ?????[rpm]
2 VOLTAGE = ??.?[V]
3 TEMP  W=??.? O=??.?
4 DTE = ???[km]        ←燃費は算出出来ないので、燃費と満タンを入力すると大体の残りの走行距離を出すことが出来る。


案:
・バーグラフは回転計だけでなく切り替えで速度や温度計をバーグラフに切り替えてもいいかも?
その場合は、現在なにを表示しているのかをユーザーに分かるようにしなくてはならない。
・システムの重要な部分以外はすべてこのシステムが介入して動くようにしたい。
メリットとして、ライトのオート化や電圧低下時に電装系の一部を終了させることができるようになる。
また、信頼性は無視するとして、システムに介入した場合はキーシリンダーをロックさせたままリモコンでエンジンをかけることができるようになる。
バイクにエンスタはなかなかないので自慢できるお。(ただしオートチョーク車じゃないとエンジンかからないかも)
この件については面白そうなので下記に考察を書く。


[このシステムに必要なもの]
マイコン(PIC)
スイッチングレギュレータ
水温/油温計/外気温計
ギアポジションを取得する何らかの方法
電圧を取得
速度を取得(パルス式なら)
回転数を取得(コンピュータあたりから取得)
基板
配線がいっぱい
液晶(20x4行)
なんかまだまだいっぱい必要な気がするけど今ぱっと浮かぶのはこのくらい。
○設定変更用のスイッチ
・タクトスイッチ2つ以上
・今後のためにロータリーエンコーダあたりも





☆システムに介入した場合にできることと、その方法についての考察
まずできるようになることについて。
・エンジンスターター(要無線技術)
・冷却用FANのコントロール(やろうと思えばPWMで可変速化も)
・ライトのON/OFF(手動または自動化)
・ハロゲンやLEDであればライトの光度コントロール
・メーターの光度コントロール
・ターボタイマー
あといろいろある気がするけど思い浮かばないのでその方法について考える。




○エンジンスターターを作る場合
まず必要なのはキーシリンダーのONの状態を疑似的に作り出すこと。これがないとエンジンスターターは作れない。
次にセルを回すのでセルスイッチにも介入。
さらに、エンジンをかける場合に必要なものは、エンジンがかかっているかを知る方法。
キャブ車の場合どうやってエンジンがかかっているのかを認識しているのかがわからないので、
疑似的に水温(油温かも?)の警告ランプを使用することでエンジンがかかったかを知ることができると思う。
ただし、信頼性が重要なため、このシステムに条件を追加する。
条件は、
・電圧が12.0V以上あること。
・外気温(または水温)が10[℃]以上あること。(低温時はエンジンがかかりにくいため)
・セルは2秒間で停止させる
・再スタートは5秒間おいてからとする
・4回失敗または電圧が12.0Vを越えなかった場合、システムを終了する
・キーを用いて、シリンダーがONになっている場合、リモコンでエンジンを止めることはできないようにする

今度は逆にシステムが停止する条件
・一定時間以上アイドリングしたらエンジン停止
・水温か油温が一定以上になったらエンジン停止
・電圧が12.0Vを下回ったらエンジン停止
・なんらかの衝撃を受けた場合もエンジンを停止したいが、簡単にできる機構を考える必要あり

最後に、エンジンスタータ利用時の液晶の表示例

エンスタ利用時
  12345678901234567890
1 Time 00:00  REMOTE   ←分:秒で表示 REMOTEは点滅 設定により、何分以上アイドリングしたらエンジンを止めるようにすることも可能
2 VOLTAGE = ??.?[V]   
3 TEMP  W=??.? O=??.?   ←水温または油温が一定以上になったら自動的にエンジンを止める
4 ********************    ←思い浮かばないからとりあえず回転計




○冷却FANコントロール
ファンは高温時に自動的に作動するが、大抵は結構な高温になってからしか作動しない。
そのため、任意の温度でFANを作動させることを可能にする。
PICがPWMを出力出来る場合は、PWMを出力させてFANの速度を可変させる。

冷却FAN設定時の液晶の表示例

  12345678901234567890
1 CONFIG FAN_CONTROL   ←設定モードに入り、FANコントロールを設定
2
3 ???_TEMP  = ??[c]    ←LOW_TEMPからHIGH_TEMPを選択して、何度をLOW_TEMPとするかを設定できる      
4 FAN_DUTY  = ??[%]    ←設定温度になったときのFANの動作を設定する(0%から100%で調整可能
      



○ライトのON/OFF(手動または自動化)
ライトの自動化には明るさセンサーが必要となる。
また、大電流を流すためリレーが必須となる。
設定項目は、何段階かで点灯時の周囲の明るさを閾値として設定するもの。

オートライト設定時の液晶表示例
  12345678901234567890
1 CONFIG AUTO_LIGHT    ←設定モードに入り、オートライトを設定
2 enable               ←オートライトを使用するかの設定enableなら有効化、disableなら無効化
3 POSITION_LIGHT       ←ポジションランプと前照灯どちらの設定かを切り替える
4 threshold = 1        ←1から10まで閾値を設定する





○光度コントロール系
正直ハロゲンなんて使用するつもりは全くないのでメーター類のライトコントロールだけ考える。
メーター類はLEDにするつもりなので、PWMで制御する。
PWMで消灯から最大までパーセントで設定。

ライトコントロール設定時の液晶表示例
  12345678901234567890
1 CONFIG LIGHT_CONTROL ←設定モードに入り、ライトコントロールを設定
2 AUTO               ←周囲の明るさで可変させる場合はAUTO、直接設定する場合はMANUALモード
3 LIGHT_ON           ←前照灯を付けているときの明るさか、前照灯を消している時の明るさかを設定する
4 PWM_DUTY = ??[%]   ←デューティー比を0から100[%]まで設定する





○ターボタイマー
ターボタイマーは、主にエンジン保護のために用意する。
低温時には必要ないため、水温を○○度以上の状況でのみ動作させる。
動作温度は設定可能で、動作時は電圧が12.0Vを下回らないときに限り冷却FANを動作させる。
温度が上がってしまう、または変わらないと判断した場合はエンジンを停止する。

ターボタイマー使用時の液晶表示例
  12345678901234567890
1 TURBO_TIMER   ??     ←決めた時間がデクリメントしていき、0になったら停止する
2 VOLTAGE = ??.?[V]
3 TEMP W=??.? O=??.?
4                      ←なにを入れれば良いかよく分からないので保留



・書いてて思ったこと
PICで作ろうと思ったけど、この規模はさすがにきついのでは?
PICを使うとしたら間違いなくPIC18F以上少なくともタイマーは3つ以上必須で、I2C通信で液晶を使えたらピン数が少なくてすむ。
PICは駆動電流は20mA程度なので、機械式リレーかSSRは結構な数が必要。
あと、無線技術はまだ習っていないので勉強しなくてはいけない。
ちなみにこれすべてで2万円あれば十分おつりが出る程度だと思う。
高いのは温度計あたりと、液晶、リレーなど。
ここまで構成を考えたのだから作ってみたい。


追記:
デバッグモードがあっても良いかも?
正確にはデバッグモードではなく、故障診断と言った方が正確か。
なにをするかというと、ただ単に故障している箇所があるとエラーが表示されたり、ひとつひとつの場所をオンオフ出来たり。
日産車のとかはエアコンで故障診断とか出来るけどそんな感じにしたい。
そうすると、各場所にセンサが必要になって、凄く手間とお金が掛かるけど実用的っぽくて素敵。

あと考えたのは、エンジンの電スロ化。
これは結構危険な香りがするけど、これが出来たら超格好いい。
バイクが勝手にブリッピングしたら、みんな絶対にびびること間違いなし!
電スロ化で何がしたかったかというと、クルーズコントロール。
クルーズコントロールは、知っての通りアクセルをコンピュータが勝手に制御して一定速度で走行してくれる機能のこと。
正直これを自作する人は今まで見たことが無い。
ましてやバイク用に作るのはキチガイしか無いと思う。
これは案としてあげたけど、そんなに必要性を感じるわけでもないのでとりあえずやらない方向。

でも、一つだけやりたいことがある。
アクセルをコンピュータに任せるなんて怖すぎるけど、これは実害無し。
しかもちょっとめんどくさい作業だったりするから自動化すると恩恵は大きい。
その名も「チョーク」。
チョークとは、エンジンが冷え切っているときに燃料を濃くして送る為の装置。
正直キャブ車はチョークを使わないとエンジンが掛からない。
だからと言ってチョークを使ったまま放置すると燃料がかぶって悲惨なことになる。
そのため、チョークはエンジンの水温を検知して自動的に行われるべき物なのだ。
だから水温を検出しているこの装置ならば自動化も可能であろうというもの。
てか最近のバイクはみんなオートチョークとかいって自動なんだから俺が作れないはずがないw
だからこのシステムで、キーをオンにした瞬間(またはエンスタでエンジンをかけるとき)に、水温を検出して一定以下ならチョークを勝手に引いてくれて、スムーズにエンジンが掛かるよって感じ。
格好いいね!!w
しかも水温に段階的な閾値を設ければ、チョークをちょっとずつ戻してくれてチョークを戻したとたんにエンストってことも無いと思う。
出来れば、エンジンが冷間時はスロットルをちょっと開けてくれるシステムが欲しいけど、それは欲張りかな?
と書いている間にちょっと思いついた。
アイドル調整用のねじに割り込むのはどうだろう?
そうすればスロットルは関係ないから安全だし、冷間時にエンストする恐れがなくなって効率の良い暖気が出来る。
このシステムを開発したら売れるかも・・・。
夏休みにでも開発してみようかな。
学校の卒業研究より大がかりになったりしてねwww

では、今回はこんなところで失礼します。
進展があれば報告しますので興味がある方は声をかけてくれると嬉しいかもです。

2 件のコメント:

  1. お褒めの言葉ありがとうございます!

    構想段階なので正直実現は難しいかなって思うのですが、少しずつ進めていこうと思います。

    返信削除