全体のフローとタッチキー入力が主な内容です。
全体の処理
抵抗膜式タッチパネルのタッチ位置計測
CPUのI/O ポート、バッファIC、ADコンバータを使用してタッチ位置を得ます。
・X位置の測定
X+,X-に電圧を印加するため、SW0とSW1をONにします。またSW2とSW3をOFFにします。Xの位置を得るため、Y+からAN004として読み出します。
・Y位置の測定
Y+,Y-に電圧を印加するため、SW2とSW3をONにします。またSW0とSW1をOFFにします。Yの位置を得るため、X+端子からAN003として読み出します。
・Z1,Z2 の測定
Y+,X-に電圧を印加するため、SW0とSW3をONにします。SW1とSW2をOFFにします。
Z1を得るため、X+端子からAN003として読み出します。Z2を得るため、Y-端子からAN002として読み出します。
タッチキーの入力判定処理
10msec毎にタッチ判定を行います。キー入力が確定すると、キー入力処理(100msec毎に実行)に知らせるフラグをセットします。次の手順で行います。
1) 電圧印加とA/D変換
各端子(X+,X-,Y+,Y-)に電圧を印加し、X,Y,Z1,Z2のAD変換値を得ます。
2)タッチ圧の計算
タッチ圧 Rzは次式で得ます。
XはX軸測定値、RxはタッチスクリーンのXプレート(フィルム側)の抵抗値 約 270[Ω]。
資料1*1 参照。
3) タッチされたキーの特定
タッチ圧が40[Ω]を超えていたら「タッチ無し」とします。タッチ圧が40[Ω]を以下ならば「タッチ有」とし、位置(X,Y)から押されたキーを判定します。位置データは、読み出したA/D値(12bit)の上位8biを使用します。(例: X測定時、読み出したA/D値(上位8bit)が 0x40~0x5Fの範囲であり、かつY測定時、A/D値(上位8bit)が0x20~0x38であれば、STOP/RUNがタッチされたと判断。)
4) キーの入力判定
タッチ状態が4回継続後、非タッチにればキー入力されたとします(キー入力確定)。100msec毎に処理されるキー入力処理に知らせるフラグをセットします。▼(Down)と ▲(Up)は、250msec以上、タッチ状態が継続すれば、キーが長押しされているとします。
キー入力処理
入力判定(10msec毎に実施)結果は、キー入力処理(100msec毎)で表示変更のための処理が行われます。
表示処理
PV,SV等のパラメータと値を表示します。100msec毎に実施します。
パラメータの保存
E2データフラッシュのブロック0 (0x0010 0000~0x0010 3FFF)へ、PIDパラメータを保存しています。SV,P,I,D,MR,Hys は単精度浮動小数点データ(4byte)、heat_cool, pid_typeは 1byteのデータとして保存されます。(pid_typeは未使用)
CRC-8( )(初期値 0xff)が付きます。CPU内蔵のCRC演算器はパソコンとの通信時に使用し競合する可能性があるため、ここでは使用していません。
熱電対による温度計測
熱電対の断線検出用の抵抗を追加しました。
PID 制御
資料5*5と同じです。
ただし、MVの出力ポートはMTIOC4A,4C を使用しています。
アラーム出力
基板上に4つのLEDが付いています。次の意味があります。
ALM_1 : ROM-CRCエラー
ALM_2 : E2 データフラッシュエラー (CRCエラーまたは書き込み失敗)
ALM_3 : 熱電対の断線エラー
ALM_4 : パソコンとの通信エラー
*1:資料1「I2C通信とSPI通信(I2C通信とSPI通信(温湿度表示器の試作)」 https://vabc.hatenadiary.jp/entry/2022/11/22/111325
*2:資料2「ペルチェ制御用ボードの試作(熱電対による温度測定)」 https://vabc.hatenadiary.jp/entry/2022/01/22/165620
*3:資料3「 熱電対・変換器間の導線による温度測定誤差と対策」 https://www.m-system.co.jp/mstoday/plan/mame/2012-2013/1210/index.html
*4:資料4「A Basic Guide to Thermocouple Measurements」SBAA274–September 2018
*5:資料5「ペルチェ制御用ボードの試作(PID制御のプログラム)」https://vabc.hatenadiary.jp/entry/2022/02/15/163249