cancel
Showing results for 
Search instead for 
Did you mean: 

PSoC 4 MCU

TaDa_1980266
New Contributor II

Signal値(約180)、FingerThreshold(170)の場合、ボタンONになるべきですが、
ボタン3はON(反応あり)、ボタン5はOFF(反応なし)となり、結果が違っています。

Signal値の目盛りは可変表示される為、アプリケーション上の表示誤差であり、

10~20程度はブレる可能性がありますでしょうか?

<ボタン3 ON>

Button3_ON_FingerTh_170_Signal_180_GraphView.jpg

Button3_ON_FingerTh_170_Signal_180_WidgetView.jpg

<ボタン5 OFF>

Button5_OFF_FingerTh_170_Signal_180_GraphView.jpg

Button5_OFF_FingerTh_170_Signal_180_WidgetView.jpg

(環境)
Hardware    : CY8CKIT-145-40XX PSoC 4000S Prototyping Kit
IC          : CY8C4045AZI-S413
Sofware     : PSoC Creator 4.2, CapSense
Base Project: CY8CKIT-145 Code Example.zip

0 Likes
1 Solution
NoriakiT_91
Employee

CapSense の信号処理では、 ON/OFF の状態を頻繁に行き来するいわゆるチャタリングを防止するためにヒステリシスを設けています。

GS004394.png

PSoC® 4 and PSoC 6 MCU CapSense® Design Guide, Document Number. 001-85951

このため、 Signal が Finger Threshold と Hysteresis を加えた値を超えた時に ON します。また、 Finger Threshold を Hysteresis だけ下回った値に低下した時に OFF します。

目安として、 Finger Threshold と Hysteresis の値は実測された Signal のそれぞれ 80% と 10% に設定します。

GS004395.png

PSoC® 4 and PSoC 6 MCU CapSense® Design Guide, Document Number. 001-85951

View solution in original post

0 Likes
8 Replies
NoriakiT_91
Employee

CapSense の信号処理では、 ON/OFF の状態を頻繁に行き来するいわゆるチャタリングを防止するためにヒステリシスを設けています。

GS004394.png

PSoC® 4 and PSoC 6 MCU CapSense® Design Guide, Document Number. 001-85951

このため、 Signal が Finger Threshold と Hysteresis を加えた値を超えた時に ON します。また、 Finger Threshold を Hysteresis だけ下回った値に低下した時に OFF します。

目安として、 Finger Threshold と Hysteresis の値は実測された Signal のそれぞれ 80% と 10% に設定します。

GS004395.png

PSoC® 4 and PSoC 6 MCU CapSense® Design Guide, Document Number. 001-85951

View solution in original post

0 Likes
TaDa_1980266
New Contributor II

回答ありがとうございます。Hysteresis考慮出来ておりませんでした。

ただ、ボタン3と5のHysteresisは同じ値でした。

ボタン3とボタン5のSignal値はほぼ同じに見えるが、

ボタン3のSignal値は180をギリギリ超えており、

ボタン5のSignal値は180を下回っているという理解で良いでしょうか?

ボタン3(ON) FingerThreshold=170, Hysteresis=10 -> Singal: 180以上でON、160以下でOFF

ボタン5(OFF) FingerThreshold=170, Hysteresis=10 -> Singal: 180以上でON、160以下でOFF

0 Likes
NoriakiT_91
Employee

Signal (DIFF) の値を数値として確認するためには、 Tuner ではなく Bridge Control Panel を使用します。

まず、センサの Signal が I2C レジスタのどこに配置されているかを確認します。これには、 CapSense_RegisterMap.h ファイルの記述を見ます。

GS004399.png

この例では、 BUTTON0 の SNS0 センサの DIFF 値がアドレス 92u(0x005C) に割り当てられているのがわかります。

Bridge Control Panel でアドレス 0x5C のレジスタを以下のコマンドで読み出します、

GS004400.png

ボタンにタッチした状態で A2 00 が返ってきました。ここから Signal が 162(0x00A2) であることがわかります。

0 Likes
TaDa_1980266
New Contributor II

Bridge Control PanelでのDiff値確認方法ありがとうございます。

コマンド入力&[Send]ボタン押下で指定ボタンのdiff値を確認できました。

Bridge_Control_ Panel_GBTN01_Diff_Value.jpg

Bridge Control Panelのコマンドは1byte(255)単位の様ですが、
アドレスが255を超える場合のアドレス設定(入力コマンド)を教えて下さい。

例えば0x14Eの場合、'F4'部分を "4E 01"に変更すれば良いのでしょうか?

<GBTN01の場合>
CapSense_RegisterMap.h
#define CapSense_GBTN01_SNS0_DIFF_VALUE                     (CapSense_dsRam.snsList.gbtn01[0u].diff)
#define CapSense_GBTN01_SNS0_DIFF_OFFSET                    (244u)=0xF4

Bridge Control Panel用コマンド
w 08 00 F4 r 08 x x p

<GBTN10の場合>
CapSense_RegisterMap.h
#define CapSense_GBTN10_SNS0_DIFF_VALUE                     (CapSense_dsRam.snsList.gbtn10[0u].diff)
#define CapSense_GBTN10_SNS0_DIFF_OFFSET                    (334u)=0x14E

Bridge Control Panel用コマンド
w 08 00 ?? r 08 x x p

0 Likes
NoriakiT_91
Employee

レジスタのアドレスは、 16-bit です。 0x014E のレジスタをアクセスするためには、

w 08 01 4e r 08 x x p

とコマンドを送ります。

0 Likes
TaDa_1980266
New Contributor II

ありがとうございます。

頂いたコマンドで 0x014E のレジスタにアクセス出来ました。

アドレスが16bit指定であるというコマンドフォーマットは

どこに載っていますか?

Bridge Control PanelのHelpを参照しましたが、

該当箇所を見つけられませんでした。

0 Likes
NoriakiT_91
Employee

EZI2C の設定画面で指定してあるはずです。

GS004402.png

0 Likes
TaDa_1980266
New Contributor II

PSoc CreaterのEZI2C側で16bit設定されている事を確認できました。

シグナル(diff)値の確認方法が分かりましたので、本件、クローズ致します。

もし、Bridge Control Panelのシグナル(diff)値とFinger threshold(±Hysteresis)に

相違があった場合は別質問を登録します。

0 Likes