Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

Community Translation - Mutual Capacitance Calculation of a CapSense Sensor Through Firmware - KBA222425

Kenshow
Level 8
Level 8
50 solutions authored 25 solutions authored 10 solutions authored

Hi,

I would like to translate KBA222425 into Japanese.

Thanks,

Kenshow

Original KBA:

Mutual Capacitance Calculation of a CapSense Sensor Through Firmware - KBA222425

Translated by Kenshow

==============================

タイトル:ファームウェアによるCapSenseセンサーの相互容量計算 - KBA222425

バージョン:**

質問:

CapSenseコンポーネントのバージョン3.0以降のファームウェアを使用して、CapSenseセンサーの相互静電容量をどのように計算しますか?

回答:
Rawカウントは相互静電容量(Cm)の直接的な測定値です。得られたrawカウントを使用して、次の手順に従ってセンサーの相互静電容量を計算できます。

1. CapSenseコンポーネントを開始します。すべてのCapSenseウィジェットをスキャンして処理します

2. 変調器クロックの周波数、サブコンバージョンの数、およびトランスミッタクロックの周波数を使用して、最大カウントを計算します。

Max_count = Modulator_clock_frequency * Number_of_sub_conversions) / Transmitter_clock_frequency

3. 最大カウント(ステップ1で取得)とCapSenseコンポーネントによって処理されたrawカウントを使用して、ハードウェアrawカウントを計算します。

Raw_count_hardware = Max_count – Raw_count

4. 最大カウント(ステップ1から)、ハードウェアrawカウント(ステップ2から)、IDAC電流、周波数、およびトランスミッタクロック信号の振幅を使用して、相互静電容量を計算します。

Raw_count_hardware = 2 * Max_count * 相互容量 * Transmitter_voltage * Transmitter_clock_frequency) / IDAC_current

include "project.h"

#define TRANSMITTER_VOLTAGE (5u) /* 単位 - 電圧 */

#define IDAC_GAIN (300u) /* 単位 ナノアンペア/ビット */

int main(void)

{

    

CyGlobalIntEnable; /* グローバル割り込みを有効にします。 */

uint32 raw_count, modulator_clock_divider, sense_clock_divider, sub_conversions, IDAC_code, hardware_raw_count, max_count, mutual_capacitance;

/* CapSenseコンポーネントを開始します */

CapSense_Start();

/* すべてのCapSenseウィジェットをスキャンします */

CapSense_ScanAllWidgets();

for(;;)

{

/* CapSenseスキャンが完了したかどうかを確認します */

if (!CapSense_IsBusy())

{

/* すべてのCapSenseウィジェットを処理します */

CapSense_ProcessAllWidgets();

/* ボタン0の最大カウントの計算 */

/* 変調器クロック分周器の値を取得するAPI = HF_CLK_FREQ / MOD_CLK_FREQ  */

CapSense_GetParam (CapSense_MOD_CSX_CLK_PARAM_ID , &modulator_clock_divider);

/ *センスクロック分周器の値を取得するAPI = MOD_CLK_FREQ / SNS_CLK_FREQ * /

CapSense_GetParam (CapSense_BUTTON0_SNS_CLK_PARAM_ID, &sense_clock_divider);

/* サブコンバージョンの数を取得するAPI */

CapSense_GetParam (CapSense_BUTTON0_RESOLUTION_PARAM_ID , &sub_conversions);

max_count = sense_clock_divider * sub_conversions ;

/* ボタン0のハードウェアrawカウントの計算 */

/* rawカウントの値を取得するAPI */

CapSense_GetParam (CapSense_BUTTON0_RX0_RAW0_PARAM_ID , &raw_count);

hardware_raw_count = max_count-raw_count ;

/* ボタン0の相互容量の計算 */

/* IDACコードを取得するためのAPI */

CapSense_GetParam (CapSense_BUTTON0_RX0_IDAC_COMP0_PARAM_ID , &IDAC_code);

mutual_capacitance = (hardware_raw_count * IDAC_code * IDAC_GAIN * sense_clock_divider * modulator_clock_divider) / (2 * max_count * TRANSMITTER_VOLTAGE * CYDEV_BCLK__HFCLK__MHZ);

/* すべてのCapSenseウィジェットをスキャンします */                  

CapSense_ScanAllWidgets();

}

}

}

相互容量は、次の条件下で数千フェムトファラッドの範囲になると予想されます。

 HF_clock_fequency = 48 MHz

    Modulator_clock_frequency = 48 MHz

    Sense_clock_frequency = 300 kHz

    Transmitter_voltage = 5 V

    IDAC_gain = 300 nA/ bit

    IDAC code= 32

    Number_of_sub_conversions = 100

    Modulator_clock_divider = 1

    Sense clock divider = 160

 Max_count = (48 * 100* 160 ) / 1 * 48  = 16000

例として、取得したrawカウントが6200の場合、

 Raw_count_hardware = 16000 – 6200 = 9800

  相互容量 = (9800*300*20*160) / ( 2*16000*5*48 ) = 1225 fF

==============================

7-May-2020

Kenshow

 

0 Likes
1 Reply
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hello, Kenshow-san

We receive your translation, it will be published to KBA to Community.

After upload, You will receive the points as the word of KBA.

Due to the current delay of internal review, Please bear with me for the delayed the response.

It could be delayed, but it will be processed soon.

Thanks for your contribution to CDC!

Will keep you update the status.

Thanks,

Jenna Jo

Jenna Jo
0 Likes