PSOC Creator Sense Tuner- How to get accurate X and Y position data

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

cross mob
lock attach
Attachments are accessible only for community members.
vebr_4751981
Level 1
Level 1
5 replies posted 5 questions asked 5 sign-ins

Hello, 

We have designed a capacitive sensing trackpad using the CYBLE-214015-01 module. We followed the Cypress recommendations when creating our 7 by 7 trackpad. Now for a project, we are using the PSOC Creator Sense Tuner in order to acquire the x and y positions of a finger touch on our trackpad. From the Widget View on the Sense Tuner I am able to see the 7 rows and 7 columns working perfectly and going over the finger threshold. The problem we are having is that when we log the x and y positions and then extract it and analyze it we seem to be missing data points. Is there any recommendations as to how to fix this? Below I show what our raw data looks like. In reality the data points should be spread across the entire area as I went back and forth the entire trackpad surface for an entire minute. We do not understand why there is some areas that are completely blank. For the parameters, we are using a 8 bit resolution and a 3x3 centroid.  I have attached the code that I am using in order to use the tuner.

 

 

trackpad.JPG

0 Likes
1 Solution
BragadeeshV
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hi @vebr_4751981 , Since the entire data structure received in the client is set as the buffer of EZI2C, the BCP (I2C master) can read specific values from this buffer using the index.

Check section Using Bridge Control Panel to Monitor Raw Counts and Baselines from the document below for reference

https://www.cypress.com/file/489491/download

Regards,
Bragadeesh

View solution in original post

0 Likes
11 Replies
BragadeeshV
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hi @vebr_4751981 , I think you have attached an incorrect project to your thread. Can you please reattach the project that has the trackpad firmware in it?

Also, this looks to me like a logging issue. Are you using Tuning Over BLE project to log the position data? Do you see any data points missing in the Tuner Widget view while moving across the trackpad?

Regards,
Bragadeesh
0 Likes
lock attach
Attachments are accessible only for community members.

Hello,

Sorry about that. I have reattached the project that has the trackpad firmware that I am currently using.  And yes I am using Tuning Over BLE project to log the position data. In the Tuner Widget view while moving my finger across the trackpad I do not see any data points missing. It moves very smooth and I can see the touches across the entire trackpad. The problem is that once we try to extract the data from the tuner, points are missing. 

 

Thank you

0 Likes
BragadeeshV
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hi @vebr_4751981 , You have attached the wrong project again. I see only Client project inside the archive file. Could you please right click on the project name and do an archive of the project alone?

Regards,
Bragadeesh
0 Likes
lock attach
Attachments are accessible only for community members.

Hello, 

I am so sorry. I did not know I could do an archive of the projects alone. I attached both the server code and the client code I use. I really appreciate the help!! 

 

0 Likes
BragadeeshV
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hi @vebr_4751981 , Thank you for sharing the project. I do not see any issues in the firmware. Although can you check the following?

1. Check if you are missing any positions in the TouchPad view of Tuner. 

BragadeeshV_0-1611900283834.png

2. Did you try to use some other logging tool (for example Bridge Control panel) to log the data? You need to simply read the position data from the CapSense DataStructure that is received in the Client side with the correct index.

3. The resolution of the trackpad seems to be very low. Can you ensure that you are getting 5:1 SNR at the set resolution? 

 

Regards,
Bragadeesh
0 Likes

In regards to #1, what exactly do you mean? Should I just observe the pointer in the Touchpad view of the Tuner? If so, the answer is no

In regards to #3, the reason why we use such a low resolution is because we need to continuously track the position of the pointer, in order to calculate the frequency of  movement. And as we increase the resolution the refresh rate decreases and therefore the number of data points communicated via BLE decrease drastically. Hence, hindering our frequency calculation. I would really appreciate your help with this. 

0 Likes
BragadeeshV
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hi @vebr_4751981 

Regarding #1, I just wanted to make sure that we do not miss any data points in the Touchpad view on Tuner.  

Any updates on BCP / other data logging tools other than tuner? 

Regards,
Bragadeesh
0 Likes

Hi @BragadeeshV 

Thank you for the reply and information.

I have never used the BCP before so I have a couple of questions

How am I able to modify the server code/CapSense DataStructure  to print the X and Y position of the touch that the trackpad detects? 

Thank you!

 

 

0 Likes
BragadeeshV
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hi @vebr_4751981, The CapSense Tuning over BLE example is intended to tune the capsense sensors over the air so that you do not require any wires from your end product to tune your board. If you already tuned your capsense sensors for good performance then we do not recommend you to use this project for sending custom data to the client. 

However for debugging, you can use the existing project that sends the entire CapSense data structure to the client  (remember that this has the X and Y coordinates as well). At the receiving end treat this as simply an array buffer and the contents of the buffer (rawcounts, hardware parameters etc) can be simply assessed using correct index. Now to find the correct index for each items, refer to the CapSense_Registermap.h under Generated Sources/ CapSense. For example : buffer[46], buffer[47] would give X position.

 BragadeeshV_0-1612240769767.png

Bridge control panel is installed along with PSoC Programmer. Please refer to the Help section of the Bridge Control Panel to get started with entering the commands. It is fairly straightforward. Please get  back to use if you face any difficulties.

https://community.cypress.com/t5/PSoC-5-3-1-MCU/how-to-use-Bridge-control-panel/td-p/39968

Regards,
Bragadeesh
0 Likes

Thanks for the information.

We understand that in order to access the Y and X position coordinates at the receiving end we need to use the correct index. Now, my question is once we know what the correct indexes are, do we need to edit the main code of the client? or can we just use these indexes in the BCP?

Thank you

0 Likes
BragadeeshV
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hi @vebr_4751981 , Since the entire data structure received in the client is set as the buffer of EZI2C, the BCP (I2C master) can read specific values from this buffer using the index.

Check section Using Bridge Control Panel to Monitor Raw Counts and Baselines from the document below for reference

https://www.cypress.com/file/489491/download

Regards,
Bragadeesh
0 Likes