SOARISTO工房 Logo

耕運機サウンドの追求(4) - 回路設計っ!!

 前回の続きです。

 「PSEスイッチ」からの入力に基づき、ソレノイドバルブやLEDインジケーターを制御するため、PIC(Peripheral Interface Controller)を使うことにします。

Porsche 911 Type 997, PSE DIY, Porsche Sport Exhaust System

 こちらは、以前にもご紹介した、世界最小のマイクロコンピュータ、Microchip Technology社の「PIC10F200」です。

 8ピンのPDIPパッケージで、小指の先ほどの大きさもありませんが、これでも、チップ内部に4MHzのクロックを内蔵し、処理能力1MIPSを持つ、歴としたRISCプロセッサです。

Porsche 911 Type 997, PSE DIY, Porsche Sport Exhaust System

 「PICkit 3 In-Circuit Debugger」で扱うため、PIC10F200シリーズ専用の書き込み基板を作成しました。

 工房特製、大きさ26mm×22mmの、ミニミニサイズです。

Porsche 911 Type 997, PSE DIY, Porsche Sport Exhaust System

 さっそく、ブレッドボード上に、評価用の回路を作ります。

 「Power LED」は、イグニッションをONにすることにより点灯します。回路に電源が供給されているかの確認用です。

 「PSE Switch」は、その名のとおり、「コンバインドスイッチ」内にあるPSEスイッチを模したものです。タクトスイッチですので、オルタネイト動作への変換は、PIC側で行います。

 「PSE LED」は、PSEスイッチの左上にあるLEDインジケーターを模したものです。ソレノイドバルブの動作に応じ、点灯(バルブ閉塞)、消灯(バルブ開放)します。

 「Full-Time PSE Switch」は、車検の時のためのスイッチです。その動作は・・・、

 ♪「ヒ・ミ・ツ」。0xF9CE

Porsche 911 Type 997, PSE DIY, Porsche Sport Exhaust System

 評価用の回路ができたところで、制御用のプログラムを書きます。

 開発は、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

(つづく)

Trackback(0)

Trackback URL: https://www.soaristo.org/mt/mt-tb.cgi/1028

Post Comment