goo blog サービス終了のお知らせ 

王様の耳はロバの耳!

OCN blogzine からお引越ししました
でもやっぱり何も聞かなかったことにしてください(笑)

PSoC4 から Resistive Touch を使う

2015-11-08 15:20:17 | PSoCで遊ぼう

(前回の記事前々回の記事と合わせてお読みください.)

Aitendo の UL024TF の Resistive Touch が使えることがわかったので,さっそく使ってみようと思います.

まずは原理をおさらい…4線抵抗膜式のタッチスクリーンは,2枚の抵抗膜が重なった構造をもっていて,X軸方向に電流を流すX膜と,Y軸方向に電流を流すY膜があります(図1).電気を流すための4つの端子にはそれぞれ,XL, XR, YU, YDという名前がついています.XLはX+とかXP,XRはX-とかXM,YUはY+とかYP,YDはY-,YMなどと呼ばれる場合もあります(図1).抵抗膜に触れると,その場所でX膜とY膜に導通が生じます.その位置を,各膜への電流の流し方および電圧計の入れ方によって計測しよう,というのがこのタッチスクリーンの原理になります.


図1:4線抵抗膜式タッチスクリーンの構造

図2は,タッチスクリーンに触ったことを検知する方法を図示したものです.ここではX膜側で電圧を測っていますが,入れ替えても同じことです.まずXRに抵抗をはさんでH電圧(ここでは3.3V)を印加します.いわゆるプルアップの状態にしておくわけです.抵抗は抵抗膜の抵抗値(1kΩ程度)より高いものを入れます.PSoC 4 のGPIO で Resistive Pull Up を選んだ場合は約5kΩとなります.他方,Y膜には,どちら側でもいいのですが,L電圧(0V)を印加します.この状態でスクリーンにタッチして導通が発生すると,XRにつないだ電圧計の値は,H電圧から下がる方向に変化します.これを検知すれば,スクリーンにタッチしたことを検出できるわけです.


図2:スクリーンへのタッチを検出する方法

つぎに,X方向の位置を検出する方法です.それにはX膜の両端子にそれぞれH電圧とL電圧を印加します.抵抗膜の抵抗率は一様ですので,抵抗膜上の電圧は,そのX位置に比例します.(抵抗分圧の原理.)スクリーンにタッチすると,YUに接続された電圧計によって,その位置のX膜上の電圧を計測することができます.電圧計は一般にとてもインピーダンスが高いので,Y方向側の位置による測定電圧の変化はほとんど起きないからです.
図3:X方向の位置を検出する方法

Y方向についても原理は同じです.Y膜側に電圧を印加し,X膜側で電圧を測定することになります.


図4:Y方向の位置を検出する方法

この3つの検出を組み合わせて,

  • スクリーンに触っているか否か
  • 触っている場合はそのXY位置はどこか

を求めていくわけです.

CY8CKIT-042 (PSoC 4 Pioneer Kit)にUL024TFをつないでResistive Touchを使えるようにしたときの回路図は以下のようになりました.Arduinoのデジタルピン側,すなわちLCD_DportはもっぱらHLの電圧を印加するために用います.アナログピン側,すなわち制御信号のうちRSとnWRは,電圧の印加とともに,電圧の測定も担います.そうそう,LCD_Dportは DOE を使うのをやめて,入力と出力の切り替えはピンのドライブモードを変更する関数をいちいち呼ぶことにしました.

プログラムの実際については,UL024TF.cの後半を見ていただくのが早いと思います.

次の記事で,移植したグラフィック関数群の紹介とともに,プロジェクトファイルを公開します.

 


最新の画像もっと見る

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。
ブログ作成者から承認されるまでコメントは反映されません。