8 Replies Latest reply on Aug 4, 2019 10:55 PM by TaDa_1980266

    Signal値がFingerThresholdを超えてもボタンOFF

    TaDa_1980266

      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

        • 1. Re: Signal値がFingerThresholdを超えてもボタンOFF
          NoriakiT_91

          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

          • 2. Re: Signal値がFingerThresholdを超えてもボタンOFF
            TaDa_1980266

            回答ありがとうございます。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

            • 3. Re: Signal値がFingerThresholdを超えてもボタンOFF
              NoriakiT_91

              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) であることがわかります。

              • 4. Re: Signal値がFingerThresholdを超えてもボタンOFF
                TaDa_1980266

                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

                • 5. Re: Signal値がFingerThresholdを超えてもボタンOFF
                  NoriakiT_91

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

                  w 08 01 4e r 08 x x p

                  とコマンドを送ります。

                  • 6. Re: Signal値がFingerThresholdを超えてもボタンOFF
                    TaDa_1980266

                    ありがとうございます。

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

                     

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

                    どこに載っていますか?

                     

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

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

                    • 7. Re: Signal値がFingerThresholdを超えてもボタンOFF
                      NoriakiT_91

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

                      GS004402.png

                      • 8. Re: Signal値がFingerThresholdを超えてもボタンOFF
                        TaDa_1980266

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

                         

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

                         

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

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