工作の部屋
車載PC
電源コントローラー for 車載PC
DCCDコントローラー
アクセスモニタ
シフトインジケータ
その五、車載PC
[その四]で車載PC用の電源コントローラーの話が出てますが、 ちょっと車載PC関連の情報をまとめる意味も兼ねて紹介しておきます。 まず、命題!
車にPCを載せる事に意味があるのか?
今時のカーナビは凄くて、求める機能のほとんどはこちらで十分ではないか?? さらに渋滞情報の入手などPCでは実現できない部分もあるし、とか考えると悩ま しいのは確かです。 でも以前からノートPCの比較的大画面でナビオンリーとしてではなく、電子地図 として運用していたのでカーナビ専用機では満足がいかないのも確か、また汎用 性があり実用になるかは疑問はありますがいろいろなことが出来るしと、あとは 載せたいものは載せたい! ということで、できるだけ低コストでPCを車に積ん でみましょう。 まず車載PCでなにをやらせるか!? ですが、 1. 地図/ナビソフト 自分の用途としてはナビより電子地図としての利用が圧倒的に多いです。 ナビ任せにしていると道を覚えないし、道を選ぶ楽しみもありますからねえ。 ということでこれは外せません。 カーナビモードにしても自分の判断で道を決めることが多いので、音声 は無くても問題なかったりして。 2. ドライブレコーダー/ビデオレコーダー USBカメラを接続して画像を取り込むことで、簡単にドライブレコーダーが 実現できるはず...。しかし実際にはこれが一番ハードルが高かったです。 (CPU負荷やファイル容量、ソフト、その他いろいろの理由により) あとはスポーツ走行の際のビデオカメラ代わりとしても利用できますね。 3. 車両情報の表示 SUBARUのセレクトモニタ端子をシリアルに接続して、ECUから情報を取って 車両情報を表示しようというもの。 4. メディアプレーヤ オーディオはWinamp、動画はWindowsMediaPlayerを使っていますが、 CPU負荷の関係でドライブレコーダーと排他使用となってしまいます。 5. ワンセグTV USB対応のものは感度が低くて、実用になるかはちょっと微妙だけど。 6. バックモニタ あまり使わないけど、極端な環境でのバックモニタ用。 リアのドライブレコーダーとして使えるとベストですが、CPU負荷の関係で 今後のCPU/マザーボード強化に期待です。 といったところでしょうか。 上記の目的に合わせてコストの制約はありますが、H/W編に行ってみましょう。 PC本体
以前はノートPC(Pentium3 500MHz)を、センターコンソール前に固定するステーを製作して 必要なときのみに車載していました。
まともな写真が残ってない... ところがこのノートPCは液晶のカバーグラス割れでご死亡されたので、この後継機を 作るというのがきっかけになりました。 車載に向くノートPCから選定しても良いのですが、センタコンソールに設置するには 12インチクラスのモニタだと若干大きすぎ、それ以下の画面サイズだと解像度がそこ そこあると結果としてドットピッチが小さすぎて操作が難しかったりします。またモ バイルタイプのものは非常に高価で、さらにタッチパネルで動かすことを考えてるの で、Mini-ITXやNano-ITXクラスのマザーボードとタッチパネルつきLCDを使って組む ことにします。 そこで入手したのが、VIA C3(1GHz)を搭載して12V単一電源で動作する(!これ重要) マザーボードでした。チップセットはVIA CN333、メモリはSO-DIMMのDDR333MHzでした。 LCD背面に装着して一体型PCとして使用していた物のようですが、詳細は不明...。 まずはVIAのWebからドライバをダウンロードして、動作確認するところから始まりました。 気になる電源ですが待機電力が12V 200mA程度、USB接続無しの動作時ピークで1200mA程度でした。 また必要なUSB機器を接続したTypで1.6A程度、モニタで0.8A程度なので合計で30W程度の 消費電力になります。
設置はナビシート下にステーを作成して固定しています。 筐体
一応マザーボードには金属製のケースがついていたので、これを改造して利用します。 まずUSBポートがリアパネルに2本しか出ていないので、マザーボード上のUSBのピン ヘッダから筐体の上蓋側にドリル+ハンドニブラで穴を開けてもう、4ポート分を増 設しました。あとは夏季用に40mm角の冷却FANを取り付けてます。 2.5"HDD(後述)も筐体内に内蔵させたかったのですが、CPU/チップセットの一体型 ヒートシンクと干渉するため、HDDを筐体外に貼り付ける暫定処置を実施してます。 これは筐体上蓋にフラットケーブルを通す穴を開けて、ATAのフラットケーブルを 引き出して接続してます。あとは取り付けように、アルミバーを2本取り付けてあ ります。 取り付けステー
車載PCの固定場所はメンテナンス性や直射日光を防いだり、ケーブル長の関係で ナビシート下にしました。アルミアングルとバーを組み合わせて、H型アングルを 2本固定してアングルの凹みに筐体に取り付けたアルミバーをスライドさせて固定 するようにしています。そのためH型アングルの後方にはスライドを制限できるよ うに位置決め用のボルトを通してあり、前方よりPC本体をスライドさせて設置する ようになっています。また設置後には車両前方側にβピンを挿してスライドを制限 して固定しています。
ナビシート下にアルミアングルを使ってステーを組んで、筐体を固定しています。 (写真は試作品なので、完成品は角を落としたり余分な部分を落としてあります)
H型のアングルの凹み部に筐体に固定したフラットバーを通してベータピンで スライドを制限しています。 LCDモニタ
PCを接続するのでVGA入力つきが必須条件で、さらに基本の操作インターフェースを タッチパネルにすることにします。また昼間に使うことを考えると300cd/m^2程度の 光量がほしいところ。 解像度もできればXGA(解像度1024x768)がほしいが10インチ以下で適当なものが なく、センターコンソールに収まり、またコスト面からもSXGAの8インチクラスで 探しました。 結果として台湾のHAMIというベンダーの型番はH-8001Tという8.4インチのSVGA (800x600)、最大輝度は250cd/m^2のものを入手しました。 OEM向けなのかロゴが入る部分が凹んでいたり、ちょっと厚めでボタンのデザイン もちょっと...、とかありますがまあ安いので仕方ないかも。 ところがひとつ重大問題が...。 それはOSDでPhaseが保持できないF/Wバグがあり、初期のPhaseでは画面モードを ネーティブの800x600、リフレッシュレート60Hzにするとボケボケで困ったことに。 結局リフレッシュレートを75Hzにすると、幾分マシになったのでこれで運用を開始 することにしました。
タッチパネルは購入時のものから以下のURLのものに変更してます。。 http://www.egalax.com.tw/web20/eg/drivers.htm ストレージ
マザーボード上にはPATAの2.5"/1.8"HDD互換の44pinがあったので、 最初は44pin → CF変換ボードを使って4GBのCFにWindowsXPを入れてみました。 CFに安いものを使っているせいもあるのか、OSが立ち上がってくるまで そこそこ早いものの、どうもライト動作が入ると極端に遅くなりしかもCFの 書き換え回数も心配だったのでこれはお蔵入りになりました。 またXPproだけで3.5GB位食ったりしてるので、本格運用には最低8GBは 必要だと思います。CFはデジカメ用のものを使ったので出費は無かったけど、 変換ボードは新規購入。irCubeのIR-ICF02S(3980円) 結局はオーソドックスに2.5"HDD 20GBの最安品を購入(5000円くらい)して 使用しています。今後はSDDに移行したいですが、まだまだ高いので こなれたところで以降を考えます。 なお普段USB接続のリムーバブルHDDを使用しているので、データのハン ドリングはこれ経由で行うので、特に常設の光学ドライブは用意しません。 あ、OSは接続デバイスやソフトウェアを考えてWindowsXP Proを採用しました。 電源
1. 電源は12V→100Vの150Wと300Wのインバータを持っているので、まずはイン バータ+ACアダプタにて対応。 2. 他の電装品用に車内にバッテリー直の配線を引いているので、 これを分岐させてACCコントロールのリレーで12Vを供給に変更しました。 ただしイグニッションON時に電源が切れるため、マザーボードBIOSでの ACリンク機能でACCによる電源自動投入後に、再立ち上げとなる問題が 発生。(当然なんですが) 3. 2をACCとIGNをダイオードでORを取りリレーコントロールとするが、現象 変わらず 4. PICマイコンにて、ACCコントロールのリレーで常時電源をPCに接続。 OFF時はACCが切れて5秒を待ってから行うように設定。 またその際にマザーボードの電源が入っていたら(電源ステータスLEDの5V 出力にて判定)、電源SWをリレーで押した状態にして自動シャットダウン が走るようにして電源が切れるか60秒経過後に自動的に常時電源をリレー でカットするような電源コントローラーを作成。 でもセルを回した際の電圧降下には耐えらず、一旦シャットダウンしてし まうのは変わらないので、今後はスーパーキャパシタ等の導入を考えてます。 というかボックスは作ったのですが、行方不明...。
GPSアンテナ
ノートPCではSONYのIPS-5100ベース(?)のPCカード接続のアンテナを使っていましたが、 今度のマザーボードには当然PCMCIAスロットを持たないので、USB接続タイプでデザインが よさそうなCOMET USB/3を購入しました。(
SPA
扱いで9800円) 測位も非常に早く、SiRF StarIIIの威力が出ています。
USBカメラ
ドライブレコーダー用のUSBカメラ。 ロジクール製だけど感度もそこそこあり夜間でもライトがあれば結構大丈夫です。 リアビューミラーと共締めできるように2mm厚のアルミバーを削り固定ステーを 製作して逆吊りにしてあります。 このままだと画像も上下反転するため、カメラ内でセンサ部を180度回転させる 改造をおこない正立画面ろなるようにしています。
その他USB機器
ドライブレコーダー画像保持用のUSBメモリ(2GB、安くなりましたヨねえ > フラッシュメモリ) ワイヤレスマウス、キーボード(必要時のみ接続)は在庫品を使用してます。 あとは結構USB機器が多いので、4ポートハブを一つ使用しています。 現状で使用しているUSBデバイスは8個 GPSアンテナ、USBカメラx2、ワンセグチューナ、USBメモリ、 ワイヤレスマウスアダプタ、タッチスクリーン、USBキーボード S/W編
地図、ナビソフト Navin'You5.0 まずナビソフトを動かすのが大前提なので、手持ちのSony Navin'you5.0を使います。 WindowsXPはサポート対象外でそのままでは動きませんが、インストール後にアドレ スキャッチャーのフォルダをガサッと削除すると動作します。 アドレスキャッチャーにXP/IE6.0パッチを当てることでも動くらしいですが、うちの 環境ではうまく動作しませんでした。 それで次に問題になったのがGPSアンテナとNavin'youのリンクですが、従来はGPS PlayerとNylinkというシェアウェア+フリーウェアを使用していたのですが、作者の Webもなくなっていて再配布を受けれない状態になってました...。 結局Webを徘徊して、GPS PlayerとNylinkの再配布活動を行っておられた方に配布を うけて事なきを得ました。(シェアウェアのキーは保存してあったので問題なし) WinXP対応の最終版はNavin'You5.5だけど、5.0で問題なし! GPS player(Ver3.40) nylinkのアドインを設定。 GPSアンテナの測位系がWGS-84なので、Tokyo系に変換を指定 またGPSアンテナの初期化にチェック(ディレイは200msをセット) Nylink(0.82a:2000/XP対応版) GPS player ドライブレコーダー用
1.しばらくLiveCapture2を使用してみましたが、ドライブレコーダー用途には向かず 動画だとストレージの許すまでしか取れないし、静止画だと約1秒間隔での保存に なってしまい、それもCPU負荷によって2sec/3sec間隔になることもしばしばあり 実用にはなっていませんでした。 あとはUSBメモリの残容量をチェックして、一定の残容量を保つように古いファイル から削除する常駐系のフリーウェアをインストールしました。 2.Capture! LiveCapture2は高機能であるものの、やはり用途が合っていないためドライブレコーダ 用に使うには困難で、また静止画にしても処理速度の点で1sec間隔でキャプチャし続 けることも困難で、最悪3秒間隔になることがあるため実用になっていませんでした。 ということで車載PC用に作られた
Cpature!
を導入。これは動画を時間やファイルサイズ で分割して連続キャプチャすることができ、またキャプチャしたファイルを無尽蔵に 溜め込むのではなく、保持数をコントロール(古いファイルを自動削除)するファイル 管理機能を持っていたりと、ドライブレコーダー用として困っていた部分をほぼ完全 にサポートしているすばらしいものです。 また記録時のCodecも指定できるので、ファイルサイズとCPU負荷のコントロールも 容易になります。でもC3-1GHzでもCPU負荷が80%程度あり、他のアプリとの同時実行 は結構つらいものがありますが、まあしょうがない所ではあります。 車両情報の表示
みんカラのお友達の、Nao's Projectさんが紹介されていた
フリーウェア
が なかなか秀逸です。 ちょっとしたセッティングはこれがあればかなり助けになります。 音楽再生
昔から使用しているWinampをインストール。 手持ちのCDはほぼWMAに落としてあるので、これを再生出来るように設定 ただしCPU負荷の関係でドライブレコーダーとは排他使用になります。 スペシャルソフトウェア
やはり車載モニタには時計が必要でしょ!? ということでほぼ画面いっぱいに 時計を表示するソフトを開発。 一応、シャットダウンタイマーやストップウォッチ、アラーム機能も搭載。 画面イメージは、某アニメを忠実にコピー(笑) また透明化処理をしているので、他のアプリ上に表示しても大丈夫という優れもの。 でも透明化処理でCPUパワーがかなり食われます...orz これもドライブレコーダーと排他使用です。
その他 基本的にはタッチパネル操作でマウス操作を行わないので、ウインドウが動いた 際などに苦労するためウィンドウの位置、サイズをコントロールするソフトを 組み込んでます。 他はプラネのソフトとか... とこんなところで運用しています。 今後はC7等のもう少しパワーのあるCPUへの以降を計りたいですが、いつになることやら。
その四、電源コントローラ for 車載PC
使用している車載PCは12V駆動なのでインバーター等を必要とせず効率はいいの ですが、電源をACCから取るといろいろ弊害があったので、PICマイコン(16F84A) で専用の電源コントローラーを作ることにしました。
問題点
(1) PCはいくら電源OFF状態でも待機電力が馬鹿にならない。 使用中のマザーボードだと待機時には実測で400mA(約5W)くらいは流れてい たので、ACアダプタなどで家庭で使うのは良いとしても、車載にしたらあっ という間にバッテリが上がってしまいます。(つまり常時12V接続は不可) (2) 次にACCに接続する場合には、セルを回すときに一旦電源が切れる。 ノートPCなどでバッテリバックアップがある場合には気にしなくても良い ですが、一旦エンジンをきってから再始動というシチュエーションでPC を落としてエンジン始動後に再起動なんてしたくないです。 試しにACCとIGNをダイオードでORしてみましたが、キーシリンダを回す 際にどうしても一瞬OFFになるらしく駄目でした。 (3) 駐車時などにすぐに車を離れられない。 数十秒とはいえシャットダウン待ちは意外とストレスになります。
仕様検討
どんな状態でも強制シャットダウン(電源SW4秒押し)が効く様に、ACCが切れて から5秒後にPCへの電源供給が止まることを基本動作としますが、これだけで は面白くないのでPCの電源OFFコントロールと電源状態を監視するようにしま した。(もちろん5秒以内にACCが復帰すれば電源OFFにはならないのは当然...) ACCがOFFになって5秒後に、PCの電源がON(電源ステータスのLED(5V出力)が点 灯)していたらリレーで電源SWを押下した状態を作り、電源がOFFになる(LED 消灯)か、電源ONのままでも60秒が経過したら自動的に電源断するようにしま した。(これにあわせて電源コンパネで、電源スイッチ押下時の動作をシャッ トダウンに指定する必要あり) もしシャットダウン中にACCが復帰してもシャットダウンは停止できないので、 PCは落ちますが電源OFFにはなりません。
回路全景(テスト中) こんな感じで、さくっとな。
回路図
VRは15Vくらいかかっても、5V程度に収まるように調整します。 リレーは
松下電工のPhotoMOSリレー、AQZ102D
を2個使用しました。
プログラム(HEX形式)
Xtalは10MHz用です。 将来的には、某カウントダウンタイマ連動を行わねば。(夢) (空きピンは一杯あるのでいろいろ拡張可能ですな)
その参、DCCD(Drivers Control Center Differential) コントローラ
マニュアル・コントロール版
友人のGC8Cでトランスミッション(以下、T/M)がブローしたため、 交換用に新たに中古T/Mを入手したのだが、ジムカーナで使うので 今までと同じフィーリングを求めブローしたT/Mの機械式フロント デフとビスカスセンターデフは使いまわしたため、中古ミッショ ンについていたDCCD(Drivers Control Center Differential)を 譲り受けた。(また同時にブローミッションのケースなども...) DCCDは遊星歯車を使用して、前後のトルク配分を35:65をしリア 側のトルク配分を多くすることでよりFR的なハンドリングを実現 できるが、それだけではオープンデフと一緒なので前後の回転差 をなくす電磁クラッチコントロールの機械式(プレート)LSDを組み 合わせたものだ。 GC8で採用されたDCCDではマニュアル制御でLSDの効きを可変抵抗 でほぼ完全フリーの35:65の駆動配分から、前後直結の50:50まで 変更できるようになっている。今回はこれと同様のコントローラー を自作することを目的とする。ただし将来的にGDBで採用されてい るオートモード相当の制御を出来るように考えておくこととする。
仕様検討
・DCCDのコントロールは、電磁コイルに流す電流のPWM制御で行う。 具体的にはコイルに+12VのPWMを掛けて締結力を調整することに なる。将来的にオートモードを実現するためにはマイコン制御が 必須なので、手持ちのPICマイコンでA/D変換が可能なPIC16F873 を使用することにした。 またアナログのDCCDコントローラーを製作済みの四国のたくさん 事前にPWM周波数は100Hz程度でOKという情報を得ていたので、 これを基にインプリメントを考えることにする。 16F873にはPWMユニットが内蔵されているが、ターゲットが100Hz という単位では周期が10msecと長すぎてPWMユニットを使用しづら いので、16bitのTMR1でカウントを行い、これをコンペアモジュー ルで割り込みを発生させて、割り込みのつどにPWM ON/OFFを切り 替えセットすることにする。 (3.2us単位のタイマカウントアップで、約210msまでカウント可能:約48Hz) また可変抵抗には市販のボリュームでもよかったが、耐久性と DCCDのFreeとLock位置が固定(クリック)出来る純正のボリューム を使用することにした。 これは両端の端子にそれぞれ5VとGNDを接続すると真ん中の端子に ボリューム位置に応じた電圧が出力されるごく一般的なボリューム だが、Free位置では0V、そこからダイヤルを動かすととんで1V〜4V まで連続的に変化して、Lock位置で5Vに飛ぶというようなつくりに なっている。実際PWM制御では0〜1V、4〜5Vに対応するPWMでは、 特性的に実質FreeかLockになり意味が無いと思われるのと、先に 書いたコンペア割り込みによるPWM制御では、あまりデューティー が偏るとまともに制御出来なくなるので特に非線形変換は行わず そのままでデューティーに変換することにする。 あとはPICの5V PWMのコントロール信号をMOS-FETに入力して、 コイルに流れる電流を制御するわけだが、FET保護と、コイルの 逆起電力を逃がすためにフライホイール用のダイオード等による 処置を忘れずに... 以下は予定、
回路図
プログラム・ソース(ver.1.0)
(オートモード化) GDBではこのDCCDの制御には、ABS用の4輪ホイールセンサーや横G、 ヨーレートセンサー(Ftypeからはステアリング舵角センサーも)等 を使用して制御しているようだ。 ただ今回は一応競技シーンを想定してあまり複雑な制御は行わず、 ターンインはしやすく、脱出はトラクションを稼ぐだけの予測しや すい制御としたい。 また簡単に使用できるセンサーとしては縦/横Gがあるので、摩擦円 の考えを取り入れて、あとはアクセル開度やエンジン回転数をみて 制御を行いたい。またサイドターンなどではDCCDが完全デフフリー になってしまったあとで、再度ロック状態に復帰するのに結構なタ イムラグがあるらしいので、この対処も盛り込みたい。
上側がプロトタイプ、下側がテストタイプ
MANUAL/AUTO/常時フリー切り替えスイッチ+マニュアルダイヤル 2006.06.25追記 マニュアルモードのコントローラーではPWMを100Hz程度に設定して いたが、ロック率の低い領域で制御が荒いように感じられたので、 140Hz程度に再設定を行った。 オートモード機能追加 まずオートモードを実現するにあたり入力に何を使いどのように制御 するかを検討しなければいけないが、個人では十分な実験やデータ取 りが出来ないので出来るだけシンプルにして、なおかつ先人の知恵を 拝借することにする。先人の部分はGDBのCtype以降のAutoモードを参 考にするということですが、あくまで視覚的なイメージですが制御 マップも公開されていることから、これを元に作ってみましょ! とい う感じです。 入力にはスロットルセンサと横Gの2つを採用して、これら2つのパラ メーターで2次元マップを参照してPWM値を決定することにします。 マップ参照ではPICのretlwを使いますが、PICマイコンの仕様から マップの格子をを16x16(256byte)ではなく15x16(240byte)にします。 GC8前期型のスロットルセンサはアクセルペダル踏み込みに対して 逆比例の電圧が出力されるます。具体的にはアクセルOFF時に4.7V 全開時に0.8Vとなっているので、電圧変換を行い (4.7 - センサ電圧) x 5 / (4.7 - 0.8)として、0〜5Vフルスケール 化して使用します。
その弐、アクセス モニタ
ROMチューンの問題点
ROMチューンを行う上で一番重要なのが点火時期と燃料マップの調整 になる。しかしこれらのマップは回転数と負荷(シリンダに吸入され る空気量)の二次元のマップであることから実際に走行していて、今 この瞬間に何処のデータをアクセスしているのかが判らないと、調 整のしようが無いわけだ。(それでもまあ何とかなるけど、確実性は かなり劣るわけで) 以前はセレクトモニタの端子からPCで読み出してDOS上(!)で表示し ていたが、プログラムが悪いのもあるが表示遅れがあり旧態然とし ていることから、以前から構想だけはあったROMのアクセスモニタを 製作してみることにした。
仕様検討
・27C1028はアドレス/データがマルチプレクサスになっているので アドレスを分離する必要がある。これは27C256用などの拡張基板 ではラッチでアドレスを分離しているので、これを使うと便利だ。 今回は、DIP用のテストプローブでアドレスを取得する事にする。 ・16x16の1バイトからなるマップを表示する部分は、アドレス16bit のうち下位8bit分で、上位8ビットから下位8bitをラッチするデ コーダーを作ればいいことになる。 ただし16x16のマップが256バイト境界にある保証は無いので、こ れをどうするかが問題だ。 →ここでは加算器を使用して、アドレス16bitに16bit分のター ゲットアドレスの補数を足す(つまり減算)ことにする。 こうすることで任意のアドレスに対応可能となる。 ・表示部は手抜きで、オープンコレクタ/ドレインを使用せずに、 デマルチプレクサの正論理と負論理品を使い分けて配線と使用部 品を極限まで減らす!
回路検討
・加算器は、7483 or 74283辺りが適当でここでは74HC283を4個で 4x4bit=16bit構成で使用する。 ただしCarryの扱いの関係もあるので、アドレス確定から加算結 果確定まで約80nsを要する。 ・出力は秋月電子通商で取り扱っている、ローム製のLM1256という 16x16のLEDマトリックスを使用する。 同時には一個のLEDしか点灯させないので、ソース、シンク電流 ともあまり考えなくてもいいが、データのラッチがついていて 正/負論理のセットでピン互換の74HC4514と74HC4515をドライバ として使用する。またLEDの電流制限用に200〜300Ω程度の抵抗 をかましておくことにする。 ・問題は74HC4514/4515のラッチ信号だが、これは加算器の上位8 ビットのORを取ればいいのだが残念ながらバラ石では8bit入力 はNANDしか手に入らなさそうだったので74HC30を使用して、こ の出力を加工することにした。 74HC4514/4515のラッチはMin30nsだから、74HC31でディレイを 作りつつ反転をかけ、HC30元の出力とNOR(74HC02)をとるとほ ぼ期待の波形が得られる。 ただし! 加算器の遅延が80ns、制御部分の遅延が60ns位あるの で、下位8bitのラッチ時にはデータが化け始めている可能性が 高いがまあ表示だけの問題なのでノープロブレム(のはず)!!!
回路図
アクセス トレーサ作成例
とりあえずダンボールに組み付けた試作品。フラットケーブルがECU まで延びてます。
拡張基板のアドレスラッチからアドレスを引き出してます。
大きく空ぶかし中。 アクセルをあけると回転数とともに負荷が少々あがり、 アクセルを閉じると負荷が激減してから回転数が徐々に下がる様子です。
ちなみにこれはプログラム領域のアクセス中。 結構綺麗で、普段用に良いかも。 しかし予想通りごみを拾って表示してしまうので、しっかり作るなら もっと速いロジックとPAL/GAL等を使って制御する必要がありそう。 ま自分で使う分には大丈夫!
その壱、シフト ポイント インジケータ
市販品の問題点
市販のシフトポイントインジケータでは回転信号を、電源ラインに のっているノイズや点火信号(負荷や回転数で進角変化有り)からと るものが多く正確とは言いがたい。 また回転数の設定には可変抵抗を使用するものが多く、設定の確認 や再現性に疑問が残る。さらにインジケーター部は単なるランプの ON/OFF制御のみの製品が多いので、各速での回転上昇の違いといっ たことは体で憶えこむ必要がある。 また如何にも後付けという外観が個人的にはちょっと... これらを解決できるものをつくってみよう!
仕様検討
・それほど凝ったことはしないが、仕様変更が簡単にすばやく対応 できるのフラッシュメモリでプログラミングできるマイコン制御 でいこう。 マイコンは開発や製作環境の整っている
Microchip Technology Inc.
のPICマイコンを使用することにする。 PICマイコンはRISC(Reduced Instruction Set Computer)型のプロ セッサで、憶えるべき命令数が少なく(その分ちょっと癖はあるが)、 高速動作が特徴だ。さらにマイコンらしく必要な機能は最初から 組み込まれているのでホビー用途には最適で、機能や開発/回路規模に 応じてPICマイコンのファミリーからチップを選べばよい。 また上記URLでは、各種データシート、アプリケーションノート、 さらには開発ツール(アセンブラ、C、統合環境)まで用意されてい る。開発を行う際には、まず目的と同じような機能のアプリケー ション例をダウンロードして実現可能か勉強してみると良い。 今回は入手性や良く、フラッシュメモリを採用する16F84Aを使用 する。 PICマイコンのプログラム(内蔵ROMへの書き込み装置)は、
秋月電子通商
のPICプログラマーVer.3を購入した。
・回転信号は純正レブカウンタへの入力信号が使用可能 この信号はクランク角センサの出力を、ECUでTTLに変換したもの。 ・電源(+12V)、GNDも純正レブカウンタから拝借可能 PICの電源は、5V系なので3端子レギュレータ7805等で5Vを作ることにする。 ・測定範囲は600〜12000rpm(10〜200Hz)として、精度は50rpm程度とする。 クランク1回転分だと、 10Hzで、周期100msec 200Hzで、周期 5msec 精度要求からカウンタのクロックは、5msec /12000 * 50 / 2 = 0.0104msec 程度となるように設定すればよい。 また600rpm時のクロックカウントは100/0.0104=9615カウントで、 カウンタは2バイトで十分事足りる。 ・LEDはP/R/N/D/3/2/1の各ポジション分、7個を使用してメータクラスタにビルトインする。 LEDには、超高輝度タイプを使用して昼間の使用時でも問題ないように 光度を確保する。電流は抵抗によらず定電流ダイオードを使用して 15mAに制限する。(PICマイコンの出力ポートの電流制限に注意!) (流れ込み電流の方が余裕があるが、回路構成の点で流れ出しで制御する) ・LEDは設定した表示開始回転数から、100rpm毎にバーグラフ状に点灯させる ・バーグラフ中間のD位置のLED点灯時にブザーも鳴るようにする ・LEDの一番下(Loの位置)は、各種インジケーターとして使用する アイドリング時点滅 表示開始回転数指示(点滅回数で指示) 設定ボタン押下確認 ・表示開始回転数は100rpm単位で変更可能 100rpm UP/DOWN、及び設定を抜けるEXITボタンの3ボタン構成 UP/DOWNボタンを押すと表示開始回転数設定モードに移行 EXITボタンで通常モードに復帰する。 ・設定した回転数はEEP-ROMに書き込み、次回起動時にロードする EXITボタン押下時にEEP-ROMに回転数をライト ・設定ボタンとブザーは小さな箱に収め、本体と4芯のシールド付線で 結線する。(UP/DOWN/EXIT/BUZZER,GND) UP/DOWN/EXITスイッチではGNDに落とし、それぞれの信号線は16F84Aの PortBで使用できるPullUpで5Vにつることにする。 (追加仕様:今後の展開) コンパレータ内蔵のPICマイコン16F628等を使用して、回転信号と アクセル開度信号から高負荷。高回転時のみにI/Cスプレーを噴射 するオート機構を実現する。一番下のLEDは、回転表示には使用せ ずに動作インジケータとする。 (過給圧制御よりはるかにレスポンスがいいはず、問題は街乗り時 には確実に吹き過ぎると予想されることだ) あとはインマニ中央にある燃料インジェクター(RA系のみ搭載)も コントロールしてみたいが... (とりあえず動作条件を知るために センシングせねば)
PICへのインプリメント
・コストが低く、フラッシュROM内蔵の16F84A使用する。 ・クロックは20MHzまで使えるが手持ちの一番低い振動子が10MHzだったので、 これを使用する。 ・回転の計測はタイマを使用するが、4サイクルエンジンなのでクランク角 センサで2回転分の周期を計測して求めることにする。 タイマの原振はクロックの1/4、2.5MHzなので32分周して(12.8usec)、 タイマ割り込みで使用する。(要求精度では10usecだがまあ問題なし) ・LEDに超高輝度タイプを使用するので、電流制限に引っかからないように LEDはポートA側に3個、B側に4個を配置する。ブザーもポートB側とする。 ・回転数設定のSW(UP/DOWN/EXIT)は、PortBに接続し内部PullUpの使用を ONにしておく。 ・回転信号の入力は、直列に保護抵抗を入れておく。 PullUpも入れてみたりしたが、純正の回転計の動作がおかしくなる場合 があるのでやめることにした。 ・回転信号が入力されていないとき(エンジン停止)には、一番下のLEDが 点滅してインジケーターがアイドリング状態にあることを示す。
回路図
プログラム・ソース(ver.2.1)
配布版はVer.1.1だが、Ver.2.1ではかなり拡張したのでバグ取りが不完全かも。汚いソースだがご勘弁を!
大きな変更点は、 ・EXITキーをMENUキーとして各種設定を追加 ・LEDのRevLimitとBuzzerのRevLimitを個別に変更可能に ・LEDの点灯間隔も設定可能に ・起動時のLED点灯パターンを追加して選択可能に ・LEDの明るさを変更可能に ・キー操作の反応性向上 ・入力数値の上限/下限を設定 といったところだ。
現在バグ取り中なので終了すれば、実費で配布可能なのでE-mailください。
シフトポイントインジケータ作成例
試作品のシフトポイントインジケータ(LEDの固定に苦労が見て取れる) これで動作検証と、使用感をチェックして各種のパラメーターを決定した。
量産品!(完成直前)のシフトポイントインジケータ 本体をボックスに組み、メータークラスタの裏側から差し込めるように変更。
回転数設定用スイッチ、右からUP/DOWN/EXITとなっている。 また上面にブザー用の穴も設けられ、エンジンが高回転時かつヘル メット装着時にも聞こえるように配慮している。
表示開始を3000rpmにセットして、軽くレーシングしてみると... なかなか良い感じだ。 ちなみに起動時の儀式は...
こんなアングラなページなのに見つけてくれた人のために、(元々はPICマイコン のみのリリース予定だったけど強い要望をうけて...) 量産品として作った分の ユーザーのレポート(準備中)です。意外と材料代がかさんだ上に、開発費(プロ グラマ等の費用)を上乗せ、さらに送料込みとしたので一式7,000円になったの ですが、ほぼ好評だったようでホッとしています。でも製作に時間がかかりす ぎるので、今後は自作できる人向け企画にしたいですねえ。>Handicraft
シフトポイントインジケータのインストールと設定方法