タッチスクリーンの制御


【概要】

 QVGAサイズ(240×320ドット)のカラー液晶表示器にタッチスクリーンを付けて
動かしてみました。
使用した液晶表示器は「192GC02」という型番で、「液晶市場」から購入しました。
また「タッチスクリーン」は2.2インチのもので、アイテンドーから購入したものです。

このタッチスクリーンは抵抗膜の4線式のものですので、2枚のスクリーンの片方に
I/Oポートで電圧を加え、もう一方のスクリーンを電極としてA/Dコンバータで電圧
を入力します。

このタッチスクリーンの実測ベースの特性は下記となっていました。意外と低い抵抗値
でしたので、ノイズ等の心配もあまり無いのではと思います。

オープンの状態で電極間の抵抗
   短辺 : 425オーム  長辺 : 550オーム


【全体構成】

今回もとりあえず表示制御の確認用として作成しましたので、周りには何もつけずに
製作しています。
コントローラには他の試作例と同じように、「PIC24FJ64GA002」を使っています。
回路構成は下図のようになっています。

QVGAの液晶表示器は前頁と同じ接続としています。
タッチスクリーンは、2枚のスクリーンの片側をRB0とRA0に、もう一方をRB1とRA1に
接続しています。RA0とRA1をアナログ入力として使いますので、ノイズ対策用に
0.01μFのコンデンサを接続しています。さらに、タッチが無いときはハイインピーダンス
の状態になりますので、不安定な値とならないように10kオームの抵抗でプルダウン
しています。

電源は、入力はDC5VのACアダプタを使う前提とし、手持ちの3端子レギュレータで
作成した3.3Vから、ショットキダイオードで0.3V降圧した3.0Vを全体の電源としています。
3.0Vのレギュレータがあれば、それを使った方がよいでしょう。





完成したコントローラの外観は下図のようになります。液晶表示部とタッチスクリーンは
同じサブ基板上に実装しています。
フラットケーブル用コネクタが小さいのではんだ付けはちょっと難しいですが、
自作基板でも何とかなりました。 



タッチスクリーンで自由曲線を
描いたところです。
サブ基板がちょっと大きめになって
しまいました。
フラットケーブルのコネクタの
はんだ付けが難題です。



【制御方法】

抵抗膜方式のタッチスクリーンではAとBの2枚の抵抗膜スクリーンで、X方向とY方向
の位置を計測します。
計測の仕方は図のように下記手順で行います。

(1) Aスクリーン(X方向検出用と仮定)の両端の電極に接続されたI/Oポートを
  出力モードにする
(2) I/Oポートの片側(RB1)にHigh、もう一方(RA1)にLowを出力して、Aスクリーンに
  電圧を加える
(3) Bスクリーンの両端の電極に接続されたI/Oポートを入力モードにし、アナログ
  入力ポートとする
(4) いずれかのアナログ入力ポート(RA0)の電圧をA/Dコンバータで入力する
  これでスクリーンがタッチされると、X位置に比例した電圧として入力される
  タッチされていないときは0Vとなる
(5) AスクリーンとBスクリーンを入れ替え、ポートも入れ替えて上記設定操作を行い、
  Aスクリーンの電圧をY位置として入力する






これで座標が検出できますが、いくつか問題があります。

(1) 電圧の立ち上がり時間がタッチの仕方で変わる
 大きな問題は、スクリーンを押すとき電圧の立ち上がりに時間がかかることです。
つまり、タッチして直ぐ正確な位置の電圧にならず、電圧の立ち上がりに時間が
かかるためある程度時間が経ってから正確な位置の電圧になることです。
これは、タッチの仕方で大きく変わります。ゆっくりタッチすればそれだけ遅くなります。

(2) タッチの位置座標が組み立ての仕方で変わる
 これはタッチ位置と座標の関係をあらかじめ固定しておけないということです。

上記課題を解決しなければなりませんが、(2)は初期設定時に座標位置を決める
機能をいれれば問題ありませんが、(1)の方は難しい課題です。
とりあえずの解決策としては下記のようにしました。

X座標、Y座標とも「±数カウント以内」に入る状態が「数回」以上続いたら位置座標
として確定する。

しかし、これでも別の問題があります。問題は 数カウント と 数回 という値の
決め方を使い方によって変える必要があるということです。

ボタンタッチのような使い方の場合にはカウントを小さくし、回数を大きめの値にして
確実に座標位置を決定できますが、そのままではタッチトレースするような場合には
反応が遅くなってしまい実用にはなりません。
タッチの後を追いかけて自由曲線を描くような場合には、カウント数を大きめにし
回数を少なくして反応を早くする必要があります。
しかしこうすると、最初のタッチの間の電圧の立ち上がりの間に短い直線が描かれ
てしまいます。その後連続的にタッチを動かすときは問題ありません。
この最初のタッチの余分な描画を回避する方法が必要ですが、良いアイデアが
いまのところありません。

【プログラムライブラリ】

試作レベルのプログラムライブラリですが、下記からダウンロードできます。
下記は横置きの12x12ドットフォントのものです。


★★★ タッチスクリーンの制御 プロジェクト一式




   目次ページへ