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

PSoC™ 4

anzh_4716821
Level 2
First like received First like given
Level 2

Dear Cypress Developer Community:

thanks so much for Motoo Tanaka's reply for our last inquiry on the differences between PDL3.1.1 & PDL3.1.2 . It really helped us a lot.
why we inquiried on the differences between PDL3.1.1 & PDL3.1.2 is that,
we're aiming to step into a vendor pool at our enduser customer side for a washer touch panel project which has been applied with ITO touch sending film and a Psoc4 MCU by the name of CY8C4126AXI-S433.

we met some obstacles on sensor tuning. but after doing several tests, we decided to try disabling the IDAC auto-calibration function and doing manually setting on mudulator IDAC & Gain IDAC, so that we can make our touch sensing film(a FPCB sheet actually) have good sensitivity.

we'd like to invite Cypress Community experts to review on our project in attached file and give us sincere suggestions and advices.

pls see attached file for our detailed tech-support demands from Cypress Community.

1 Solution
Vison_Zhang
Moderator
Moderator 500 replies posted 100 sign-ins 250 replies posted
Moderator

Seems sensor cp of PEDOT material is bigger than ITO sensor, if you use standard auto-calibration algorithm the calculated modulator IDAC of PETOD sensor is bigger than ITO sensor too.  Sensor_Sensitivity = (2^N * Fswitch * Vref)/Imodulator, bigger modulator idac current means lower sensitivity. Of course, there is also a certain relationship between the signal amount of the sensor and the resistance of sensor material, but this effect is much smaller than the effect of modulator IDAC ( we have no specific quantitative data of sensor signal VS material resistance).

I recommend you disable the auto-calibration function in CapSense component, replace to use a customize calibrate algorithm - Fix modulator IDAC of each channel, only calibrate compensate IDAC value to adjust sensor rawdata to target level.

Example code is attached, to use this algorithm you should:

1. Disable the auto-calibration but enable compensation IDAC in CapSense component.

2. Set fixed modulator IDAC value of each sensor channel in CapSense component.

3. Place CompIdacCalibrationApp() function just behind CapSense_Start() in firmware, for example:

int main(void)

{

    uint8 i;

    CyGlobalIntEnable; /* Enable global interrupts. */

    returnvalue = CapSense_Start();

    CompIdacCalibrationApp();

  

    CapSense_ScanAllWidgets(); /* Scan all widgets */

    while(CapSense_IsBusy())

    {

        CySysPmSleep();

    }

    CapSense_FtInitialize();

    CapSense_InitializeAllBaselines();

    for(;;)

    {

        CapSense_ScanAllWidgets(); /* Scan all widgets */

        while(CapSense_IsBusy())

        {

            CySysPmSleep();

        }

        CapSense_ProcessAllWidgets();

        CyDelay(1);

    }

}

View solution in original post

4 Replies