前回の続きです。
「PSEスイッチ」からの入力に基づき、ソレノイドバルブやLEDインジケーターを制御するため、PIC(Peripheral Interface Controller)を使うことにします。
こちらは、以前にもご紹介した、世界最小のマイクロコンピュータ、Microchip Technology社の「PIC10F200」です。
8ピンのPDIPパッケージで、小指の先ほどの大きさもありませんが、これでも、チップ内部に4MHzのクロックを内蔵し、処理能力1MIPSを持つ、歴としたRISCプロセッサです。
「PICkit 3 In-Circuit Debugger」で扱うため、PIC10F200シリーズ専用の書き込み基板を作成しました。
工房特製、大きさ26mm×22mmの、ミニミニサイズです。
さっそく、ブレッドボード上に、評価用の回路を作ります。
「Power LED」は、イグニッションをONにすることにより点灯します。回路に電源が供給されているかの確認用です。
「PSE Switch」は、その名のとおり、「コンバインドスイッチ」内にあるPSEスイッチを模したものです。タクトスイッチですので、オルタネイト動作への変換は、PIC側で行います。
「PSE LED」は、PSEスイッチの左上にあるLEDインジケーターを模したものです。ソレノイドバルブの動作に応じ、点灯(バルブ閉塞)、消灯(バルブ開放)します。
「Full-Time PSE Switch」は、車検の時のためのスイッチです。その動作は・・・、
♪「ヒ・ミ・ツ」。0xF9CE
評価用の回路ができたところで、制御用のプログラムを書きます。
開発は、Microchip Technology社から無償で提供されている統合開発環境、「MPLAB X IDE」(MPLAB X Integrated Development Environment)を使います。
MPLAB X IDEには、C言語(XC8)も用意されていますが、それほど複雑なロジックでもないため、アセンブリ言語(MPASM)で記述しました。
「PIC10F200」のインストラクション数は33種類と、非常にシンプルですが、シンプルであるが故に、究極に研ぎ澄まされた、論理的に無駄のない、美しいプログラムを書くことができます。
条件判断はZeroフラグやCarryフラグなどのビット操作に留め、最小の分岐で最小のコード数に抑える。
さしづめ、高度に洗練された知的トレーニングです。
#高級言語に頼り切って、ダラダラと長いプログラムを書いている職業SEとは、ラベルが違います。0xF9F8
PSEスイッチは、押下されたタイミング(「L→H」となる“立ち上がり”のタイミング)を検出し、過去のPSEスイッチの状態と照らし、「オルタネイト動作」(トグル動作)をさせています。
また、プッシュスイッチには、チャタリングが発生するものとし、40msの判定時間を設けています。
チャタリングは、RC積分回路を設けてハード的に吸収する方法がありますが、今回は、基板上の部品点数を減らしたかったため、ソフト的に吸収しています。
なお、制御用のプログラムは公開いたしませんので、あしからず。
#公開すると、すぐにパクって商売始めるヤカラが湧くので。(チューコクじん、とか)0xF9D1
(つづく)
Post Comment