● 実験テーマ79
「UL024TFの、タッチパネルを試す簡単な実験」
(UL024TF液晶のTPはモジュールに接続されてないとaitendoHPには書いてあるが、実は使えるとの情報があるので試してみた。)
以下、この実験の顛末記です。
■ 2016.6.21
・タッチパネルを使ったオシロの実験は、だいぶ前にテーマ33で公開済である。
ただこの時の、液晶は、aitendo「DT280T03」で、タッチ制御にはモジュールに内蔵の、
タッチコントローラICを使った。
最近常用している同じaitendoの、UL024TFに付いているタッチパネルを動かしてみたくなった。
これには、タッチコントロールICは搭載されてないので、ダイレクトにシーケンス制御して読込む
方法にしないと駄目だが・・
また、aitendoの当該製品のWebページには,
「※4線抵抗膜型タッチスクリーンが付いているが、接続が行われていないので使用できません」
と説明書きがあり、暫くは動かすのは無理なのか・・と思っていました。
ところがWeb検索をしている内に、動かされている方が、3人ほどいることを知りました。
gooプログ「王様ºの耳はロバの耳」さんの記事の中で、チェコの方が動かされていて
チェコ人のプログのソースコメントに重要な記述(以下)を発見というよな事が書かれていた。
#define YP A1 // must be an analog
pin, use "An" notation!
#define XM A2 // must be an analog pin, use "An" notation!
#define YM 7 // can be a digital pin
#define XP 6 // can be a digital pin
※ なんとLCDのコントロールと同じポートを使いまわしているようです。
もう一方、「HAPI_TechSolutio」さんの、タッチ式MP3プレーヤの紹介の中でアップされている
回路図.pdfファイルで、はっきりとその共通ポートがどこなのか確認できました。
以下が共通接続になっています。
LCD_WR/Touch_XR(X-)→ デジタル出力/アナログ(ADCチャンネル)入力
LCD_RS/Touch_YU(Y+)→ デジタル出力/アナログ(ADCチャンネル)入力
LCD_D7/Touch_YD(Y-)→ デジタル出力/デジタル入力(印加電圧入力側)
LCD_D6/Touch_XL(X+)→ デジタル出力/デジタル入力(印加電圧入力側)
※ このようになっているので、液晶をアクセスしてないタイミングで、タッチ用のポート設定に
切替え、読込み終了後には再び、液晶用のポート設定に戻してやるような制御が必要になります。
■ 2016.6.22
・実験ハードをどうするか?
今回もトレーニング基板を使えない。
無理やり出来るが、改造箇所が多過ぎるのでやめる。
テーマ77で作ったUL024TF接続変換ユニットを流用し、その裏に、秋月のスルーホールの
ユニバーサル基板を使って、MPU部を組み、それとスタックして使うことにした。
FFTアナライザと同じ構造である。
回路図は簡単なので作成済み。
・先にソフトを考えることにする。
とりあえずは、UL024TFの、タッチパネルが本当に使えるか確認するための実験なので、簡単な
テストプログラムにする。
これを何に応用するかは未定。たぶんオシロ以外の用途になる見込み??
タッチ制御ICを使わないでダイレクトに読込む方法は、タッチオシロの時にも参考にした、
後閑さんHPの、「dsPIC33Fタッチオシロ」が参考になる。
液晶が異なるし、回路も異なるので、適時追加修正が必要にはなるが。
テストプログラムは次の様にした。
@ 電源投入すると、初期メッセージ「Touch Test」を表示。
液晶下段に、キャラクタによる緑 角ボタン:SW1と、黄色 角ボタン:SW2及び、
キャラクタによる赤丸LEDを表示。
A 画面上のどこかをタッチすると、タッチ点の座標(x.y
ADC変換値)を表示。
B SW1をタッチすると、キャラクタによるLEDが赤くなり点灯。(同時にデバッグLED点灯)
SW2をタッチすると、キャラクタによるLEDが黒くなり消灯。(同時にデバッグLED消灯)
また、液晶ライブラリは、後閑さん作成のものを基にしているので、
一部、制御ポート(WR, RS)の割付けを変更する必要がある。(ヘッダ・ファイルの変更)
■ 2016.6.24
・下図(今回のタッチ接続での等価回路)を眺めながら、ポート設定切替え制御のプログラム
を書いて行った。
この部分が面倒なだけで、簡単なテスト内容にしたので、割とすんなりソースを書き上げ
HEXまで準備完了!!
■ 2016.6.30
・テスト基板の実装が上がった。
HEX書込みまでOK。
液晶を実装して、稼働時の電源電圧確認を行う。
VCC= 3.30V
(今回は、タッチへの印加電圧を、ポート出力の、Hi電圧(デジタル出力)としている為、
特にAVCCは設けませんでした。また、Vrefも、VCCからとし、AGNDは、Vrefのリターン側のみとしました。
AGNDと、DGNDは接続されています。)
+5V= 5.20V
・大方、動いているようである。
X, Y座標表示も、タッチボタン操作の動作も、良さそうである。
これで終わるのは、何とも味気ないので、変換される、AD値が正しいのか否かを、実機でタイミング等
観測して検証してみることにした。
但し、あまり深入りはしない予定。
■ 2016.7.1
・以下にその結果を示した。
やってみて初めて判ったことは、タッチしてない状態の、AD入力のレベルが、X,
Yで同じにはならず
X-入力側は、0Vで、Y+側は、3.24Vと真逆になる点である。(極性に関係あるのだろうか?)
なので、タッチするとX-入力(ADCX)は、プラス側に変化し、Y+入力(ADCY)は、マイナス側に変化します。
むろんADCは、グランドを基点とした電圧を変換します。
タッチ処理をT1割込みで行っているので、その頭に、LEDポートを
使って、割込み毎(50mS)に負パルスを出力させ、これを同期パルスとして利用し、タッチ時のADC入力
を観測しました。
最初に入力されているのが、ADCX側で、次に入力されているのが、ADCY側です。
オシロの他に、ADCX側の入力チャージが終わった時点でプログラムを停止し、テスターにて静的な入力
電圧も測定しました。(Y側も同様)
オシロで見たレベルとほぼ一致しているのが解ると思います。
さて変換値ですが、分解能:10bit、Vref=
3.3Vですので、理論的には、
AD変換値= 1024 x (入力電圧) / 3.3)になるはずです。
実測値を当てはめて計算すると、だいたいですが合っているようです。
<最終回路図>
・こちらから、どうぞ→ 「UL024TFタッチパネル実験回路」
<最終ソース及び、ヘッダファイル>
・こちらから、どうぞ→ 「UL024TF_Touch_Test.c」
colorlcd_libdsPICVH.c
colorlcd_libdsPICVH.h
ASCII12dot.h