以下、添付図面を参照しながら、本発明の好ましい実施の形態について詳細に説明する。
図1は、本実施の形態によるタッチ検出装置1の断面図であり、図2は、タッチ検出装置1の機能ブロックを示す略ブロック図である。
タッチ検出装置1は、図1に示すように、略直方体の上蓋なしの箱状に形成された筐体2と、表示面3aを上に向けた状態で筐体2の内部に収められた表示装置3と、表示面3aの上方に配置された透明のカバーパネル5と、カバーパネル5の下面(表示面3aとの対抗面)に貼り付けられたタッチセンサ6と、カバーパネル5及びタッチセンサ6を支えるスペーサ4とを備えて構成される。なお、スペーサ4は、筐体2の縁部の全周にわたって配置される。また、タッチ検出装置1は、図2に示すように、タッチセンサコントローラ10、記憶部20、及びホストCPUも備えて構成される。本実施の形態によるタッチ検出方法は、このタッチセンサコントローラ10によって実行される。
図1に示すように、タッチ検出装置1においては、カバーパネル5の上面がタッチ面5aを構成する。タッチ検出装置1に対する入力操作は、このタッチ面5a上で図示した指8などの指示体を移動させることによって実行される。なお、タッチセンサ6用の指示体としては、図示した指8の他、静電容量方式に対応した電子ペンなども使用できるが、以下では説明の簡単のため、指示体として指8を使用するものとして説明する。また、タッチセンサ6と表示面3aとは密着しておらず、これらの間には一定の空間(エアーギャップ7)が設けられている。つまり、タッチ検出装置1は、上述したエアーギャップ型のタッチ検出装置である。
表示装置3は、図2に示したホストCPUの制御に基づき、文字や画像を表示するための装置である。表示装置3として、具体的には液晶ディスプレイや有機ELディスプレイを用いることが好適であるが、これら以外のディスプレイにより表示装置3を構成することも可能である。
タッチセンサ6は静電容量方式のタッチセンサであり、図2に示すように、それぞれY方向(図1に示したタッチ面5a内の一方向)に延在し、X方向(図1に示したタッチ面5a内でY方向に直交する方向)に等間隔で配置された複数のX電極6xと、それぞれX方向に延在し、Y方向に等間隔で配置された複数のY電極6yとが交差して配置された構成を有して構成される。これらX電極6x及びY電極6yは、タッチセンサ6のセンサ電極を構成する。各X電極6x及び各Y電極6yはいずれもITO透明導電性フィルムなどの透明な導電材料によって構成されており、したがってタッチ検出装置1のユーザは、タッチ面5aを通して表示装置3の表示面3aを見ることができる。タッチ面5aに指8が接触すると、指8と、その近傍にあるX電極6x及びY電極6yとの間に静電容量が発生する。図2に示したタッチセンサコントローラ10は、この静電容量の変化を利用して、タッチ面5a上における指8の位置を検出するように構成される。この点については、後ほど再度より詳しく説明する。
カバーパネル5は、例えばガラスやプラスチックなどの、タッチ面5aに対する押圧力に対して高い強度を有する透明材料によって構成される。ただし、ユーザが強めにタッチ面5aを押下すると、カバーパネル5は、タッチセンサ6とともに表示面3a方向にたわむ。このたわみは上述した静電容量に影響を及ぼすので、タッチセンサコントローラ10による指8の検出にも影響を及ぼす。この点についても、後ほど再度より詳しく説明する。
タッチセンサコントローラ10は、図2に示すように、発振器11と、マルチプレクサ12,13と、アナログデジタル変換器(A/D)14と、タッチ検出部15と、座標導出部16とを有して構成される。
発振器11は、所定周波数の信号を発振する回路である。また、マルチプレクサ12は、複数のX電極6xを所定の時間間隔で1つずつ順次選択し、選択したX電極6xに発振器11を接続する役割を果たす回路である。このマルチプレクサ12の働きにより、発振器11が出力した信号は、複数のX電極6xのそれぞれに順に供給されることになる。X電極6xに供給された信号は、各Y電極6yとの交差位置(i,j)を通じて、各Y電極6yに供給される。ここで、i,jはそれぞれX電極6x及びY電極6yの通番を示す自然数であり、iとjの組み合わせ(i,j)により、タッチ面5a上における各交差位置の座標が示される。i,jそれぞれの最大値は、図2に示すようにM,Nである。
マルチプレクサ13は、複数のY電極6yを所定の時間間隔で1つずつ順次選択し、選択したY電極6yをアナログデジタル変換器14の入力端に接続する役割を果たす回路である。アナログデジタル変換器14は、各Y電極6yから供給された信号に標本化及び量子化を施すことによってデジタル信号を生成し、生成したデジタル信号をタッチ検出部15に供給する機能を有する。
いずれかの交差位置(i,j)の近くに指8が接近していると、その交差位置(i,j)の近傍にあるX電極6x及びY電極6yと指8との間に静電容量が生じて人体方向に信号が吸い取られる。その結果、そのY電極6yからアナログデジタル変換器14に供給される信号の振幅が小さくなり、それがデジタル信号の値に反映される。タッチ検出部15は、こうしてデジタル信号の値に反映される振幅の変化に基づき、交差位置(i,j)ごとに、指8とタッチセンサ6間の静電容量を示す容量値C(i,j)を取得するよう構成される。なお、タッチ検出部15の具体的な回路構成としては、例えばプログラマブルロジックコントローラのようなハードウェア回路が用いられる。
タッチ検出部15はまた、容量値C(i,j)を差分値D(i,j)(指8とタッチセンサ6間の静電容量に対応する検出値)に変換する機能も有する。具体的に説明すると、記憶部20には、図2に示すように、交差位置(i,j)ごとの基準値S(i,j)を格納するフレームメモリFM0と、交差位置(i,j)ごとの差分値D(i,j)を格納するフレームメモリFM1とが設けられる。タッチ検出部15は、交差位置(i,j)ごとに、フレームメモリFM0から基準値S(i,j)を読み出し、次の式(1)により、読み出した基準値S(i,j)を対応する容量値C(i,j)から減算する処理を行う。そして、この減算の結果として得られる数値を、各交差位置(i,j)に対応する差分値D(i,j)としてフレームメモリFM1に格納するよう構成される。
タッチ検出部15は、以上の機能の他に、予め記憶しているタッチ検出閾値T2(第2の閾値。後掲する図13を参照)を上回る差分値D(i,j)があるか否かを判定し、あると判定した場合にのみ座標導出部16に座標導出を行わせる機能や、座標導出部16の指示に基づいて基準値S(i,j)のキャリブレーションを行う機能なども有するが、これらの詳細については、後ほど図13及び図14を参照しながら説明する。
座標導出部16は、フレームメモリFM1に記憶される複数の差分値D(i,j)の中の最大値を取得し、この最大値から減算値Rを減ずることによってタッチ検出閾値T1(第1の閾値)を算出する機能と、算出したタッチ検出閾値T1を基準として、交差位置(i,j)ごとの差分値D(i,j)に基づいて指8の位置を導出する機能とを有する。また、座標導出部16はさらに、差分値D(i,j)がタッチ検出閾値T1を超える1又は複数の交差位置(i,j)により示される領域の重心GCur(代表位置)を算出するとともに、この重心GCurの移動の有無を判定し、その判定結果に応じて、差分値D(i,j)に近づく方向に各基準値S(i,j)を較正するためのキャリブレーション処理を起動する機能も有する。座標導出部16は、例えばMPUのような集積回路によって構成されており、外部から供給されるプログラムを実行することによって、上記3つの機能を含む各機能を実現するよう構成される。
座標導出部16の機能の詳細についても、後ほど図13及び図14を参照しながら別途説明する。
以上、タッチ検出装置1の概要について説明した。次に、フレームメモリFM1に格納される差分値D(i,j)について、ユーザの手(指8を含む)とタッチ検出装置1の位置関係の状態ごとに、具体的な例を挙げて説明する。
図3(a)〜図3(f)は、ユーザの手とタッチ検出装置1の位置関係の状態を示す模式図である。なお、これらの図では、タッチ検出装置1の断面図を少し簡略化して描いている。図3(a)は、タッチ検出装置1の近傍にユーザの手が存在しない状態(状態S0)を示している。また、図3(b)は、指8によってタッチ面5aの中央付近が押下されている状態(状態S1)を示している。図3(c)は、指8によってタッチ面5aの端部付近が押下されている状態(状態S2)を示している。図3(d)は、拳8aによってタッチ面5aの中央付近が押下されている状態(状態S3)を示している。図3(e)は、掌8bによってタッチ検出装置1が背面支持されている状態(状態S4)を示している。図3(f)は、掌8bによってタッチ検出装置1が背面支持されつつ、指8によってタッチ面5aの中央付近が押下されている状態(状態S5,S6)を示している。
図4は、図3(a)に示した状態S0における差分値D(i,j)の一例を示す図である。なお、図4には、X電極6xがTX00〜TX35の36個、Y電極6yがRX00〜RX62の63個それぞれ設けられる例を示しており、図4(a)では、奥行き軸がX座標、横軸がY座標、縦軸が差分値D(i,j)をそれぞれ表し、図4(b)では、横軸がY座標、縦軸が差分値D(i,j)をそれぞれ表している。図4(b)は、図4(a)を奥行き方向に見た図となっている。これらの点は、後に参照する図5〜図11についても同様である。ただし、図5については、差分値D(i,j)に代えて基準値S(i,j)を用いている。
図4に示すように、状態S0における差分値D(i,j)はタッチ面5a上のどの位置においてもほぼゼロであり、これは、タッチ検出装置1の近傍にユーザの手を含む指示体が何も存在しないことを示している。ただし、この場合においても、容量値C(i,j)は座標ごとに異なっているのが通常であり、図4に示すような一様な差分値D(i,j)を得るためには、予め基準値S(i,j)の調整を行っておく必要がある。図5には、こうして調整された基準値S(i,j)の一例を示している。
図6は、図3(b)に示した状態S1における差分値D(i,j)の一例を示す図である。同図においてタッチ面5aの中央付近に生じている凸部は、タッチ面5aの中央付近に位置している指8とタッチセンサ6との間に生ずる静電容量を反映した指示体凸部である。図6では、指示体凸部の周囲においても差分値D(i,j)が大きくなっているが、これは、タッチセンサ6のたわみによって生ずるワイド凸部である。すなわち、図3(b)に例示するように、指8の押圧力によっては、タッチ面5aの押下によってタッチセンサ6にたわみが生ずる場合がある。このたわみによって生ずるタッチセンサ6の位置の変化が大きいほど、タッチ検出部15によって検出される容量値C(i,j)が大きくなるため、図6のように、押下点の付近にワイド凸部が生ずることになる。
本実施の形態によるタッチ検出装置1の特徴の一つは、このようにワイド凸部が生じている場合であっても、指示体凸部のみを適切に検出することを実現する点にある。そのために、本実施の形態では、差分値D(i,j)の最大値から減算値Rを減ずることによって得られるタッチ検出閾値T1を利用する。詳細については、後ほど図13及び図14を参照しながら説明する。
図7は、図3(c)に示した状態S2における差分値D(i,j)の一例を示す図である。同図においてタッチ面5aの端部付近に生じている凸部は、タッチ面5aの端部付近に位置している指8とタッチセンサ6との間に生ずる静電容量を反映した指示体凸部である。この指示体凸部は図6の指示体凸部に比べて小さいが、これは、タッチ面5aの端部付近でタッチセンサ6の感度が弱いことによるものである。また、この場合にも指示体凸部の周囲で差分値D(i,j)が大きくなっているが、これは図6の場合と同様、タッチセンサ6のたわみによって生ずるワイド凸部である。押下点がタッチ面5aの端部であるため、指8による指示体凸部は、たわみによるワイド凸部の端部付近に位置している。
図8は、図3(d)に示した状態S3における差分値D(i,j)の一例を示す図である。同図においては、指示体凸部は生じておらず、相対的に広いワイド凸部の上に相対的に狭いワイド凸部が生じている。後者のワイド凸部は拳8aとタッチセンサ6の間に発生する静電容量を反映したものであり、前者のワイド凸部はタッチセンサ6のたわみによって生じたものである。
図9は、図3(e)に示した状態S4における差分値D(i,j)の一例を示す図である。同図においても指示体凸部は生じておらず、ワイド凸部が1つ生じている。このワイド凸部は背面支持によって生じたものであり、図8に示した拳8aによるワイド凸部や、タッチ面5aの押下によって生じたたわみによるワイド凸部と比べると、その重心が移動しないという特徴を有している。
この特徴について、具体的な例を挙げて説明する。図12は、所定時間にわたる凸部の重心の移動の軌跡を示したものであり、図12(a)は図3(e)に示した状態S4で検出されるワイド凸部の重心の移動の軌跡を、図12(b)は図3(d)に示した状態S3で検出されるワイド凸部の重心の移動の軌跡を、それぞれ示している。これらの図から理解されるように、背面支持によって生ずるワイド凸部の重心は、拳8aによって生ずるワイド凸部の重心に比べると、ほとんど移動していない。このように、背面支持によって生ずるワイド凸部は、重心がほとんど移動しないという特徴を有している。
本実施の形態によるタッチ検出装置1の特徴の他の一つは、このような背面支持によって生ずるワイド凸部の特徴を利用して、背面支持によって生ずるワイド凸部のみをタッチ検出部15が行うキャリブレーション処理の対象とできる点にある。その詳細については、後ほど図13及び図14を参照しながら説明する。
図10及び図11はそれぞれ、図3(f)に示した状態S5,S6における差分値D(i,j)の一例を示す図である。状態S5はタッチ検出部15がキャリブレーション処理を実行する前の状態であり、状態S6はタッチ検出部15がキャリブレーション処理を実行した後の状態である。図10及び図11においてタッチ面5aの中央付近に生じている凸部は、タッチ面5aの中央付近に位置している指8とタッチセンサ6との間に生ずる静電容量を反映した指示体凸部である。なお、図10と図11とでは指示体凸部の位置が異なっているが、これは測定の都合によるものであり、本質的な違いではない。
図10では、指示体凸部の周囲に、図9に示したものと同じ、背面支持によるワイド凸部が現れている。タッチ検出部15が行うキャリブレーション処理はこのワイド凸部をキャンセルするためのものであり、キャリブレーション処理の実行後には、図11に示すように、背面支持によるワイド凸部が消え、指示体凸部のみが現れるようになる。キャリブレーション処理の詳しい内容についても、後ほど図13及び図14を参照しながら説明する。
以上、図2に示したフレームメモリFM1に格納される差分値D(i,j)の具体例を説明した。次に、図13及び図14を参照しながら、タッチ検出部15及び座標導出部16の機能について、詳細に説明する。
図13は、タッチ検出部15が行うタッチ検出処理の処理フローを示す図である。このタッチ検出処理では、まず初めに、各種の値がタッチ検出部15に設定される(ステップST0)。ここで設定される値には、初期基準値S0(i,j)、タッチ検出閾値T2、減算値R、パーム判定値SQ0、較正係数A、較正タイマーCount0が含まれる。
ここで、図2に示したフレームメモリFM0(基準値S(i,j)を格納するフレームメモリ)は実際には2つ用意されており、タッチ検出部15は、後述するメインループを繰り返す都度この2つを交互に選択し、後述するステップST3では、選択した一方のフレームメモリFM0から基準値S(i,j)を読み出し、後述するステップST3では、他方のフレームメモリFM0に基準値S(i,j)を書き込むよう構成される。以下では、基準値SA(i,j)、基準値SB(i,j)という書き方をする場合があるが、基準値SA(i,j)は、選択した一方のフレームメモリFM0から読み出された基準値S(i,j)を示し、基準値SB(i,j)は、他方のフレームメモリFM0に書き込まれる基準値S(i,j)を示す。初期基準値S0(i,j)は基準値S(i,j)の初期値であり、最初に選択されるフレームメモリFM0に設定される。図5に示した基準値S(i,j)は、この初期基準値S0(i,j)の一例である。
ステップST0が終了した後、タッチ検出部15は、メインループの処理を開始する(ステップST1)。このメインループは、電源断など外部からの割り込みによって中断されるまで繰り返される。
メインループにおいてタッチ検出部15はまず、図2に示したアナログデジタル変換器14から供給されるデジタル信号を参照することにより、容量値C(i,j)の検出を行う(ステップST2)。次にタッチ検出部15は、図2に示したフレームメモリFM0から基準値SA(i,j)を読み出し、上述した式(1)の計算を行うことにより、交差位置(i,j)ごとに差分値D(i,j)を算出する(ステップST3)。
続いてタッチ検出部15は、算出した差分値D(i,j)の中にタッチ検出閾値T2を超えるものがあるか否かを判定する(ステップST4)。これは本来、算出した差分値D(i,j)に指示体凸部があるか否かを判定することを目的とした処理であるが、タッチ検出閾値T2は通常低めに設定されているため、ステップST4の処理では、指示体凸部だけでなく、図6〜図10に示したようなワイド凸部も検出される。
ステップST4の処理において否定的な判定結果が得られた場合、タッチ検出部15は、キャリブレーションフラグをオフにした後(ステップST5)、次のループに移行する。キャリブレーションフラグについては後述する。
一方、ステップST4の処理において肯定的な判定結果が得られた場合、タッチ検出部15は、座標導出部16に座標導出処理を行わせる(ステップST6)。
図14は、座標導出部16が行う座標導出処理の処理フローを示す図である。座標導出部16は、処理を開始するとまず、差分値D(i,j)が最大となるi,jの組(imax,jmax)を取得する(ステップST10)。そして、次の式(2)に従って差分値D(i,j)の最大値D(imax,jmax)から減算値Rを減ずることにより、タッチ検出閾値T1を算出する(ステップST11)。
ここで、このタッチ検出閾値T1は、指示体凸部のみを確実に検出するために利用するものである。したがって、減算値Rは、指示体凸部の高さ(ワイド凸部がある場合には、その頂上からの高さ)に相当する値以下とする必要がある。具体的には、固定値としてもよいが、最大値D(imax,jmax)が大きいほど小さくなる値であるとすることがより好適である。
図15は、減算値Rの好適な決定方法を説明するための図である。図15(a)はワイド凸部がある場合、図15(b)はワイド凸部がない場合をそれぞれ示している。これらの図に示すように、最大値D(imax,jmax)は一般に、ワイド凸部がある場合の方が、ワイド凸部がない場合に比べて大きな値となる。一方、指示体凸部の高さHは一般に、ワイド凸部がない場合の方が、ワイド凸部がある場合に比べて大きな値となる。つまり、最大値D(imax,jmax)と指示体凸部の高さHとは負の相関関係を有している。このことから、減算値Rは、最大値D(imax,jmax)が大きいほど小さくなる値であるとすることが好ましいと言える。
図14に戻る。タッチ検出閾値T1を算出した座標導出部16は、次に、タッチ検出閾値T1とタッチ検出閾値T2を比較する(ステップST12)。そして、タッチ検出閾値T1がタッチ検出閾値T2未満であれば処理を終了し、そうでなければステップST13の処理に移行する。
図16は、ステップST12の意味を説明するための図である。図16(a)は、指8がタッチ面5aをしっかりタッチしているが、たわみまでは生じていない場合、図16(b)は、指8がタッチ面5aを強く押下し、たわみが生じている場合、図16(c)は、指8によるタッチが弱すぎるか、又は、タッチ面5aをタッチしているわけではないが何らかの理由で凸部のようなものが見えている場合をそれぞれ示している。図16(a)(b)に示すように、指8のタッチが原因で凸部が生じている場合、タッチ検出閾値T1はタッチ検出閾値T2より大きな値となる。逆に言えば、減算値Rは、図16(a)のようにワイド凸部がない場合であっても、タッチ検出閾値T1がタッチ検出閾値T2を上回ることとなるような値に設定される。一方、図16(c)に示すように、タッチが弱すぎたり、何らかの理由で凸部のようなものが見えているに過ぎない場合、通常、タッチ検出閾値T1はタッチ検出閾値T2より小さな値となる。図14のステップST12は、このような場合に指示体の位置座標を検出しない(ホストCPUに通知しない)ようにするための処理である。
図14に戻る。ステップST13において座標導出部16は、差分値D(i,j)がタッチ検出閾値T1を上回る領域を抽出し、抽出した領域ごとに、その重心GCur及び面積SQを算出する処理を行う。具体的には、次の式(3)により領域の重心GCurを算出するとともに、領域中に含まれる交差位置(i,j)の数を面積SQとする。ただし、式(3)中のARは、抽出した領域中にあるすべての交差位置(i,j)について加算を行うことを示している。
なお、ここでは重心GCurを代表位置として用いる例を説明するが、代表位置として他の特徴量を用いることも可能である。例えば、領域の中心を代表位置として用いてもよいし、領域中で差分値D(i,j)が最大となる点を代表位置として用いてもよい。また、面積SQについても、ここでは領域中に含まれる交差位置(i,j)の数を面積SQとして用いる例を説明するが、領域の外周により示される図形の面積を幾何学的に算出して面積SQとすることも可能である。
次に座標導出部16は、ステップST13で算出した重心GCurを、検出した指示体の位置としてホストCPU(図2を参照)に出力する(ステップST14)。ここまでの説明から理解されるように、本実施の形態によるタッチ検出装置1では、指示体凸部のみを検出できるように構成したタッチ検出閾値T1を閾値として凸部を検出し、検出した凸部の代表位置としてホストCPUに出力している。したがって、本実施の形態によるタッチ検出装置1によれば、指示体凸部が存在している場合に、その指示体凸部のみを適切に検出し、検出した指示体凸部に基づいて指示体の位置検出を行うことが実現されている。また、式(3)によって代表位置を計算する際、指示体凸部に相当する領域のみで加算処理を行えばよいため、座標導出のための計算量が低減される。
続いて座標導出部16は、算出した面積SQがパーム判定値SQ0(第3の閾値)以上となっているか否かを判定する(ステップS15)。この処理は要するに、検出された領域がワイド凸部なのか、それとも指示体凸部なのかを判定する処理である。タッチ検出閾値T1を利用して面積SQを算出しているにも関わらずステップST15で肯定判定がなされるのは、検出対象となった差分値D(i,j)に指示体凸部が存在しない場合である。
面積SQがパーム判定値SQ0以上でないと判定した場合、すなわち検出された領域が指示体凸部であると判定した場合、座標導出部16は、無効フラグをオフにし(ステップST16)、処理を終了する。無効フラグはホストCPUによって参照されるフラグであり、ホストCPUは、無効フラグがオフになっている場合にのみ座標導出部16がステップST14で出力した座標を有効なものとして取り扱い、無効フラグがオンになっている場合には、座標導出部16がステップST14で出力した座標を破棄するよう構成される。
一方、面積SQがパーム判定値SQ0以上であると判定した場合、すなわち検出された領域がワイド凸部であると判定した場合、座標導出部16は、まず無効フラグをオンにする(ステップST17)。これにより、座標導出部16がステップST14で出力した座標は、ホストCPUによって破棄されることになる。
ステップST17の後、座標導出部16は、重心GCurが直前のループで算出した重心GCurと同じであるか否かを判定する(ステップST18)。これはつまり、重心GCurの移動の有無を確認する処理である。ステップST18で同じでないと判定した場合、座標導出部16は、変数countに0を設定する(ステップST19)。最初のループでは、ステップST18の結果は必ず否定判定となるため、変数countに0が設定されることになる。一方、ステップST18で同じであると判定した場合、座標導出部16は、変数countを1インクリメントする(ステップST20)。そして、変数countが較正タイマーCount0以上となったか否かを判定し(ステップST21)、なっていなければ処理を終了し、なっていればキャリブレーションフラグをオンにした後(ステップST22)、処理を終了する。
図13に戻る。タッチ検出部15は、座標導出部16による座標導出処理(ステップST6)が終了した後、キャリブレーションフラグがオフか否かを判定する(ステップST7)。そして、キャリブレーションフラグがオフであると判定した場合には、次のループに移行する。一方、キャリブレーションフラグがオンであると判定した場合には、次の式(4)によって図2に示したフレームメモリFM0に記憶される基準値S(i,j)を更新した後(ステップST8)、次のループに移行する。
式(4)は、差分値D(i,j)に較正係数Aを掛けた分だけ、基準値S(i,j)を増加させることを意味する。なお、較正係数Aは、0<A<1を満たす定数である。式(4)を経て次のループに移行した場合、次のループのステップST3では、前回のループで大きな差分値D(i,j)が検出されていたところほど、前回のループより大きな数が容量値C(i,j)から引かれることになる。このことは、式(4)による基準値S(i,j)の更新が、差分値D(i,j)に現れている凸部をキャンセルするキャリブレーション効果を有していることを意味している。そして、ステップST15の処理(検出された領域の面積SQがパーム判定値SQ0以上か否かを確認する処理)及びステップST18の処理(重心GCurが移動していないか否かを確認する処理)を設けたことにより、このキャリブレーション処理は、背面支持によるワイド凸部が現れている場合にのみ実行される。したがって本実施の形態によるタッチ検出装置1によれば、背面支持によって生ずるワイド凸部のみをキャリブレーションの対象とすることが実現されている。
図17は、タッチ検出部15が行うキャリブレーションの効果を示す図である。同図には、図3(e)に示した状態S4(背面支持した状態)が継続した場合の、背面支持による凸部が現れている交差位置(i,j)における差分値D(i,j)の時間変化を模式的に示している。状態S4が継続しているので、仮にキャリブレーションを行わないとすると差分値D(i,j)は高い値のまま推移することになるが、キャリブレーションが実行された結果、時刻t1までに差分値D(i,j)はタッチ検出閾値T2のレベルにまで低下している。より具体的に説明すると、キャリブレーションが行われる前の段階では、タッチ検出閾値T1がタッチ検出閾値T2より大きな値を有している。これは、基準値S(i,j)が小さいためである。その結果、図14のステップST12における判定の結果が肯定となり、キャリブレーションが実行される。キャリブレーションの進行に伴ってタッチ検出閾値T1が次第に小さくなり、図17に示した時刻t1で、タッチ検出閾値T1がタッチ検出閾値T2より小さくなる。これ以降、図14のステップST12における判定の結果が否定となるため、キャリブレーションが行われなくなる。同時に、ステップST13における重心GCur及び面積SQの算出も行われなくなるので、これ以降、タッチ検出装置1の計算処理が軽減される。
図17には、その後の時刻t2で、図3(e)に示した状態S6(背面支持しつつ、指8によってタッチ面5aにタッチした状態)となった場合の差分値D(i,j)の時間変化も示している。キャリブレーションが行われなくなった後、指示体がタッチ面5aの近傍にない間、差分値D(i,j)がタッチ検出閾値T2より上回ることがないので、図13のステップST4における判定の結果が否定となり、図14の座標導出処理が行われなくなる。時刻t2で指示体がタッチ面5aに接近すると、図13のステップST4における判定の結果が肯定となるので、図14の座標導出処理が行われる。この座標導出処理では、タッチ検出閾値T1がタッチ検出閾値T2より小さくなるので、ステップST12における判定の結果が肯定となり、ホストCPUへの座標出力が実行される。
以上説明したように、本実施の形態によるタッチ検出装置1によれば、差分値D(i,j)の最大値を検出した後、その最大値から減算値Rを減算することによって位置導出の基準となるタッチ検出閾値T1を算出しているので、たわみや掌によるタッチなどによってワイド凸部が生じた場合であっても、指示体凸部のみを適切に検出することが可能になる。
また、本実施の形態によるタッチ検出装置1によれば、代表位置が移動していない場合にのみキャリブレーションを起動するようにしているので、背面支持によって生ずるワイド凸部のみをキャリブレーションの対象とすることが可能になる。
本実施の形態によるタッチ検出装置1によれば、さらに、タッチ検出装置1の計算処理を軽減できるという効果も得られる。すなわち、もし本実施の形態によるキャリブレーションを行わないとすると、ユーザが背面支持をしている間、差分値D(i,j)に背面支持によるワイド凸部が現れ続け、そのワイド凸部について、座標導出のための計算処理(ステップST13)が行われ続けることになる。しかし、ワイド凸部について座標を導出してもステップST16で設定する無効フラグによって最終的には無効とされてしまうので、この場合にステップST13で行う座標導出は、本来行う必要のない処理であり、ホストCPUにとっては、無効フラグが付いている情報の通知自体が不要である。本実施の形態によるタッチ検出装置1によれば、キャリブレーションの実施によって、図17の時刻t1において差分値D(i,j)に背面支持によるワイド凸部が現れなくなり、ステップST4で否定判定がなされるようになるので、上記のような、本来行う必要のない計算処理を行うことがなくなる。したがって、タッチ検出装置1の計算処理を軽減できることになる。
なお、このような計算処理の軽減効果は、背面支持の場合以外にも奏される場合がある。例えば、タッチ面に缶ジュースを置いた場合にも重心の移動しないワイド凸部が得られ、したがって、上記と同様の計算処理軽減効果が得られる。また、タッチ面に水滴が存在する場合や、タッチ面の一部に静電気が蓄積し、その結果として一部分の静電容量が持続的に大きくなってしまっているような場合にも、同様に重心の移動しないワイド凸部が得られるので、タッチ検出装置1における計算処理の軽減効果を得ることができる。
以上、本発明の好ましい実施の形態について説明したが、本発明はこうした実施の形態に何等限定されるものではなく、本発明が、その要旨を逸脱しない範囲において、種々なる態様で実施され得ることは勿論である。
例えば、上記実施の形態では、タッチ検出閾値T1、重心GCur、面積SQの算出を差分値D(i,j)に基づいて実施した(図14のステップST11,ST13)が、指示体とタッチセンサ6間の静電容量に対応する値(検出値)であれば、他の種類の値に基づいてこれらを算出することも可能である。一例としては、上述した容量値C(i,j)を検出値として用いることも可能であるし、その他の値を検出値として用いることも可能である。以下、その一例を示す。
図18は、図14に示した座標導出処理の変形例を示す図である。この変形例では、差分値D(i,j)の移動平均MA(i,j)に基づいて算出される減算値DM(i,j)を上記検出値として用いる。図19には、これらの値の具体的な例を図示している。図18に沿って具体的に説明すると、座標導出部16はまず、フレームメモリFM1(図2を参照)から読み出した差分値D(i,j)の移動平均MA(i,j)を算出する(ステップST31)。この算出は例えば、次の式(5)に示すように、交差位置(i,j)ごとに、その交差位置(i,j)に対応する差分値D(i,j)と、その交差位置(i,j)に隣接する1又は複数の他の交差位置の差分値との平均を算出することによって行うことが好適である。ただし、式(5)中のk,mはともに自然数であり、一般的にはk=m=1とすることが好ましい。
続いて座標導出部16は、交差位置(i,j)ごとに、次の式(6)に従って差分値D(i,j)から移動平均MA(i,j)を減算することにより、減算値DM(i,j)を算出する(ステップST32)。こうして算出された減算値DM(i,j)は、図19に示すように、概ね、差分値D(i,j)からワイド凸部分が除去されたものとなる。その後は、差分値D(i,j)の代わりに減算値DM(i,j)を用いる他は、図14に示した処理と同様の処理を行う(ステップST33以降)。
本変形例によれば、上記実施の形態と同様の効果が得られることに加え、減算値DM(i,j)からワイド凸部が概ね除去されて指示体凸部が強調されることから、図19に示すように複数の指示体凸部が存在している場合に、これらをより確実に検出することが可能になる。
また、上記実施の形態では、図13のステップST3で算出した差分値D(i,j)をそれ以降の処理でそのまま使用していたが、キャリブレーション処理によって基準値S(i,j)が大きくなっているところでは差分値D(i,j)が小さくなってしまうことから、差分値D(i,j)の底上げを行うこととしてもよい。以下、具体的に説明する。
図20は、図13に示したタッチ検出処理の変形例を示す図である。同図に示すように、この変形例では、ステップST3とステップST4の間に加算処理(ステップST40)を挿入している。また、最初に設定される値の一つとして、この加算処理で用いる加算値Bが追加される(ステップS0a)。
図21は、この加算処理の処理フローを示す図である。同図に示すように、この加算処理においてタッチ検出部15は、最新の基準値S(i,j)とステップST0aで設定された初期基準値S0(i,j)との比較を行い(ステップST42)、これらが一致しない場合に、ステップST3で算出した差分値D(i,j)に加算値Bを加算する(ステップST43)、という処理をすべての交差位置(i,j)について実施する(ステップST41)。なお、ステップST42の比較を行うために、初期基準値S0(i,j)は、上述した2つのフレームメモリFM0とは異なるフレームメモリに格納しておく必要がある。最新の基準値S(i,j)と初期基準値S0(i,j)とが一致しないということは、その交差位置(i,j)がキャリブレーションの対象となったということであるので、図21の処理によれば、キャリブレーションの対象となった交差位置(i,j)のみ、加算値Bの分だけ差分値D(i,j)の底上げを行うことが可能になる。
図22は、本変形例の効果を説明するための図である。図22(a)は、タッチ面5a内に背面支持によるワイド凸部の発生領域AAが存在している状態で、5本の指F1〜F5がタッチ面5aに同時にタッチしたという状態を模式的に示したものである。また、図22(b)は、そのときにステップST3で算出される差分値D(i,j)を模式的に示し、図22(c)は、さらにステップST40を経た後の差分値D(i,j)を模式的に示している。なお、図22には、キャリブレーションが既に十分に実行され、差分値D(i,j)には背面支持によるワイド凸部が現れなくなっている状態を示している。
図22(b)に示すように、領域AAにタッチした指F3,F4に対応する指示体凸部は、領域AA以外にタッチした指F1,F2,F5に対応する指示体凸部に比べて小さなものとなる。これは、キャリブレーションが実行された結果、領域AAで基準値S(i,j)が大きくなっているためである。図21に示した加算処理を実施することにより、図22(c)に示すように、領域AA内で差分値D(i,j)が加算値Bの分だけ底上げされる。その結果、指F3,F4に対応する指示体凸部が、指F1,F2,F5に対応する指示体凸部と同程度のレベルにまで底上げされている。このように、本変形例によれば、キャリブレーション処理によって基準値S(i,j)が大きくなってしまっているところでも、そうなっていないところと同様に、高い指示体凸部を得ることが可能になる。
また、上記実施の形態では、図13のステップST3で算出した差分値D(i,j)の中にタッチ検出閾値T2を超えるものがない場合(ステップST4の否定判定)、図14のステップST13で算出した面積SQがパーム判定値SQ0を下回っている場合(ステップST15の否定判定)、図14のステップST13で算出した重心GCurが直前のループで算出した重心GCurと同じでない場合(ステップST18の否定判定)、及び、変数countが較正タイマーCount0を下回っている場合(ステップST21の否定判定)には、キャリブレーションを行わないこととしたが、これらの場合にもキャリブレーションを行うこととしてもよい。以下、具体的に説明する。
図23は、図13に示したタッチ検出処理の他の変形例を示す図である。同図に示すように、この変形例では、ステップST5の後段にもキャリブレーション処理(ステップST50)を挿入している。また、最初に設定される値の一つとして、このキャリブレーション処理で用いる較正係数aが追加される(ステップS0b)。
ステップST50のキャリブレーション処理では、次の式(7)により、図2に示したフレームメモリFM0に記憶される基準値S(i,j)が更新される。この場合において、較正係数aは、ステップST8で用いる較正係数Aに比べて小さな値とすることが好適である。こうすることで、ステップST8でのキャリブレーションでは、ステップST50でのキャリブレーションに比べ、基準値S(i,j)が速く差分値D(i,j)に近づくことになる。つまり、背面支持によるワイド凸部を検出した場合に、そうでない場合に比べて迅速に、ワイド凸部をキャンセルすることが可能になる。
図24は、図14に示した座標導出処理の他の変形例を示す図である。同図に示すように、この変形例では、ステップST11とステップST12の間に、タッチ検出閾値T1が変数T1last以上であるか否かを判定する処理(ステップST60)と、ステップST60で否定的な判定結果が得られた場合に、タッチ検出閾値T1を再設定する処理(ステップST61)とを挿入している。また、座標導出処理の最終段に、変数T1lastにタッチ検出閾値T1を設定する処理を挿入している(ステップST62)。
ステップST61におけるタッチ検出閾値T1の再設定は、ステップST11で設定した値よりも大きな値をタッチ検出閾値T1に再設定するための処理であり、具体的には次の式(8)に示すように、タッチ検出閾値T1のE倍に変数T1lastの(1−E)倍を加算してなる値をタッチ検出閾値T1に再設定することによって実施される。ただし、Eは0<E<1を満たす定数(更新係数)であり、図13に示したステップST0において他の値とともに初期設定される。ステップST61が実行される場面では、ステップST11で算出されたタッチ検出閾値T1は変数T1lastよりも必ず小さいので、式(8)により算出されたタッチ検出閾値T1は、ステップST11で設定した値よりも必ず大きな値となる。
図25は、本変形例の効果を説明するための図である。同図(a)(c)(e)(g)は、指8によりタッチ面5aが押下された後、タッチ面5aのたわみが徐々に解消されていく様子を描いた断面図であり、(a)は、指8によりタッチ面5aが押下されている状態、(c)は、指8がタッチ面5aを離れた後も、タッチ面5aのたわみが継続している状態、(e)は、たわみが解消されつつ、なおも継続している状態、(g)はたわみが完全に解消された状態をそれぞれ示している。また、図25(b)(d)(f)(h)は、それぞれ同図(a)(c)(e)(g)に対応する差分値D(i,j)の状態を示すもので、各図に図示したタッチ検出閾値T1は、図24のステップST11により算出されたもの(ステップST61による再設定の前のもの)を示している。
図25に示すように、指8がタッチ面5aを押下したことによって生ずる「たわみ」はヒステリシスを有しており、指8がタッチ面5aから離れた後もすぐには解消せず、徐々に解消していく。その際、タッチ検出閾値T1は徐々に小さくなっていき、図25(c)に示すようにタッチ検出閾値T1がタッチ検出閾値T2を下回ったところでステップST12の判定結果が否定となり、検出座標をホストCPUに出力する処理(ステップST14)が実行されなくなる。
逆に言えば、タッチ検出閾値T1がタッチ検出閾値T2を下回るまでの間、指示体凸部が存在しないにもかかわらず、検出座標がホストCPUに出力され続ける。こうして出力される検出座標は、図25(d)に斜線で示した領域、すなわち「たわみ」によるワイド凸部の上端部分の重心に過ぎず、指示体の位置を示すものではないので、ホストCPUから見ると誤検出の結果ということになる。
本変形例では、ステップST60,ST61,ST62の処理を追加したことにより、図25に例示したようにタッチ検出閾値T1が低下していく場面で、タッチ検出閾値T1の低下が遅れることになる。その結果、図25(d)のような場面において、タッチ検出閾値T1が最大値D(imax,jmax)を上回り、ステップST13で「D(i,j)>T1を満たす領域」が検出されなくなるので、上記のように、ワイド凸部の上端部分の重心に過ぎない検出座標がホストCPUに出力されてしまうことを防止できる。したがって、本変形例によれば、「たわみ」のヒステリシスによって生ずる指示体の位置の誤検出が防止されることになる。
なお、定数Eの具体的な値は、上記効果が得られるよう実験的に決定されることが好ましいが、例えば0.1や0.5などの値とすることが好ましい。
その他にも、本実施の形態によるタッチ検出装置1には、種々の変形例が考えられる。例えば、上記実施の形態では、新たに算出した重心GCurと直前の重心GCurとが完全に一致しているか否かを判定し(図14のステップS18)、その結果が一致となる状態が較正タイマーCount0によって示される時間だけ継続している場合にキャリブレーション処理が起動されるようにしたが、この処理は一例であり、重心GCurが所定時間内に所定範囲を超えて移動していない場合に、キャリブレーション処理が起動されるようにすればよい。具体的な例を挙げると、例えば、新たに算出した重心GCurが直前の重心GCurを中心とする所定範囲内に含まれることを判定することとしてもよい。この場合の所定範囲としては、例えば、タッチ面5a上の実寸で、直前の重心GCurを中心とする直径5mmの円内又は5mm四方の矩形内という範囲、より好適には、タッチ面5a上の実寸で、直前の重心GCurを中心とする直径1.5mmの円内又は1.5mm四方の矩形内という範囲を設定することが好ましい。
また、本発明はエアーギャップ型のタッチ検出装置について特に有効であるが、エアーギャップ型以外のタッチ検出装置にも適用可能である。したがって、事前にタッチセンサの実装環境がわからないような場合も含め、本発明は汎用的に利用することができる。
また、上記実施の形態は、最大値や検出値などが正の値をとるものとして説明したが、これらが負の値をとるものとして説明することも可能であり、そのような場合、値間の大小関係が上で説明したものとは逆になることは言うまでもない。最大値を検出するとは、指の近接による静電容量の変化を正で検出する場合の最大値であり、指の近接による静電容量の変化を検出される電流の減少分として負で表わすような場合には、最小値を検出することに対応することになる。