前回の続きです。
たいした回路ではないので、ユニバーサル基板でも作れるのですが、いちおう1,000万円オーバーのクルマに実装するので、信頼性を考えて、プリント基板を起こすことにします。
プリント基板のアートワークです。
とりあえず、10セット分。
前回の続きです。
たいした回路ではないので、ユニバーサル基板でも作れるのですが、いちおう1,000万円オーバーのクルマに実装するので、信頼性を考えて、プリント基板を起こすことにします。
プリント基板のアートワークです。
とりあえず、10セット分。
前回の続きです。
順番が逆になりましたが、「ライトコントロールエレメント」に来ている信号を解析し、制御回路に必要な信号を取り出します。 (本来であれば、こちらを先にやっておくべきでしたが)0xF9C7
WDS上では、6本の信号が接続されているように見えますが、
(上記の回路図には、うち4本の信号が記されています)
実際には、コネクタX10164には、8本の信号が来ています。
テスターのリードを挿して、動作確認をしてみます。
残り2本の信号の意味が不明のため、「ライトコントロールエレメント」の内部基板にテスターを当てて、解析します。
なお、リバースエンジニアリングの結果は、公開いたしません。
(公開すると、すぐにパクるヤカラが湧くので)0xF9D1
解析の結果、「スモールランプ」の点灯状態の検出に、“ちょっとした工夫”が必要であることが分かりました。
これに合わせて、使用するPICを「PIC10F220」に変更するとともに、制御回路とコントロールプログラムも変更します。
前回の続きです。
ここのところ、いろいろと立て込んでおりまして、なかなか前に進みませんが、
とりあえず、コントロールプログラムが完成しました。
「ジャンピングワイヤー」という名のとおり、もの凄い“空中配線”状態になってますが、まぁハードの動作確認用ということで。0xF9C7
ちっぽけな回路ですが、想定どおり動いた時の感動は、一入(ひとしお)です。少なくとも、“ショップにお任せ”になっているヒトには、味わえない「歓び」でしょう。
(いまのところ、どこのショップにも売ってないですし)0xF9D1
フロントフォグランプの制御回路です。回路としては、非常に簡単です。
(電源回路等は、省略しています。また、抵抗等の型番も、省略しています)
ブレッドボードを使ってデバッグしていた時に、気付いた点を一つ。
リセット直後、I/OポートがInputに設定されたとしても、リレーが誤動作しないよう、パワーMOSFETのGate側にプルダウン抵抗を入れておいたのですが、リセット直後、なぜかリレーが動作してしまいます。
もちろん、リセット直後のイニシャライズルーチンでは、I/OポートはOutputに設定しているのですが。
しばらく悩んだのですが、理由は非常に簡単でした。(当たり前といえば、当たり前な理由でしたが)
I/Oポートは、Outputに設定した直後は、“High”の状態になってるようです。(データシートによると、“Unknown”なのですが)
よって、I/Oポートの入出力方向を設定した直後、Outputにしたポートについては、初期状態を強制的に設定(この場合は“Low”に設定)することにより、解決できました。
勘違いの元は、リレーの動作状態の確認用にと設置した「パイロットランプ」(高輝度青色LED)でした。
パイロットランプは、リセット直後は点かないので、リレー制御用のポートも“Low”になっているものとばかり思い込んでいたのですが、パイロットランプの制御は負論理でした。(“High”で点かなくて当然なのでした)0xF9C7
ちなみに、試しにI/OポートをInputに設定したままにしておいても、リレーは誤動作しないので、プルダウン抵抗を入れた意味は、ちゃんとあるようです。
ということで、これでハードとソフトは完成しました。
つぎは、基板の作製と、ライトスイッチユニットへの実装です。
(いつになることやら・・・)
前回の続きです。
とりあえず、ブレッドボード上に、評価用の回路をささっと組み付けて、PICのプログラムを開発します。
ボード上の左下にある2つのタクトスイッチは、それぞれ「スモールランプ」と「フロントフォグランプスイッチ」を模しています。
これら2つの入力が同時にONになった時に、パワーMOSFETを使って、フォグランプ用のリレーを駆動させます。あわせて、パイロットランプとなる「高輝度青色LED」を点灯させます。
フォグランプスイッチを押す毎に、フォグランプが「OFF→ON」または「ON→OFF」となる(トグル動作する)ようにします。
また、フォグランプスイッチからの入力は、チャタリングが発生するものとし、その対策として、40msの判定時間を設けます。
さらに、フォグランプスイッチが、何かの拍子で押し続けられた場合、単純なトグル動作のロジックでは、出力が発振してしまう(高速にONとOFFを繰り返してしまう)ため、この対策も組み込みます。
Microchip Technology社から無償で提供されている統合開発環境、「MPLAB IDE」(Integrated Development Environment)を使って、プログラムを書いているところです。
「PIC10F200」のインストラクション数は33種類と、非常にシンプルですが、ニーモニックも分かりやすいため、すぐに覚えられます。
実はその昔、大学院の学生だったころ、ゲームプログラマーのアルバイトをしていました。当時はZ80やi8086の全盛期で、四六時中、寝る間も惜しんでプログラムをゴリゴリ書いていました。それらに比べれば、はるかに簡単です。
(懐かしい・・・)0xF9C6
なお、ソースプログラムは公開しません。公開すると、まったく同じモノを作って、ネット上で商売始めちゃう姑息なヤカラが湧くので。
前回の続きです。
PICにプログラムを書き込むためには、専用のツール(PICライター)が必要となります。
今回は、秋月電子通商さんの「AKI-PICプログラマー Ver.4」を購入しました。
Ver.3.5は、組立キットになっていますが、Ver.4は、完成品になっており、ソフトウェアをPCにセットアップすれば、すぐにでもPICにプログラムを書き込むことができます。
(その他に、ACアダプタ、USB/シリアル変換ケーブルが必要となります)
今回使用する「PIC10F200」(写真右)を含むPIC10シリーズは、僅か6ピンという“世界最小”のPICマイコンです。
(写真のPDIPパッケージは、8ピンですが、そのうち6ピンしか使われていません)
これでも、チップ内部に4MHzのクロックを内蔵し、処理能力1MIPSを持つ、歴としたRISCプロセッサです。
(ちなみに、秋月電子通商さんで、1個70円でした)0xF9C7
#その昔、大学院の論文輪講で、当時有望視され始めたRISCプロセッサのテクノロジーについて、必死こいて英語論文を読んでいた頃を、懐かしく思い出します。
(それが、いまや70円ですよ、70円っ!!)
「PIC10F200」は、プログラム用に256ワードのフラッシュメモリと、16バイトのデータメモリを持っています。また、外部入出力用に、4つのI/Oポートを持っています。
(その他、8ビットのカウンタを、1つ持っています)
これだけあれば、今回の「フロントフォグランプ制御装置」のロジック(前回参照)を実装するには、十分過ぎるほどのスペックです。
なお、「AKI-PICプログラマー Ver.4」は、標準の状態ではPIC10シリーズに対応していません。ボードのファームウェアを、Ver6.70以上にアップデートすることにより、PIC10シリーズに対応させることができます。
また、PIC10シリーズは、PIC12シリーズとは若干ピンアサインが異なるため、ボード上のソケットにそのまま挿入して書き込むことができません。
今回は、マニュアルを参考に、ICソケットとスルホール基板とを組み合わせて、(写真左)のような書き込みアダプタを作成しました。
念のため、「PIC10F200」をセットした状態で「リード」し、内部のフラッシュメモリに正常にアクセスできることを確認しておきます。
0xFF番地に書き込まれている、内蔵クロックのキャリブレーション用のデータが読み出せれば、ひとまずOKです。