(57)【要約】【課題】　事前定義された分解能の範囲内で電子入力デバイス内部の可動部材の位置を特定するための方法およびシステムを提供する。【解決手段】　２つのオフセットされた信号が、可動部材の位置を示す。各信号が閾値レベルを超えるのに要する時間が測定され、逆数にされて、オフセットされた正弦波の関係が明らかになる。オフセットされた正弦波を互いに対してプロットして、サイクルに関する逆時間サンプルの近似の円を明らかにすることができる。対応する逆数にされた最小時間および最大時間を使用して各信号に関する中心基準値が特定される。逆数にされた時間の相関として、円の四分円が特定される。四分円内で、分解能を定義する複数の事前定義されたセクタの中から、可動部材の位置に最もよく対応するセクタが特定される。可動部材の位置サンプル間のセクタ数が累積され、ホストデバイスに通信される。【選択図】　図１３
2004127284.tif 000002
【特許請求の範囲】
【請求項１】
　事前定義された分解能の範囲内で電子入力デバイス内部の可動部材の位置を特定するための方法であって、
　（ａ−１）前記可動部材の位置を示す第１の信号および第２の信号を生成するステップであって、該第２の信号が、前記第１の信号に対してオフセットされているステップと、
　（ｂ−１）前記第１の信号が閾値レベルを超えるまでの第１の時間、および前記第２の信号が前記閾値レベルを超えるまでの第２の時間を特定するステップと、
　（ｃ−１）前記第１の時間と前記第２の時間を逆転（invert）して、それぞれ第１の逆転時間（inverted time）と第２の逆転時間を生成するステップと、
　（ｄ−１）前記第１の信号が前記閾値を超えるまでの逆転最小時間（inverse minimum time）および逆転最大時間（inverse maximum time）、並びに前記第２の信号が前記閾値を超えるまでの逆転最小時間および逆転最大時間を特定するステップと、
　（ｅ−１）前記第１の信号が前記閾値を超えるまでの前記逆転最小時間および前記逆転最大時間の相関として第１の基準値を特定するステップと、
　（ｆ−１）前記第２の信号が前記閾値を超えるまでの前記逆転最小時間および前記逆転最大時間の相関として第２の基準値を特定するステップと、
　（ｇ−１）前記第１の逆転時間、前記第２の逆転時間、前記第１の基準値、および前記第２の基準値の相関として複数の事前定義されたセクタの中からセクタを特定するステップてあって、該セクタが、前記事前定義された分解能の範囲内で前記可動部材の位置を定義するステップと
を含むことを特徴とする方法。
【請求項２】
　セクタを特定する前記ステップ（ｇ−１）は、
　（ａ−２）前記事前定義された分解能を分割する複数の事前定義された四分円の中から四分円を特定するステップであって、該四分円が、前記第１の逆転時間、前記第２の逆転時間、前記第１の基準値、および前記第２の基準値の相関として特定されるステップと、
　（ｂ−２）前記第１の逆転時間、前記第２の逆転時間、前記第１の基準値、前記第２の基準値、および前記四分円に相関する第１の仮想座標および第２の仮想座標を特定するステップと、
　（ｃ−２）前記四分円内で前記第１の仮想座標および前記第２の仮想座標の相関として前記セクタを特定するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
　前記信号は、前記可動部材の位置とともに変化する光レベル、電圧、静電容量、抵抗、および磁束のどれかに対応することを特徴とする請求項１に記載の方法。
【請求項４】
　前記第１の時間および前記第２の時間を特定する前記ステップ（ａ−１）は、
　（ａ−３）前記第１の信号および前記第２の信号を事前定義された開始レベルにイニシャライズするステップと、
　（ｂ−３）前記第１の信号および前記第２の信号を前記閾値レベルに向かって変化させるステップと、
　（ｃ−３）前記第１の信号が前記閾値レベルを超えるのに要する前記第１の時間、および前記第２の信号が前記閾値レベルを超えるのに要する前記第２の時間を測定するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項５】
　前記四分円を特定する前記ステップ（ａ−２）は、
　（ａ−４）前記第１の逆転時間と前記第１の基準値の間の第１の相対的大きさを特定するステップと、
　（ｂ−４）前記第２の逆転時間と前記第２の基準値の間の第２の相対的大きさを特定するステップと、
　（ｃ−４）前記第１の相対的大きさおよび前記第２の相対的大きさの相関として前記四分円を選択するステップと
を含むことを特徴とする請求項２に記載の方法。
【請求項６】
　前記第１の仮想座標および前記第２の仮想座標を特定する前記ステップ（ｂ−２）は、
　（ａ−５）前記第１の逆転時間と前記第１の基準値の差を特定するステップと、
　（ｂ−５）前記第２の逆転時間と前記第２の基準値の差を特定するステップと
を含むことを特徴とする請求項２に記載の方法。
【請求項７】
　前記セクタを特定する前記ステップ（ｃ−２）は、
　（ａ−６）前記第１の仮想座標と複数のセクタ境界のそれぞれの間の第１の関係を特定するステップと、
　（ｂ−６）前記第２の仮想座標と前記複数のセクタ境界のそれぞれの間の第２の関係を特定するステップと、
　（ｃ−６）前記第１の関係および前記第２の関係の相関として前記セクタを選択するステップと
を含むことを特徴とする請求項２に記載の方法。
【請求項８】
　前記事前定義された分解能の範囲内で前記可動部材の位置を特定するために整数だけが使用されることを特徴とする請求項１に記載の方法。
【請求項９】
　前記事前定義された分解能の範囲内で前記可動部材の位置を特定するためにビットシフト命令、比較命令、およびジャンプ命令だけが使用されることを特徴とする請求項１に記載の方法。
【請求項１０】
　（ａ−７）ステップ（ａ−１）〜（ｇ−１）を繰り返して、ステップ（ｇ−１）で特定された現在のセクタの相関として前記可動部材について現在の位置を特定するステップと、
　（ｂ−７）前に特定されたセクタと最も新しく特定された現在のセクタの間のセクタ数を特定するステップであって、該セクタ数が、前に特定された位置と現在の位置の間の前記可動部材の動きを示すステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１１】
　（ａ−８）前記セクタ数をメモリの中に記憶するステップ、および、
　（ｂ−８）前記セクタ数を前記電子入力デバイスが結合された電子デバイスに通信するステップ
の少なくとも一つをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
　（ａ）前記第１の信号が前記閾値を超えるまでの前記最小時間、
　（ｂ）前記第１の信号が前記閾値を超えるまでの前記最大時間、
　（ｃ）前記第２の信号が前記閾値を超えるまでの前記最小時間、および、
　（ｄ）前記第２の信号が前記閾値を超えるまでの前記最大時間
のどれかに変化が検出されたときに、前記第１の基準値と前記第２の基準値の一つを更新するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１３】
　請求項１に記載の各ステップを実行するための機械命令を記憶していることを特徴とするメモリ媒体。
【請求項１４】
　（ａ）可動部材と、
　（ｂ）第１の信号源に対する前記可動部材の位置を示す第１の信号を生成する第１の信号源と、前記第１の信号源からオフセットされた、第２の信号源に対する前記可動部材の前記位置を示す第２の信号を生成する第２の信号源と、
　（ｃ）前記第１の信号源および前記第２の信号源と通信して、前記第１の信号および前記第２の信号をそれぞれ受け取るコントローラとを備え、
　該コントローラは、
　　（ｉ）前記第１の信号が閾値レベルを超えるまでの第１の時間、および前記第２の信
　　　　号が前記閾値レベルを超えるまでの第２の時間を特定する機能、
　　（ｉｉ）前記第１の時間と前記第２の時間を逆転（invert）して、それぞれ第１の逆
　　　　　転時間と第２の逆転時間を生成する機能、
　　（ｉｉｉ）前記第１の信号が前記閾値を超えるまでの逆転最小時間および逆転最大時
　　　　　　間、並びに前記第２の信号が前記閾値を超えるまでの逆転最小時間および逆
　　　　　　の最大時間を特定する機能、
　　（ｉｖ）前記第１の信号が前記閾値を超えるまでの前記逆転最小時間および前記逆の
　　　　　最大時間の相関として第１の基準値を特定する機能、
　　（ｖ）前記第２の信号が前記閾値を超えるまでの前記逆転最小時間および前記逆転最
　　　　大時間の相関として第２の基準値を特定する機能、および、
　　（ｖｉ）前記第１の逆転時間、前記第２の逆転時間、前記第１の基準値、および前記
　　　　　第２の基準値の相関として複数の事前定義されたセクタの中からセクタを特定
　　　　　する機能であって、該セクタが、前記事前定義された分解能の範囲内で前記可
　　　　　動部材の位置を定義する機能
を含む複数の機能を実行することを特徴とする電子入力デバイス。
【請求項１５】
　前記可動部材は、
　（ａ）回転可能なホイール、
　（ｂ）スライド可能なスライダ、
　（ｃ）回転可能なボール、
　（ｄ）可動スタイラス、および、
　（ｅ）可動スティック
のどれかを含むことを特徴とする請求項１４に記載の電子入力デバイス。
【請求項１６】
　前記第１の信号源および前記第２の信号源と通信し、前記第１の信号が閾値レベルを超えるまでの第１の時間を判定し、かつ前記第２の信号が前記閾値レベルを超えるまでの第２の時間を判定するタイマをさらに含むことを特徴とする請求項１４に記載の電子入力デバイス。
【請求項１７】
　前記コントローラは、
　（ａ）機能（ｉ）〜（ｖｉ）を繰り返して、（ｖｉ）で特定された現在のセクタの相関として前記可動部材の現在の位置を特定する機能と、
　（ｂ）前に特定されたセクタと最も新しく特定された現在のセクタの間のセクタ数を特定する機能であって、該セクタ数が、前に特定された位置と現在の位置の間の前記可動部材の動きを示す機能と
をさらに実行することを特徴とする請求項１４に記載の電子入力デバイス。
【請求項１８】
　（ａ）前記セクタ数を記憶するためのメモリと、
　（ｂ）前記セクタ数を前記電子入力デバイスが結合された電子デバイスに通信するための通信モジュール
の少なくとも一つをさらに含むことを特徴とする請求項１７に記載の電子入力デバイス。
【請求項１９】
　電子入力デバイス上の可動部材による動きの範囲を特定するための方法であって、
　（ａ）第２の信号が閾値レベルを超えるまでの第２の時間の逆数に対する第１の信号が前記閾値レベルを超えるまでの第１の時間の逆数の相関として前記可動部材の第１の位置を特定するステップであって、前記第１の信号および前記第２の信号が、前記可動部材の前記位置を示すステップと、
　（ｂ）前記可動部材の動きを検出するステップと、
　（ｃ）前記第２の信号が前記閾値レベルを超えるまでの第４の時間の逆数に対する前記第１の信号が前記閾値レベルを超えるまでの第３の時間の逆数の相関として前記可動部材の次の位置を特定するステップと、
　（ｄ）前記次の位置と元の位置の差の相関として前記可動部材の動きの範囲を特定するステップと
を含むことを特徴とする方法。
【請求項２０】
　第１の位置を特定する前記ステップは、
　（ａ）前記第１の信号が前記閾値を超えるまでの逆転最小時間および逆転最大時間、並びに前記第２の信号が前記閾値を超えるまでの逆転最小時間および逆転最大時間を特定するステップと、
　（ｂ）前記第１の信号が前記閾値レベルを超えるまでの前記逆転最小時間および前記逆転最大時間の相関として第１の基準値を特定するステップと、
　（ｃ）前記第２の信号が前記閾値レベルを超えるまでの前記逆転最小時間および前記逆転最大時間の相関として第２の基準値を特定するステップと、
　（ｄ）複数の事前定義されたセクタの中から、
　　（ｉ）前記第１の信号が前記閾値レベルを超えるまでの前記第１の時間の前記逆数、
　　（ｉｉ）前記第２の信号が前記閾値レベルを超えるまでの前記第２の時間の前記逆数
　　　　　、
　　（ｉｉｉ）前記第１の基準値、および、
　　（ｉｖ）前記第２の基準値
の相関としてセクタを特定するステップと
を含むことを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、一般に、電子入力デバイスの可動部材の位置を特定するための方法および装置に関し、詳細には、単純な演算を使用して高い分解能まで可動部材の位置を特定することに関する。
【背景技術】
【０００２】
　コンピュータマウス、トラックボール、スライダ、およびタッチパッドなどの入力デバイスは、ユーザ入力をコンピュータプログラムに与え、アプリケーションを制御するのに使用されており、当技術分野で周知である。そのようなポインティングデバイスは、通常、ユーザが表示画面上でカーソルを動かすことができるようにし、マイクロソフトコーポレーションのＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムやアップルコーポレーションのＭＡＣＩＮＴＯＳＨ（登録商標）オペレーティングシステムなどのグラフィカルユーザインターフェースを使用するプログラムおよびオペレーティングシステムに基本的なものである。通常のポインティングデバイスでは、ユーザの指によって直接に、または下にある表面またはパッドの上をデバイスが動くことにより、ボールがデバイスの筐体内で回転する。回転の方向に応じて、回転するボールにより、筐体内の１対のエンコーダシャフトの片方または両方が回転させられる。エンコーダシャフトは、１対の直交する軸、すなわち、「Ｘ」軸および「Ｙ」軸を中心に、これらの軸に沿ったボールの回転の成分に応答して回転する。エンコーダシャフトが回転すると、対応するエンコーダが、これらの直交する軸に沿ったデバイスの漸増する動きを示す信号を生成する。この信号が、ポインティングデバイス内部のマイクロコントローラまたはその他の論理プロセッサによって処理され、マイクロコントローラまたはその他の論理プロセッサは、Ｘ軸およびＹ軸に対するデバイスの位置を示す対応するデジタル値のストリームを生成する。この変位（displacement）が、ポインティングデバイスが接続されている先のコンピュータ上で実行されるドライバプログラムに送られる。ドライバプログラムは、デバイス上のコントロールボタンの状態を示す１つまたは複数の信号を含め、ポインティングデバイスからの他の入力信号も受け取る。相対位置データ、およびコントロールボタンの状態は、コンピュータプログラム（またはオペレーティングシステム）に入力され、コンピュータプログラム（またはオペレーティングシステム）がその情報を処理して、事前定義されたアクションが行われるようにする。例えば、前述した通り、多くのオペレーティングシステムは、ポインティングデバイスをユーザが動かすことに応答して、モニタまたはその他の表示画面上に表示されたカーソルを動かす。表示画面上のカーソルのＸ移動および／またはＹ移動は、それぞれＸ軸および／またはＹ軸に沿ったボール（またはデバイス）の動きに応じる。
【０００３】
　近年、マウス製造者は、「Ｚ」軸として一般に知られる第３の入力軸を自らの製品に追加している。ＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムで使用するためにマイクロソフトコーポレーションによって最初に開発されたマウス上のこのＺ軸は、コンピュータ画面上のページをスクロールすること、コンピュータ表示を拡大縮小すること、コンピュータゲームにおいて減速すること（throttle speed）、およびその他の活動のための一般的な機能になっている。Ｚ軸制御は、通常、回転可能なシャフトに結合されたデテント付きホイール（detented wheel）（Ｚホイール）を使用して実装される。エンコーダは、ユーザによるＺホイールシャフトの回転をモニタする。そのようなホイールを有するマウスの例が、マイクロソフトコーポレーションによる特許文献１、特許文献２、特許文献３で説明されている。
【０００４】
　そのようなマウス入力デバイスは、通常、可変抵抗ポテンショメータ、機械式直交エンコーダ（mechanical quadrature encoder）、または光学エンコーダを有する線形センサおよび／または回転センサを使用してホイールの動きをモニタする。通常の光学エンコーダ（従来の技術）に関して、主な構成要素を図１および図２に示している。これらの構成要素には、コードディスクまたはコードホイール１０、発光体（emitter）１２、および集積検出回路１４が含まれる。コードホイールは、一般に、完全に密閉されていることが可能なスロット１８を形成する複数の等間隔の歯１６を含む。代替のコードホイールは、「マスク」と一般に呼ばれる径方向間隔パターン（radially-spaced pattern）のラインが刻印された透明プラスティックディスクまたはガラスディスクを使用して製造することができる。コードホイール１０は、Ｚホイール５８がユーザによって回されたときに回転するシャフト５６に通常、固定されている。シャフト５６の一部分には、デテント機構をもたらすのに使用することができる等間隔の長手方向スロット５４が形成されていることが可能である。図１に示す通り、一般的なデテント機構は、長手方向スロット５４に対してバイアス力を加える、一方の終端上に突起５２を有する板ばねを使用する。シャフトが回転させられると、ばねのバイアス力を受けて作用する突起が、連続するスロットに出入りし、これにより、ばねが伸縮されられて、デテント作用がもたらされる。シャフトのスロットが等間隔であることにより、ユーザは、自身がＺホイール５８を回転させるにつれ、複数の等間隔のデテントを有する位置を感じることになる。
【０００５】
　発光体１２は、通常、レンズ２２によって平行ビームにコリメートされた光線２１を放出する発光ダイオード（ＬＥＤ）２０を含む。集積検出回路１４が、発光体の反対側に配置され、通常、少なくとも２つのフォトディテクタ２４を含む。適切なフォトディテクタには、フォトダイオードおよびフォトトランジスタが含まれる。光学エンコーダで使用される発光体およびフォトディテクタを含む構成要素のセットは、一般に、エンコーダの「フォトオプティックス（photo-optics）」と呼ばれる。
【０００６】
　コードホイール１０は、発光体１２および集積検出回路１４に相関して配置され、コードホイール１０が回転させられたとき、コードホイール１０のスロット付き部分またはライン付き部分が、発光体と集積検出回路の間で動くようにされる。これにより、発光体から集積検出回路１４に送られる光ビーム２１は、コードホイール上のパターンのスロット１８間の歯１６によって（または刻印された径方向ラインによって）遮られる。歯１６（または刻印されたライン）によって遮光されない光ビームの部分があれば、フォトディテクタ２４によって検出される。フォトディテクタは、通常、自らが検出する光の強度に正比例するアナログ出力信号を生成する。一般に、コードホイールが一定レートで回転させられる際に各フォトディテクタによって生成される出力信号は、正弦波の形をしている。フォトディテクタは、コードホイールの半径、およびスロット密度またはライン密度に応じたパターンに配置され、当技術分野で周知の直交出力（quadrature output）を生成するようにする。
【０００７】
　前述した通り、各フォトディテクタは、それぞれ非反転シュミットトリガ３２にそれぞれ印加されるアナログ出力信号を生成する。シュミットトリガは、フォトディテクタによって提供される生の信号における外部からの雑音の効果を最小限に抑えるために使用される。オプションとして、シュミットトリガの代わりに他のタイプのコンパレータ回路を使用することもできる。シュミットトリガの出力信号は、マイクロコントローラに入力され、マイクロコントローラは、デューティサイクル制御アルゴリズムを使用してチャネルＡおよびＢ上の信号を処理して直交のデジタル波形を生成し、このデジタル波形が、マイクロコントローラによってさらに処理されてエンコーダホイールの漸増の動きが特定される。次に、マイクロコントローラの出力は、シリアル通信リンクを介してコンピュータに送られる（例えば、ＲＳ−２３２シリアルポート、ユニバーサルシリアルバス（ＵＳＢ）ポート、またはＰＳ／２ポートを介して）。オペレーティングシステム内部（またはアプリケーションプログラム内部）のドライバが、マイクロコントローラからの出力を処理して、マウスＺホイールの動きに応答してコンピュータモニタ画面上のカーソルの表示および動きを制御する。
【０００８】
　より詳細には、図３（従来の技術）が、特許文献４に説明されているエンコーダホイール位置データを生成する例示的な従来技術のシステムの機能ブロックを示している。このシステムは、デューティサイクル制御ブロック１００、遷移判定ブロック１０２、およびＺホイール学習ブロック１０４が含まれる３つの主な構成要素を含む。デューティサイクル制御ブロックは、キャプチャ−プロセスブロック１０６、およびサンプルルックアップテーブル１０８を含む。遷移特定ブロックは、物理−論理ルックアップテーブル１１０およびＺ／Ｑｕａｄテーブル１１２を含む。このシステムに対する入力は、前述した通り、それぞれのチャネルＡおよびＢ上でペアのシュミットトリガによって生成された生の出力信号である。システム出力は、データパケットまたはデータパケット群１１４の形態であり、データパケット１１４は、Ｚホイールの相対変位に関する情報、並びにＺホイールが内部に含まれる入力デバイス上のコントロールボタンの状態を含む。
【０００９】
　デューティサイクル制御ブロック１００は、アナログのフォトトランジスタ／シュミットトリガ信号をそれぞれのデジタルチャネル入力ＺＡおよびＺＢに変換するのに使用される。チャネルのシュミットトリガからの出力信号は、ＬＥＤによって生成されたコリメートされた光がそのチャネルのフォトトランジスタに向かって伝播する経路のどれだけが、コードホイールの歯によって遮光されるかに依存する。図４（従来の技術）に示す通り、コードホイールが一定レートで回転させられ、ＬＥＤが継続的にオンにされるとき、フォトトランジスタによって出力される電圧は、それぞれ、チャネルＡおよびＢ上の出力に対応する正弦波１２０および１２２として現れる。理想的には、２つの正弦波は、図４で示す通り、９０°位相がずれている。やはり理想的には、シュミットトリガは、この正弦波のピークツーピーク電圧１２６の１／２である閾値電圧レベル１２４を有して、シュミットトリガの出力が、図４に示した波形１２８および１３０と同様のデジタル波形（方形波）であるようにする。
【００１０】
　残念ながら、所与のフォトオプティックセット（ＬＥＤ、フォトトランジスタ、およびシュミットトリガ）が、図４に示した波形を生成する可能性は非常に低い。実際のデバイスでは、閾値レベルは、ピークツーピーク電圧の中間点にあること、チャネル間の位相角は、９０°ではないこと、フォトトランジスタによって生成される出力信号は、対称的でないこと等が可能である。以上の問題およびその他の問題に対処するため、デューティサイクル符号化と呼ばれるスキームが開発された。
【００１１】
　光学エンコーダ原理の以上の説明では、ＬＥＤおよびフォトディテクタは常時、オンにされているものと想定した。この想定は、完全に適合した構成要素の場合はうまくいくが、現実の世界においては良い想定ではない。大量のポインティングデバイスを製造する際、費用を最小限に抑えるために適合しない構成要素が使用される可能性が高い。ただし、図２の光検出回路に適用して、適合しないフォトオプティック構成要素が、図４に示した理想的な構成に近づく直交波形を生成できるようにすることが可能ないくつかの電子工学原理が存在する。以下の説明に加えて、デューティサイクル符号化において適用される、フォトオプティックデバイスによって生成される信号の制御および処理に関するさらなる詳細は、特許文献５で開示されている。
【００１２】
　前述のケースで役立つ１つの電子工学原理は、トランジスタが強制的に「オフ状態」にされた後、急にオンにされたときのトランジスタの挙動を活用する。フォトトランジスタは、（理想的には）自らが検出するレベルに対応する出力を生成しなければならないが、そのようなデバイスの出力は、安定した状態の値に即時に向きを変えることができない。以下のアナロジーを使用してこの原理を説明する。
【００１３】
　空のバケツを給水栓からの水で満たすことを考慮されたい。図５を参照すると、バケツの水の高さのレベルは、バケツが空であることを示す０で開始し、時間の経過とともに、バケツが満ちるまで増加し、満ちた時点で、レベルはピークに達し、水が溢れ出す。この曲線の勾配がどれだけ急であるかは、給水栓からバケツに入る流量に依存する。給水栓が、消火ホースで使用されるような高い流量を有する場合、ゼロから満杯までの曲線は、急勾配である。しかし、水源がバケツを即時に満たすことができる可能性は低い。さらに、流量は、安定した状態の値に即時に変化することはなく、バケツが満杯になると同時に小さくなる可能性は低い。
【００１４】
　同様に、図２のフォトトランジスタは、このフォトトランジスタによって検出された光の強度に基づいて電子の帯電を生じ、この電子が、電流としてシュミットトリガに流れ込む。前述のアナロジーに従うと、ＬＥＤは、水道に喩えられ、コードホイールの歯（または歯の間のスロット）は、バケツに流れ込む水の流量を制御する給水栓に喩えられる。発光体の光ビームが歯の間のスロットを通過する場合、フォトトランジスタは、急速に帯電する。逆に、ホイールの歯が光のほとんどを遮光する場合、フォトトランジスタは、非常にゆっくりと帯電する。（フォトトランジスタが完全に遮光される場合でさえ、フォトトランジスタは、それでも、「暗」電流と呼ばれる最小レベルの電流を生成することに留意されたい。）理想的には、フォトトランジスタが帯電する速度は、歯によって遮光される光ビームの量に正比例しなければならない。さらに、フォトトランジスタの出力をアースに一時的に結合することにより、フォトトランジスタを「ドレイン（drain）」することが可能である。アースに結合することは、アナロジーでは、バケツに大きい排水穴を空けることと等価である。出力信号をアースに結合することの目的は、フォトトランジスタによって生成される出力信号が、ゼロ電荷（すなわち、空のバケツ）条件に初期設定されることを確実にすることである。
【００１５】
　図６（従来の技術）は、コードホイールの歯による異なる遮光レベルに関して、所与のＬＥＤフォトトランジスタペアによって出力される電圧を時間に対して示すグラフである。様々な曲線は、コードホイールの異なる回転位置に対応する電圧出力を表わし、高い方の電圧曲線１４０、１４２、１４４、および１４６が、光の少しの部分だけしかフォトトランジスタによって受け取られないように遮光しないコードホイール位置に対応し、他方、低い方の電圧曲線１４８、１５０、および１５２は、光の相当部分をほぼ遮光するコードホイール位置に対応する。例えば、曲線１４０は、フォトトランジスタに向けられた光が歯によって全く遮光されないコードホイールの回転位置に対応し、反対に、曲線１５２は、歯がフォトトランジスタに向けられた光のほとんどすべてを遮光している回転位置に対応する。
【００１６】
　遮光による電圧出力の変動に加え、遮光されていないフォトトランジスタに関する時間に対する電圧出力は、図７（従来の技術）に示される通り、それぞれの所与のフォトオプティックペア（すなわち、ＬＥＤ−フォトトランジスタの組み合わせ）の特定の特性に依存する。所与の遮光されていないフォトトランジスタが、閾値電圧ＶＴＨを超える出力電圧レベルを生成するのに必要な時間量は、フォトトランジスタ、およびフォトトランジスタに対応するＬＥＤの電気特性に依存する。すなわち、フォトトランジスタの感度が高いほど（またはＬＥＤによって生成される光が多いほど）、閾値を超えるのに必要な時間が短くなる。例えば、高い方の電圧曲線１５４および１５６は、比較的感度の高いフォトトランジスタ、および／またはより大きい光出力を生成するＬＥＤを含むフォトオプティックペアに対応し、他方、中間の電圧曲線１５８、１６０、および１６２は、平均の感度を有するフォトオプティックペアに対応し、低い方の電圧曲線１６４および１６６は、比較的低い感度を有するフォトオプティックペアに対応する。
【００１７】
　前述した通り、図２を参照すると、フォトトランジスタの出力電圧が、非反転シュミットトリガの入力に印加され、シュミットトリガは、内部閾値電圧（前述したのと同じＶＴＨ）を有し、フォトトランジスタ電力がこの閾値を超えた場合、シュミットトリガからの出力が「１」であり、その電圧がこの閾値より小さい場合、「０」であるようになっている。ＬＥＤがオンにされ、フォトトランジスタがドレインされた後、何らかの定められた時間Ｔで信号の評価が行われるものと想定されたい。理想的には、ホイールの歯が遮っている場合、シュミットトリガからの出力は０であり、ホイールが、フォトトランジスタに到達する光を遮光していないか、またはほとんど遮光していない場合、シュミットトリガからの出力は１である。ホイールが動いており、時間間隔Ｔごとにサンプルが繰り返し取られた場合、０に対する１のパーセンテージが確立される。時間Ｔがうまく選択された場合、０に対する１の比は、およそ１：１でなければならない。１と０のこの均衡により、持続時間がほぼ等しい等間隔の直交状態が提供される。その結果、短い状態遷移により状態変化を外す可能性が小さくなる。
【００１８】
　デューティサイクル符号化の目的は、各チャネル上でフォトトランジスタ出力の時間サンプリングを制御して、ホイールが一定レートで回転させられているときに５０％のデューティサイクルを有する（各チャネル上の）直交ビットのシーケンスが生成され、直交状態を逸する可能性を低くするようにすることである。この目的は、所与の１組のフォトオプティックに関して出力信号をサンプリングする時間Ｔを見出すことによって達することができる。この時間は、ある程度は、Ｔｍｉｎとして示される閾値を超える最速の時間を測定することによって特定することができる。Ｔｍｉｎは、フォトトランジスタが全く覆われていない所与の１組のフォトオプティックの出力電圧が閾値を超えるのにかかる時間に対応する。したがって、半分覆われたフォトディテクタ信号が閾値を超えるのにかかる時間は、Ｔｍｉｎの値を２倍にすることによって推定することができる。次に、この考え方を拡張して、所与のサンプリング中に存在する遮光量を予測することができる。例えば、サンプルが、２Ｔｍｉｎの間隔で取られた場合、所与の１組のフォトオプティックに関する出力は、フォトディテクタが覆われているのが半分より少ない場合、１であり、フォトディテクタが半分より多く覆われている場合、０であり、これにより、５０％のデューティサイクルがもたらされる。
【００１９】
　要約すると、デューティサイクル符号化は、Ｔｍｉｎを決定し、再評価し、２Ｔｍｉｎの後にシュミットトリガによって生成された出力のサンプルを取ることを連続で行うことによって達せられる。このプロセスは、フォトディテクタ出力をドレインするステップ、フォトディテクタを開放してある電圧レベルまで帯電させるステップ、ＬＥＤをオンにするステップ、および２Ｔｍｉｎの遅延の後、シュミットトリガによって生成されたデジタル出力を読み取るステップを繰り返し行う。このプロセスを実施した結果、図４に示したのと同様の直交信号が、シュミットトリガによって生成されたデジタル波形出力を結合することによって生成される。
【００２０】
　予期される通り、図１および図２のフォトトランジスタ／シュミットトリガ／デューティサイクル制御アルゴリズムスキームによって生成される波形は、特に正確できれいではない。歯の位置に対して１対、スロットの位置に対して１対ではなく、１対のフォトトランジスタだけが使用されるため、チャネル上の論理レベル変化（高電圧レベルから低電圧レベルへの遷移、またはその逆の遷移）が逸せられる、または誤った論理レベル変化が示される可能性が存在する。以上の状況のどちらも、エンコーダの検知された動きがホイールの実際の動きとは異なることを生じさせ、これにより、Ｚホイールの動きが、コンピュータによって実行されるコントロールアクションで不正確に反映されることになる。この問題を克服する一般的なやり方は、デテント付きＺホイールに関連して開発された図８Ａおよび図８Ｂ（従来の技術）に示した特定の状態遷移スキームを含む。この状態遷移スキームおよび拡張された状態スキームは、特許文献４で十分に説明されている。ただし、一般に、図８Ａおよび図８Ｂに示した状態遷移スキームは、コードホイールの各デテント位置に関して２つの電気状態変化を必要とする。このスキームは、逸せられた状態変化、および誤った信号の影響を小さくするが、それでも多くの問題が生じやすい。
【００２１】
　主な問題は、このスキームが、スロットからスロットへのコードホイールの機械角の変位および方向を分解することに関して４つの状態だけに限られることである。２Ｔｍｉｎの比較的不定な遅延の後にシュミットトリガをサンプリングすることにより、離散データだけが提供される。すなわち、遮られるＬＥＤ光ビームが、フォトトランジスタ電圧が２Ｔｍｉｎ以内に電圧閾値に達するのを可能にするだけ十分に少ない場合に１が提供されるか、または歯によって遮られるＬＥＤ光ビームが、フォトトランジスタ電圧が２Ｔｍｉｎ以内に電圧閾値に達するのを妨げるだけ十分に多い場合に０が提供される。このスキームでは、角変位の分解能は、コードホイールの周りに配置された区別可能な歯およびスロットの数に限られる。角変位の分解能は、同一直径のコードホイールの周りの歯およびスロットの数を増やすことにより、かつ／またはコードホイールのサイズを大きくすることにより高めることが可能である。ただし、マウスなどの手で操作される入力デバイスの全体的サイズは、ユーザが快適に感じ、ユーザが制御するために限られた範囲内にとどまらなければならない。同様に、コードホイールの周りの歯およびスロットの数は、コードホイールのサイズ、フォトトランジスタのサイズ、および各フォトトランジスタからの信号を区別するのに必要とされるフォトトランジスタ間の最小距離によって限定される。
【００２２】
　別の手法は、デバイスのマイクロコントローラの出力をスケーリングすることである。例えば、マイクロソフトコーポレーションのＷＩＮＤＯＷＳ（登録商標）オペレーティングシステム内の標準のマウスドライバは、接続されたマウスのＺホイールマイクロコントローラ出力に、ｗｈｅｅｌ＿ｓｃａｌｅ＿ｍｕｌｔｉｐｌｉｅｒ（ＷＳＭ）として示される１２０のスケーリングファクタを掛ける。このスケーリングファクタは、単に、コードホイール状態変化カウントの倍数的増加を提供する。使用される値に関わらず、スケーリングファクタによってもたらされるカウントのより広い範囲により、ホストプロセッサ上のオペレーティングシステムまたはアプリケーションプログラムが、コードホイールの単一の増分を細分して、または別の形で変更して複数のカウントにすることにより、より高い分解能をエミュレートする人工的なやり方が提供される。そのようなスケーリングをホストプロセッサに移すことにより、マウスマイクロコントローラの処理の複雑さ、および費用が低減される。しかし、このスケーリングは、１つのコードホイール増分当たりの状態変化カウントの数を本当に増加させることはない。したがって、このスケーリングは、Ｚホイールの分解能を本当には向上させない。また、オペレーティングシステムおよび各アプリケーションプログラムによるそのような個別のスケーリングにより、単一のユーザのディスプレイ上の複数のウインドウでミスマッチなスクロールが生じさせられる可能性がある。各ウインドウ内のプログラムがスケーリングファクタを異なる仕方で使用した場合、ユーザは、異なるウインドウに焦点を切り替えるたびに毎回、異なるスクロール速度に順応しなければならないことになる。異なるスクロール速度に順応すること、および／または異なるスクロール速度を憶えておくことは、気遣わしい。ユーザに各ウインドウ内で一貫したスクロール速度を提供するため、オペレーティングシステムおよびほとんどのアプリケーションプログラムは、スクロールを行う前にスケーリングファクタを１２０で割ることによって無効にする。
【００２３】
　代替として、ユーザは、Ｚホイールの各デテント増分に通常、対応するコードホイールの各増分の効果を制御することができる。コントロールパネル設定を介して、ユーザは、１つのＺホイールデテント増分を１ページ全部をスクロールすること、または任意の数の個々の行（ときとして、本明細書でホイールスクロール行（ＷＳＬ）と呼ぶ）だけスクロールすることと等しくすることができる。デフォルトで、１つのＺホイールデテント増分は、３行をスクロールするように設定される。ユーザは、より迅速にスクロールするためにＷＳＬをより大きい数に設定することができるが、スクロールは、大きい不連続のジャンプになる。別法として、ユーザは、ＷＳＬを１行または２行に設定することができる。ただし、その場合、ユーザは、大きい隔たりをスクロールするのにＺホイールをより多くの回数、回転させなければならないことになる。いずれにしても、何らかの他の分解能制御なしには、コードホイール増分をいくつかの行と等しくすることにより、ユーザが視覚的に追跡するのが幾分、困難な、表示の何らかのスムーズでない動きが常にもたらされる。ユーザが、動きを視覚的に容易に追跡することができるが、それでも、必要な場合、Ｚホイールまたはその他の入力デバイスを過度に回転させることなく、大きい隔たりをカバーすることができるように、スムーズなより高い分解能の動きが好ましい。
【００２４】
　もちろん、わがかな行、またはその他の非常に小さい増分の隔たりを可能にするようにＷＳＬ選択を変更することも可能である。ただし、ユーザは、やはり、並みの隔たりをスクロールするのにさえＺホイールを多数回、回転させなければならないことになる。また、比較的スムーズなスクロールを提供するためには、わがかな増分は、Ｚホイールの１つのデテント増分当たりスクロールされる行数などのユーザフレンドリな設定とは全く有意な関係を失うほど非常に小さいものでなければならない。したがって、Ｚホイールまたはその他の入力デバイスを使用するスクロール（またはその他の機能）のスムーズな高い分解能の制御を提供するが、コードホイールの増分と結果のアクションの間で単純な関係を維持することが望ましい。
【００２５】
　スムーズなスクロールは、ホストコンピュータプロセッサ上、または入力デバイス内部の高性能プロセッサ上で実行される複雑なスムージングアルゴリズムを使用して実施することも可能である。ただし、ホストコンピュータにそのような入力の中断、およびさらなるオーバーヘッドを負担させることにより、ホストコンピュータの全体的な効率が低下する。高性能プロセッサを入力デバイスに追加することにより、通常、低価格であるデバイスの価格が跳ね上がる。また、入力デバイス内部に高性能プロセッサがあることで、入力デバイスとホストコンピュータの間でより多くの通信も必要とされる可能性がある。より多くの通信により、入力デバイスに対するユーザアクションへのリアルタイム応答を維持するのに、より高い帯域幅が必要とされる可能性が高い。残念ながら、より高い帯域幅は、高価であり、高性能プロセッサを備えたそのような入力デバイスの市場性を低下させる。したがって、入力デバイス内部の高性能で高価なプロセッサが複雑な計算を行うことを必要とせず、ユーザフレンドリな動きの単位に対する劣悪な関係をもたらすホストプロセッサによる人工的なスケーリングおよび細分化なしに、入力デバイスの分解能を向上させることが望ましい。
【００２６】
【特許文献１】米国特許５，９１２，６６１号明細書
【特許文献２】米国特許５，４７３，３４４号明細書
【特許文献３】米国特許６，３５３，４２９号明細書
【特許文献４】米国特許６，３８０，９２７号明細書
【特許文献５】米国特許５，２５６，９１３号明細書
【発明の開示】
【発明が解決しようとする課題】
【００２７】
　本発明は、単純な演算を使用するより精細な位置検出を介して電子入力デバイスの分解能を向上させる。より具体的には、本発明は、事前定義された分解能の範囲内で電子入力デバイス内部の可動部材の位置を特定するための方法およびシステムを提供する。
【課題を解決するための手段】
【００２８】
　１対のディテクタからなどの第１の信号および第２の信号が、互いにオフセットされ、可動部材の位置を示す。各信号が閾値レベルを超えるのに要する時間が測定され、逆数にされる（inverted）。また、各信号が閾値レベルを超えるのに要する最小時間および最大時間も測定され、逆数にされる。好ましくは、最小値および最大値は、最初、初期値に設定され、次に、異なる最小値および最大値が検出されるにつれて継続的に更新される。逆転最小時間および最大時間（inverted minimum and maximum times）から、各信号に関して基準値が特定される。次に、所望の分解能を定義する複数の事前定義されたセクタの中から、逆数にされた時間に応じてセクタが特定される。
【００２９】
　セクタは、好ましくは、複数の段階で特定される。最初、可動部材の動きの範囲が、物理検出サイクルに分割される。例えば、コードホイールが、１組の歯で分割される。したがって、動きは、歯から歯までのサイクルに分割される。信号が閾値を超えることに関する最小値および最大値は、サイクルを期間として特定される。各サイクルに関して、単一のサイクルを分割する複数の所定の四分円（quadrant）の中から四分円が特定される。四分円は、２つの逆数にされた閾値レベルを超えるのにかかる時間と２つの対応する基準値の相対関係で決まる。各四分円が、所望の分解能を定義するセクタに分割される。各セクタ間の境界は、単純な線形の数式で定義される。可動部材の現在の位置を最も正確に表わすセクタが、２つの逆転した閾値レベルを超えるのにかかる時間と２つの対応する基準値に相関する仮想ポイントを含む境界を決定するビット単位の比較演算で特定される。
【００３０】
　可動部材の動きがあれば、それを反映する第２の位置が特定される。第２の位置に対して特定されたセクタが、前の位置に対して特定されたセクタと比較されて、第２の位置と前の位置の間のセクタ数が計算される。複数の位置の間のセクタ数は、合計カウントがメッセージでホストデバイスに通信されるまで、カウントバッファの中に累積することが可能である。次に、ホストデバイスが、合計カウントをユーザフレンドリな動きの単位にスケーリングすること、または所望に応じて合計カウントを別の仕方で使用することができる。
【００３１】
　本発明の別の態様は、プロセッサが、前述し、以下にさらに詳細に説明するステップを実行することができるようにするマシン命令を記憶するメモリ媒体である。本発明のさらなる態様は、前述し、以下にさらに詳細に説明するステップを実行することが可能な、可動部材、信号源、およびコントローラを含む電子入力デバイスである。可動部材は、ホイール、スライダ、ボール、ジョイスティックまたはフィンガスティック、圧力パッド上のスタイラスまたは指、またはユーザが操作して入力を与えることができる任意の他の部材であることが可能である。信号源は、可動部材の位置を示す２つのオフセットされた信号を生成する。この信号は、コントローラに通信され、コントローラは、可動部材の位置を表わすセクタを特定する機能を実行する。電子入力デバイスは、信号が閾値レベルを超えるのにかかる時間を測定するためのタイマをさらに含むことが可能である。位置サンプルの間で通過されるセクタの合計数を累積し、記憶するバッファも含められることが可能である。セクタの合計数は、赤外線モジュール、無線周波数（ＲＦ）モジュール、ＵＳＢモジュール、パーソナルコンピュータシリーズ２（ＰＳ／２）モジュール、またはその他の通信モジュールなどの通信モジュールを使用してホストデバイスに通信することができる。
【００３２】
　本発明の以上の態様、および付随する利点の多くは、添付の図面と合わせて考慮される以下の詳細な説明を参照することによって本発明がよりよく理解されるにつれ、より容易に理解される。
【発明を実施するための最良の形態】
【００３３】
　例として、本発明の好ましい実施形態は、図１の従来技術のシステムで示したマウスのようなコンピュータマウスのためのＺホイールエンコーダシステムを含む。コンピュータマウスは、グラフィカルユーザインターフェースのオペレーティングシステムおよび／またはアプリケーションプログラムにおいて提供される表示をナビゲートするためにパーソナルコンピュータに接続される。コンピュータマウスは、動きを検出するのに使用されるフォトオプティックを有しているのを示しているが、本発明は、動きを検出する抵抗式構成要素、静電容量式構成要素、またはその他のタイプの構成要素を使用して実施することも可能であることが、当分野の技術者には認められよう。
【００３４】
　状態検出
　前述した通り、コードホイールの周囲に等間隔の１８の歯を有する１インチ（２．５４ｃｍ）直径のコードホイールを使用する従来技術の４ステート光学エンコーダシステムは、１回転当たり７２カウントをもたらす。しかし、従来技術の４ステート光学エンコーダからの信号の観察および解析により、入力デバイスに含まれるＺホイールなどの可動部材デバイスに関してより多数の状態を実現するのに使用することができるいくつかの性質が明らかになる。例えば、図６および図７で見ることができる通り、光検出サイクル中のフォトトランジスタ電圧ランプ（ramp）の最初の部分は、ほぼ線形である。したがって、電圧ランプレートは、フォトトランジスタに対する照度に正比例している。反対に、フォトトランジスタ電圧が所定の閾値（例えば、ＶＴＨ）を超えるのに必要な時間は、電圧ランプレートに反比例する。例えば、スロットによって多量のＬＥＤ光がフォトトランジスタを照射することが許されるようにコードホイールが位置する場合、電圧ランプレートは、高く、電圧が事前定義された閾値を超えるのに要する時間は短い。この時間を、ときとして、超えるまでの時間（time to cross）（ＴＴＣ）と呼ぶ。
【００３５】
　ＴＴＣは、コードホイールの角回転に対してプロットすることができる。図９は、コードホイールが一定レートで回転させられる場合の２つのフォトトランジスタのＴＴＣサンプルのプロットを示している。１．６μsecクロックを有する８ビットタイマを完全にファームウェアで実装して、フォトトランジスタ入力に関するＴＴＣを測定した。ファームウェアは、２０ＭＨｚクロックを使用するマイクロチップテクノロジーインコーポレーテッド（Microchip Technology Inc.）からのＰＩＣ（商標）マイクロコントローラ上で実行した。この測定システムを使用すると、ＴＴＣ値は、０から２５５までの範囲内であることが可能である。ＴＴＣ＿Ａプロットライン１７０が、フォトトランジスタの一方に関するＴＴＣを示している。ＴＴＣ＿Ｂプロットライン１７２が、他方のフォトトランジスタに関するＴＴＣを示している。時間のずれは、２つのフォトトランジスタ間の分離によってもたらされている。通常、フォトトランジスタは、フォトトランジスタの出力信号に９０度の位相差をもたらす距離だけ分離される。
【００３６】
　フォトトランジスタ出力の興味深いとらえ方が、ＴＴＣデータを逆転させることによって得られる。図１０は、ＴＴＣデータに適用された逆転関数（inversion function）を示している。好ましくは、この逆転は、逆転計算の必要性を無くすように２５６バイトのルックアップテーブルを使用して行われる。ルックアップテーブルの値は、以下の公式を使用して計算される。
【００３７】
【数１】
2004127284.tif 000003
【００３８】
　２５５ではなく、２５５０という値を分子として選択して逆転関数の分解能およびダイナミックレンジを最適化した。この選択の欠点は、ＴＴＣが１０カウントに等しいか、１０カウントを下回る場合、この関数がクリップすることである。ただし、この状況は、可能性が低く、ＬＥＤ電流を調整することによって完全に回避することができる。
【００３９】
　ＴＴＣプロットラインを逆転させたことの結果が、図１１に示した１対の正弦波の波形である。逆ＴＴＣ波形１８０（ＩＴＴＣ＿Ａとして示される）が、ＴＴＣ＿Ａプロットライン１７０に対応し、ＩＴＴＣ＿Ｂ波形１８２が、ＴＴＣ＿Ｂプロットライン１７２に対応する。一般的な解釈は、電圧ランプレートがエンコーダホイールの角変位の正弦関数であるということである。したがって、電圧ランプレートは、コードホイールのそれぞれのスロットからスロットまでの回転（機械角）に対して３６０度（電気角）変化する。回復された正弦波の波形は異なる振幅を有することに留意されたい。この結果は、フォトトランジスタ間のミスマッチ、および／またはフォトトランジスタとＬＥＤ間のミスアライメントによって生じさせられる可能性がある。
【００４０】
　これらの正弦波の波形を互いに対してプロットして、図１２に示した近似の円１８５をもたらすことができる。近似の円１８５の中心１８６の座標により、逆ＴＴＣプロットラインの各組み合わせに関する電気角をデコードするのに中心とすることができる基準値が提供される。この基準値（すなわち、中心１８６の座標）は、以下の公式を使用して計算される。
【００４１】
【数２】
2004127284.tif 000004
【００４２】
　ＩＴＴＣ＿ＡおよびＩＴＴＣ＿Ｂの最大値および最小値は、本発明のファームウェアによって常時、モニタされ、最大値および最小値に変化が生じたときに基準値が更新されるようになっている。この基準値が分かると、逆ＴＴＣ値（ＩＴＴＣ＿Ａ、ＩＴＴＣ＿Ｂ）の各ペアに関して電気角を特定することが可能である。各ペアに関する電気角は、以下の公式によって与えられる。
　　電気角=ARCTAN[(ITTC_A-REF_A)/(ITTC_B-REF_B)]
理論上、この角は、ゼロ度から３６０度までの範囲内のあらゆる角であることが可能であり、したがって、Ｚホイールの分解能は無限である。ただし、三角関数ＡＲＣＴＡＮを計算することは、浮動小数点計算を行う比較的高価な高性能なプロセッサを必要とするか、または過度に大きいルックアップテーブルを必要とすることになる。代わりに、低価格の構成要素で高速の単純な整数処理を維持するため、例示的な実施形態は、中心１８６の周りの複数のセクタに関する電気角を事前定義する。例示的なＺホイールの実施形態のケースでは、近似の円１８５が、図１３に示す通り、１６セクタに分割される。セクタ境界は、単に３６０度を所望のセクタの数で割ることによって定義することが可能であり、これにより、セクタ間で等しい角がもたらされる。ただし、基準値との関係でセクタ境界を定義することにより、より効率的な計算を実現することができる。例えば、例示的な実施形態に必要とされる中間セクタ境界は、以下の数式で定義することができる。
【００４３】
【数３】
2004127284.tif 000005
【００４４】
　各セクタ境界の角は、３６０／１６＝２２．５度に等しくない。代わりに、角は、それぞれ奇数番セクタと偶数番セクタに関して２６．５６度と１８．４４度の間で交番する。さらに、このやり方でセクタ境界を定義することにより、Ｚホイールに関するマイクロプロセッサが、全く角計算を行わなくてもよい。代わりに、マイクロプロセッサは、単純なビットシフト命令、比較命令、およびジャンプ命令を実行して、１対の逆ＴＴＣ値（ＩＴＴＣ＿Ａ，ＩＴＴＣ＿Ｂ）が中に入るセクタを特定し、これにより、コードホイールの位置を特定することができる。以下の擬似コードは、以上の命令を例示している。
【００４５】
【数４】
2004127284.tif 000006
【００４６】
　セクタ関数
【００４７】
【数５】
2004127284.tif 000007
【００４８】
　Ｚホイールが回転させられるにつれ、連続するセクタ値が、以上に提示した通り特定され、Ｚホイールエンコーダシステムのサンプル内のカウント数を特定するのに使用され、回転の方向を特定するのに使用される。具体的には、セクタがデコードされると（Ｃｕｒｒｅｎｔ＿Ｓｅｃｔｏｒ）、そのセクタが、前のサンプリングサイクルのデコードされたセクタ値（Ｐｒｅｖ＿Ｓｅｃｔｏｒ）と比較されて、エンコーダホイールの回転の量と方向が特定される。セクタ円を細分するので、可能な回転方向が２つある。セクタ変化のより小さい絶対値（Ｄｅｌｔａ＿Ｓｅｃｔｏｒ）を提供する方向が選択される。例えば、前のセクタが１であり、現在のセクタが１０である場合、セクタ変化の数は、＋９ではなく、−７である。セクタ変化の絶対数が８である場合、現在の回転方向は、前の回転方向と同じであるものとされる。現在のセクタが前のセクタと同じである場合、セクタ変化の絶対数は０であり、回転方向は、前の回転方向と同じままである。同じ回転方向を保持することは、以下に説明する１セクタヒステリシスアルゴリズムに必要とされる。テーブル１は、本発明において使用される方向の関係を示している。
【００４９】
【表１】
2004127284.tif 000008
【００５０】
　Ｚホイールエンコーダシステムのサンプリングのレートは、標準のＰＳ２、ＵＳＢ、またはＲＦのパケットレートより高いため、カウントは、バッファの中に累積されてから、マウスメッセージでホストコンピュータに通信される。マウスメッセージからカウント数を受け取ると、オペレーティングシステムまたはアプリケーションプログラムは、そのカウント数を使用してスクロール距離を特定する。したがって、既存の低価格のＺホイールシステムの機械的ハードウェアまたは電気的ハードウェアを変更することなく、前述したファームウェア論理は、従来の技術と比べて分解能を４倍向上させることを実現する。具体的には、１６セクタが、１つの歯および１つのスロット当たり１６の状態を提供し、この１６に、コードホイールの周りの１８の歯を掛けて、Ｚホイールの１回転当たり２８８のカウントがもたらされる。従来の技術は、１つの歯および１つのスロット当たり４つだけの状態を使用することに基づいて、１回転当たり７２だけのカウントを実現していた。
【００５１】
　前述した通り、セクタの角は、それぞれ奇数番セクタと偶数番セクタに関して２６．５６度と１８．４４度の間で交番する。前掲の擬似コードで示される通り、この不等の角に関連する数式を使用することにより、サブ状態デコードアルゴリズムが大幅に単純化される。ただし、前述した数式は、およそ１８％の角に関する百分率誤差を導入する。というのは、角は、２２．５度で均等であるからである。この好ましい角により近い角を実現し、それでもやはり、単純なビットシフト計算命令、比較命令、およびジャンプ命令を使用するため、以下のわずかに複雑度の高い数式でセクタ境界を定義することができる。以下の数式は、擬似コードで、垂直値と水平値に関して書かれていることに留意されたい。
【００５２】
【数６】
2004127284.tif 000009
【００５３】
　以上の数式の１／１６という分数は、当分野の技術者には明白な通り、わずかなさらなるビットシフトおよびファームウェアの追加だけで実現することができる。それでも、以上の数式を使用すると、電気角は、２３．６３度または２３．３７度になる。したがって、百分率誤差は、およそ５％にまで減少する。
【００５４】
　同様に、他の分数を使用して例示的なエンコーダシステムに関してより高い分解能を実現することができる。例えば、１つの歯およびスロットの遷移当たり３２セクタを使用して、より高い分解能が実現されている。３２セクタに必要とされる中間セクタ境界は、やはり垂直値と水平値に関して書かれている以下の数式で定義することができる。
【００５５】
【数７】
2004127284.tif 000010
【００５６】
　　境界(6,7): 水平=(1/4-1/32)*垂直
水平＞垂直である場合、
・境界（１，２）の閾値をまず、ビットシフトおよびビット追加で計算することができる。
・境界（０，１）の閾値を前の閾値を単に１ビットだけ右にシフトすることによって計算することができる。
・境界（２，３）の閾値を前の２つの閾値を合計することによって計算することができる。
垂直＞水平である場合、垂直値と水平値が入れ替わること以外、演算は、以上の演算と同じである。したがって、ファームウェアにいくつかのさらなるビットシフトおよびビット追加の演算を含めることにより、大幅に向上した分解能を実現することができる。所望のセクタ数を定義し、対応するセクタ論理を追加することにより、その他のレベルの分解能を実現できることが、当分野の技術者には認められよう。反対に、単にセクタ関数をスキップし、１回転当たり７２カウントのより低い分解能に合わせて各歯−スロット遷移を４つの状態に分割する四分円デコード論理を使用することにより、後方互換性を維持することができる。
【００５７】
　一般に、以上の技術を使用して、入力デバイスの分解能をホストコンピュータに送られるカウント数として定義する任意の所望のレベルのセクタに分解能をスケーリングすることができる。入力デバイスからより多くの数の本当のカウントが利用できることで、Ｚホイールの過度な回転を必要とすることなく、スムーズなスクロールを実現することができる。ホストコンピュータは、人工的なスケーリングファクタ（例えば、１２０）を小さくするか、または無くすことができるが、それでも、Ｚホイールの１つのデテント増分当たりの行数などの、ユーザフレンドリな設定に対して有意な関係を維持する形でその他の係数を使用することができる（例えば、３というデフォルトのホイールスクロール設定）。
【００５８】
　誤り制御
　ほとんどのデバイスと同様に、以上の手法も、符号化システムの線形性、分解能、トラッキング速度、およびその他のパフォーマンス特性に影響を与える可能性があるドリフト、異常、およびその他の誤りを導入するいくつかの電気的要因および機械的要因にさらされている。テーブル２は、その要因のいくつか、およびその要因の効果をリストしている。
【００５９】
【表２】
2004127284.tif 000011
【００６０】
　以上の要因のうちいくつかの影響は、誤りを小さくするファームウェアアルゴリズムで制御することができる。例えば、フォトトランジスタ出力の振幅のミスマッチは、マイクロコントローラが、乗法および符号付き整数の演算をサポートする場合、ＩＴＴＣ＿ＡおよびＩＴＴＣ＿Ｂを適切にスケーリングすることによって補償することができる。ＩＴＴＣ＿ＡおよびＩＴＴＣ＿Ｂの値は、以下の数式によって正規化することができる。
【００６１】
【数８】
2004127284.tif 000012
【００６２】
　正規化されたＮＩＴＴＣ＿Ａ値と正規化されたＮＩＴＴＣ＿Ｂ値は、同一の最大値および同一の最小値を有する。このため、ＮＩＴＴＣ＿ＡおよびＮＩＴＴＣ＿Ｂは、ＸＹプロット（０，０）の原点の周りで円形の経路を描き、ミスマッチなフォトトランジスタ出力信号の振幅によって生じさせられる不均一な状態の分布が最小限に抑えられる。
【００６３】
　動作環境の変化に起因する基準ポイントのドリフトを補償するため、ＩＴＴＣ＿ＡおよびＩＴＴＣ＿Ｂをファームウェアによって常時、モニタして、最大値および最小値に変化が生じたときに基準値ＲＥＦ＿ＡおよびＲＥＦ＿Ｂが更新されるようにする。具体的には、ＩＴＴＣ＿Ａサンプル値およびＩＴＴＣ＿Ｂサンプル値のすべてのセットを最新の最大値および最小値を保持するレジスタと比較する。サンプル値が現在の最大値または最小値を超えた場合、その新しい値でレジスタを更新し、それに応じて基準値を再計算する。
【００６４】
　少なくとも２つの方法を使用して電気系統における異常の影響を最小限に抑える。第１に、ＩＭＡＸ＿Ａレジスタ、ＩＭＩＮ＿Ａレジスタ、ＩＭＡＸ＿Ｂレジスタ、ＩＭＩＮ＿Ｂレジスタの値の変化を５までに制限する。例えば、ＩＴＴＣ＿Ａの現在の最大値が１２０であり、次のサンプルが１５０として入ってきた場合、この変化は、概して、電気的障害の結果であり、レジスタを５だけインクリメントして１２５にする。最大値および最小値の増分を制限することは、異常なデータの効果を小さくするのに役立つ。
【００６５】
　第２に、２８８の状態変化（すなわち、Ｚホイールの１回転）の後に毎回、最大値および最小値を周期的に縮小する。具体的には、２８８の状態変化の後に毎回、ＩＭＩＮ＿ＡレジスタおよびＩＭＩＮ＿Ｂレジスタを１だけインクリメントし、ＩＭＡＸ＿ＡレジスタおよびＩＭＡＸ＿Ｂレジスタを１だけデクリメントすることを結果の値が初期値に達するまで続ける。この手法は、電気的障害の効果を小さくし、システムが動作環境の変化に細かく適応するのに役立つ。
【００６６】
　ＩＴＴＣ＿ＡおよびＩＴＴＣ＿Ｂの電気角が２つのセクタ間の境界に非常に近い位置でエンコーダホイールが停止した場合のジッタを無くすため、状態デコードアルゴリズムに１ステートヒステリシスを追加する。ただし、スクロール方向の変化が存在するときはいつでも、最初のセクタ変化は、状態変化カウントに追加しない。
【００６７】
　テーブル１に示した通り、アルゴリズムは、各サンプリングサイクル間で最大８セクタまで回転の方向および量を正確にデコードすることができる。２つのサンプリングサイクル間で８セクタを越えて電気角が変化するだけ十分な速度でエンコーダホイールが回転させられた場合、回転のデコードされた方向および量は、誤ったものとなる。エンコーダホイールの回転の最大速度と、超えるまでの時間の値が測定されるレート（すなわち、サンプリングレート）の間には、直接的な関係が存在することが、当分野の技術者には認められよう。
【００６８】
　サンプリングレートが十分に高く、エンコーダホイールを回転させることが物理的に可能な速度より高い回転速度を正しく符号化できる限り、エリアシングは生じない。例えば、既存の１８の歯のエンコーダホイールを使用すると、毎分２０００回転（ＲＰＭ）の回転速度を正しく符号化するのに必要とされるサンプリングレートは、以下の数式で計算することができる。
　　サンプリングレート＝毎秒(RPM÷60*228÷8)サンプル=毎秒1200サンプル
【００６９】
　システムが初期設定されたばかりで、ユーザがスクロールホイールをまだ使用していないとき、ＩＴＴＣ＿ＡおよびＩＴＴＣ＿Ｂの最大値および最小値はまだ知られておらず、したがって、基準値ＲＥＦ＿ＡおよびＲＥＦ＿Ｂもまだ知られていない。このため、初期サンプルの電気角は、ホイールが少なくとも３６０度の電気角（すなわち、単一の歯から歯までの機械回転）を回転させられるまで特定することができない。この問題を克服する少なくとも２つの方法が存在する。
【００７０】
　第１に、ＩＴＴＣ＿ＡおよびＩＴＴＣ＿Ｂの最大値および最小値を大きい母集団（population）のＬＥＤとフォトトランジスタのペアを対象に測定することができる。最大値および最小値の統計値を調べることができ、ＲＥＦ＿Ａ値およびＲＥＦ＿Ｂ値に関する初期推定を選択して、ファームウェアにハードコード（hard code）することができ、これにより、アルゴリズムが初期の始動中に電気角を適度にうまくデコードすることが可能になる。ユーザがスクロールホイールを使用しつづけるにつれ、前述した通り、基準値を最適な値に微調整することができる。
【００７１】
　別法として、製造プロセス中に各製造ユニットに関して最大値および最小値を測定することができ、基準値を計算して、マイクロコントローラの何らかの不揮発性メモリの中に記憶することができる。ユーザがユニットを最初にプラグインしたとき、マイクロコントローラが、初期の始動期間中の電気角をデコードするための記憶されている基準値を取り出す。
【００７２】
　テーブル１内のその他の要因に対処する解決策は当技術分野で用意されていることが、当分野の技術者には認められよう。
【００７３】
　例示的なシステム
　以上の技術および誤り制御をよりよく理解してもらうため、例示的なシステムの機能ブロック図を図１４に示している。信号源２００が、チャネルＡ信号およびチャネルＢ信号を生成する。例えば、前述した通り、コードホイールが、発光体と検出回路の間で回転して、２つの対応するフォトトランジスタからチャネルＡ信号およびチャネルＢ信号を生成する。信号源２００は多くの他の形態をとることが可能であることが、当分野の技術者には認められよう。例えば、ボールで発光体と検出回路の間でコードホイールを回転させること、スライダでポテンショメータの２つのポイントの抵抗を変化させること、スタイラスまたは指を圧力感知パッドに沿って動かすこと、絶縁体を２つの容量性ディテクタに隣接して通すこと、磁束を検出するように導体を動かすことが可能であり、あるいは多数の他の信号源を使用することができる。いずれにしても、信号は、プロセッサ２０２に通信される。好ましくは、プロセッサ２０２は、ＣＹＰＲＥＳＳ（商標）マイクロコントローラなどの単純なマイクロコントローラであるが、マイクロコントローラには限定されない。プロセッサ２０２は、代わりに、ハードワイヤドの回路（hard-wired circuit）、特定用途向け集積回路（ＡＳＩＣ）、または前述した技術を実現することができる任意の他の要素を含むことが可能である。プロセッサ２０２は、好ましくは、電源２０４と通信して信号源２００に対する電力を制御する。例えば、プロセッサ２０２は、電流をクランプし、開放して、検出回路によって検出される光度の増加を生じさせることにより、発光体に対する電力を制御することができる。プロセッサ２０２は、クロック２０６とも通信し、クロック２０６は、好ましくは、プロセッサ２０２の動作速度をおよそ２０ＭＨｚに調整する。
【００７４】
　さらに、プロセッサ２０２は、メモリ２１０と通信する。メモリ２１０は、プロセッサ２０２と同じチップ上に含まれること、またはプロセッサ２０２とは別個の１つまたは複数の構成要素に含まれることが可能である。メモリ２１０の中には、ファームウェア２１２が記憶されている。好ましい実施形態では、ファームウェア２１２は、それぞれが１４ビットの８９５の機械語にコンパイルされる。好ましくは、ファームウェア２１２は、論理入力タイマレジスタ２１４を含み、プロセッサ２０２内部でさらなるハードウェアレジスタが必要とされることを回避する。入力タイマレジスタ２１４は、信号源２００からの信号が所定の閾値を超えるまでの時間を測定する。各ＴＴＣ値は、０から２５５までの範囲内であることが可能である。入力タイマレジスタ２１４は、好ましくは、およそ１ＭＨｚから２．５ＭＨｚまでのレートに同期される８ビットタイマを提供する。ＴＴＣ値は、論理ブロック２１６に提供される。論理ブロック２１６は、２５６バイトのルックアップテーブルを使用して、ＴＴＣ値の逆数を特定する。もたらされた逆ＴＴＣデータから、論理ブロック２１６は、各チャネルに対応する最大値および最小値を特定し、最大値および最小値の各範囲の中点に基準ポイントを特定する。次に、論理ブロック２１６は、前掲の擬似コードの論理を実行して、信号源２００からの信号によって表わされる現在の位置に対応する現在のセクタを特定する。例えば、前述した通り、論理ブロック２１６は、現在のセクタを前のセクタと比較して、コードホイールの回転の方向、および前のセクタからのセクタ数（すなわち、カウント）を特定する。カウントは、メモリ２１０の中に含まれるカウントバッファ２１８の中に記憶される。通信モジュール２２０が、カウントバッファ２１８の中のカウントにアクセスしてメッセージを生成し、そのメッセージをホストコンピュータに送る。好ましくは、通信モジュール２２０は、カウントデータをおよそ毎秒２０，０００カウントのレートで転送することができる。
【００７５】
　本発明を実施する好ましい形態に関連して本発明を説明してきたが、頭記の特許請求の範囲内で、この形態に多数の変更を行うことが可能であることが、当分野の技術者には理解されよう。例えば、本発明を、水平スクロール、拡大縮小、Ｚナビゲーション、回転、ボリューム制御、カラー選択、フォントスケール、スライダ制御、およびアプリケーション間ナビゲーションを含むその他のナビゲーションパラメータに適用することが可能である。したがって、本発明の範囲は、以上の説明によって何ら限定されず、完全に頭記の特許請求の範囲に関連して決まる。
【図面の簡単な説明】
【００７６】
【図１】コンピュータマウスの回転可能なＺホイールに関する従来技術のデテント付き光学エンコーダの主な構成要素を含むアセンブリを示す等角図である。
【図２】コンピュータマウスのＺホイールに回転可能なように接続されたコードホイールの動きを検出するためのフォトオプティックエンコーダ（従来の技術）を示す概略図である。
【図３】特許文献４で説明される通り、エンコーダホイール位置を生成するのに使用される機能ブロック（従来の技術）を示すブロック図である。
【図４】ＬＥＤから放出され、ＬＥＤとフォトトランジスタの間のコードホイールによって減衰された光を検出する２つのフォトトランジスタの出力波（従来の技術）を示す信号図である。
【図５】フォトトランジスタによって生成される出力電荷を説明するアナロジーで使用される時間に対する水の高さ（従来の技術）を示す図である。
【図６】コードホイールによる様々な遮光レベルで所与の発光体／フォトトランジスタのペアの出力を示す時間に対する電圧（従来の技術）の図である。
【図７】フォトオプティックセット間の出力の差を示す時間に対する電圧（従来の技術）の図である。
【図８Ａ】図２の光学エンコーダで使用される従来技術の２Ｘ直交符号化スキームに対応する状態図である。
【図８Ｂ】図８Ａの状態図に対応する従来技術の遷移状態テーブルを示す図である。
【図９】コードホイールが一定レートで回転させられた場合の２つのフォトトランジスタに関する「超えるまでの時間」のサンプルのプロットを示す図である。
【図１０】超えるまでの時間に適用された逆転関数を示す図である。
【図１１】コードホイールが一定レートで回転させられた場合の２つのフォトトランジスタに関する超えるまでの時間の逆数のサンプルのプロットを示す図である。
【図１２】互いに対してプロットされた超えるまでの時間の逆数のサンプルのプロットを示す図である。
【図１３】セクタに分割された図１２のプロットを示す図である。
【図１４】例示的なシステムの構成要素を示す機能ブロック図である。
【符号の説明】
【００７７】
　１０コードホイール
　１２　発光体
　１４　集積検出回路
　１６　歯
　１８　スロット
　２０　発光ダイオード
　２１　光ビーム
　２２　レンズ
　２４　フォトディテクタ
　３２　非反転シュミットトリガ
　５２　突起
　５４　長手方向スロット
　５６　シャフト
　５８　Ｚホイール
　１００　デューティサイクル制御ブロック
　１０２　遷移判定ブロック
　１０４　ホイール学習ブロック
　１０６　プロセスブロック
　１０８　サンプルルックアップテーブル
　１１０　論理ルックアップテーブル
　１１２　Ｚ／Ｑｕａｄテーブル
　１１４　データパケット
　２００　信号源
　２０２　プロセッサ
　２０４　電源
　２０６　クロック
　２１０　メモリ
　２１２　ファームウェア
　２１４　入力タイマレジスタ
　２１６　論理ブロック
　２１８　カウントバッファ
　２２０　通信モジュール
【図１】
2004127284.tif 000013
【図２】
2004127284.tif 000014
【図３】
2004127284.tif 000015
【図４】
2004127284.tif 000016
【図５】
2004127284.tif 000017
【図６】
2004127284.tif 000018
【図７】
2004127284.tif 000019
【図８Ａ】
2004127284.tif 000020
【図８Ｂ】
2004127284.tif 000021
【図９】
2004127284.tif 000022
【図１０】
2004127284.tif 000023
【図１１】
2004127284.tif 000024
【図１２】
2004127284.tif 000025
【図１３】
2004127284.tif 000026
【図１４】
2004127284.tif 000027