5 Replies Latest reply on Sep 6, 2020 12:05 AM by user_4653071

    能否通过原始计数来推导出感应电容的大小?

    user_4653071

      我现在用的是CY8CKIT-040这一套件搭配着CY8CKIT-024屏蔽板,来实现实例项目“10厘米的接近感应”,参考文档是“AN92239_Proximity_Sensing_with_CapSense”。

      所有的配置和代码用的都是官网上下载的。现在我想通过原始计数raw counts和公式文档AN85951中的公式3-9来计算电容值Cs,不知道这样一种方法是否具有可行性?

       

      但是目前遇到的困难是无法知道公式3-9中其他必要的参数,因为示例中用得是CapSense CSD v2.6,不能通过查看CSD配置来获得所有参数,比如补偿IDAC和调制IDAC的电流,以及感应时钟频率Fsw等。

       

      另外想问一下,是否有其他方法能够获得电容Cs的值?如果有的话,应该如何获取读数呢?

        • 1. Re: 能否通过原始计数来推导出感应电容的大小?
          XiaoweiZ_71

          首先你要确定 CapSense 组件中IDAC是设置成了 Sinking 还是 Sourcing(默认) 模式,如果是 Sourcing 模式的话那么需要参考 3-8 的公式来做计算

           

          参数的话, N 指的是扫描分辨率,Fswitch 指的是 sense clock 的频率值(如果选择PRS的话,平均频率值=设置频率值/2), Imod/Icomp 指的是两个 IDAC 的实际电流值,实际电流值=  1200nA(per bit) * IDAC 设置值,设置值可以通过 tuner 看到。

          • 2. Re: 能否通过原始计数来推导出感应电容的大小?
            XiaoweiZ_71

            我们假设你参考的工程名称是 “Proximity_Distance_040”, 在这个工程中调校模式选择的是 Manual,使能了 auto-calibration 功能,感应时钟频率Fsw 是组件参数设定的,调制 IDAC 和补偿 IDAC 的值是芯片上电是根据算法计算得到的。CapSense 组件设定,接近传感器的 Sense clock Divider 是 2,模式是 PRS-Auto,系统时钟 HFCLK 频率是 12MHz。根据下图得知,Fsw 的计算值为:

            Fsw = (HFCLK/ASD)/4 = (12MHz/2)/4 = 1.5MHz

            Capture.PNG

             

            调制 IDAC 和补偿 IDAC 的值是系统计算得到的,所以没有办法得知具体指,只能在芯片上电以后通过代码读取出来。你可以在 main.c 中声明下面两个数组,然后直接把接近传感器的两个 IDAC 值读取出来,如果你没有修改过工程的话,接近传感器 sensor 的数组元素ID应该是0, 所以CapSense_modulationIDAC[0] 和 CapSense_compensationIDAC [0] 中存放着接近传感器 sensor 的两个 IDAC 计算值。我们假设两个值都是5,那么实际的 Imod = 5 * 1200nA =  6uA, Icomp = 5*1200nA = 6uA.

             

            extern uint8 CapSense_modulationIDAC[CapSense_TOTAL_SENSOR_COUNT];

            extern uint8 CapSense_compensationIDAC[CapSense_TOTAL_SENSOR_COUNT];

            • 3. Re: 能否通过原始计数来推导出感应电容的大小?
              user_4653071

              非常感谢您的回复,对我很有帮助!

              • 4. Re: 能否通过原始计数来推导出感应电容的大小?
                user_4653071

                另外有个问题想请教一下,就是感应时钟频率Fsw,在有些文档中给出的计算公式是直接用Fsw=HFCLK/ASD来进行计算,这样得到的结果是您所说的公式计算结果的1/4,(您提到的公式我也见到过)目前这两种计算方式我不知道应该选择哪个。

                另外就是,在PSOC Creator 中,有一个SenseClk,他显示的值是47.059kHz。更是相差甚远。

                 

                麻烦您帮忙解答一下,谢谢

                • 5. Re: 能否通过原始计数来推导出感应电容的大小?
                  user_4653071

                  我想再请教您一下,按照您说的方法,我在main.c中加了这两行代码,然后编译运行之后的带这样的结果,这是不是就是意味着调制 IDAC 和补偿 IDAC 的值就是5呢?(运行之后代码中两个值一样的)