(57)【要約】  測定計器は、光出力を有する回転可能なＬＥＤポインタ（１２０）を含む。ポインタ（１２０）が、レンズの周りを一定速度で回転するのに従って、ＬＥＤポインタ（１２０）の出力は、ユーザには光の弧として見える。光の弧は、所望の表示単位の量を表す。ブラシレスモータ（１０６）、およびロータリートランス（１２２）は、ＬＥＤポインタ（１２０）に磁気的に結合される。高速コントローラ（１１０）は、モータ（１０６）、およびロータリートランス（１２２）に結合される。コントローラ（１１０）は、量の指示を受け取り、ＬＥＤポインタが目盛り付きレンズ表面の周りをほぼ一定速度で回転するのに従ってＬＥＤポインタを照明するためにロータリートランス（１２２）を駆動するように、かつＬＥＤポインタ（１２０）をアクチベートおよびディアクチベートして光の弧の長さを調整しそれによって所望の表示単位の量をユーザに示すように応答可能にプログラムされる。
2008528964.tif 000002
【特許請求の範囲】
【請求項１】
測定計器であって、
光出力を有する回転可能なＬＥＤポインタであって、その回転に従った該ポインタ出力がユーザには光の弧に見え、該弧が所望の表示単位の量を表すＬＥＤポインタ、
ロータリートランス、
前記ＬＥＤポインタに磁気的に結合されたブラシレスモータ、
該モータ及び前記ロータリートランスに結合されており、量の指示を受け取り、目盛り付きレンズ表面の周りをほぼ一定速度で回転する前記ＬＥＤポインタを照明するために前記ロータリートランスを駆動し且つ前記ＬＥＤポインタをアクチベート及びディアクチベートして前記光の弧の長さを調整しそれによって前記所望の表示単位の量をユーザに示すように応答可能にプログラムされた高速コントローラ、
ユーザが本計器の動作機能を、視認、リセット、及びプログラムできるようにするためのタッチスイッチ、並びに、
前記ＬＥＤポインタの輝度、及びＬＥＤシフトライト出力を応答可能に制御するために、周辺光レベルを検出するための回路
を備えることを特徴とする測定計器。
【請求項２】
前記高速コントローラは前記ブラシレスモータの速度及び角度位置の両方を示す信号を受け取り、前記ロータリートランスは一次巻線及び二次巻線を備え、
前記高速コントローラは前記ロータリートランスの前記一次巻線を駆動し、前記一次巻線は静止しており、前記高速コントローラはまた前記二次巻線を駆動し、前記二次巻線は前記一次巻線に磁気的に結合され、前記二次巻線は回転して前記ＬＥＤポインタに駆動電流を供給する
ことを特徴とする請求項１に記載の測定計器。
【請求項３】
前記タッチスイッチは計器レンズ背面に取り付けられ、前記タッチスイッチは前記高速コントローラによってポーリングされ、
前記タッチスイッチは可動部分及び露出した電極がなく、
前記高速コントローラは前記タッチスイッチのデバウンス機能を実行し、
前記タッチスイッチは、プログラムされたシフトライト値での光の弧としてプリセットされたシフトライト値を視認すること、ピークＲＰＭ値をリセットすること、及びユーザが前記シフトライト値をリセットできるようにすることを含む群から選ばれる機能を実現する
ことを特徴とする請求項１に記載の測定計器。
【請求項４】
周辺光レベルを検出するための前記回路は、可変電圧レギュレータ及び光検出素子によって制御され、
該回路の出力電圧は、特定の最小及び最大電圧出力値に設定される
ことを特徴とする請求項１に記載の測定計器。
【請求項５】
前記ロータリートランスは、前記高速コントローラにより高周波のゲート制御されたクロック信号を用いて駆動され、
前記ロータリートランスは静止一次巻線と回転型二次巻線とを有し、該トランスは前記回転型ＬＥＤポインタに電力を送出し、表示レンズを通してユーザが見ることができる光の点及び光の弧を発生する
ことを特徴とする請求項１に記載の測定計器。
【請求項６】
前記所望の表示単位が、エンジンＲＰＭであることを特徴とする請求項１に記載の測定計器。
【請求項７】
前記所望の表示単位が、空燃比であることを特徴とする請求項１に記載の測定計器。
【請求項８】
前記光の弧の表示用にバックライトをもたらすための、ＬＥＤバックライト部分をさらに備えることを特徴とする請求項１に記載の測定計器。
【請求項９】
前記コントローラに過電圧保護をもたらすための、電源及び入力保護回路をさらに備えることを特徴とする請求項１に記載の測定計器。
【請求項１０】
ユーザにシフトライトを提供するための、シフトライトドライバ及びＬＥＤ回路をさらに備えることを特徴とする請求項１に記載の測定計器。
【請求項１１】
ユーザがエンジン内のシリンダ数を選択できるようにする、シリンダ選択ＢＣＤスイッチをさらに備えることを特徴とする請求項１に記載の測定計器。
【請求項１２】
前記高速コントローラが、前記レンズ上に表示する前記量の指示のピーク値を表す示度を表示するようにプログラムされることを特徴とする請求項１に記載の測定計器。
【請求項１３】
ユーザに測定情報を提供する方法であって、
表示すべき量を示す情報を受け取るステップ、
ＬＥＤポインタをアクチベートしかつディアクチベートして該ポインタの回転に従い光の弧が発生したときのアクチベーション時間を決定するステップであって、前記弧の長さが前記受け取った情報中に示される量に基づいているステップ、
前記ＬＥＤポインタを、ガラスレンズの周りをほぼ一定速度で回転させるステップ、並びに、
前記光の弧をユーザに表示するために前記アクチベーション時間に応じて前記ＬＥＤポインタをアクチベートするステップ
を含むことを特徴とする方法。
【請求項１４】
前記受け取った情報の最大値を決定するステップと、該最大値をユーザに表示するステップとをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記受け取った情報の最小値を決定するステップと、該最小値をユーザに表示するステップとをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１６】
前記受け取るステップが、エンジンＲＰＭデータを受け取ることを含むことを特徴とする請求項１３に記載の方法。
【請求項１７】
前記受け取るステップが、空燃比メータのデータを受け取ることを含むことを特徴とする請求項１３に記載の方法。
【請求項１８】
前記ガラスレンズにバックライトをもたらすための、ＬＥＤバックライト部分を設けるステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１９】
ユーザにシフトライトを提供するステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項２０】
ユーザが、エンジン内のシリンダ数を選択できるようにするステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項２１】
前記受け取った情報の最小及び最大ピーク値の両方を決定し、表示するステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項２２】
ＲＰＭ値を表す光の弧を表示することにより、ユーザがシフトライト値をプログラムできるようにするステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項２３】
測定計器であって、
光出力を有する回転型のライトパイプであって、該ライトパイプの出力はレンズの周りのミラーから反射されてユーザには光の弧に見え、該弧が所望の表示単位の量を表すライトパイプ、
該ライトパイプに光を供給する静止ＬＥＤ、
該ライトパイプに結合されたブラシレスモータ、並びに、
該モータに結合された高速コントローラであって、量の指示を受け取り、前記レンズ表面の周りをほぼ一定速度で回転する前記ライトパイプを照明するために前記静止ＬＥＤを照明するように且つ前記静止ＬＥＤをアクチベート及びディアクチベートして前記光の弧の長さを調整しそれによって前記所望の表示単位の量をユーザに示すように応答可能にプログラムされた高速コントローラ
を備えることを特徴とする測定計器。
【請求項２４】
前記所望の表示単位が、エンジンＲＰＭであることを特徴とする請求項２３に記載の測定計器。
【請求項２５】
前記所望の表示単位が、空燃比であることを特徴とする請求項２３に記載の測定計器。
【請求項２６】
前記光の弧に表示用にバックライトをもたらすための、ＬＥＤバックライト部分をさらに備えることを特徴とする請求項２３に記載の測定計器。
【請求項２７】
前記高速コントローラへの過電圧保護をもたらすための、電源及び入力保護回路をさらに備えることを特徴とする請求項２３に記載の測定計器。
【請求項２８】
ユーザにシフトライトを提供するための、シフトライトドライバ及びＬＥＤ回路をさらに備えることを特徴とする請求項２３に記載の測定計器。
【請求項２９】
ユーザがエンジン内のシリンダ数を選択できるようにする、シリンダ選択ＢＣＤスイッチをさらに備えることを特徴とする請求項２３に記載の測定計器。
【請求項３０】
前記高速コントローラが、前記レンズ上に表示する前記量の指示のピーク値を表す示度を表示するようにプログラムされることを特徴とする請求項２３に記載の測定計器。
【請求項３１】
ＲＰＭ値を表す光の弧を表示することにより、ユーザがシフトライト値をプログラムできるようにするステップをさらに含むことを特徴とする請求項２３に記載の測定計器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動車におけるディスプレイの提供に関する。より具体的には、これらの自動車の運転者に対する、タコメータおよびその他の測定装置の表示の提供に関する。
【背景技術】
【０００２】
本願は、２００５年１月２１日出願の米国特許出願第１１／０４０，８９７号の一部継続出願である。
【０００３】
エンジンの毎分回転数（ＲＰＭ）を示すために自動車で、計測器用に用いられる通常のモータは、交差コイルタイプのものであり、サイン／コサイン、空心、ダルソンバールメータ／モータと呼ばれることもある。また、一部の計測器は、自動車の運転者に、読みを示すのにポインタを位置決めするための駆動力を与えるためにステッパモータを使用する。
【０００４】
多くの従来システムでは、ポインタは、用いられるメータまたはモータのタイプにより、回転角が限られる。従来システムの他の制限としては、ポインタの入力電圧に対する位置の移動が非線形なことがある。一部の従来システムでは、この非線形性の補正を試みるためにルックアップテーブルが使用されており、一方、他のシステムでは、オフセット補正値を計算する試みとして、マイクロプロセッサが使用されている。
【０００５】
補正テーブルおよびマイクロプロセッサを用いても、これらの従来システムは、ＲＰＭまたはその他の測定値を、タコメータの全範囲にわたって、正確な値の±１．５％より良好に正確な値を表示することができない。これは、フルスケール１２，０００ＲＰＭの読みに対して、１８０ＲＰＭより大きい誤差に等しい。また、この誤差は一定でなく、角度回転の両端ではずっと大きくなるため、通常、最低および最高ＲＰＭ値の表示誤差が最も大きい。
【０００６】
空心メータの他の欠点は、ＲＰＭポインタが実際のエンジンＲＰＭに遅れないようにする、ポインタを急速に振るための空心メータの加速能力である。入力ＲＰＭデータの繰返し率が低いときに、低いエンジンＲＰＭでのポインタのジッタを避けるために、多くのメータの動きの位置の加速率が制限される。
【０００７】
一部の従来システムでは、メータのポインタを照明するために、均一の光源が用いられた。たとえば、いくつかの従来システムでは、ポインタ軸中心に光を通すために、透明材料中に、ポインタ軸に沿って光を反射させる複数の光源が埋め込まれた。その他の従来システムでは、埋込み型光源を含んだポインタに電力入力を印加するために、ポインタ軸に回転ばねが接続された。さらに別のシステムでは、光源と駆動回路の両方を取り付けるために、透明材料を用い、それにより、表面板およびポインタを照明した。さらに別のシステムでは、タコメータおよび他の計器を背面から照らすために複数のＬＥＤが用いられ、これはまた、照明されたディスプレイの中央のポインタを照明した。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、これらすべての従来システムでは、光源の制御は実現されなかった。さらに、光源を設け、保守するためにしばしば構成が複雑であり、かつこれらの構成は組立ておよび保守が困難かつ／またはコスト高であった。
【０００９】
さらに、多くの従来システムでは、ピークＲＰＭのリセット、およびＲＰＭスイッチ機能のプログラミングなどの機能用に、外部スイッチが用いられた。しかし、これらの手法は、タコメータからスイッチモジュールへのケーブル、スイッチモジュールの取り付け部を必要とする複雑な装置となり、外部モジュール、またはタコメータとスイッチモジュールを接続するケーブルに結合されるノイズ干渉が、しばしば発生する。さらに、これらの機械式スイッチは、しばしば、振動、電気的および機械的磨耗、および／または相互接続ケーブルへの損傷、またはケーブルおよび他のシステム構成要素によって生じ得る干渉を受けた。
【課題を解決するための手段】
【００１０】
ディスプレイ上に情報を表示するための指示装置が提供される。エンジンＲＰＭなどの情報は、指示機構として光すなわち光子出力を用いる、アナログタイプの形式で供給される。一実施例では、所望の表示単位の量を示すために目盛り付きレンズの表面の周りを放射状に移動する指示計として、発光ダイオードが用いられる。指示装置上に表示される単位は、（タコメータ表示用に）毎分回転数（ＲＰＭ）とすることができるが、暗い或いは明るい周辺光で見やすい、高速応答表示で表示することが必要な、毎時マイル数（ＭＰＨ）、電圧単位、電流単位、温度単位、圧力単位、流量単位、その他任意の測定単位とすることもできる。
【００１１】
これらの実施形態の多くでは、ＬＥＤは通常、４０００から６０００ＲＰＭの高速度で回転される。さらに迅速な更新速度のために、より高速度を用いることもできる。表示は、目盛り付きレンズの背面に浮かぶ中実の円弧形の光ビームとして見える。ＬＥＤは１回転ごとに、回転の一部分でオンとなるので、更新速度は、ＬＥＤが１回転を完了するのに要する時間の関数となる。
【００１２】
一実施例では、５０００ＲＰＭにおいてＬＥＤの１回転の時間は１２ミリ秒、すなわち８３．３Ｈｚである。この速度では人間の目にはちらつかない。３０Ｈｚより上では人間の目がちらつきを感じなくなるためである。５０００ＲＰＭのＬＥＤ速度では、ゼロから最大ＲＰＭ（または他の選択された単位）まで、１２ミリ秒未満で表示することが可能である。
【００１３】
これらの実施形態の多くでは、ＲＰＭなどの情報の測定された単位量は、タコメータの表面などの計器表面に示され、高い分解能、直線性、および精度で表示される。高速で連続して回転する移動型ポインタを用いて、高精度、高分解能、およびＲＰＭ示度（RPMindicia）のほとんど無制限の回転角度が得られる。ＲＰＭデータは、ほぼジッタなしで、かつ到来するＲＰＭデータに対するフィルタを必要とせずに表示される。ＲＰＭ値はゼロから最大ＲＰＭまで、ほぼ完全な直線性で表示される。
【００１４】
ポインタ照明の制御は、エンジンＲＰＭまたはその他の入力データを表す光の弧として実現される。ピークＲＰＭは、現在のエンジンの動作ＲＰＭが表示されるように、連続的に表示することができる。
【００１５】
これらの実施形態の他のものでは、表示されたピークＲＰＭを選択的にリセットし、ＲＰＭシフトライトターンオンＲＰＭ値をプログラムするのに、非機械式タッチスイッチが用いられる。これらの手法では、ＲＰＭ測定のために高精度で同時入力データを測定し、ポインタおよびＲＰＭスイッチ出力制御を実現するのに、マイクロコントローラが用いられる。また、入力電源保護回路が設けられる。
【００１６】
回転型ポインタＬＥＤ用に、非接触の分離された駆動電圧回路を設けることができ、代替手法では、ライトパイプ(light pipe)／静止ＬＥＤポインタの構成を用いることができる。これらの実施形態の多くでは、正確な速度調節を必要とせずに一定のＲＰＭでポインタを回転させるために、ブラシレスファンモータが用いられる。ＬＥＤポインタは時計方向に回転するだけだが、メータは中央から時計方向と反時計方向の両方に表示することができる。
【００１７】
これらの実施形態のさらに他のものでは、空燃比（Ａ／Ｆ）メータはリッチまたはリーン状態を表すデータを示し、最小および最大Ａ／Ｆデータの両方を同時に示すことができる。さらにユーザは、メータ上の視覚データ用、および外部装置の制御用に、過度にリッチまたはリーンな状態を示すハイ(high)およびロー(Low)アラームをプログラムすることができる。
【００１８】
当業者には、図中の要素は話を簡明にするために示されており、必ずしも原寸に比例して描かれていないことが理解されよう。たとえば、本発明の様々な実施形態を理解しやすくするために、図中の一部の要素の寸法および／または相対位置は、他の要素に対して誇張されている場合がある。また、商業的に実現可能な実施形態において有用または必要な、一般的であるが良く知られた要素は、本発明のこれらの様々な実施形態について、妨げられずに理解を容易にするために、しばしば示されない。また、本明細書で用いられる語句および表現は、本明細書で特定の意味について別段の記載がない場合は、それらの対応する研究分野に関して、そのような語句および表現に与えられる通常の意味をもつことが理解されよう。
【発明を実施するための最良の形態】
【００１９】
図１を参照し、光子タコメータの一実施例について説明する。この装置は、タコメータとして説明されるが、他の任意のタイプの計器またはメータとすることもできることが理解されよう。タコメータは、電源回路１０２、ブラシレスモータ１０６、ＬＥＤ駆動回路１０８、マイクロコントローラ１１０、タコメータ入力回路クランプおよびコンパレータ１１２、タッチスイッチ回路１１４、シリンダ選択ＢＣＤスイッチ１１６、シフトライトドライバおよびＬＥＤ  １１８、モータ軸上のＬＥＤポインタおよびＰＣＢ回路１２０を含む。
【００２０】
本発明の手法では、従来システムの互いに関係するアナログ機能は、除かれている。モータ速度は軽度に調節され、表示値およびピーク表示値の精度には影響しない。この実施例では、モータ速度制御は、単に１０Ｖの最大電圧に調節される。本手法では、ポインタＬＥＤ  １２０、整流ダイオード（図示せず）、およびロータリートランス１２２の二次側１２１が取り付けられる、低コストのブラシレスファンモータ１０６が用いられる。
【００２１】
ディスプレイモータ１０６の速度は、Ｐａｎａｓｏｎｉｃ(登録商標)により製造されるＣＮＢ１００Ｉ０ＲＬセンサなどの光反射型光センサである、光学式スロット付きスイッチを用いて１回転ごとに測定され、またはブラシレスファンモータの整流ホール効果素子から測定される。この同期信号は、マイクロコントローラ１１０による適切な割込み処理を実現し、ＲＰＭ表示範囲が、少なくとも３００°の角度範囲を含むことを可能にするために、持続長さが５０°未満であることが好ましい。マイクロコントローラ１１０は、ポインタＬＥＤおよびシフトライト出力スイッチを制御するために、ディスプレイ同期信号、タイマ割込み、およびエンジンＲＰＭ入力信号からの割込みを受け付ける。これらの信号は互いに一致し得るので、マイクロコントローラ１１０は、同期信号およびタイマが常に処理され、ＲＰＭ入力信号時間周期の捕捉された時間を用いることによってエンジンＲＰＭの割込みが二次的に処理されることを確実にするために、割込み処理を多重化する。ディスプレイ速度は、１回転ごとに計算されるので、モータ速度が変化していても問題にならない。ＲＰＭ表示は、モータ速度が瞬時に大きく変化したときだけに見られる最小の誤差で、常に正しく表示される。モータおよびポインタの慣性質量により、モータ速度の大きな瞬時変化は防止される。
【００２２】
モータ軸上の回転ＬＥＤポインタ１２０には、回転型高周波変圧器１２２を用いて、マイクロコントローラ１１０から電力が供給される。この電力を供給するには、ブラシおよびスリップリングの使用、または中空な軸を有するモータを用い、ＬＥＤを静止して取り付け、望ましい視認位置に光を導くためのライトパイプ(light pipe)、光ファイバ、またはミラーを用いるなどのいくつかの手法がある。
【００２３】
小型ロータリートランス１２２は、ＬＥＤ、ダイオード、および二次巻線と共にＰＣＢが取り付けられる、モータ軸の延長部内に保持されたフェライトビーズから構成することができる。変圧器１２２の一次巻線１１９は静止であり、回転二次巻線１２１を取り囲むモータフレームに取り付けられる。好ましい手法では、一次側１１９は、約６ＭＨｚで駆動され、ＬＥＤに１５〜２５ミリアンペアの電流を誘起する。代替手法では、ロータリートランスは、外径（Ｏ．Ｄ．）０．３５０インチ（０．８８９ｃｍ）、内径（Ｉ．Ｄ．）０．１３５インチ（０．３４３ｃｍ）、厚さ０．０５０インチ（０．１２７ｃｍ）の小型粉末金属コアから構成され、外径１／２インチ（１．２７ｃｍ）未満で厚さが１／１０インチ（０．２５４ｃｍ）未満の極めて薄いロータリートランスとなっている。この実施例では、コアは、Ｍａｇｎｅｔｉｃｓ(登録商標)社から、部品番号７７０３０−ＡＹ−０４で入手可能である。
【００２４】
一次側１１９のドライバは、モトローラ(登録商標)社のＭＣ３３１５２ＰなどのＭＯＳＦＥＴドライバとすることができ、またはプッシュプル構成の個別のトランジスタブリッジドライバとすることもできる。６ＭＨｚの発振器がＭＣ３３１５２Ｐを駆動し、これはマイクロコントローラによりゲートオン／オフされ、ＯＮ−ＳｅｍｉｃｏｎｄｕｃｔｏｒのＭＣ１４０９３クワッドシュミットトリガＮＡＮＤゲートから構成される。好ましくは、ＬＥＤの高速ターンオンを実現するために、変圧器１２２は２ＭＨｚより高速で駆動され、それにより発振器は、ＬＥＤによる正確なＲＰＭ表示のために、３マイクロ秒未満でシャットダウンすることができる。
【００２５】
代替手法では、回転型ライトパイプ(light pipe)と、静止ＬＥＤが用いられ、結果としてＬＥＤ用の駆動回路が簡単になる。マイクロコントローラ１１０は、ライトパイプ(light pipe)の下に配置され小型レンズにより焦点が合わせられたＬＥＤを、直接駆動することができる。この手法では、ロータリートランス１２２、ならびにダイオード、ＬＥＤ、抵抗器、コンデンサ、およびゲート制御された発振器およびドライバ回路を有する回転プリント回路基板（ＰＣＢ）が削除される。さらに、この代替手法を用いると、回転ＰＣＢ上に用いられる小型表面実装ＬＥＤに比べて、静止ＬＥＤは、２，０００〜１０，０００ｍｃｄの超高輝度ＬＥＤとすることができる。
【００２６】
図３を参照して、ライトパイプ(light pipe)ポインタの構成を説明する。ライトパイプ(light pipe)３５４を出た光ビーム３５２は、ミラー３５６によってタコメータ表面へ直角に反射され、回転ＬＥＤが表示するのと同様に光の弧を表示する。光はＬＥＤ  ３５８で発生され、レンズ３６０を透過する。ライトパイプ(light pipe)出力に減衰があっても、ずっと明るいＬＥＤが用いられるので、回転ＬＥＤポインタと同等、もしくは望むならそれより明るくすることもできる。
【００２７】
再び図１を参照すると、マイクロコントローラ１１０はまた、ユーザが１、２、４、６、８シリンダのエンジンシリンダ数、あるいは７２０°、３６０°、１８０°、１２０°、または９０°の入力周期を選択できるようにするための、ＢＣＤスイッチ１１６を有する。オッドファイア（ｏｄｄ  ｆｉｒｅ）タコ入力（たとえば９０°／１５０°Ｖ６エンジン、またはオッドファイアＶ１０エンジン）、および１２シリンダエンジン用の６０°などの他の特徴および機能用に、その他の入力を選択することもできる。マイクロコントローラ１１０を用いることによって、その他の特徴を組み込むこともできる。
【００２８】
マイクロコントローラ１１０の入力は、表示されるエンジンＲＰＭのタコメータ入力１１２、ディスプレイの同期入力、ピークホールドＲＰＭ表示をリセットし、ＲＰＭによりアクチベートされるスイッチ機能を表示およびセットするためのタッチスイッチ入力を含む。
【００２９】
マイクロコントローラ１１０の出力は、回転型ＲＰＭ表示ポインタ用のＬＥＤドライバ１０８、およびエンジンＲＰＭが、タコメータ入力で、プログラムされたスイッチＲＰＭに等しいかまたはそれより大きい場合に、内部ＬＥＤおよび外部負荷を駆動する、ＲＰＭによりアクチベートされるスイッチ出力を含む。
【００３０】
電源入力回路１０２は、入力保護、クランプ、逆極性保護、様々な回路ブロック用のフィルタリングおよび調節からなる。タコメータは、誤ったバッテリ電位または逆のバッテリ極性に耐えられなければならないので、電源入力回路１０２は、電源入力端子での過電圧および逆極性の両方から内部回路を保護するための、いくつかの保護素子を含む。
【００３１】
１０Ｖ電源１０１は、わずか５０ミリアンペアが流れるだけのブラシレスファンモータ１０４に電力を供給する。これはまた、ＬＥＤポインタドライバ回路１０６からアルミニウムケースへ熱を移動するのを助ける。好ましくはファンモータ１０４は、転写マーク、シルクスクリーン、または他の反射材料とすることができる、単一の白色の筋（図示せず）を含む。この筋は、反射型光センサが、ファンモータ位置およびＲＰＭの同期信号を検出するために取り付けられる。
【００３２】
好ましくは、ポインタＬＥＤ  ＰＣＢアセンブリを回転させるモータ１０６は、４０ｍｍ四方で厚さが１０ｍｍのＳＵＭＯＮ(登録商標)のＫＤＥ１２０４ＰＦＢ３−Ｈなどの小型ブラシレスファンモータである。この用途にはファンの羽板を取り除く必要はないが、５０００ＲＰＭで５０ミリアンペア未満が流れるように、回転ハブからブレードアセンブリを取り除いてモータを変更することができる。他のタイプのモータを用い、特にＬＥＤ  ＰＣＢアセンブリを回転させるために設計することもできる。この実施例では、回転モータハブには、マイクロコントローラにディスプレイモータ速度およびゼロＲＰＭ指示基準を示すのに使用される光学式スロット付きスイッチの、光ビームを遮断するために用いられる不透明プラスチックの小さな条片が取り付けられる。このプラスチックの条片は、通常、モータ回転角の５０°未満の同期信号を発生する。この光学式スロット付きスイッチは、フォトトランジスタから隔てられたＬＥＤを含む、ＱＴ  Ｏｐｔｏｅｌｅｃｔｒｏｎｉｃｓ(登録商標)のＱＶＡ１１１３４ＱＴなどのタイプとすることができる。
【００３３】
他の実施例では、回転モータハブに直接取り付けられた反射フィルムと共に、Ｐａｎａｓｏｎｉｃ(登録商標)ＣＮＢ１００１０ＲＬ反射型光センサが用いられる。ポインタ位置とモータ速度を示す反射型光センサと共に、モータは光センサのわずか１ｍｍ上に取り付けられる。この手法により、低プロファイルのモータ同期ピックアップ装置が得られる。同期信号素子は、当業者には知られている、ホール効果、磁気抵抗素子、磁気ピックアップ、または同様な速度検出素子とすることができる。同期信号は、モータ電流の整流用のホール効果素子を含む、モータ制御回路から得ることもできる。モータ同期信号は、フォトトランジスタのコレクタへの１０Ｋ〜１５Ｋオームの抵抗器を介して、マイクロコントローラ割込み（たとえばＰＩＣ１６Ｆ８４Ａマイクロプロセッサの変化ピン１３、またはＰＩＣ１８Ｆ４５８マイクロプロセッサのピン３６）に接続される。フォトトランジスタのエミッタは、接地され、それにより、（フォトトランジスタに隣接する）ＬＥＤからの光ビームがフォトトランジスタを照らすと、フォトトランジスタはバイアスされ、コレクタ端子をほぼゼロボルトに引き寄せる。
【００３４】
マイクロコントローラ１１０は電圧レベルの変化を検出し、それにより、同期信号を処理するための割込みが生じる。この信号は、マイクロコントローラ１１０によってより正確に処理される高速な立ち上がりおよび立ち下がりエッジを得るために、フォトトランジスタ信号を矩形化するための電圧コンパレータを用いて、処理される。同様に、プラスチック条片が、ＬＥＤからフォトトランジスタへの光ビームを遮断すると、フォトトランジスタのバイアスはオフとなり、コレクタ電圧は＋５ボルト近くに上昇する。これはやはり、処理すべきマイクロコントローラ割込みを生じ、リセット期間の始まりを示す。リセット期間の終わりは、マイクロコントローラ１１０が、タコメータ表面上のゼロＲＰＭ目盛りから始まる表示サイクルを開始するときである。エンジンＲＰＭ信号がない場合は、回転ディスプレイはゼロＲＰＭにおいて小さなドットを点滅し、タコメータへの電源オンを示す。エンジンタコメータ信号が生じた後は、タコメータは、ディスプレイＬＥＤをゼロＲＰＭから現在のエンジンＲＰＭまで照らすことによって、現在のエンジンＲＰＭを表示する。光の弧は、ゼロから始まり、現在のエンジンＲＰＭまで延びる。ピークエンジンＲＰＭは絶えず記憶され、ディスプレイ上のピークエンジンＲＰＭにおいて光のドットとして表示される。一実施例では、エンジンが一瞬５０００ＲＰＭまで加速し、次いでアイドルまたは１０００ＲＰＭに戻った場合は、タコメータは、ゼロから１０００ＲＰＭまでの光の弧と、タコメータ表面上の５０００ＲＰＭ目盛りに光のドットを表示する。ピークエンジンＲＰＭを示す、この光のドットは、タコメータが電源オフされるまで、またはピークエンジンＲＰＭをリセットするためにリセット／ＲＰＭプログラミングタッチスイッチが押されるまで、またはエンジンＲＰＭが前に記憶されたピークＲＰＭを超えるまで、ディスプレイ上に残り、最後の場合には次いで新しいピークＲＰＭの位置に光のドットが配置される。また、電源オン時でタコメータ入力信号がないときは、最後のピークＲＰＭも表示され、電源が切られた前の最後のピークＲＰＭを示す。
【００３５】
タコメータ入力回路１１２は、広い範囲の入力信号振幅を受け入れ、ジッタのない正確な出力をマイクロコントローラ１１０に供給する。タコメータ信号は、ゼロ近くから正のバッテリ電圧レベルまでの振幅を有するような点火装置源から来るものとすることができ、または電流制限ＨＥＩタイプのコイルドライバまたは、点火スパークが流れなくなった後の通常のコイル一次側のリングアウトにより、ゼロボルトから４００ボルトピークにもなる信号振幅を生ずる点火コイル端子から直接来るものとすることもできる。
【００３６】
上述のように、マイクロコントローラ１１０には、２つの外部割込み発生源、すなわちディスプレイモータ同期入力と、エンジンＲＰＭタコメータ信号が接続される。タコメータ入力信号は、入力Ｒ−Ｃフィルタと、マイクロコントローラ１１０によって供給されるタコメータ入力周期の１／４として計算される可変インヒビット期間とを用いてデバウンスされる。これは、ノイズを極めて良好に除去し、一方、タコメータ入力周期に対して２：１より大きいエンジンＲＰＭの変化を追跡することが可能である。その他の入力のシリンダ選択スイッチおよびリセット／ＲＰＭプログラミングタッチスイッチは、割込みサービスと干渉しないようにメインルーチンでポーリングされる。
【００３７】
ロータリートランス１２２は、マイクロコントローラ出力を変換して、タコメータ指示計用の回転型ＬＥＤディスプレイを駆動するために用いられる。この信号は、静止駆動回路から、モータ軸上の回転回路へ送出されなければならない。好ましくは、ロータリートランスの一次巻線と二次巻線間に物理的な接触がないようにすべきである。一手法では、ロータリートランスの一次側は、内径約１／４インチ（０．６３５ｃｍ）で高さ約１／４インチ（０．６３５ｃｍ）の薄い巻枠上に巻かれた２０ターンの３６ゲージマグネットワイヤから構成される小型コイルである。この一次巻線はモータフレームに固定され、静止である。ロータリートランスの二次側は、高周波ノイズを抑圧するために一般に用いられる長さ５ｍｍ、直径３．５ｍｍ、内径１．３ｍｍのＰａｎａｓｏｎｉｃ(登録商標)のＥＸＣ−Ｌ３５１３５０などの小型フェライトビーズを含む、ナイロン巻枠上に巻かれる。ナイロン巻枠はまた、モータ軸への取り付け台、および４個の整流ダイオード、２２０ｐｆコンデンサ、３６オーム抵抗器、および表面実装ＬＥＤを含むＬＥＤディスプレイプリント回路基板の取り付け台となる。二次巻線の外径は約３／１６インチ（０．４７６ｃｍ）であり、それにより二次巻線と一次巻枠の間に約１／３２インチ（０．０７９ｃｍ）の空隙が存在するようになる。両巻線は高さが約１／４インチ（０．６３５ｃｍ）で、組み立てられると互いにオーバラップする。一次巻線は５〜６ＭＨｚの駆動電流で励振されるので、二次巻線には電流が誘起され、この電流は全波整流され、ＬＥＤに印加されて約１５〜３０ミリアンペアの順方向ＬＥＤ電流を生じ、これは少なくとも１００ｍｃｄの光子すなわち光出力を発生するためにＬＥＤを駆動するのに十分な電流である。ＬＥＤは、２５°に集束された発散ビームを有するので、明るい昼光の中で数フィートの距離から見た場合でも観測者の目には非常に明るく見える。
【００３８】
表面実装ＬＥＤは、２５°の視角を有し、２０ミリアンペアにて出力が１７０ｍｃｄである、スーパーレッド（super red）出力のＬＵＭＥＸ(登録商標)のＳＳＬ−ＬＸＡ２２８ＳＲＣ−ＴＲ３１などのタイプとすることができる。新しい青色の表面実装ＬＥＤであるＬｉｔｅＯｎ(登録商標)のＬＴＳＴ−Ｃ９３０ＣＢＫＴが利用可能であり、２５°の視角を有し、１８０ｍｃｄの高輝度の光出力を発生するが、フリンジングまたはスター効果が少なく、それにより光子タコメータに用いた場合にずっと良好な正確な光のドットが得られる。回転するＬＥＤは、極めて高速にターンオフできることが非常に重要であり、そうでない場合は光ビームは滲んで見え、ピークＲＰＭのドットは広くなり過ぎて見える。このタコメータに用いられるＬＥＤおよび駆動回路は、通常２マイクロ秒未満でターンオンおよびターンオフすることができる。
【００３９】
本手法はまた、背景の照明用に複数の白色発光ダイオード１０４を用いる。４個のこれらの白色ＬＥＤは、４０ミリアンペア未満の電流で約２５００から１００００ｍｃｄを発生し、タングステンフィラメント型電球に比べて極めて長寿命の、極めて高効率の冷光源であり、またフィラメント型電球の寿命を短くし得る振動の影響を非常に受けにくい。この光は、暗い光でも見えるように、白色のタコメータ表面板の数字およびマーカ線を照明するのに用いられる。これらの白色ＬＥＤは、定格が３０ミリアンペアにて１２００ｍｃｄであり４５°の視角を有するＳｌｏａｎ(登録商標)社のＳＬ９０５ＷＣＥなど、または１２０°の視角と２５００ｍｃｄまでの出力を有するＯｓｒａｍ(登録商標)のＬＷ  Ｅ６７Ｃ−Ｕ１Ｖ１−３Ｃ５Ｄなどのタイプとすることができる。これらは約３．６ボルトの順方向電圧降下を有し、したがって２つの直列対として接続され、＋１０．１ボルトＤＣ電源に接続される。これらは十分な光出力を得るために、それぞれ約１５〜２０ミリアンペアでバイアスされる。
【００４０】
光子タコメータでは、マイクロコントローラ１１０は、いくつかの機能を行う。マイクロコントローラ１１０は、タコ入力信号を処理し、タコフィードバック信号を発生し、タコ割込み入力を制御する。マイクロコントローラによって用いられるその他の入力は、位置およびモータ速度情報用のモータ同期信号、１シリンダから８シリンダまでのエンジンシリンダ数の範囲、および１０シリンダ、１２シリンダ、および望むならオッドファイアエンジンに対して利用可能な符号空間にてユーザがタコメータをプログラムできるようにするＢＣＤスイッチ入力からのものである。ＢＣＤスイッチは、ユーザシリンダ数用に１０ポジションを有するが、より多くの選択範囲の入力用に１６ポジションのスイッチを用いることもできる。他の入力は、シフトライト／ピークＲｐｍリセットスイッチ入力である。この単一の入力はユーザが、シフトライト用の所望のＲＰＭターンオン速度の設定、現在記憶されているシフトライトＲＰＭの点検、現在のピークＲＰＭ示度のリセットなどができるようにするためのいくつかの機能を有する。シフトライト／リセット入力に接続された接触感知型スイッチは、いくつかの動作モードを有する。このスイッチに一度触れて解放すると、タコメータＬＥＤポインタは、現在のシフトライトターンオンＲＰＭ値を表示し、ピークＲＰＭ示度をリセットする。スイッチに触れたまま保つと、約２秒後に現在のシフトライトＲＰＭは約５００ＲＰＭの最低値にリセットされ、ピークＲＰＭ示度はリセットされる。スイッチに触れて解放し、２秒以内に再度触れると、現在のシフトライトＲＰＭはインクリメントを開始し、解放するまで続行する。シフトライト示度がインクリメントするときは、低速で開始し、２秒後に速さが増す。シフトライト示度が高速で増加している場合、スイッチを一時的に解放し、再度押すと、シフトライト示度は再び低速でインクリメントし、次いで２秒後に高速でインクリメントする。シフトライトが６０００ＲＰＭを超えてプログラムされるときは、示度は単一の速度のみでインクリメントする。シフトライトＲＰＭの編集後にスイッチを解放した２秒後に、マイクロコントローラ１１０内のＥＥＰＲＯＭに新しい値が記憶され、タコメータＬＥＤポインタは、現在のエンジンＲＰＭの表示を再開する。他の動作の構成およびシーケンスも用いることもできる。
【００４１】
ＬＥＤポインタ１２０は、ファンモータ軸に取り付けられた分離された回路であり、５０００ＲＰＭで常時回転している。これは、タコメータの表面に値を表示するポインティング素子、またはポインティング素子として光子すなわち光出力を用い視覚的指示のために測定値を表示するための任意のその他の計器を、動作させる独自の方法である。ポインタ１２０は、放出される光の弧を除いて目に見えない。ＬＥＤポインタ１２０は、タコメータ表面板上の値に対応する限られた回転角の間だけオンすなわち照明される。
【００４２】
図２ａ〜ｃ、および２ｄ〜ｆを参照して、タコメータ回路の実施例を説明する。図２ａ〜ｃの回路はＰＩＣ１８Ｆ４５８マイクロプロセッサを使用し、図２ｄ〜ｆの回路はＰＩＣ１８Ｆ１３２０マイクロプロセッサを使用する。両方の回路で、これらの要素のうちの多くの要素および機能は同じであることが理解され、したがって図２ａ〜ｃの要素について詳細に説明する。また、これらの回路はＡ／Ｆ計またはその他のタイプの表示装置を実現するために変形することができ、当業者には知られるように、用いられる構成要素の厳密なタイプおよび構成要素の値は性能を最適化するために調整できることが理解されよう。
【００４３】
Ａ／Ｆ計のケースでは、ほとんどの回路はタコメータ用と同じであるが、入力信号は、タコメータ入力信号の代わりに、通常１０：１未満から１８：１を超えるＡ／Ｆ比の範囲で酸素空気／燃料の比を表す、線形化された出力電圧を有する広帯域酸素センサからの０〜５ボルトのＤＣ信号である。Ｉｎｎｏｖａｔｅ  Ｍｏｔｏｒｓｐｏｒｔｓ(登録商標)のＬＭ−１、またはＡ／Ｆ比を表すようにスケーリングされた出力ＤＣ電圧を有するＤｙｎｏｊｅｔ  Ｒｅｓｅａｒｃｈ(登録商標)社のＷｉｄｅ  Ｂａｎｄ  Ｃｏｍｍａｎｄｅｒなど、一般の酸素センサ増幅器を用いることができる。
【００４４】
タコメータ回路は、２つの部分に構成される。第１の部分は、モータおよびロータリートランス用の電源、ならびに入力および出力回路を有するマイクロコントローラ２２２からなる。第２の部分は、モータ、およびモータ軸に取り付けられた回路からなる。
【００４５】
電源入力回路は、入力保護、クランプ、逆極性保護、様々な回路ブロック用のフィルタリングおよび調節からなる。バッテリ入力は、Ｒａｙｃｈｅｍ(登録商標)  ＲＸＥ０３０などのポリヒューズ入力素子２０２に接続され、この素子はバッテリが逆に接続された場合、または印加された入力電圧が、Ｔｅｃｃｏｒ  Ｅｌｅｃｔｒｏｎｉｃｓ(登録商標)のＰ０３００ＥＣなどのタイプとすることができる電圧サージクランプ素子２０４のブレークオーバ電圧より大きい場合に流れ得る、入力での障害電流を制限する働きをする。
【００４６】
バッテリと接地端子に印加された入力電圧が逆のときは、ダイオード２０６のアノード、およびポリヒューズ２０２を通って電流が流れ、ポリヒューズ２０２のインピーダンスによって制限されるだけとなる。ポリヒューズ２０２の初期抵抗は数オームだけであるが、ポリヒューズ２０２が急速に加熱するにつれて、ポリヒューズ２０２の抵抗はポリヒューズ２０２が数ミリアンペアの電流を維持できるだけになるまで増大し、それによってタコメータおよび配線をバッテリ逆接続から保護する。入力端子から逆電圧が取り除かれるとポリヒューズ２０２の抵抗は減少し、入力端子にバッテリ電圧が正しく接続されたときは正常な電流が流れることが可能になる。
【００４７】
ダイオード２０６は、Ｇｅｎｅｒａｌ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ(登録商標)社のＧＰ１５Ｋなどのシリコン整流器とすることできる。このダイオードは、タコメータ入力回路両端の逆電圧を、通常１ボルト以下に制限し、入力コンデンサおよび電圧レギュレータに保護を与える。ダイオード２０６は、入力端子両端に分路として接続されるので、逆極性に対して保護するようにダイオードが入力に直列に接続された場合のような、順方向電圧降下は生じない。ダイオード２０６を分路接続することで、通常０．７ボルトの順方向ダイオード降下がないことにより、低い動作入力電圧が得られ、通常動作時でのダイオード２０６の消費による入力電力損失が低減される。
【００４８】
シダクタ(sidactor)素子２０４は、通常は入力端子両端に対して開路となる、電圧クランプ素子である。入力電圧がトリガ閾値電圧より上昇すると素子はターンオンして通常２ボルト未満の順方向または逆方向クランプ電圧を生じ、５０アンペアを超えるサージ電流に対する能力がある。ダイオード２０６が最大逆電圧を通常１ボルト未満に制限するので、シダクタ２０４は正の電圧サージをクランプするだけでよい。入力電源端子に素子２０４がターンオンする電圧よりも高い高電圧が印加されると、シダクタ２０４はターンオンし、入力電圧源からシダクタ２０４およびポリヒューズ２０２を通して大きな電流を生じさせる。この大電流は、ポリヒューズ２０２の抵抗が急速に増大し、電流はシダクタ２０４の保持電流より低くなるので持続時間が非常に限られ、シダクタ２０４は次いで非導通状態にリセットされ、それにより過電圧がおさまった後、ポリヒューズ２０２がその低抵抗状態にリセットすることが可能になる。Ｐ０３００ＥＣ素子の通常のターンオン電圧は約２９ボルトであり、これが入力電源部品に印加される最大電圧となる。
【００４９】
電源入力は２２０マイクロファラッドのコンデンサ２０８によってフィルタリングされ、次いで電源および接地入力端子に配置された同相モードチョーク２１０によってフィルタリングされる。次いで電源は、この実施例では２２０マイクロファラッドの値の第２のフィルタコンデンサ２１２、および１マイクロファラッドのタンタルコンデンサ２１４に印加され、さらに低ドロップアウトの＋５ボルト電圧レギュレータ２１６に印加される。レギュレータ２１６は、Ｍｉｃｒｅｌ  Ｅｌｅｃｔｒｏｎｉｃｓ(登録商標)のＭＩＣ２９５０−ＢＺ０５などのＬＤＯレギュレータ、またはＮａｔｉｏｎａｌ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ(登録商標)のＬＰ２９５０ＡＣＺ−５．０である。５ボルトレギュレータ２１６の出力は、１０マイクロファラッドのタンタルコンデンサ２１８、および０．１マイクロファラッドのコンデンサ２２０によってフィルタリングされ、マイクロコントローラ２２２、オペアンプ２２４ａ、および２２４ｂへ供給される。
【００５０】
マイクロコントローラ２２２は、入力電源端子の近くに配置された、追加の電源バイパスコンデンサ２２６、２２８、２３０、および２３２を有する。電源入力はまた、通常１０から１０．２ボルトの調節された出力用にバイアスされた可変電圧レギュレータ２３４に供給される。抵抗器２３６および２３８は、１０ボルト出力用に、レギュレータ２３４へのフィードバックを設定する。この可変電圧レギュレータ２３４は、Ｎａｔｉｏｎａｌ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ(登録商標)のＬＭ３１７などのタイプである。１０ボルトに調節された電源は、白色ＬＥＤバックライト、シフトライトＬＥＤ、ブラシレスファンモータ、およびＬＥＤポインタドライバ回路に接続される。入力電圧はまた、この実施例では４７０オーム抵抗器である、タコ入力プルアップ抵抗器２４０に接続される。
【００５１】
電源は、通常の自動車およびオートバイで用いられる、１２から１８ボルトの電圧範囲のバッテリ入力用に構成することができる。１０ボルトＤＣ出力用に設定することができる、可変出力タイプのＬＭ２９３０またはＬＭ３１７などの集積回路レギュレータが、バッテリ電圧を調節する。一実施例では、８ボルトのレギュレータＬＭ２９３０が用いられ、ＬＭ２９３０の接地リードから接地への、３個のそれぞれ１Ｎ４１４８信号用シリコンダイオードが含まれる。これらのダイオードは、接地より２．１ボルト高い、電圧レギュレータ用の接地基準をもたらし、それにより出力は１０．１ボルト出力に調節されるようになる。
【００５２】
ＬＭ３１７可変レギュレータ２３４は、調節された出力電圧を設定および供給するために用いられる。１０．１ボルトに調節された電位は、ディスプレイモータの正端子２３３、およびディスプレイモータフレームに取り付けられたロータリートランス３１９の一次側を駆動する、ＭＣ３３１５２ＰデュアルＭＯＳＦＥＴドライバ２９５に印加される。入力バッテリ電圧は、この実施例ではＰＩＣ１８Ｆ４５８であるマイクロコントローラ２２２、反射型光センサＬＥＤおよびフォトトランジスタ、およびマイクロコントローラ２２２に接続された制御スイッチに、非常に正確な＋５ボルトを供給する、ＭＩＣ２９５０−５低ドロップアウト電圧レギュレータ２１６に印加される。ＭＩＣ２９５０−５  ＬＤＯ  ２１６を用いることにより、ＤＣバッテリ電位が約５．５ボルトに低くなるまで、マイクロコントローラ２２２が機能することが可能になる。光子タコメータは、９ボルトより低い入力で正確なＲＰＭ表示を維持する。
【００５３】
同相モードチョークは、タコメータ回路へまたはタコメータ回路から、高周波のノイズが通過するのを抑圧するために、電源入力リードに接続される。電圧レギュレータの入力で、１つは同相モードチョークの前に、１つはその後に接続された、２つの２２０または３３０マイクロファラッド電解コンデンサによって、十分な電源フィルタリングが得られる。
【００５４】
１０ボルト電源は、値が２００オームでありＬＥＤ電流を約１５ミリアンペアに制限する、電流制限抵抗器２４２、２４４、および２４６を介して、白色ＬＥＤバックライトに接続される。白色ＬＥＤ２６０、２５０、２５２、２５４、２５６、および２５８は、２０００ｍｃｄを超えて発光し、出力角度が１２０°のＯｓｒａｍ(登録商標)のＬＷ  Ｅ６７Ｃ−Ｕ１Ｖ１−３Ｃ５Ｄなどのタイプである。白色ＬＥＤを用いることにより、白熱電球に比して入力電流要件が低減され、ほとんど熱の発生なしで動作し、振動に対してより耐性がある。
【００５５】
１０ボルトは、ブラシレスファンモータ１０６に供給され、このモータには５０ミリアンペアの低電流が流れ、またＬＥＤポインタドライバ回路１０６からアルミニウムケースに熱が移動するのを助ける。好ましい実施形態では、ファンモータ１０６は、単一の白色の筋を有し、これは、反射型光センサ２６０がファンモータ位置およびＲＰＭの同期信号を検出するために取り付けられる、転写マーク、シルクスクリーン、または他の反射材料とすることができる。白色の反射性の筋が、一実施例ではＰａｎａｓｏｎｉｃ(登録商標)のＣＮＢ１００１０ＲＬなどの反射型光センサである、センサ２６０の上を通過すると、センサ２６０のＬＥＤからの光は、同じパッケージ内のフォトトランジスタへ反射され、それによりフォトトランジスタがバイアスされ、１５Ｋオーム抵抗器２６２に接続されたコレクタ端子を接地電位近くまで引き寄せる。センサ２６０のコレクタはまた、抵抗器２２４ｃを介して、非反転入力のピン５でオペアンプ２２４ｂの入力に接続される。オペアンプ２２４ｂの反転入力（ピン６）は、抵抗器ペア２２４ｅと２２４ｆによって、電源の１／２すなわち２．５ボルトにバイアスされる。ピン５の入力がピン６の２．５ボルトより低下すると、オペアンプ２２４ｂのピン７の出力は、ほぼゼロボルト近くにスイングし、マイクロコントローラ２２２の割込みピン（ピン３６）で検出される。オペアンプ２２４ｂのピン７の出力からオペアンプ２２４ｂのピン５の非反転入力へ接続された抵抗器２２４ｄによって、オペアンプ２２４ｂの入力から出力へのヒステリシスがもたらされる。フィードバック抵抗器２２４ｄは、出力の状態が変化するとき、オペアンプ２２４ｂの入力において入力同期信号の立ち上がり時間が高速でなくても、出力エッジが跳ね返りを防ぐ。
【００５６】
オペアンプ２２４ａおよび２２４ｂは、同期入力およびタコ信号入力回路用の低速コンパレータとして用いられる。これらのオペアンプ２２４ａおよび２２４ｂは、たとえばＯｎ−ＳｅｍｉｃｏｎｄｕｃｔｏｒのＭＣ３３０７２ＡＰなどの、電圧スルーレートが１３ボルト／マイクロ秒の中速度デバイスである。
【００５７】
図４を参照すると、マイクロコントローラに印加される同期入力４０２が示され、好ましくは４０〜５０°の持続長さを有する。ＬＥＤポインタターンオンのタイミングは、同期信号期間の最後であり、これはタコメータの表面板上のゼロ示度に位置する。図は、１０７１ＲＰＭでのＬＥＤオン時間、および６０００ＲＰＭでのＬＥＤオン時間を示す。高速の６０００ＲＰＭのタコメータ入力が、低速の１０７１ＲＰＭのタコメータ入力と共に示される。
【００５８】
再び図２ａ〜ｆを参照すると、タコ入力は入力回路に印加される前に、入力信号の高周波成分を減衰させるためにＲＦＣチョーク２６５に接続される。１００ボルトピークより低い低振幅タコ入力信号に対しては、信号の経路は、４７０オーム抵抗器の抵抗器２４０、および１Ｎ４１４８ダイオードのダイオード２８２を通って、オペアンプ２２４ａの反転入力のピン２へ流れる。タコ入力信号が接地電位近くのときは、抵抗器２４０からの電流は、ダイオード２８３およびＲＦＣ  ２６５を通って、接地近くへ分流される。オペアンプ２２４ａの非反転入力のピン３は、＋５ボルトと接地に接続された２Ｋオーム抵抗器の分圧抵抗器ペア２６４と２６６によって、２．５ボルトの基準電圧に接続される。オペアンプ２２４ａの反転入力のピン２にはまた、ダイオード２６８、および４．７Ｋオーム抵抗器の抵抗器２７０を通して接続されるマイクロコントローラのピン３３からのフィードバック信号が接続される。フィードバック信号は、マイクロコントローラ２２２によってタコ入力信号のトリガエッジが処理された後に、コンパレータ入力でのノイズ耐性のための１／４周期のインヒビット時間をもたらす。
【００５９】
タコ入力回路は、オペアンプ２２４ａの周りに出力ピン１から非反転入力ピン３へ接続された正帰還ループを用いるが、これだけでは点火コイル一次側からの高振幅タコ入力信号を用いる場合に、信頼性が十分でない場合がある。電圧コンパレータとして構成されたオペアンプ２２４ａのピン２のタコ入力信号が、２．５ボルトの基準電圧より上昇すると、ピン１のオペアンプ出力は低くなり、これはマイクロコントローラの２つのピンすなわちピン１９および３７に接続される。
【００６０】
マイクロコントローラ２２２のピン１９は、タイマ捕捉／比較入力であり、タコ入力周期を高精度で捕捉するのに用いられる。マイクロコントローラ２２２の第２のピン３７はタコ入力に接続され、割込み入力ピンとして用いられる。ＰＩＣ１８Ｆ４５８マイクロコントローラ２２２は、低優先度および高優先度割込みの両方を使用するので、この割込み入力ピンには低優先度割込みが割り当てられる。マイクロコントローラ２２２は、タコ周期を測定するためにタコ入力割込みを直ちにサービスする必要はなく、なぜならこれは割込みルーチンが割込みを読み出してそれをリセットすることができるようになるまで、捕捉タイマ中に記憶されるからである。このようにして、タコ周期を正確に測定する一方で、タコメータのＬＥＤポインタを制御するためのタイミングの精度は犠牲にならない。
【００６１】
タコ入力トリガエッジがデバウンスされ正しいと判定されるとすぐに、マイクロコントローラ入力でのタコ入力の立下りエッジで、マイクロコントローラのピン３３の１／４周期出力がハイとなり、これによってオペアンプ２２４ａの反転入力のピン２は、４ボルトより高くバイアスされる。このバイアスにより、実際のタコ入力信号の持続時間に関わらず、１／４タコ周期の間、オペアンプの出力のピン１がローのままであることが確実にされる。オペアンプ２２４ａの入力ピン２において、ハードウェアによるデバウンスも組み込まれている。ピン２でタコ入力信号がハイになると、これは５．１ボルトツェナーであるツェナーダイオード２８４によってクランプされ、コンデンサ２８５のコンデンサはこの電圧まで充電される。入力においてタコ入力信号がローになると、ダイオード２８２は、コンデンサが入力端子から放電するのを防止する。コンデンサ２８５は、４７Ｋオーム抵抗器の抵抗器２８６によって放電され、それにより、入力ピン２を約７００マイクロ秒の間ハイに保持し、入力トリガにノイズまたは跳ね返り信号がある場合に、ポイントタイプのデバウンスを可能にする。
【００６２】
タコ入力が点火コイル一次側に接続される場合に予想されるように、タコ入力信号が高振幅の信号のときは、入力信号の経路はこの信号用に、自動的に変更される。この変更は、タコ入力信号がツェナーダイオードのダイオード２８７を降伏させる振幅に達したときに開始され、逆導通電流が、ＲＦＣ  ２６５、ダイオード２８７、１０Ｋの抵抗器２８８、ダイオード２８９を通って、オペアンプ２２４ａのピン２へ流れる。
【００６３】
図５を参照し、点火コイルに由来するタコ入力信号の電圧波形について説明する。点火コイルからのタコ入力信号５０２は、高振幅のタコ信号を供給する。図は、電流制限による電圧スパイク５０４、コイルターンオフ時の高い電圧スパイク５０６、スパークプラグ電流滞留期間５０８、およびスパーク電流が終わるときに生じる電圧スパイク５１０を示す。図はまた、オペアンプ２２４ａのピン１および２の電圧を示す。
【００６４】
電流はまた、別の経路を通ってダイオード２９０からＭＯＳＦＥＴ  ２９１のゲートへ流れ、コンデンサ２９２を充電する。ＭＯＳＦＥＴ  ２９１のゲートのバイアスが約３ボルトに達すると、ＭＯＳＦＥＴ  ２９１はターンオンし、ＭＯＳＦＥＴ  ２９１のオン抵抗が下がって、ダイオード２８３のアノードとダイオード２８２のアノードの接続点の電圧を接地近くに引き寄せ、それによって抵抗器２４０がオペアンプ２２４ａのピン２をバイアスするのを防止する。ここでこの動作モードは、低入力振幅信号の経路が、オペアンプ２２４ａにタコ信号を供給するのを抑止する。
【００６５】
タコ入力信号の唯一の経路は、１００ボルトのツェナーダイオード２８７の逆バイアスにより、１０Ｋオームの電流制限抵抗器２８８、およびダイオード２８９を通って、オペアンプ２２４ａの入力ピン２へ送出される。次いでツェナーダイオード２８４は、オペアンプ２２４ａのピン２の入力をクランプし、クランプされたダイオード２８９のカソードによってＭＯＳＦＥＴ  ２９１のゲートの入力をクランプし、その結果ＭＯＳＦＥＴ  ２９１の最大ゲート電圧は５．８ボルトとなる。高振幅のタコ入力信号が入力に再度印加される限り、ＭＯＳＦＥＴ  ２９１はオンにバイアスされたままとなり、１Ｍオーム抵抗器の抵抗器２９３を通してのコンデンサ２９４の長い放電時間により、その状態を保つ。低振幅タコ入力のもとでは、ＭＯＳＦＥＴ  ２９１はオフのままであり、低振幅タコ信号経路の動作には相互作用を及ぼさない。ピン３３を介してマイクロコントローラ２２２によって供給されるタコフィードバックは、コイル動作型のタコ入力の際には、非常に重要である。
【００６６】
点火コイル入力信号は、１００ボルト近くの場合でも低振幅入力信号に対しては無視されなければならない。これは、点火コイルがＨＥＩ電流制限型点火によって駆動される場合、スパークを発生するためにコイルがターンオフされる前に、点火が電流制限されるため、非常に高い入力信号レベルを生じ得るからである。このノイズ電圧は無視されるが、コイルがターンオフされるとき、電圧は２５０ボルトより高く上昇し、一部のシステムでは通常４００ボルトまで上昇する。この高振幅信号のみが、タコ入力周期に対する正しいトリガ信号である。点火コイル信号の持続時間は、通常５〜２０マイクロ秒と非常に短く、スパーク電流がプラグ間隙の間に流れ始めた後に数回リンギングを生じ、スパーク電流が流れ終わった後に再び、ただし低い振幅でリンギングを生じる。この短い持続時間は、マイクロコントローラ２２２からの１／４周期タコフィードバック信号によって延長され、それによってリンギングをマスクし、長いクリーンな信号をマイクロコントローラに供給し、かつタコフィードバック信号がターンオフするまで、ハードウェアデバウンスコンデンサであるコンデンサ２８５を充電されたままに保つ。このフィードバックの方法は、不安定なタコメータ動作を防止し、誤ったピークＲＰＭ測定が記憶されるのを防止する。１／４周期タコフィードバックの間、マイクロコントローラ２２２のタコ入力割込みピン３７もディスエーブルされる。
【００６７】
前述のように、マイクロコントローラ２２２に接続された２つの外部割込み発生源、すなわち、ディスプレイモータ同期入力、およびエンジンＲＰＭタコメータ信号がある。タコメータ入力信号は、入力Ｒ−Ｃフィルタと、マイクロコントローラ２２２によって供給されるタコメータ入力周期の１／４として計算される可変インヒビット期間とを用いてデバウンスされる。これは、ノイズを極めて良好に除去し、一方、タコメータ入力周期に対して２：１より大きいエンジンＲＰＭの変化を追跡することが可能である。ＲＰＭ入力周期は、ＲＰＭ周期の極めて正確な測定のために、ＰＩＣ１８Ｆ４５８マイクロコントローラ２２２内の捕捉タイマを用いて捕捉される。その他の入力のシリンダ選択スイッチ、およびリセット／ＲＰＭプログラミングタッチスイッチは、割込みサービスに干渉しないように、（本明細書内の別のところで説明する）Ｍａｉｎルーチンでポーリングされる。＋５ボルト電源が約４．６ボルトより低いときにマイクロコントローラ２２２のパワーオンリセットまたはブラウンアウトリセットを行うために、マイクロコントローラ２２２は、Ｌｉｎｆｉｎｉｔｙ (登録商標)のＬＸ７００１などの低電圧リセットＩＣに接続することができる。ＰＩＣ１８Ｆ４５８マイクロコントローラ２２２が用いられる場合は、マイクロコントローラ２２２の内部のブラウンアウトリセットがあるので、リセットＩＣは不要である。
【００６８】
マイクロコントローラ２２２は、１８Ｆ４５８の出力ピン１８を通して回転型ＬＥＤディスプレイを制御し、この出力がハイのときは、このピンに接続されたＮＰＮトランジスタはオンにバイアスされ、それによりＮＡＮＤゲート２９４ａのピン８および９の入力がローとなり、ピン１０およびピン６がハイとなり、ＮＡＮＤ発振器が動作可能となり、ＭＣ３３１５２Ｐドライバ２９５を駆動する。ＮＡＮＤ出力ピン４の発振器信号は、ＮＡＮＤインバータ２９４ｃのゲートピン１および２に接続され、その出力ピン３はＭＣ３３１５２Ｐドライバ２９５の入力ピン２に接続され、一方発振器の非反転信号は第２のドライバの入力ピン４に接続される。この接続により、２つのドライバＩＣピンが反対位相で駆動され、それにより一方の出力がローのときに他方の出力がハイとなり、逆も同様である。この駆動手法によってロータリートランス３１９の一次側は、±１０ボルトの振幅で駆動される。ドライバ出力ピン７とロータリートランス一次リードの間に接続された、０．００１マイクロファラッドのコンデンサ２９６は、変圧器３１９が飽和まで駆動されるのを防止し、変圧器入力リード両端にＤＣ電圧が印加されるのを阻止する。変圧器一次側とＭＣ３３１５２Ｐに直列の３３オーム抵抗器は、最大出力電流を３１０ミリアンペアに制限する。ロータリートランス３１９のインピーダンスおよび６ＭＨｚの周波数により、発振器駆動には、回転型ＬＥＤディスプレイへの最大出力駆動電流を得るためにロータリートランスを完全に駆動するのに、結合コンデンサを約０．００１マイクロファラッドとする必要がある。
【００６９】
この実施形態では、ロータリートランス３１９は、マイクロコントローラ出力信号を変換して、タコメータ指示計用の回転型ＬＥＤディスプレイを駆動するために用いられる。この信号は、静止駆動回路から、モータ軸上の回転回路に送出されなければならない。好ましくは、ロータリートランスの一次および二次巻線間で、物理的な接触がないようにすべきである。一手法では、ロータリートランス３１９の一次側は、内径約１／４インチ（０．６３５ｃｍ）で高さ約１／４インチ（０．６３５ｃｍ）の薄い巻枠上に巻かれた、２０ターンの３６ゲージマグネットワイヤで構成される小型コイルである。この一次巻線は、モータフレームに固定され、静止である。ロータリートランスの二次側は、高周波ノイズを抑圧するために一般に用いられる長さ５ｍｍ、直径３．５ｍｍ、内径１．３ｍｍのＰａｎａｓｏｎｉｃ(登録商標)のＥＸＣ−Ｌ３５１３５０などの小型フェライトビーズを含む、ナイロン巻枠上に巻くことができる。ナイロン巻枠はまた、モータ軸への取り付け台、および４個の整流ダイオード、２２０ｐｆコンデンサ、３６オーム抵抗器、および表面実装ＬＥＤを含むＬＥＤディスプレイプリント回路基板２９８の取り付け台となる。
【００７０】
二次巻線の外径は、約３／１６インチ（０．４７６ｃｍ）であり、それにより二次巻線と一次巻枠の間に約１／３２インチ（０．０７９ｃｍ）の空隙が存在するようになる。両巻線は高さが約１／４インチ（０．６３５ｃｍ）で、組み立てられると互いにオーバラップする。一次巻線は５〜６ＭＨｚの駆動電流で励振されるので、二次巻線には電流が誘起され、この電流は全波整流され、ＬＥＤに印加されて約１５〜３０ミリアンペアの順方向ＬＥＤ電流を生じ、これは少なくとも１００ｍｃｄの光子すなわち光出力を発生するためにＬＥＤを駆動するのに十分な電流である。ＬＥＤは、２５°に集束された発散ビームを有するので、明るい昼光の中で数フィートの距離から見た場合でも観測者の目には非常に明るく見える。表面実装ＬＥＤは、２５°の視角を有し、２０ミリアンペアにて出力が１７０ｍｃｄである、スーパーレッド出力のＬＵＭＥＸ(登録商標)のＳＳＬ−ＬＸＡ２２８ＳＲＣ−ＴＲ３１などのタイプとすることができる。青色の表面実装ＬＥＤであるＬｉｔｅＯｎ(登録商標)のＬＴＳＴ−Ｃ９３０ＣＢＫＴが利用可能であり、２５°の視角を有し、１８０ｍｃｄの高輝度の光出力を発生するが、フリンジングまたはスター効果が小さく、それにより光子タコメータに用いた場合により良い光のドットが得られる。ＬＥＤ励起駆動信号は、非常に急速にターンオフされ、そうでない場合は光ビームは滲んで見え、ピークＲＰＭのドットは広くなり過ぎて見える。このタコメータに用いられるＬＥＤおよび駆動回路は、通常、２マイクロ秒未満でターンオンおよびターンオフすることができる。
【００７１】
プログラマブルＲＰＭスイッチを示すために用いられるＬＥＤ  ３０５は、通常、ｓｕｐｅｒｂｒｉｇｈｔｌｅｄｓ．ｃｏｍ(登録商標)のＲＬ５−Ｒ８０３０などの、８０００ｍｃｄ以上の出力の赤色ＬＥＤである。このＬＥＤは、エンジンＲＰＭが、プログラムされたＲＰＭスイッチの値以上のときにターンオンする。このＬＥＤは、タコメータ表面板の後部に取り付けられ、前面のレンズを通して見られる。駆動回路は、２Ｋオームの抵抗器を介してマイクロコントローラ２２２に接続された、スマートパワーＭＯＳＦＥＴトランジスタ２９９ａからなる。マイクロコントローラ２２２は、３９０オームの電流制限抵抗器３０１を介してＲＰＭスイッチＬＥＤのカソードに接続された、出力パワーＭＯＳＦＥＴ  ２９９ａのゲートを駆動する。ＭＯＳＦＥＴのドレイン端子は、３アンペアまでの負荷を駆動するために外部的に使用可能である。Ｇｅｎｅｒａｌ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ(登録商標)の１Ｎ４００４などの保護ダイオード３０３が、ＲＰＭスイッチＬＥＤ  ３０５の両端に反対方向に並列に接続される。このダイオードは、ＭＯＳＦＥＴドレイン端子とバッテリの間に誘導性負荷が接続された場合に起こり得る、大きな逆バイアス電圧がＲＰＭスイッチＬＥＤ  ３０５の両端に印加されるのを防止する。ＬＥＤのアノードは、＋１０．１ボルト電源に接続される。パワーＭＯＳＦＥＴは、ＳＴ−Ｍｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ(登録商標)のＶＮＰ１４Ｎ０４などのタイプとすることができる。このデバイスは、電流制限、誘導性キックバック電圧の自己クランプ、および過温度保護を有する。
【００７２】
マイクロコントローラ２２２のタコ入力でのノイズを除去するために、マイクロコントローラ内で別の防止およびデバウンスルーチンが用いられる。これは、捕捉された現在のタコ周期ＲＰＭ測定と、前のタコ周期測定とを比較するルーチンである。現在のタコ入力周期が、前の周期の２倍を超える場合は、１つの点火周期内でエンジンが２倍を超えて加速することは不可能であるので、現在のタコ周期は無効と宣言され、次の有効なタコ周期までタコメータ表示は前のＲＰＭ指示で維持される。通常のプロストックレース用エンジンは１つの点火周期から次までに、アイドリングより上の任意の速度から、１．５倍を超えて加速することはできない。
【００７３】
上述のように光子タコメータでは、マイクロコントローラ２２２は、いくつかの機能を行う。先に説明した機能は、タコ入力信号の処理、タコフィードバック信号の発生、およびタコ割込み入力の制御である。マイクロコントローラ２２２によって用いられるその他の入力は、位置およびモータ速度情報用のモータ同期信号、１シリンダから８シリンダまでのエンジンシリンダ数の範囲、および１０シリンダ、１２シリンダ、および望むならオッドファイアエンジンに対して利用可能な符号空間にてユーザがタコメータをプログラムできるようにするＢＣＤスイッチ入力からのものである。ＢＣＤスイッチはユーザのシリンダ数用に１０ポジションを有するが、より多くの選択範囲の入力用に１６ポジションのスイッチを用いることもできる。
【００７４】
他の入力は、シフトライト／ピークＲｐｍリセットスイッチ入力３０７である。この単一の入力はユーザが、シフトライト用の所望のＲＰＭターンオン速度の設定、現在記憶されているシフトライトＲＰＭの点検、現在のピークＲＰＭ示度のリセットなどができるようにするためのいくつかの機能を有する。シフトライト／リセット入力３０７に接続された接触感知型スイッチは、いくつかの動作モードを有する。このスイッチに一度触れて解放すると、タコメータＬＥＤポインタは、現在のシフトライトターンオンＲＰＭ値を表示し、ピークＲＰＭ示度をリセットする。スイッチに触れたまま保つと、約２秒後に現在のシフトライトＲＰＭは約５００ＲＰＭの最低値にリセットされ、ピークＲＰＭ示度はリセットされる。スイッチに触れて解放し、２秒以内に再度触れると、現在のシフトライトＲＰＭはインクリメントを開始し、解放するまで続行する。シフトライト示度がインクリメントするときは、低速で開始し、２秒後に速さが増す。シフトライト示度が高速で増大している場合、スイッチを一時的に解放し、再度押すと、シフトライト示度は再び低速でインクリメントし、次いで２秒後に高速でインクリメントする。シフトライトが６０００ＲＰＭを超えてプログラムされるときは、示度は単一の速度のみでインクリメントする。シフトライトＲＰＭの編集後にスイッチを解放した２秒後に、マイクロコントローラ内のＥＥＰＲＯＭに新しい値が記憶され、タコメータＬＥＤポインタは、現在のエンジンＲＰＭの表示を再開する。
【００７５】
モータ／ＬＥＤポインタ位置を検出することによって発生されるＳｙｎｃ入力３０９は、オペアンプ２２４ｂのピン７から、マイクロコントローラ２２２の入力割込みピン３６に入力される。図４に示されるように、同期信号の持続長さは約４０〜５０°であることが望ましいが、いくつかの理由によりそれより短くまたは長くなり得る。同期信号は、タコメータのゼロ示度用の基準として働き、これがＬＥＤポインタがターンオンされる位置である。ＬＥＤポインタ制御信号は、ゼロＲＰＭ示度において、同期信号の立ち上がりエッジでマイクロコントローラ２２２のピン１８に出力される。ＬＥＤポインタ駆動信号は、トランジスタ３１３のベースをオンにバイアスする、１０Ｋオーム抵抗器の抵抗器３１１に接続され、トランジスタ３１３はターンオンしてコレクタ端子、およびＦａｉｒｃｈｉｌｄ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ(登録商標)のＣＤ４０９３ＢＣＮのクワッド２入力ＮＡＮＤゲートである、シュミットトリガ２入力ＮＡＮＤゲート２９４ａのピン８および９を接地電位近くにクランプする。ＮＡＮＤゲート２９４ａの入力ピン８および９が接地にクランプされると、ＮＡＮＤゲート２９４ａのピン１０は＋５ボルトになり、ＮＡＮＤゲート２９４ｂのピン６をバイアスし、それがＮＡＮＤゲート２９４ｂのピン４でのＮＡＮＤゲートの発振を可能にするように働く。１．５Ｋオーム抵抗器のフィードバック抵抗器３１５は、ＮＡＮＤゲート２９４ｂのピン４と５の間に設けられ、ＮＡＮＤゲート２９４ｂの入力ピン５に接続された４７ピコファラッドのコンデンサのコンデンサ３１７を充電および放電するためのフィードバックをもたらす。ＮＡＮＤゲート２９４ｂのシュミットトリガ入力はヒステリシスをもたらし、それにより入力は、低閾値電圧と高閾値電圧の２つの別々の入力電圧で、出力をトリガするようになる。これら２つの閾値は、ＶＤＤ電源の約１／２を中心にして対称に、すなわちＶＤＤ＝５ボルトでは、２ボルトの低閾値と３ボルトの高閾値に配置される。このゲート制御された発振器は、出力ピン４において約５〜６メガヘルツで発振し、別のＮＡＮＤゲート２９４ｃの入力ピン１および２に接続された信号によって、ＮＡＮＤゲートによってピン３で反転される。発振器からの出力は互いに１８０°反対位相であり、ＯＮ−Ｓｅｍｉｃｏｎｄｕｃｔｏｒ(登録商標)のＭＣ３３１５２などのＭＯＳＦＥＴドライバＩＣ２９５に接続され、あるいは十分な電流駆動と動作速度を有する任意の同様なＭＯＳＦＥＴドライバを使用することができる。
【００７６】
発振器出力は、ドライバ２９５のピン２および４に接続される。ドライバ２９５の出力ピン７は、ロータリートランス１２２の一次巻線からＤＣ電圧を阻止するための、０．００１マイクロファラッドのコンデンサ２９６に接続される。変圧器３１９の一次巻線の他端は、ロータリートランス１２２の二次巻線によってＬＥＤポインタに励起駆動電圧を供給するロータリートランスへの最大電流駆動を許容し得るレベルに保つための、３３オーム抵抗器の電流制限抵抗器２９７を通して他方のドライバ出力に接続される。
【００７７】
発振器がオンにバイアスされている限りにおいて、ＬＥＤポインタは照明され、ゼロから現在のＲＰＭ示度までの光の弧を表示することになる。マイクロコントローラ２２２は、どちらのモードが動作可能であるかに応じて、ゼロ示度からタコ入力値の現在のＲＰＭまで、またはシフトライトＲＰＭ値で、ＬＥＤポインタをオンに保つ。最高ＲＰＭが表示された後、マイクロコントローラ２２２はＬＥＤポインタをターンオフする。これは、ＬＥＤポインタの範囲終端の滲みを避けるために、非常に速やかに起こらなければならない。通常、ターンオフは３マイクロ秒未満で起こり、これはＬＥＤポインタの行程の約４ＲＰＭ未満である。マイクロコントローラ２２２がターンオフすると（Ｎａｔｉｏｎａｌ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ(登録商標)の２Ｎ２２２２、またはＰ１００などのＮＰＮ型のトランジスタ３１３を介して）、発振は停止し、駆動出力は、変圧器３１９の一次側の一方のリードに＋１０ボルト、変圧器３１９の一次側の他方のリードにゼロボルトを供給する。ＤＣ電圧は直列コンデンサ２９６によって阻止され、それによりＬＥＤ駆動電圧は直ちに停止する。ＬＥＤポインタ回路２９８には、ショットキーダイオードブリッジ３２７の両端に、２２０ピコファラッドのコンデンサの非常に小さいフィルタがあるだけであり、これは１マイクロ秒未満で順方向ＬＥＤバイアス電圧より低くまで放電する。
【００７８】
さらにＬＥＤポインタ、シフトライトＬＥＤ、およびバックライトＬＥＤの自動減光用に、回路３０９ａを用いることができる。可変電圧レギュレータからの出力は、図２ｆおよび図２ｂに示されるように、ＭＣ３３１５２ドライバＩＣおよびシフトライトＬＥＤに電力を供給する。出力電圧は、完全に暗い条件で最小約６ボルト、完全な周辺光の条件で約１０ボルトに調整されるべきである。まず光のない状態で、抵抗器３０９ｂ、３０９ｅ、および３０９ｈの値を選択することにより、ＬＥＤポインタおよびシフトライトの両方の最小ＬＥＤ輝度に対する最小出力電圧が設定される。次いで、完全な光の状態で第１の抵抗器の値を選択することにより、このケースでは約１０〜１１ボルトの、最大ＬＥＤ出力に対する最大出力が設定される。フォトダイオードＤ１の光に対する感度は、抵抗器３０９ｅおよび３０９ｈによって設定される。ツェナーダイオード３０９ｈの両端に生じた電圧は、可変電圧レギュレータ３０９ｃの端子を調整するために印加され、それにより、光入力が増大するに従ってレギュレータ３０９ａの出力の電圧が増加される。ツェナーダイオード３０９ｈは、電圧レギュレータ出力を最大約１１ボルトにクランプする。コンデンサ３０９ｇは、入力光の変化に対する出力電圧変化の応答を遅くするように機能する。これにより、急速に変化する光レベルに対して、ディスプレイポインタの輝度の変化が滑らかで緩やかになる。ユーザは、フォトダイオードへの開口を部分的に覆うことによってある程度輝度を制御することができ、ＬＥＤの輝度は任意の周辺光レベルで低減させることができる。
【００７９】
ＬＥＤポインタの動作は、ドライバ発振器がイネーブルされ、一次巻線に印加された３〜６メガヘルツの周波数でロータリートランスが励振されると開始される。ロータリートランスの一次巻線は、モータ軸に取り付けられモータフレームまたは一次巻線と接触せずに回転する二次巻線に非常に近接して、ファンモータハウジングに取り付けられる。
【００８０】
ロータリートランスの一次側によって発生された磁界は、一次および二次巻線間の狭い空隙にまたがって結合される。この磁気結合により二次巻線を通って電流が誘起され、この電流はショットキーダイオードブリッジ３２１および３２３によって全波整流され、次いでＤＣ電流はＬＥＤ両端に印加されてＬＥＤを順方向バイアスしてオンにする。３６オームの抵抗器３２５は、最大ＬＥＤ駆動電流を制限し、一方、約４．８〜５ボルトＤＣの電位のダイオードブリッジの電圧出力を可能にし、ポインタＬＥＤを通して約１５〜３０ミリアンペアを駆動する。この場合では、ロータリートランスはＬＥＤポインタに約８０ミリワットの電力を供給する。これは、Ｐａｎａｓｏｎｉｃ(登録商標)のＥＸＣ−ＥＬＳＡ３９またはＥＸＣ−ＥＬＳＡ３５などのフェライトビーズコアを用いて作製できる小型のロータリートランスによって実現することができる。
【００８１】
簡略化された軸結合を用い、より短いロータリートランスが実現されるのは、Ｍａｇｎｅｔｉｃｓ(登録商標)の７７０３０−ＡＹ−０４粉末金属コアであり、またはＭ０８０４Ｔ１２５などのモリブデンパーマロイコアでもよい。Ｍａｇｎｅｔｉｃｓ(登録商標)のコアは、軸結合部がコアを貫通するのを可能にし、その周辺部に一次巻線を含む。この巻線とコアは、３６ゲージマグネットワイヤを２０ターン巻いた場合、わずかに直径約０．４００インチ（１．０１６ｃｍ）、厚さ０．０７５インチ（０．１９０５ｃｍ）である。内径は、軸結合部の外径を０．１２５インチ（０．３１７５ｃｍ）にすることを可能とする。軸結合部は、ナイロンまたはザイテルなどの非磁性絶縁材料から作製される。軸結合部には、ＬＥＤポインタＰＣＢが取り付けられ、ＰＣＢの下側の肩部に直接巻かれた二次巻線を有する。次いで、このポインタＰＣＢ／軸結合部アセンブリは、一次コアを貫通するファンモータ軸の端部に圧入され、二次巻線を、一次巻線の上０．００５〜０．００８インチ（０．０１２７〜０．０２０３）以内に位置決めする。図９ｈに示されるように、軸結合部は、結合を非常に近接させるために、肩部に取り付けられたＭａｇｎｅｔｉｃｓ(登録商標)、およびコア上に直接巻かれた巻線を有することができる。
【００８２】
マイクロコントローラ２２２はまた、マイクロコントローラ２２２のピン２５にシフトライト制御用の出力を有する。測定されたタコ入力ＲＰＭが、プログラムされたシフトライトＲＰＭ値に等しいかそれより大きい場合、マイクロコントローラ２２２の出力ピン２５は＋５ボルトになり、２Ｋオーム抵抗器の抵抗器２９９ｂを通して、スマートパワーＭＯＳＦＥＴ  Ｑ２のゲートを駆動する。トランジスタ２９９ａのゲートが＋５ボルトにバイアスされると、トランジスタ２９９ａはターンオンして、ドレイン端子からソース端子の接地へ電流を吸い込む。トランジスタ２９９ａのドレイン端子は、外部ＬＥＤ、白熱電球、ソレノイドその他の負荷に接続することができ、これらはＲＰＭ入力がプログラムされたＲＰＭ値を超えるときにスイッチオンすることになる。
【００８３】
タッチスイッチ機能は、Ｑｕａｎｔｕｍ  Ｒｅｓｅａｒｃｈ  Ｇｒｏｕｐ(登録商標)のＱＴ１１３またはＱＴ１１３Ｈなどの集積回路３０９ｉによって行われる。集積回路３０９ｉは、可動部または露出した電極がないことが好ましい。集積回路３０９ｉは、ユーザがプリセットシフトライト値を、プログラムされたシフトライト値での光の弧として見ることができるようにすること、ピークＲＰＭ値をリセットすること、およびユーザがシフトライト値をリセットできるようにすることなどの機能を実現する。この集積回路は、非金属性の表面を通して検出できる、近接、または接触を検出可能なディジタル容量デバイスである。これは絶えず自己較正を行い、単一の外部キャパシタを必要とする。コンデンサ３０９ｊは、計量器レンズ７０２の小径の電極にも接続される、基準接触電極容量を設定する。コンデンサ３０９ｋは、集積回路３０９ｉのＶＤＤおよびＶＳＳ電源リード間の、５ボルト電源上の電源バイパスコンデンサである。ユーザが電極上のレンズに触れると、集積回路３０９ｉからの出力は、マイクロコントローラ２２２のピン２０またはマイクロコントローラ２２２のピン３の状態を変化させる。マイクロコントローラ２２２は、ピーク表示値をリセットするため、および／またはシフトライト値をプログラムするまたは見るために、ユーザがこのスイッチに触れたときを検出するためにこのピンをポーリングする。集積回路３０９ｉはまた、出力に、集積回路３０９ｉが正しく機能していることをユーザが監視することができるハートビート機能を有する。ハートビート信号は、誤って接触が検出されないように、マイクロコントローラ２２２によってデバウンスされなければならない。デバウンスルーチンは、本明細書で別に説明する。
【００８４】
光子タコメータによって、より優れかつ改良された分解能とＲＰＭ表示精度が実現される。これは、ＬＥＤポインタの線形的な一定速度、およびこの実施例ではＰＩＣ１８Ｆ４５８であるマイクロコントローラの１０ＭＩＰＳ動作の高速スループットの結果による。４０ＭＨｚの内部クロック速度で、ほとんどの命令は命令当たり１００ナノ秒で実行する。マイクロコントローラは、外部の１０ＭＨｚの水晶を、内部の４０ＭＨｚに増すための内部位相ロックループ発振器を有する。この速度では、タコメータ入力信号を捕捉し、このこの時間周期を測定する能力は、極めて正確であり通常±１００ナノ秒以内である。
【００８５】
さらに、分解能が±１００ナノ秒の内部タイマが、ＬＥＤポインタ用のオン時間周期を制御する。唯一の不正確さは、通常のＬＥＤオン時間周期のための約４〜５クロックサイクルすなわち４００〜５００ナノ秒の高優先度割込みを処理するための待ち時間によるものであり、それにより分解能は±３００ナノ秒となる。ＬＥＤポインタの分解能と精度は、マイクロコントローラタイマおよび割込み制御の分解能に対して相対的である。所与のＬＥＤポインタ回転速度５０００ＲＰＭでは、ポインタは１２ミリ秒ごとに１回転となる。図１Ａのように、ゼロから１２０００ＲＰＭの最大タコメータＲＰＭ指示が、タコメータの表面に３００°の角度にわたって表示される場合は、１２０００ＲＰＭを、３００°の回転時間で割ることになる。これより３００°は、３６０°の８３．３３３３％であり、したがって、ＬＥＤポインタがゼロから１２，０００ＲＰＭまで、すなわち５０００ＲＰＭのモータ速度で３００°だけ回転するには、０．８３３３３×回転時間１２ミリ秒＝９．９９９９９ミリ秒となる。ＬＥＤは一定速度で動いているので、ＲＰＭ指示は、ＲＰＭディスプレイの線形関数である。これが、１００ＲＰＭが、６、０００、または１２，０００ＲＰＭ、またはゼロから最大値までの任意の速度と同じ高精度で表示できる理由である。
【００８６】
ＲＰＭディスプレイの分解能は９．９９９９９ミリ秒の時間周期での３００°の回転角にわたるＬＥＤポインタ時間に対して相対的であり、すなわちＲＰＭ当たりの時間で表すと、０．００９９９９９９９９秒÷１２，０００ＲＰＭ＝表示されたＲＰＭ当たり８００ナノ秒となる。マイクロコントローラの分解能は約±３００ナノ秒なので、これにより、１ＲＰＭ（８００ナノ秒／ＲＰＭ）より良い、可能なＲＰＭディスプレイ分解能が得られる。このディスプレイは、正確に値を示すためにポインタを移動させるための従来の手法を用いる、どの従来のタコメータまたはどの計器の分解能をもはるかに超えている。ＯＮ−Ｓｅｍｉの部品番号ＣＳ４１９２の高精度タコメータ空心ドライバは、分解能が０．３５％、精度が±１．２％しかない。光子タコメータは、±０．００００１％または１／１２，０００の分解能を有し、これは０．０００２％または１２，０００ＲＰＭで±２ＲＰＭより良い精度に等しい。
【００８７】
図７を参照して、タコメータ表面７００の一実施例を説明する。表面７００は、ＲＰＭの読み、タッチスイッチ７０２、およびシフトライトＬＥＤ  ７０２を含む。ディスプレイは、光の弧７０６を示す。この場合、回転型ＬＥＤ  ７０２は、６０００ＲＰＭを示している。ＬＥＤは、０ＲＰＭでターンオンし、６０００ＲＰＭでターンオフして、入力タコ信号の現在のＲＰＭ値を示す。記録された最大ＲＰＭは、図７のディスプレイの８０００ＲＰＭ近くの光のドットとして表示される。
【００８８】
上述のように、本手法で用いることができる１つのタイプの計器は、Ａ／Ｆ計である。ここで図６を参照して、Ａ／Ｆ計の動作の一例を説明する。この実施例では、空燃比メータは、記憶された最小および最大Ａ／Ｆ値からの空燃比を計器表面に表示する。Ａ／Ｆ比が１４．７：１すなわち正規組成のときは、ＬＥＤは計器の中央で短時間オンとなる。Ａ／Ｆ比入力値が減少してリッチ状態を示すときは、記憶された最大Ａ／Ｆ値から、または直前に最後に表示された値から現在の入力値までオンのままとなり、光の弧を生成する。Ａ／Ｆ比入力値が増大してリーン状態を示す場合は、記憶された最小Ａ／Ｆ値または直前に最後に表示された値で始まってオンとなり、次いでオンのままとなって現在の入力値までの光の弧を生成し、そこでＬＥＤはターンオフする。最低および最高Ａ／Ｆ比は共に、計器上に光のドットとして表示される。Ａ／Ｆ入力値が安定になったときは、光の弧の軌跡は縮小し、それにより現在値が光の弧から現在の入力値での光のドットに変化し、これは１秒以上の時間で生じる。Ａ／Ｆ比の最小および最大値は、計器がリセットされるまでＥＥＰＲＯＭに記憶される。ユーザはまた、タコメータでのＲＰＭによりアクチベートされるスイッチと同様な、アラーム出力機能をプログラムすることができる。ユーザは、ＥＥＰＲＯＭに記憶された最大リーンＡ／Ｆ比、および最小リッチＡ／Ｆ比の値を選択することができる。入力Ａ／Ｆ比の値がプログラムされた限度を超えると、出力トランジスタがターンオンされ、外部アラーム、およびＡ／Ｆ計内の内部アラームＬＥＤを照明する。
【００８９】
図６では３つの例が示され、３つの光のドットとして定常入力Ａ／Ｆ値、および減少、増加するＡ／Ｆ入力を示している。定常Ａ／Ｆ入力の場合は、最低ポイント６０２、最高ポイント６０６、および現在入力値６０４を、計器上の光のドットとして表示するために、ＬＥＤが数マイクロ秒間ターンオンされるのが示されている。ＬＥＤは、Ａ／Ｆ比がリッチかリーンであるかに対して相対的に、光の弧６０８または６１０がＡ／Ｆ入力値の変化の方向に移動するのに従って、現在の入力Ａ／Ｆ比を示すためにずっと長くターンオンされる。これらの場合、最小値が６１２、または最大値が６１４である。通常、１４．７の正規組成を中心とする９．９から１９．５の範囲の図示のスパンは、３００°であるが、３００°未満の任意の値とすることができる。
【００９０】
ＬＥＤポインタは一方向、通常は時計方向に回転しているにもかかわらず、ＬＥＤは最大または最小記憶値、または直前の動作での最後の表示値でターンオンを開始し、次いで現在または変化する入力値の方向へ移動し、リッチなＡ／Ｆ比入力状態を示すように反時計方向に移動し、あるいはリーンなＡ／Ｆ比入力状態を示すように時計方向へ移動するように見える。本手法では、ＬＥＤポインタは常に一定速度で一方向のみに回転しているにもかかわらず、ＬＥＤは、入力データの増減を示すために、メータまたは計器の表面を任意の方向に移動するように見えるようにすることができる。１つの回転方向で一定速度で回転するＬＥＤを有する単一の計器上で、時計方向、反時計方向、および望むなら両方向に、計器表面上に入力データを示すように計器を構築することができる。
【００９１】
ここで図８ａ〜ｂを参照して、空燃比計の表面８０２の実施例を説明する。図８ａおよび８ｂの表面は、読みがある値より上昇するとき、またはある値より低下するときにアクチベートされる、ハイ(high)アラームＬＥＤ  ８０４およびロー(Low)アラームＬＥＤ  ８０６を含む。表面８０２のそれぞれはまた、光の弧８０８を含む。
【００９２】
図８ａを参照すると、光の弧８０８は、Ａ／Ｆが１２．８から１４．１までの回転型ＬＥＤがオンしている所にあり、現在の入力値、およびＬＥＤターンオフポイントに最大Ａ／Ｆを示し、入力Ａ／Ｆ比は減少し矢印の方向へ移動する。ポイント８１０ａでは、光の弧８０８の端が８１０の方向へ移動しているように見える。光のドット８１０は、１２．５：１の最小Ａ／Ｆを示し、次いでＬＥＤはターンオフする。
【００９３】
図８ｂを参照すると、光の弧８０８は１２．５（最小Ａ／Ｆ）から１２．９までオンとなり、Ａ／Ｆ比が増加していることを示し、矢印の方向に移動する。最大Ａ／Ｆが、ポイント８１２に示される。光の弧８０８はポイント８１４では固定されて見え、そこでＬＥＤがオンとなり１２．５の最小Ａ／Ｆを示す。
【００９４】
次に図９ａ〜ｈを参照すると、タコメータのハウジングの図が示されている。電源、マイクロコントローラ、および入力／出力回路は、タコメータハウジングから離れて取り付けられ、単一の８ピンコネクタによってタコメータハウジングに接続することができる。これによりタコメータハウジングをずっと小さくすることができ、タコメータハウジングにはディスプレイモータ、光学式スロット付き同期スイッチ／反射型光センサ、ＲＰＭスイッチＬＥＤ、ならびにロータリートランスおよび軸に取り付けられたディスプレイＬＥＤおよびロータリートランス回路を含むことができる。また統合型タコメータを得るために、すべてのタコメータ回路を同じハウジング内に取り付けることもできる。タコメータ回路のマイクロコントローラの部分を離して取り付けることにより、ユーザが、シリンダ選択スイッチ、ならびに、電源入力、信号入力および出力線の配線にアクセスするのが容易になる。タコメータへの電気的接続には、コネクタまたは端子板ありまたはなしの、ばらの配線を用いることができる。２枚のＰＣＢ回路トポロジーはさらに、表面実装部品および構造を用いて単一のＰＣＢに減らすこともできる。
【００９５】
計器は、プラスチックまたはガラスのレンズ９０８を有し、その背面には計器の示度を印刷することができる。アルミニウムのフロントベゼル９１６は、ポイント９２８でアルミニウムの深絞り缶９１８にローラ据え込みされる。デルリンまたはザイテルのリング９０４は、レンズ９０８を保持するようにベゼル９１６に圧入される。モータ９２４は、ＬＥＤポインタＰＣＢを回転させる。ＰＣＢアセンブリ９２０は、モータ９２４に電力を供給し、モータ同期信号３０９、２６５のタコ入力信号を処理し、ＬＥＤ駆動信号３０７を３１１で出力する。スペーサ９２２は、部品間に間隔をもたせるために設けられる。モータ軸９４２と軸結合部９３２は、モータをＰＣＢアセンブリ９１０に結合する。図９ｅに示されるように、（粉末金属コア９３８を有する）一次巻線９３６、および二次巻線９３４は、接着剤９４０によってモータハウジング９３０に接続することができる。図９ｆに示すように、（フェライトビーズコア９４４を有する）一次巻線９３６は、外側がハウジング９３０に取り付けられ、二次巻線９３４は、内側の巻線が軸結合部９３２に取り付けられる。
【００９６】
軸結合部は、ナイロンまたはザイテルなどの非磁性絶縁材料から作製される。軸結合部には、ＬＥＤポインタＰＣＢが取り付けら、ＰＣＢの下側の肩部に直接巻かれた二次巻線９３４を有する。次いで、このポインタＰＣＢ／軸結合部アセンブリは、一次コアを貫通するファンモータ軸の端部に圧入され、二次側を、一次巻線の上０．００５〜０．００８インチ（０．０１２７〜０．０２０３ｃｍ）以内に位置決めする。図９ｈに示されるように、二次巻線９３４は磁気コア上に直接巻くことができ、次いでモータケースに取り付けられた一次巻線９３６で取り囲むことができる。
【００９７】
次に、図１０ａ〜１０ａａを参照して、（図２ａ〜ｆの）回転ＬＥＤのハードウェアを制御する手法の一実施例を説明する。これは手法の一実施例であり、当業者には知られるように、同じまたは同様な結果を実現するのに異なるルーチン、変数、プログラミング構造、およびプログラミングシーケンスを用いることができることが理解されよう。この手法は、ＲＰＭまたはその他の任意の物理的または機械的データの正確な指示を可能にする。ＬＥＤは、正確な時間の間ターンオンされ、次いでターンオフされる。ユーザには、回転ＬＥＤは表示するデータが増大しているときは成長するバーに見え、あるいはデータが最大に示される場合は、データが小さくなるときバーを縮小するように見える。計算は、１０ＭＨｚのクロックに基づく。したがって、計算される最小時間はディスプレイでの持続時間で１００ナノ秒である。回転ＬＥＤで任意のものを表示するためには、物理的または機械的データは、タイミング事象または表示されるクロック時間の持続長さに変換されなければならない。
【００９８】
装置に電源が供給された後、ステップ１００１のプログラムセグメント”ＩＮＩＴ”から実行が開始する。このセグメントで、プログラムは、データの捕捉、計算、および表示に用いられるすべての必要なレジスタおよびＩ／Ｏを設定する。ステップ１００２で、すべての割込みはターンオフされる。これにより、すべてのステップが、所定の順序で実行されることが保証される。次のステップ１００３は、ＴＩＭＥＲ０を高優先度割込み発生源として初期化し、ＴＩＭＥＲ１、およびＴＩＭＥＲ３が低優先度割込み発生源として初期化される。さらに、ＴＩＭＥＲ１は、割込みがその特定のＩ／Ｏピンに生じたとき、Ｔｉｍｅｒ１クロックを捕捉するための捕捉入力として初期化される。
【００９９】
また、割込み用のＥＤＧ０およびＥＤＧ１の遷移も初期化される。さらに、ハードウェア用に必要な入力および出力として、ＰＯＲＴＳが初期化される。
【０１００】
すべての必要なレジスタを設定した後、ＩＮＩＴセグメントは、ステップ１００４で、ＤＡＴＡ  ＲＡＭをすべて０に初期化する。ステップ１００５では、ＯｄｄＦｉｒｅプログラムルーチンをターンオフするために、ＯｄｄＦｉｒｅＩｎｐｕｔフラグ、およびＯｄｄＦｉｒｅＦｉｒｓｔフラグが０にセットされる。ステップ１００６では、「ＣＹＬＩＮＤＥＲ  ＳＥＴＴＩＮＧ  ＳＷＩＴＣＨ」が読み込まれる。スイッチがＰＯＲＴＡで読み込まれ、次いで１２ＣＹＬ、８ＣＹＬ、６ＣＹＬ、４ＣＹＬ、２ＣＹＬ、１ＣＹＬ、６ＯＤＤ、および２ＯＤＤとしてデコードされる。デコード後は、プログラムは、その特定のスイッチ設定用のサブルーチンへ進む。ステップ１００７でプログラムは、タイマカウントでの１２０００ＲＰＭの値を、ＭａｘＲｐｍレジスタへコピーする。これを達成するために、以下の式が用いられる。
【０１０１】
（１／（（１２０００ＲＰＭ／６０秒）×（ＣＹＬ／２）））／０．００００００４＝タイマカウントでのＭａｘＲｐｍ
ＯｄｄＦｉｒｅモードでは、ＯｄｄＦｉｒｅの捕捉および計算用に用いられる特定ルーチン内の、ＯｄｄＦｉｒｅルーチンを実行するために、ＯｄｄＦｉｒｅＩｎｐｕｔ、およびＯｄｄＦｉｒｅＦｉｒｓｔフラグが「１」にセットされる。
【０１０２】
ステップ１００８ではＩｎｉｔＣｏｕｎｔモジュールに値５０がロードされ、次いでステップ１００９でＬＥＤがターンオンされる。このステップの後、ステップ１０１０でＳｙｎｃ入力がテストされる。Ｓｙｎｃ入力がハイの場合、Ｓｙｎｃ入力が再びローになるのを待つ。（ステップ１０１１で）Ｓｙｎｃ入力がローになれば、ステップ１０１２でＩｎｉｔＣｏｕｎｔｅｒがデクリメントされる。次いでステップ１０１３で、ＩｎｉｔＣｏｕｎｔの値が０かどうかテストされる。値が０でない場合、ルーチンは再びステップ１０１０で開始する。しかし、ＩｎｉｔＣｏｕｎｔが０に等しい場合は次いで、（ステップ１０１４で）ＰｅａｋＲｐｍ、（ステップ１０１５で）ＴａｃｈＴｉｍｅ、（ステップ１０１６で）ＴａｃｈＴｅｍｐが、最低ＲＰＭすなわちタイマカウントで０ｘＦＦＦＦＦＦに初期化され、（ステップ１０１７で）ＳｈｉｆｔＲｐｍのカウントが１にセットされる。次いでステップ１０１８で、ＳｈｉｆｔＷｒｉｔｅ、ＳｈｉｆｔＭｏｄｅ、ＳｈｉｆｔＳｅｔフラグ、およびステップ１０１９で、ＮｏＥＥＷｒｉｔｅおよびＴａｃｈＬｏｓｔフラグが０にセットされる。
【０１０３】
次にプログラムは、様々なサブルーチンを呼び出す。最初に、ステップ１０２０で呼ばれるサブルーチンは、ＥＥＲｅａｄである。ステップ１０２１で、ＥＥＰＲＯＭからＳｈｉｆｔＲｐｍ用の値が読み出され、式（ＳｈｉｆｔＴｉｍｅ＝（ＲｐｍＣｏｎｓｔａｎｔ／ＳｈｉｆｔＲｐｍ））を用いて、シフトライトをターンオンまたはターンオフするのを決定するのに用いられる、ＳｈｉｆｔＲｐｍにコピーされる。次に呼ばれるサブルーチンは、ＮｏＳｈｉｆｔＬｉｍｉｔ（ステップ１０２２）、およびＣａｌｃＳｈｉｆｔＯｆｆ（ステップ１０２３）である。これらのルーチンは、１２０００ＲｐｍであるＳｈｉｆｔ  Ｓｅｔ  Ｌｉｍｉｔ、および、ＳｈｉｆｔＲｐｍ−１００であるシフトターンオフＲｐｍを計算する。
【０１０４】
シフトライトのターンオフまたはターンオンを計算した後、プログラムはＥＥＰＲＯＭ内の次のデータレジスタにあるＰｅａｋＤｉｓｐｌａｙの値を読み出し、これはステップ１０２４のＰｅａｋＲｅａｄサブルーチンで行われる。ＥＥＰＲＯＭから読み出された値は、次のサブルーチンで用いられる。サブルーチン（ステップ１０２５）は、タイマカウントでのＰｅａｋＲｐｍを計算し、タイマカウントでの差ＰｅａｋＲｐｍ−ＬｅｄＯｎＴｉｍｅを計算する。次いでＴａｃｈＣｏｕｎｔが２０にセットされ（ステップ１０２６）、ＳｈｉｆｔＤｅｂＣｏｕｎｔ用のカウンタが５０にセットされる（ステップ１０２７）。さらにステップ１０２８で、ＲｅｓｅｔＴｍｒ、ＤｂｌＳｐｅｅｄ、およびＲＳｗｔｃｈ＿Ｄｂフラグがそれらの初期値にセットされる。
【０１０５】
次のプログラムセグメントは、高優先度および低優先度割込みを再びイネーブルし（ステップ１０２９）、ＩｎｉｔＣｏｕｎｔｅｒに値４を再ロードし（ステップ１０３０）、２秒の時間遅延ルーチンを開始する。このルーチンでプログラムはまず、同期信号のハードウェアＳｙｎｃハイ入力をチェックする。入力がローの場合は、ルーチンは、Ｓｙｎｃハイが検出されるまで待つ（ステップ１０３１）。ハイを検出した後、プログラムは今度は、ＨｉＣａｌｃＳｙｎｃルーチンを呼び出す（ステップ１０３２）。このルーチンではプログラムは、タイマカウントでの最大ＲｐｍＭａｘ、ＰｅａｋＲｐｍ、および最大ＳｈｉｆｔＲｐｍを表示するのに用いられる、タイマカウントでの、３００°の弧のＳｙｎｃＤｉｓｐｌａｙを計算する。Ｓｙｎｃ入力がローに変化すると（ステップ１０３３）、プログラムはＩｎｉｔＣｏｕｎｔｅｒを１だけデクリメントし（ステップ１０３４）、ＩｎｉｔＣｏｕｎｔｅｒがゼロカウントに達したかどうかを調べる。ＩｎｉｔＣｏｕｎｔｅｒが０でなければ（ステップ１０３５）、次いでループは再びステップ１０３１で開始する。そうでない場合は、プログラムは続いてステップ１０３６で、ＬＥＤをターンオフする。次いで、３００°の弧のＳｙｎｃＤｉｓｐｌａｙの計算用の新しいＳｙｎｃＴｉｍｅを計算するために、ＨｉＣａｌｃＳｙｎｃ計算用のサブルーチンが再び呼び出される（ステップ１０３７）。次のサブルーチンは、タイマカウントでのＳｈｉｆｔＲｐｍを計算する（ステップ１０３８）。
【０１０６】
ＳｈｉｆｔＲｐｍを計算した後、ＳｈｉｆｔＴｅｓｔフラグがセットされ（ステップ１０３９）。ＴａｃｈＬｏｓｔフラグがリセットされ（ステップ１０４０）、ＩｎｉｔＣｏｕｎｔｅｒに値６がロードされる（ステップ１０４１）。ＳｈｉｆｔＲｐｍが１．５秒間表示され、それでプログラムおよびハードウェアが正しく動いていることが再び検証される。
【０１０７】
次に呼ばれるプログラムセグメントは、ステップ１０４２のＭａｉｎである。このプログラムセグメントはループであり、ｃｌｒｗｄｔコマンドで開始し、Ｍａｉｎループの始点へのコマンド分岐で終了する。Ｍａｉｎは、ＬｏｗＩｎｔｅｒｒｕｐｔルーチンおよびＨｉＩｎｔｅｒｒｕｐｔルーチンによって、いつでも割込みが可能である。
【０１０８】
ステップ１０４３で、Ｍａｉｎサブルーチン内で、最初に呼び出されるサブルーチンはＨｉＣａｌｃＳｙｎｃサブルーチンであり、このルーチンは新しいＳｙｎｃＴｉｍｅを計算するのに用いられ、タイマカウントでの３００°の弧のＳｙｎｃＤｉｓｐｌａｙ時間を計算する。Ｍａｉｎループは、ＳｈｉｆｔＭｏｄｅフラグをチェックする（ステップ１０４４）。このフラグがセットされると、プログラムは、現在のＳｈｉｆｔＲｐｍ設定を表示するために、ＳｈｉｆｔＴｉｍｅをＴａｃｈＴｉｍｅにコピーする（ステップ１０４５）。次にステップ１０４６でＰｅａｋＲｐｍがクリアされ、装置にとって可能な最低ＲＰＭを示す０ｘＦＦＦＦＦＦにセットされる。
【０１０９】
（ステップ１０４４で）ＳｈｉｆｔＭｏｄｅフラグがセットされなかった場合は、プログラムは続いてステップ１０４７で、ＤｉｓｐｌａｙＴｉｍｅサブルーチンを呼び出す。最初にチェックされるのは、ＳｈｉｆｔＭｏｄｅフラグである（ステップ１１００）。フラグがセットされている場合は、最大３００°の弧のＤｉｓｐｌａｙＴｉｍｅのためのタイマカウントを計算するのに、ＴａｃｈＴｉｍｅの代わりに、ＳｈｉｆｔＴｉｍｅが用いられる（ステップ１１０１）。ステップ１１００で、ＳｈｉｆｔＭｏｄｅフラグがセットされてない場合は、ＴａｃｈＴｉｍｅが計算に用いられる。次いで計算の結果が、ＬｅｄＯｎレジスタにコピーされる（ステップ１１０２）。ステップ１１０６を実行する前に、プログラムはステップ１１０３で、ＳｈｉｆｔＴｅｓｔフラグをチェックする。ＳｈｉｆｔＴｅｓｔフラグをセットできる唯一の場所は、先に述べたＩＮＩＴルーチン内である。
【０１１０】
ステップ１１０６では、ＳｈｉｆｔＲｐｍに応じてシフトライトがターンオンまたはオフされ、移動型ポインタディスプレイを利用して表示される。プログラムは、スイッチ押圧とスイッチ解放、すなわちスイッチアクチベーションとディアクチベーションのときに５０ミリ秒間デバウンスされるシフトスイッチをテストする。デバウンススイッチルーチンは、後により詳細に説明する。シフトスイッチが一度押され、最初の０．７５秒間に解放されると、ＰｅａｋＲｐｍは、０ｘＦＦＦＦＦＦ、すなわち可能な最低ＲＰＭにセットされ、ＥＥＰＲＯＭに記憶された現在のＳｈｉｆｔＲｐｍが１秒間表示される。シフトスイッチが０．７５秒間に再度押されると、ＳｈｉｆｔＲｐｍは増加されることになる。最初の１秒間は、ＳｈｉｆｔＲｐｍは２００ＲＰＭ／秒の速度で増加され、次いでこの最初の１秒の後は、ＳｈｉｆｔＲｐｍは８００ＲＰＭ／秒の速度で増加され、それにより設定ポイントに達するのが早くなる。２００ＲＰＭ／秒の速度は、５０００ＲＰＭのポインタ速度で、ポインタの約２．４ＲＰＭ／回転に等しい。８００ＲＰＭ／秒の速度は、５０００ＲＰＭのポインタ速度でのポインタの、約９．４ＲＰＭ／回転に等しい。スイッチが一瞬解放され、０．７５秒経過する前に再度押された場合は、ＳｈｉｆｔＲｐｍは再び２００ＲＰＭ／秒の低速度で増加する。この方法により、遅い速度で増加させ、次いでずっと速い速度で最終設定まで非常に短い時間でスピードアップさせることが可能になる。ＳｈｉｆｔＲｐｍを最小ＲＰＭにリセットするためには、シフトスイッチを１．７５秒より長く押さなければならない。
【０１１１】
ステップ１１０６で、ＳｈｉｆｔＭｏｄｅフラグがテストされる。ＳｈｉｆｔＭｏｄｅフラグがセットされていない場合は、ＲＳｗｔｃｈ＿ＤＢフラグをテストする（ステップ１１０７）。ＲＳｗｔｃｈ＿ＤＢフラグがセットされている場合は、ステップ１１０８でＳｈｉｆｔＭｏｄｅフラグがセットされる。これは、プログラム中でＳｈｉｆｔＭｏｄｅフラグをセットできる唯一の場所である。ＳｈｉｆｔＭｏｄｅフラグをセットした後、ステップ１１０９でＲｅｓｅｔＴｍｒフラグが初期化され、ステップ１１１０でＲｅｓｅｔＴｉｍｅＯｕｔが３×０．２５秒のカウントで初期化される。
【０１１２】
次のステップは、ステップ１１１１でＴｉｃＴｉｍｅ０をクリアすることである。これはＳｈｉｆｔＲｐｍの設定、およびＰｅａｋＲｐｍを０ｘＦＦＦＦＦＦにリセットするための準備である。次のプログラムステップは、ステップ１１１２でＲＳｗｔｃｈ＿ＤＢが依然としてセットされているかをテストすることである。ＲＳｗｔｃｈ＿Ｄｂが依然としてセットされている場合は、プログラムは、ステップ１１１３でＳｈｉｆｔＳｅｔフラグをテストすることになる。ＲＳｗｔｃｈ＿ＤＢがもはやセットされていない場合は、プログラムはステップ１１１４へ分岐する。ステップ１１１４では、ＲｅｓｅｔＴｉｍｅｒサブルーチンが呼び出される。ここでＲｅｓｅｔＴｉｍｅｒルーチンは、ステップ１１１５でＲｅｓｅｔＴｍｒフラグをテストする。このフラグがセットされている場合は、サブルーチンは、ステップ１１１６で再びＲＳｗｔｃｈ＿ＤＢをテストする。ＲＳｗｔｃｈ＿ＤＢフラグがクリアされた場合は、呼出しルーチンへ戻る。フラグがセットされていない場合は、ステップ１１１７でＳｈｉｆｔＳｅｔフラグがセットされ、プログラムは呼出しルーチンへ戻る。
【０１１３】
ＲｅｓｅｔＴｍｒフラグがクリアされると、プログラムはステップ１１１８へ分岐する。このルーチンの最初のステップは、ＳｈｉｆｔＳｅｔフラグがセットされているか否かをテストすることである。ＳｈｉｆｔＳｅｔフラグがセットされていなければプログラムはステップ１１１９へ分岐する。このルーチンではＳｈｉｆｔＲｐｍに値１がロードされ、ステップ１１２０ではＳｈｉｆｔＷｒｉｔｅフラグが１にセットされ、ステップ１１２１および１１２２でＳｈｉｆｔＭｏｄｅおよびＳｈｉｆｔＳｅｔフラグが０にリセットされる。このルーチンの最後のステップは、Ｓｈｉｆｔｌｉｇｈｔ  ＬＥＤが前にセットされていれば、それをターンオフすることである（ステップ１１２３）。
【０１１４】
ステップ１１１８で、ＳｈｉｆｔＳｅｔがセットされていた場合は、プログラムは続いてＳｈｉｆｔＭｏｄｅ（ステップ１１２４）、およびＳｈｉｆｔＳｅｔフラグ（ステップ１１２５）をクリアする。次いで、ステップ１１２６でＳｈｉｆｔＷｒｉｔｅフラグをテストする。フラグがセットされていれば、プログラムはステップ１１２７でＥＥｗｒｉｔｅサブルーチンを呼び出す。このルーチンでは、ＳｈｉｆｔＲｐｍがＥＥＰＲＯＭに記憶され、ＳｈｉｆｔＷｒｉｔｅフラグがクリアされる。ＲｅｓｅｔＴｉｍｅｒサブルーチンから出る前の次のステップは、値０ｘＦＦＦＦＦＦを、ステップ１１２９でＴａｃｈＴｉｍｅに、ステップ１１３０でＰｅａｋＲｐｍにロードし、ＳｈｉｆｔＬｉｇｈｔをオフにすることである。
【０１１５】
次にプログラムは、ステップ１１３１でＣｏｕｎｔＤｏｗｎに値４をロードし、ステップ１１３２でＤｂｌＳｐｅｅｄフラグをクリアする。次いで、ステップ１１３３でＳｈｉｆｔＲｐｍサブルーチンが呼び出され、そこではＳｈｉｆｔＲｐｍがタイマカウントに変換される。次いでステップ１１３４で、別の呼出しがＣａｌｃＳｈｉｆｔＯｆｆと呼ぶサブルーチンに対して行われる。ＣａｌｃＳｈｉｆｔＯｆｆでは、ＳｈｉｆｔＯｆｆに対するタイマカウントが計算される。ＳｈｉｆｔＯｆｆを計算した後、ステップ１１３５で、ＳｈｉｆｔＯｎサブルーチンが呼び出される。ＳｈｉｆｔＯｎサブルーチンでは、ＳｈｉｆｔＴｉｍｅが、ＴａｃｈＴｉｍｅと比較される。ＳｈｉｆｔＴｉｍｅが、ＴａｃｈＴｉｍｅより大きい場合は、ＳｈｉｆｔＬｉｇｈｔＯｎフラグはクリアされ、サブルーチンはその呼出し元へ戻る。
【０１１６】
ステップ１１３６で、ＳｈｉｆｔＬｉｇｈｔＯｎフラグがクリアされている場合は、これによりステップ１１３７でＳｈｉｆｔＬｉｇｈｔをターンオンし、プログラムは抜け出してＭａｉｎへ戻る。ステップ１１３６でフラグがセットされていなかった場合は、ステップ１１３８でＳｈｉｆｔＯｆｆサブルーチンが呼び出される。このルーチンでは、（ＳｈｉｆｔＴｉｍｅ−１００Ｒｐｍ）が、ＴａｃｈＴｉｍｅと比較される。ＴａｃｈＴｉｍｅが（ＳｈｉｆｔＴｉｍｅ−１００Ｒｐｍ）より大きければ、ＳｈｉｆｔＬｉｇｈｔＯｎフラグは１にセットされ、プログラムは呼出しルーチンへ戻る。
【０１１７】
ステップ１１３９で、ＳｈｉｆｔＬｉｇｈｔＯｎフラグがセットされていると判定された場合は、ステップ１１４０でシフトライトはターンオフされ、プログラムは戻る。ステップ１１３９で、ＳｈｉｆｔＬｉｇｈｔＯｎフラグがセットされていないと判定された場合は、プログラムはシフトライトをターンオフせずに戻る。
【０１１８】
ステップ１１０６でＳｈｉｆｔＭｏｄｅフラグがセットされていたと判定された場合は、プログラムは続いてステップ１１１２でＲＳｗｔｃｈ＿ＤＢフラグをテストする。ＲＳｗｔｃｈ＿ＤＢフラグがクリアされていない場合は、プログラムはステップ１１１３でＳｈｉｆｔＳｅｔフラグをテストする。ＳｈｉｆｔＳｅｔフラグがセットされている場合は、ステップ１１４１でＳｈｉｆｔＷｒｉｔｅフラグがセットされる。次いで、ステップ１１４２で変数ＲｅｓｅｔＴｉｍｅＯｕｔに値３がロードされ、変数ＲｅｓｅｔＴｉｍｅＯｕｔにロードした後、プログラムはステップ１１４４でＩｎｃｒＳｈｉｆｔＣｏｕｎｔサブルーチンを呼び出す。このサブルーチンでは、ＤｂｌＳｐｅｅｄフラグがステップ１１４５でテストされる。フラグがセットされていない場合は、ルーチンはステップ１１４９へ分岐する。しかし、ＤｏｕｂｌｅＳｐｅｅｄフラグがセットされていた場合は、ステップ１１４６で、ＳｈｉｆｔＤｅｌａｙフラグがセットされているか否かを判定するためのテストが行われる。
【０１１９】
フラグがセットされていない場合は、プログラムはＳｈｉｆｔＲｐｍを増加せず、ステップ１１４９へ分岐する。フラグがセットされていれば、ステップ１１４７でＳｈｉｆｔＲｐｍがカウント３だけ増加され、ステップ１１４８でＳｈｉｆｔＤｅｌａｙフラグはクリアされる。次いで、ステップ１１４９で再びＳｈｉｆｔＤｅｌａｙフラグがテストされる。フラグがセットされていない場合は、プログラムはステップ１１５２へ分岐する。しかし、ＳｈｉｆｔＤｅｌａｙフラグがセットされていれば、プログラムはステップ１１５０でＳｈｉｆｔＲｐｍを１だけ増加し、ステップ１１５１でＳｈｉｆｔＤｅｌａｙフラグをクリアする。
【０１２０】
ここでプログラムは、ステップ１１５２で、ＳｈｉｆｔＲｐｍが１２０００ＲＰＭを超えているか否かを比較する。ＳｈｉｆｔＲｐｍが１２０００Ｒｐｍより大きい場合は、ステップ１１５３で、ＳｈｉｆｔＲｐｍに値１２０００がロードされる。しかしＳｈｉｆｔＲｐｍが１２０００ＲＰＭより小さい場合は、ステップ１１５４でＳｈｉｆｔＲｐｍがＳｈｉｆｔＯｆｆＲｐｍにコピーされ、ステップ１１５５でＳｈｉｆｔＯｆｆＲｐｍから１００Ｒｐｍのヒステリシスが減じられる。次に、ステップ１１５６で、ＳｈｉｆｔＯｆｆＲｐｍの値が、０より小さいかどうかテストされる。ＳｈｉｆｔＯｆｆＲｐｍが０より小さければ、ＳｈｉｆｔＯｆｆＲｐｍには値０がロードされ、プログラムはステップ１１５７で呼出しルーチンへ戻る。しかしＳｈｉｆｔＯｆｆＲｐｍが０より大きい場合は、プログラムは、アップデートせずに呼出しルーチンへ戻る。
【０１２１】
Ｍａｉｎ内の次のサブルーチンは、ステップ１０４８で、ＰｅａｋＤｉｓｐｌａｙと呼ばれる。このルーチンでは、ＰｅａｋＲｐｍポインタに対するタイマカウントが計算される。計算は次のように行われる。
【０１２２】
（Ｓｙｎｃｔ３００×ＭａｘＲｐｍ）／ＰｅａｋＲｐｍ。結果は次いでステップ１１７０で、ＰｅａｋＬｅｄＯｎレジスタに記憶される。次のステップは、ディスプレイ上のオフ時間用に、タイマカウントでのＰｅａｋＬｅｄＤｉｆｆを計算することである。タイマカウントは、ステップ１１７１で、ＰｅａｋＬｅｄＯｎをＰｅａｋＬｅｄＤｉｆｆにコピーすることによって計算される。次いでＬｅｄＯｎがＰｅａｋＬｅｄＤｉｆｆから減じられ、結果はステップ１１７２でＰｅａｋＬｅｄＤｉｆｆに書き戻される。ステップ１１７３で、ＰｅａｋＬｅｄＤｉｆｆがＬｅｄＯｎより小さいと判定された場合は、ステップ１１７４でＰｅａｋＬｅｄＤｉｆｆに値０がロードされる。これは、表示すべきＰｅａｋＲｐｍがないことを示している。ここでプログラムは、再びＭａｉｎループへ戻る。ＰｅａｋＬｅｄＯｎがＬｅｄＯｎより大きい場合は、プログラムは計算されたＰｅａｋＬｅｄＤｉｆｆと共に戻り、ＰｅａｋＲｐｍが表示される。
【０１２３】
ＰｅａｋＤｉｓｐｌａｙルーチンに続き、ステップ１０４９でＣｏｐｙ＿Ｖａｌｉｄサブルーチンが実行される。このルーチンは、ＨｉＳｙｎｃルーチンと関連して用いられる。Ｃｏｐｙ＿Ｖａｌｉｄサブルーチンは、ステップ１１８０でＲｅａｄｙ＿Ｂフラグをテストする。フラグがセットされていない場合は、ステップ１１８１でＬｅｄＯｎがＡＬｅｄＯｎレジスタにコピーされ、ステップ１１８２でＰｅａｋＬｅｄＤｉｆｆがＡＰｅａｋＬｅｄＤｉｆｆにコピーされる。ルーチンの終端では、ステップ１１８３でＲｅａｄｙ＿Ｂフラグがセットされ、サブルーチンはＭａｉｎへ戻る。しかしＲｅａｄｙ＿Ｂがセットされていた場合は、プログラムはステップ１１８４へ分岐する。次いでステップ１１８４でＬｅｄＯｎがＢＬｅｄＯｎにコピーされ、ステップ１１８５でＰｅａｋＬｅｄＤｉｆｆがＢＰｅａｋＬｅｄＤｉｆｆにコピーされる。Ｍａｉｎへ抜け出る前に、ステップ１１８６でＲｅａｄｙ＿Ｂフラグがクリアされる。
【０１２４】
ステップ１０５０で次に呼び出されるサブルーチンは、ＳｐｅｅｄＣｏｍｐである。このサブルーチンでは、ＬＥＤのオン時間用に、２００ＲＰＭが補正される。２００ＲＰＭは、ディスプレイの弧全体の一部として取り除かれる。これは、全ＲＰＭ表示範囲にわたって、ゼロ表示位置に対して相対的に、ＬＥＤターンオン位置を保つために行われる。これはステップ１１９０で、Ｓｙｎｃ３００ＴｉｍｅをＨｉＮｕｍにコピーすることにより行われる。次にステップ１１９１で、ＨｉＮｕｍから、可能な最高数（たとえばタイマカウントで０ｘ５１６０）が減じられる。次いでステップ１１９２で、ＨｉＮｕｍは６０で除算され、結果はステップ１１９３でＣｏｍｐＴｉｍｅにコピーされる。これがこのサブルーチンの終端で、次いでＭａｉｎに戻る。
【０１２５】
次いで、ステップ１０５１でＴｉｃＰｏｌｌサブルーチンが呼び出される。このルーチンの最初のステップは、ステップ１２００でＴｉｍｅｒ１の値をＴｉｃＴｅｍｐレジスタにコピーすることである。このルーチンでは、ソフトウェアカウンタは１ミリ秒ごとに更新される。これは、ステップ１２０１でＴｉｃＴｅｍｐをＴｉｃＲｅｆＴｉｍｅと比較することにより行われる。ＴｉｃＲｅｆＴｉｍｅがＴｉｃＴｉｍｅより大きいときは、プログラムはＭａｉｎへ戻る。
【０１２６】
ＴｉｃＴｅｍｐがＴｉｃＲｅｆＴｉｍｅより大きい場合は、ステップ１２０２でＴｉｃＲｅｆＴｉｍｅに値０ｘ０９Ｃ４が加算され、ステップ１２０３でＤｅｂｏｕｎｃｅＭｓフラグがセットされ、これは１ミリ秒が経過したことを意味する。
【０１２７】
ここでＴｉｃＰｏｌｌルーチンは続いて、メインプログラムで必要ないくつかのソフトウェアタイマのカウントアップ、およびリセットを行う。用いられる最初のソフトウェアタイマの１つは、ＴｉｃＤｅｌａｙＴｉｍｅである。ステップ１２０４で、ＴｉｃＤｅｌａｙＴｉｍｅは０から５までカウントされる。（ステップ１２０５で）５ミリ秒後に５に達すると、ステップ１２０６でＳｈｉｆｔＤｅｌａｙがセットされ、ステップ１２０７でＴｉｃＤｅｌａｙＴｉｍｅが再び０にリセットされる。しかしカウントが５に達していなかった場合は、ルーチンは次いでステップ１２０８へ続く。ＳｈｉｆｔＤｅｌａｙフラグは、このフラグがセットされていない場合にＳｈｉｆｔＲｐｍの増加を減速するために、ＩｎｃｒＳｈｉｆｔＣｏｕｎｔルーチン（ステップ１１４４）のステップ１１４６でテストされる。
【０１２８】
ソフトウェアタイマＴｉｃＴｉｍｅは、ステップ１２０８で、２５０ミリ秒に達するまで１ミリ秒ごとに１ずつ増加され、次いでステップ１２１０でＴｉｃＴｉｍｅは０にリセットされる。ステップ１２０９で２５０ミリ秒に達していないと判定された場合は、ＴｉｃＰｏｌｌルーチンはＭａｉｎへ戻る。
【０１２９】
２５０ミリ秒が経過した後の、ＴｉｃＰｏｌｌサブルーチン（ステップ１０５１）での次のソフトウェアダウンカウントは、ＲｅｓｅｔＴｉｍｅＯｕｔ（ステップ１２１１）であり、これはＤｉｓｐｌａｙＴｉｍｅルーチン（ステップ１０４７）内で初期設定される。ＲｅｓｅｔＴｉｍｅＯｕｔが減少して０になった場合（ステップ１２１２）、すなわち０．７５秒後、ステップ１２１３および１２１４でＲｅｓｅｔＴｍｒおよびＲｅｓｅｔＴｉｍｅＯｕｔフラグがリセットされる。
【０１３０】
ＲｅｓｅｔＴｍｒフラグはまた、ステップ１０４７のＤｉｓｐｌａｙＴｉｍｅルーチン内で用いられる。次のステップは、ＣｏｕｎｔＤｏｗｎルーチンである。ＣｏｕｎｔＤｏｗｎは、ＤｉｓｐｌａｙＴｉｍｅルーチン（ステップ１０４７）内でセットされ、開始される。ＣｏｕｎｔＤｏｗｎは、０に達するまで２５０ミリ秒ごとに１ずつデクリメントされる（ステップ１２１５）。０に達していないと判定された場合は（ステップ１２１６）、プログラムは続いてステップ１２１９でＳｈｉｆｔＴｅｓｔフラグをテストする。しかし０に達していた場合は、ステップ１２１７でＤｂｌＳｐｅｅｄフラグがセットされ、ステップ１２１８でＣｏｕｎｔＤｏｗｎが０にセットされる。ＣｏｕｎｔＤｏｗｎ用の時間遅延は１秒である。１秒後に、ＤｂｌＳｐｅｅｄフラグがセットされる。これは、上述のようにＳｈｉｆｔＲｐｍが４ずつ増加されることを示す。
【０１３１】
ＴｉｃＰｏｌｌ内の次のプログラムセグメントは、Ｉｎｉｔルーチンの後、プログラムがＭａｉｎループを開始する直前に１回だけ使用される。この時間遅延の目的は、ＳｈｉｆｔＲｐｍの最後の設定を１．５秒間表示できるようにするためである。ステップ１２１９でＳｈｉｆｔＴｅｓｔフラグがセットされていなかった場合、次いでルーチンはＭａｉｎへ戻る。しかしフラグがセットされていた場合、ステップ１２２０でＩｎｉｔＣｏｕｎｔｅｒが２５０ミリ秒ごとに１ずつ減少される。ステップ１２２１でＩｎｉｔＣｏｕｎｔｅｒが０でないと判定された場合、ルーチンはＭａｉｎへ戻る。そうでない場合はルーチンは、ステップ１２２２でＳｈｉｆｔＴｅｓｔをクリアし、ステップ１２２３でＰｅａｋＲｅａｄサブルーチンを呼び出し、ステップ１２２４でＩｎｉｔＣｏｕｎｔｅｒを０にリセットする。
【０１３２】
ステップ１０５２でＭａｉｎループ内で呼び出される最後のサブルーチンは、ＳｗＤｅｂである。このルーチンの目的は、シフト／リセットスイッチのデバウンスを行うことである。このルーチンは、シフト／リセットスイッチの状態を判定するための、１ミリ秒のアップダウンソフトウェアカウンタを用いる。スイッチが５０ミリ秒より短い間、押された場合は、ＲＳｗｔｃｈ＿ＤＢフラグはセットされないことになる。スイッチが５０ミリ秒より長い間、押された場合は、ＲＳｗｔｃｈ＿Ｄｂフラグはセットされることになる。
【０１３３】
アップダウンソフトウェアカウンタの使用により、本発明で用いられるタッチスイッチ集積回路など、アクティブになるときに振動が起こる電子スイッチの使用が可能になる。
【０１３４】
サブルーチンの最初のステップは、ステップ１２３０でＤｅｂｏｕｎｃｅＭｓフラグをテストすることである。フラグがセットされていなければ、サブルーチンはＭａｉｎへ戻るが、フラグがセットされていた場合は、プログラムは続いてステップ１２３１でＤｅｂｏｕｎｃｅＭｓフラグを０にリセットし、ステップ１２３２でＲｓｗｔｃｈＣｏｕｎｔを０にリセットする。次のステップは、ステップ１２３３でＲｓｗｔｃｈ入力を３回テストすることである。スイッチがローであれば、ステップ１２３３ａでＲｓｗｔｃｈＣｏｕｎｔが１だけインクリメントされる。次いで、Ｒｓｗｔｃｈの値が値２と比較される。ステップ１２３４で、ＲｓｗｔｃｈＣｏｕｎｔの方が小さいと判定された場合は、ステップ１２３５でＳｈｉｆｔＤｅｂＣｏｕｎｔが１だけインクリメントされる。
【０１３５】
プログラム内で続く次のステップはＳｈｉｆｔＤｅｂＣｏｕｎｔをテストすることである。ステップ１２３６で、ＳｈｉｆｔＤｅｂＣｏｕｎｔが４９より小さいと判定された場合、プログラムはＭａｉｎへ戻る。しかしＳｈｉｆｔＤｅｂＣｏｕｎｔが５０に達した場合、ステップ１２３７でＳｈｉｆｔＤｅｂＣｏｕｎｔは４９にセットされ、ステップ１２３８でＲｓｗｔｃｈ＿Ｄｂは０にセットされ、Ｍａｉｎへ戻る。ＲｓｗｔｃｈＣｏｕｎｔの値が２以上の場合、ステップ１２３９でＳｈｉｆｔＤｅｂＣｏｕｎｔは１だけデクリメントされる。ＳｈｉｆｔＤｅｂＣｏｕｎｔをデクリメントした後、プログラムはステップ１２４０で、ＳｈｉｆｔＤｅｂＣｏｕｎｔが０より小さくないかどうかをテストする。ＳｈｉｆｔＤｅｂＣｏｕｎｔが０より大きい場合、ルーチンはＭａｉｎへ戻る。そうでない場合、ステップ１２４１でＳｈｉｆｔＤｅｂＣｏｕｎｔは０にセットされ、ステップ１２４２でＲＳｗｔｃｈ＿Ｄｂは１にセットされる。これでＳｗＤｅｂルーチンが終了し、制御はＭａｉｎに戻る。
【０１３６】
次のステップは、ＳｈｉｆｔＴｅｓｔフラグがセットされているかをテストすることである。ステップ１０５３でＳｈｉｆｔＴｅｓｔがセットされていると判定された場合、Ｍａｉｎループは初めから再度開始される。ＳｈｉｆｔＴｅｓｔがセットされていない場合、続いてステップ１０５４でＴａｃｈＬｏｓｔフラグをテストする。このフラグがセットされていなければ、Ｍａｉｎループの先頭へ戻る。しかしＴａｃｈＬｏｓｔフラグがセットされている場合、ステップ１０５５でＴａｃｈＴｉｍｅに０ｘＦＦＦＦＦＦをコピーする。次のプログラムステップは、ステップ１０５６でＮｏＥＥＷｒｉｔｅフラグフラグをテストすることである。このフラグがセットされていれば、ステップ１０５７でＰｅａｋＷｒｉｔｅサブルーチンが呼び出され、ＰｅａｋＲｐｍの最後の値がＥＥＰＲＯＭに記憶される。次いでステップ１０５８で、ＮｏＥＥＷｒｉｔｅフラグをチェックする別のテストが行われる。このフラグがセットされていなければ、ステップ１０５９でこのフラグはセットされる。このフラグがセットされていたと判定された場合、ＮｏＥＥＷｒｉｔｅフラグを再度チェックする。ステップ１０６０でＮｏＥＥＷｒｉｔｅがセットされていないと判定された場合、ステップ１０６１でＰｅａｋＯｆｆフラグがセットされ、Ｍａｉｎループが初めから再度開始される。ステップ１０６０でＮｏＥＥＷｒｉｔｅフラグがセットされていると判定された場合、ＰｅａｋＯｆｆフラグはセットされず、プログラムは再びＭａｉｎループを続ける。
【０１３７】
次に実行されるルーチンは、ＬｏｗＩｎｔｅｒｒｕｐｔルーチンである。このルーチンへは、いつでもＨｉＩｎｔｅｒｒｕｐｔルーチンによる割込みが可能である。ＬｏｗＩｎｔｅｒｒｕｐｔルーチンへ分岐する経路は、ＣＣＰ１ＩＰ入力ピンの立下り入力エッジ、タコ入力ＲＢ２の入力エッジ、およびＬｏｗＩｎｔｅｒｒｕｐｔルーチンでイネーブルされたときだけのＴｉｍｅｒ３割込みのみである。ＬｏｗＩｎｔｅｒｒｕｐｔが実行されるたびにステータスレジスタは保存され、ＬｏｗＩｎｔｅｒｒｕｐｔルーチンの出口でもとのステータスが復元される。
【０１３８】
ステップ１３０１で、ＬｏｗＩｎｔｅｒｒｕｐｔルーチンはＣＣＰ１ＩＦフラグをテストする。フラグがセットされていない場合は、プログラムはステップ１３０４へ分岐する。ステップ１３０１でＣＣＰ１ＩＦフラグがセットされていると判定された場合は、ステップ１３０２でＴＩＭＥＲ１の値がＴ１Ｔｅｍｐレジスタにコピーされ、ステップ１３０３でＣＣＰ１ＩＦフラグがクリアされる。
【０１３９】
次いで、プログラムは続いてステップ１３０４でＩＮＴ２ＩＦフラグをテストする。フラグがセットされていなければ、プログラムはステップ１３５０のセグメントルーチンへ分岐する。ＩＮＴ２ＩＦフラグがセットされていれば、プログラムはステップ１３０４ａでＩＮＴ２ＩＦフラグをクリアする。フラグをクリアした後、次のステップは、ステップ１３０５でＩＮＴＥＤＧ２フラグをテストすることである。このフラグがセットされていると判定された場合は、プログラムはステップ１３６０のルーチンへ分岐する。フラグセットされていない場合は次のステップは、ステップ１３０６でタコ入力の立下りエッジを４．９マイクロ秒間デバウンスすることである。ステップ１３０７で入力が正常でないと判定された場合、これはタコ入力ピンに不正なパルスが存在したことを示し、プログラムはＬｏｗＩｎｔｅｒｒｕｐｔルーチンから戻る。デバウンスが正常であったと判定された場合は、ステップ１３０８でＴ１ＴｅｍｐがＴｔｍｒ１レジスタにコピーされる。次のステップは、ステップ１３０９でＣａｌｃＴａｃｈサブルーチンを呼び出すことである。
【０１４０】
ＣａｌｃＴａｃｈルーチンはモジュールを有し、それらは、ＴａｃｈＴｉｍｅの計算、ＯｄｄＦｉｒｅの捕捉、ＴａｃｈＲｐｍが最後のＴａｃｈＲｐｍの範囲外であるかのテスト、ＭａｘＲｐｍ  １２０００Ｒｐｍのテスト、新しいＰｅａｋＲｐｍのテスト、ＴａｃｈＰｅｒｉｏｄの１５０ミリ秒未満のリセット、ＮｏＥＥＷｒｉｔｅ、ＰｅａｋＯｆｆフラグのクリア、ＰｅａｋＲｐｍの現在のＲｐｍへのコピー、平均ＲＰＭの計算、そして最後に、２２．５°または最大１６ミリ秒の持続長さの間、タコ入力をディスエーブルするための、タイマカウントでのインヒビット時間の計算を実現する。
【０１４１】
ＣａｌｃＴａｃｈサブルーチンへ分岐した後、ステップ１３１１でＴｔｍｒ１の値がＴａｃｈＣａｐｔレジスタにコピーされる。プログラムは、続いてＴａｃｈＴｉｍｅを計算する。これはステップ１３１２で、ＴａｃｈＣａｐｔからＯｌｄＴａｃｈを減じることにより行われる。次いでＴａｃｈＣａｐｔは、タイマクロックでの新しいＴａｃｈＣａｐｔ時間を保持する。次のステップは、ステップ１３１３でＴｔｍｒ１をＯｌｄＴａｃｈのコピーすることである。
【０１４２】
プログラムは、続いてステップ１３１４でＯｄｄＦｉｒｅＦｉｒｓｔフラグをテストする。このフラグがセットされていない場合は、プログラムはステップ１３１６のプログラムモジュールへ分岐する。しかしＯｄｄＦｉｒｅＦｉｒｓｔフラグがＩＮＩＴルーチン内でセットされていた場合、プログラムは続いてステップ１３１４ａでＯｄｄＦｉｒｅＦｉｒｓｔフラグをテストする。ＯｄｄＦｉｒｅＦｉｒｓｔフラグがセットされていれば、ステップ１３１４ｂでＴａｃｈＣａｐｔがＴａｃｈＯｄｄレジスタにコピーされ、ステップ１３１４ｃでＯｄｄＦｉｒｅＦｉｒｓｔフラグはクリアされる。ここでプログラムは、ステップ１３３９へ続く。
【０１４３】
しかしＯｄｄＦｉｒｅＦｉｒｓｔフラグがセットされていなかった場合は、ステップ１３１５で、ＴａｃｈＣａｐｔがＴａｃｈＯｄｄに加算され、結果は再びＴａｃｈＣａｐｔレジスタに記憶される。次いでステップ１３１５ａまたは他の入力捕捉で、ＯｄｄＦｉｒｅＦｉｒｓｔフラグは再びセットされる。
【０１４４】
次に続くルーチンは、ステップ１３１６の、ＴａｃｈＴｅｍｐ値のＴａｃｈＣｏｍｐへのコピーである。ここで、ステップ１３１６ａでＴａｃｈＣｏｍｐは２で除算され、ステップ１３１６ｂでＴａｃｈＴｅｍｐＨレジスタにコピーされる。次にステップ１３１７で、ＴａｃｈＴｅｍｐがＴａｃｈＣｏｍｐに加算され、結果がＴａｃｈＣｏｍｐに書き戻される。
【０１４５】
プログラムの次のステップは、ステップ１３１８でＴａｃｈＣａｐｔをＴａｃｈＣｏｍｐと比較することである。ＴａｃｈＣａｐｔがＴａｃｈＣｏｍｐより大きい場合は、ステップ１３１９でＴａｃｈＣａｐｔはＴａｃｈＴｅｍｐにコピーされ、プログラムはステップ１３３９へ分岐する。ＴａｃｈＣａｐｔがＴａｃｈＣｏｍｐより小さかった場合は、プログラムは、続いてステップ１３２０でＴａｃｈＣａｐｔをＴａｃｈＴｅｍｐＨと比較する。ＴａｃｈＣａｐｔがＴａｃｈＴｅｍｐＨより小さいと判定されれば、ステップ１３２１でＴａｃｈＣａｐｔはＴａｃｈＴｅｍｐにコピーされ、ステップ１３３９へ分岐する。しかしＴａｃｈＣａｐｔがＴａｃｈＴｅｍｐＨより小さくなかったと判定された場合は、ステップ１３２２で、ＴａｃｈＣａｐｔはＴａｃｈＴｅｍｐレジスタにコピーされる。
【０１４６】
このルーチンの次のステップは、ステップ１３２３でＳｈｉｆｔＴｅｓｔフラグをテストすることである。このフラグがセットされていれば、プログラムはステップ１３２６へ分岐する。しかしフラグがセットされていない場合は、プログラムはステップ１３２４で、ＳｈｉｆｔＭｏｄｅフラグをテストする。このフラグがセットされていれば、プログラムはステップ１３２６へ分岐する。このフラグがセットされていない場合は、ステップ１３２５でＴａｃｈＣａｐｔ値がＴａｃｈＴｉｍｅレジスタにコピーされる。
【０１４７】
次いでステップ１３２６で、ＴａｃｈＴｉｍｅがＭａｘＲｐｍと比較される。ＴａｃｈＴｉｍｅがＭａｘＲｐｍより大きい場合は、ステップ１３２７でＭａｘＲｐｍがＴａｃｈＴｉｍｅにコピーされる。ＴａｃｈＴｉｍｅがＭａｘＲｐｍより大きくない場合は、プログラムはステップ１３２８へ分岐する。
【０１４８】
次のステップは、ステップ１３２８でＮｅｗＰｅａｋＲｐｍをテストすることである。ＴａｃｈＴｉｍｅがＰｅａｋＲｐｍより大きい場合、ステップ１３２９でＴａｃｈＴｉｍｅ値がＰｅａｋＲｐｍにコピーされる。ＴａｃｈＴｉｍｅがＰｅａｋＲｐｍより小さい場合、ＰｅａｋＲｐｍは変更されない。次にステップ１３３０で、ＴａｃｈＴｉｍｅは１００Ｒｐｍより大きいタイマカウントと比較される。ＴａｃｈＴｉｍｅが、（タイマカウントで）１００Ｒｐｍより小さい場合、プログラムはステップ１３３５へ分岐する。ＴａｃｈＴｉｍｅが、（タイマカウントで）１００Ｒｐｍより大きい場合、ステップ１３３１でＮｏＥＥＷｒｉｔｅフラグがセットされ、ＴａｃｈＣｏｕｎｔレジスタには値２０が再ロードされる。このステップが行われた後、ステップ１３３２でＴａｃｈＬｏｓｔフラグはクリアされる。
【０１４９】
次のステップは、ステップ１３３３でＰｅａｋＯｆｆフラグをテストすることである。ＰｅａｋＯｆｆフラグがセットされていない場合、プログラムはステップ１３３５へ続く。しかしフラグがセットされていれば、ステップ１３３４で、ＰｅａｋＲｐｍに０ｘＦＦＦＦＦＦがロードされ、ＰｅａｋＯｆｆフラグはクリアされる。
【０１５０】
次のステップはステップ１３３５でＡｖｇＲｐｍＣｏｕｎｔをテストすることである。ＡｖｇＲｐｍＣｏｕｎｔが０より大きくない場合、プログラムはステップ１３３９へ続く。そうでない場合、プログラムはステップ１３３６のＡｖｇＣｏｕｎｔレジスタのテストへ続く。レジスタが０でなければ、プログラムは続いてステップ１３３６ａでＡｖｇＲｐｍを計算しＡｖｇＲｐｍＣｎｔレジスタをインクリメントする。しかしレジスタが０の場合、ステップ１３３７でＡｖｇＲｐｍおよびＡｖｇＲｐｍＣｎｔレジスタをクリアする。レジスタをクリアした後、ステップ１３３８でＡｖｇＴｍｐＲｐｍはＴａｃｈＴｉｍｅにコピーされる。
【０１５１】
次のルーチンでは、ステップ１３３９でＴａｃｈＣａｐｔがＬｏＮｕｍにコピーされる。ステップ１３３９ａでＬｏＮｕｍは４で除算され、ステップ１３４０で１６ミリ秒に対する値と比較される。ＬｏＮｕｍが、（タイマカウントでの）１６ミリ秒より大きければ、ステップ１３４１で、（タイマカウントでの）１６ミリ秒の値がＬｏＮｕｍにコピーされる。しかしＬｏＮｕｍが、（タイマカウントでの）１６ミリ秒より小さければ、ステップ１３４３で、ＬｏＮｕｍの値がＴＭＲ３にコピーされる。ＬｏＮｕｍをＴＭＲ３にコピーする前に、ステップ１３４２で、ＴＭＲ３ＩＥフラグがセットされ、ＴＭＲ３ＩＦフラグがクリアされ、ＴＭＲ３レジスタがクリアされる。最後のセグメントでは、ステップ１３４４でＩｎｈｉｂｉｔ  Ｔｉｍｅフラグがセットされる。これでサブルーチンは終了し、実行は、ＬｏｗＩｎｔｅｒｒｕｐｔ内の呼出し元へ戻る。
【０１５２】
ＬｏｗＩｎｔｅｒｒｕｐｔルーチンに戻って次のステップはステップ１３１０でＩＮＴＥＤＧ２フラグをセットすることであり、ＬｏｗＩｎｔｅｒｒｕｐｔルーチンから戻る。ＬｏｗＩｎｔｅｒｒｕｐｔサブルーチン内ではまだ、ステップ１３０４でＩＮＴ２ＩＦフラグがテストされる。フラグがセットされていなかった場合は、ステップ１３５０でＴＭＲ３ＩＦフラグがテストされる。フラグがセットされていなければ、プログラムはＬｏｗＩｎｔｅｒｒｕｐｔルーチンから戻る。しかしフラグがセットされていれば、ステップ１３５１でＴＭＲ３ＩＥがクリアされ、ステップ１３５２でＩＮＴ２ＩＥがイネーブルされる。ステップ１３５３でＩｎｈｉｂｉｔ  Ｔｉｍｅフラグがクリアされ、プログラムはＬｏｗＩｎｔｅｒｒｕｐｔルーチンから戻る。
【０１５３】
ステップ１３０５でＩＮＴＥＤＧ２がセットされていた場合は、プログラムはステップ１３６０へ分岐する。このルーチンでは、ステップ１３６０で立ち上がりエッジが４９マイクロ秒間デバウンスされる。ステップ１３６１で入力が正常でないと判定された場合は、プログラムはＬｏｗＩｎｔｅｒｒｕｐｔルーチンから戻る。しかし入力が正常であった場合は、ステップ１３６２でＩＮＴＥＤＧ２フラグはクリアされ、プログラムはＬｏｗＩｎｔｅｒｒｕｐｔルーチンから戻る。
【０１５４】
ＨｉＩｎｔｅｒｒｕｐｔが実行されるたびに、ステータスレジスタは保存され、ＨｉＩｎｔｅｒｒｕｐｔルーチンの出口でもとのステータスが復元される。次に実行されるプログラムセグメントは、ステップ１４００のＨｉＩｎｔｅｒｒｕｐｔルーチンである。このルーチンは常時、ＬｏｗＩｎｔｅｒｒｕｐｔルーチン、およびＭａｉｎループに割込みをかけることができる。ＨｉＩｎｔｅｒｒｕｐｔルーチンを実行する、２つの割込み発生源がある。１つはＴＭＲ１オーバフローであり、もう１つはＲＢ０入力（同期入力）である。ＨｉＩｎｔｅｒｒｕｐｔが実行されるときに最初に処理されるのは、ステップ１４０１のＴＭＲ１ＩＦフラグのテストである。フラグがセットされていなければ、プログラムはステップ１４０８へ分岐する。しかしフラグがセットされている場合は、プログラムは続いてステップ１４０２でＴＭＲ１ＩＦフラグをクリアする。次のステップは、ステップ１４０３でＳｔｍｒ１ｕカウンタを増加することである。カウンタを増加した後、プログラムは、ステップ１４０４でＴａｃｈＣｏｕｎｔを１だけ減少させる。ステップ１４０５でＴａｃｈＣｏｕｎｔが０であると判定された場合は、ステップ１４０６で、ＴａｃｈＬｏｓｔフラグがセットされ、ＮｏＥＥＷｒｉｔｅフラグがクリアされる。次いで、ステップ１４０７でＴａｃｈＣｏｕｎｔはセットされ、プログラムはＨｉＩｎｔｅｒｒｕｐｔルーチンから戻る。ステップ１４０５でＴａｃｈＣｏｕｎｔが０でなかったと判定された場合は、プログラムは、前述のフラグを変更せずにＨｉＩｎｔｅｒｒｕｐｔから戻る。
【０１５５】
ステップ１４０１でＴＭＲ１ＩＦがセットされていなかったと判定された場合は、プログラムはステップ１４０８へ分岐する。このルーチンでは、ＩＮＴ０ＩＦフラグがテストされる。フラグがセットされていれば、ルーチンはステップ１４０９でＨｉＳｙｎｃＩｎルーチンへ分岐する。このルーチンでは、ステップ１４１０でＩＮＴ０ＩＦフラグがクリアされ、ステップ１４１１でＩＮＴＥＤＧ０フラグがテストされる。フラグがセットされていなければ、ステップ１４１２でＴＭＲ１の値がＳｔｍｒ１にコピーされ、ステップ１４１３でＩＮＴＥＤＧ０フラグがセットされる。
【０１５６】
次にステップ１４１４で、ＨｉＳｙｎｃＴｉｍｅサブルーチンが呼び出され、そこではＳｙｎｃＴｉｍｅが計算される。これは、ステップ１４１５でＳｔｍｒ１をＳｙｎｃＴｉｍｅにコピーすることによって行われる。次いでステップ１４１６で、ＳｙｎｃＴｉｍｅからＳｙｎｃｔＯｌｄが減じられ、結果がＳｙｎｃＴｉｍｅにロードされる。サブルーチンから戻る前に、ステップ１４１７でＳｔｍｒ１はＳｙｎｃｔＯｌｄレジスタにコピーされる。プログラムは、ＨｉＳｙｎｃＩｎのステップ１４１８へ戻り、ステップ１４１８でＡｖｇＣｏｕｎｔｅｒがクリアされ、ルーチンは呼出し元のＨｉＩｎｔｅｒｒｕｐｔルーチンへ戻る。
【０１５７】
しかしステップ１４１１でＩＮＴＥＤＧ０フラグがセットされていたと判定された場合は、プログラムはステップ１４１９でＩＮＴＥＤＧ０フラグをクリアし、ステップ１４２０でＴＭＲ３レジスタは０にセットされる。ステップ１４２１でＴＭＲ０ＩＦおよびＴＭＲ０ＩＥのフラグがクリアされ、ステップ１４２２で、Ｍａｉｎで計算されたＣｏｍｐＴｉｍｅがＴＭＲ０にロードされる。次いでプログラムは、ステップ１４２３でＴＭＲ０がタイムアウトするまでループ内で待つ。ＴＭＲ０がタイムアウトした後、ステップ１４２４でＴＭＲ０は再びクリアされる。次にステップ１４２５で、ＴＭＲ０ＩＦがクリアされ、ＴＭＲ０ＩＥ割込みがセットされる。次いでディスプレイＬｅｄがターンオフされ（ステップ１４２６）、ステップ１４２７でＧｅｔＴｉｍｅｒサブルーチンが呼び出される。
【０１５８】
ＧｅｔＴｉｍｅｒサブルーチンでは、ステップ１４２８でＲｅａｄｙ＿Ｂフラグがテストされる。フラグがセットされていれば、プログラムはステップ１４２９でＡｌｅｄＯｎをＬｅｄＯｎにコピーし、ステップ１４３０でＡＰｅａｋＬｅｄＤｉｆｆをＰｅａｋＬｅｄＤｉｆｆにコピーし、ステップ１４３３へ戻る。フラグがセットされていなかった場合、プログラムはステップ１４３１でＢＬｅｄＯｎをＬｅｄＯｎにコピーし、ステップ１４３２でＢＰｅａｋＬｅｄＤｉｆｆをＰｅａｋＬｅｄＤｉｆｆにコピーし、ステップ１４３３へ戻る。
【０１５９】
ＨｉＳｙｎｃＩｎルーチンへ戻り、ステップ１４３３でＬｅｄＯｎの値の補数がＴＭＲ０にコピーされ、ステップ１４３４でディスプレイＬＥＤがターンオンされる。サブルーチンを抜ける前に、ステップ１４３５でＰｅａｋＲｐｍフラグがセットされ、ステップ１４３６でＰｅａｋＬｅｄＤｉｆｆの値が補数化される。
【０１６０】
ステップ１４０８でＩＮＴ０ＩＦフラグがセットされていなかったと判定されると、プログラムはステップ１４３７でＴＭＲ０ＩＦオーバフローフラグをテストする。ＴＭＲ０ＩＦフラグがセットされていなかった場合、プログラムはＨｉＩｎｔｅｒｒｕｐｔルーチンから戻る。しかしＴＭＲ０ＩＦフラグがセットされていた場合、プログラムは続いてステップ１４３８でＴＭＲ０ＩＦおよびＴＭＲ０ＩＥをクリアする。さらにステップ１４３９でＴＭＲ０がクリアされ、ステップ１４４０でディスプレイＬｅｄがターンオフされる。ここでプログラムはステップ１４４１でＳｈｉｆｔＴｅｓｔフラグをテストする。フラグがセットされていればプログラムはステップ１４４８へ分岐する。しかしＳｈｉｆｔＴｅｓｔフラグがセットされていなかった場合、プログラムはステップ１４４２でＳｈｉｆｔＭｏｄｅフラグをテストする。このフラグがセットされていればプログラムはステップ１４４８へ分岐する。
【０１６１】
次いで、ステップ１４４２でＳｈｉｆｔＭｏｄｅフラグがセットされていないと判定された場合、プログラムはステップ１４４３でＰｅａｋＲｐｍフラグをテストする。ＰｅａｋＲｐｍフラグがセットされていなければ、プログラムはステップ１４４８へ分岐する。そうでない場合、ステップ１４４４でＰｅａｋＬｅｄＤｉｆｆがＴＭＲ０にコピーされ、ステップ１４４５でＴＭＲ０ＩＥフラグがセットされる。ステップ１４４６でディスプレイＬＥＤがターンオフされ、ＨｉＩｎｔｅｒｒｕｐｔを抜ける前に、ステップ１４４７でＰｅａｋＲｐｍフラグがクリアされる。ステップ１４４８では、ディスプレイＬＥＤが１０マイクロ秒間ターンオンされる。ＨｉＩｎｔｅｒｒｕｐｔを抜ける前に、ステップ１４４９でＴＭＲ０ＩＥおよびＴＭＲ０ＩＦフラグがクリアされ、ステップ１４５０でＰｅａｋＲｐｍがクリアされる。
【０１６２】
上述の実施形態に関して、本発明の趣旨および範囲から逸脱することなく、多種多様な修正、変更、および組合せが可能であり、そのような修正、変更、および組合せは本発明の概念の範囲内であると見なされることが、当業者には理解されよう。
【図面の簡単な説明】
【０１６３】
【図１】本発明による高速光子ポインタを用いたディスプレイを実現するためのシステムのブロック図である。
【図２ａａ】本発明によるタコメータの概略図である。
【図２ａｂ】本発明によるタコメータの概略図である。
【図２ｂａ】本発明によるタコメータの概略図である。
【図２ｂｂ】本発明によるタコメータの概略図である。
【図２ｃ】本発明によるタコメータの概略図である。
【図２ｄａ】本発明によるタコメータの概略図である。
【図２ｄｂ】本発明によるタコメータの概略図である。
【図２ｅａ】本発明によるタコメータの概略図である。
【図２ｅｂ】本発明によるタコメータの概略図である。
【図２ｆ】本発明によるタコメータの概略図である。
【図３】本発明によるライトパイプ(light pipe)の使用を示すブロック図である。
【図４】本発明によるタコメータの動作のタイミング図である。
【図５】本発明によるタコメータの他の態様を示す別のタイミング図である。
【図６】本発明の原理による空燃比計のタイミング図である。
【図７】本発明によるタコメータ表面を示す図である。
【図８ａ】本発明の原理による空燃比計の表面を示す図である。
【図８ｂ】本発明の原理による空燃比計の表面を示す図である。
【図９ａ】本発明の原理によるタコメータアセンブリの様々な図である。
【図９ｂ】本発明の原理によるタコメータアセンブリの様々な図である。
【図９ｃ】本発明の原理によるタコメータアセンブリの様々な図である。
【図９ｄ】本発明の原理によるタコメータアセンブリの様々な図である。
【図９ｅ１】本発明の原理によるタコメータアセンブリの様々な図である。
【図９ｅ２】本発明の原理によるタコメータアセンブリの様々な図である。
【図９ｅ３】本発明の原理によるタコメータアセンブリの様々な図である。
【図９ｆ１】本発明の原理によるタコメータアセンブリの様々な図である。
【図９ｆ２】本発明の原理によるタコメータアセンブリの様々な図である。
【図９ｆ３】本発明の原理によるタコメータアセンブリの様々な図である。
【図９ｇ】本発明の原理によるタコメータアセンブリの様々な図である。
【図９ｈ】本発明の原理によるタコメータアセンブリの様々な図である。
【図１０ａ１】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ａ２】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｂ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｃａ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｃｂ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｄ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｅ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｆ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｇ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｈ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｉ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｊ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｋ１】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｋ２】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｌ１】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｌ２】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｍ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｎ１】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｎ２】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｏ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｐ１】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｐ２】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｑ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｒ１】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｒ２】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｓ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｔ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｕ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｖ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｗ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｘ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｙ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ｚ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１０ａａ】本発明による図２ａ〜ｆのハードウェアで用いられるソフトウェアの一実施例の流れ図である。
【図１】
2008528964.tif 000003
【図２ａａ】
2008528964.tif 000004
【図２ａｂ】
2008528964.tif 000005
【図２ｂａ】
2008528964.tif 000006
【図２ｂｂ】
2008528964.tif 000007
【図２ｃ】
2008528964.tif 000008
【図２ｄａ】
2008528964.tif 000009
【図２ｄｂ】
2008528964.tif 000010
【図２ｅａ】
2008528964.tif 000011
【図２ｅｂ】
2008528964.tif 000012
【図２ｆ】
2008528964.tif 000013
【図３】
2008528964.tif 000014
【図４】
2008528964.tif 000015
【図５】
2008528964.tif 000016
【図６】
2008528964.tif 000017
【図７】
2008528964.tif 000018
【図８ａ】
2008528964.tif 000019
【図８ｂ】
2008528964.tif 000020
【図９ａ】
2008528964.tif 000021
【図９ｂ】
2008528964.tif 000022
【図９ｃ】
2008528964.tif 000023
【図９ｄ】
2008528964.tif 000024
【図９ｅ１】
2008528964.tif 000025
【図９ｅ２】
2008528964.tif 000026
【図９ｅ３】
2008528964.tif 000027
【図９ｆ１】
2008528964.tif 000028
【図９ｆ２】
2008528964.tif 000029
【図９ｆ３】
2008528964.tif 000030
【図９ｇ】
2008528964.tif 000031
【図９ｈ】
2008528964.tif 000032
【図１０ａ１】
2008528964.tif 000033
【図１０ａ２】
2008528964.tif 000034
【図１０ｂ】
2008528964.tif 000035
【図１０ｃａ】
2008528964.tif 000036
【図１０ｃｂ】
2008528964.tif 000037
【図１０ｄ】
2008528964.tif 000038
【図１０ｅ】
2008528964.tif 000039
【図１０ｆ】
2008528964.tif 000040
【図１０ｇ】
2008528964.tif 000041
【図１０ｈ】
2008528964.tif 000042
【図１０ｉ】
2008528964.tif 000043
【図１０ｊ】
2008528964.tif 000044
【図１０ｋ１】
2008528964.tif 000045
【図１０ｋ２】
2008528964.tif 000046
【図１０ｌ１】
2008528964.tif 000047
【図１０ｌ２】
2008528964.tif 000048
【図１０ｍ】
2008528964.tif 000049
【図１０ｎ１】
2008528964.tif 000050
【図１０ｎ２】
2008528964.tif 000051
【図１０ｏ】
2008528964.tif 000052
【図１０ｐ１】
2008528964.tif 000053
【図１０ｐ２】
2008528964.tif 000054
【図１０ｑ】
2008528964.tif 000055
【図１０ｒ１】
2008528964.tif 000056
【図１０ｒ２】
2008528964.tif 000057
【図１０ｓ】
2008528964.tif 000058
【図１０ｔ】
2008528964.tif 000059
【図１０ｕ】
2008528964.tif 000060
【図１０ｖ】
2008528964.tif 000061
【図１０ｗ】
2008528964.tif 000062
【図１０ｘ】
2008528964.tif 000063
【図１０ｙ】
2008528964.tif 000064
【図１０ｚ】
2008528964.tif 000065
【図１０ａａ】
2008528964.tif 000066
【国際調査報告】
2008528964.tif 000067