This guide assumes you have basic knowledge of capacitive sensing and you are familiar with the SENSE environment. If you feel that you are missing any of the necessary concepts or you are a new SENSE user, you may want to read the following articles that will help you get started:

IMPORTANT: We recommend that you try the example projects that can be found in your Project library to get acquainted with SENSE.


Testing the performance of a touchscreen is one of the most important tasks of a designer. Usually, the tests that are performed focus on the experience of the user when they interact with the device. One of the most common and valuable tests is the linearity of the touchscreen. Linearity is a critical parameter to describe positioning errors of touch screens.

By linearity we mean the deviation of the registered touch from the actual location of the pointer touch, when we slide our pointer horizontally, vertically or diagonally along a line. It is commonly described as the correspondence between real physical location and reported location.

The basic concept of this test relies on the operation principle of a touchscreen. Common touchscreen consist of receivers and transmitters, usually overlapping to create nodes. In principle, the performance of the screen is better when the touch takes place closer to the node than far from it.

However, when we slide our pointer, we do not always touch directly over the node but also far from it. This means that any touch in-between two nodes might trigger both of them. The controller then steps in and interpolates the touch in order for the correct position of the pointer to be registered on the screen. The correct registration of the touch is a combination of a:

  1. Better configuration of the controller

  2. Better design of the sensor layout

In some cases, relying on the configuration of the controller alone is not sufficient. In this article we are going to discuss how we can prepare a better design of the sensor layout to avoid costly configuration compromises.

In most product specifications, linearity is described as a +/- distance (usually in mm) from the physical touch to the position it will be registered. A +/- 1 mm linearity, is very common for ITO touch screens.

Setup up the sensor model in SENSE

In case you are an experienced SENSE user, you can skip step 1 and go directly to step 2.

The actions we will follow are given below:

  1. Prepare a .dxf file. Each conductive layer should be placed in a different CAD Layer.

  2. Import it in SENSE. Assign each conductive layer to the corresponding Element in SENSE.

  3. Place the touchscreen in the Canvas of SENSE. Make sure you have imported the Οutline as well.

  4. Alternatively to steps 1-3, you can create the whole screen through SENSE Library.

  5. Create the StackUp of your touchscreen by assigning the thickness and the relative permittivity of your dielectrics and the sheet resistance of your conductors.

The 3D virtual model of your touchscreen is now ready for the linearity test.

Preparing the Linearity Test

At this stage, we want to replicate a laboratory Linearity Test. Most commonly a diagonal line forming a 45° angle with both the receiving and transmitting electrodes is used as the trajectory of the touches. The pointer starts sliding at the edge of the screen towards the other edge. This test is repeated with different starting and ending positions to cover the different scenaria.

For that reason, we will create a Pointer and use it to touch our screen in a straight line. A common pointer is:

Fig. 1. Pointer for the linearity test

We will place our pointer at two different starting points. The center of one cell and the edge of one cell. Then we are going to touch in a 45° straight line going upwards and downwards. Any other starting and ending points create lines that are in between those outliers and their results can be extrapolated.

Fig. 2. Cell, Edge to Edge and Center to Center definition

The fast way to do this test is to use the Placement from the Canvas and add many points in a straight line next to each other to represent a sweeping motion of the hand.

Fig. 3. Full screen linearity test

💡 We can always choose to place the pointer touches using their coordinates over the screen. This placement helps with reading the results and is going to be used in this guide

Since touchscreen layouts are usually symmetrical, we don’t need to sweep across the whole screen to get an understanding for the linearity. Any results we receive inside one cell can be replicated for the rest of the screen. For the linearity test we are going to use the Capacitance Analysis and simulate the mutual capacitances of the nodes.

Fig. 4. The analysis of choice for the linearity test


💡 It is important to not go overboard with the number of pointer placements. Each new point increases the simulation time, so 10-20 points should suffice.

The step that follows is also quite important for faster results. It is the step where we will crop our design and keep only a part of it that is useful for this analysis. We do this because the mutual capacitance is concentrated around a small area, where the receivers and transmitters overlap.

💡 You can always keep a bigger part of the screen for this test, but you are advised to use the crop function for this test or to simply import a smaller part of the screen in order to reduce the simulation time.

Here is an example of how to do it in SENSE. A 5x5 part of the screen is used, the touches are 11 and they are limited inside an area equivalent to one cell.

Fig. 5. Center to center and Edge to Edge sweeping movements

Then, we assign the conductors for our simulations.

💡 You can read here how to assign your active electrodes for Capacitance Analysis

In brief, by selecting receivers 2, 3 and 4 we will read all the mutual capacitances of those three receivers to all the transmitters for all pointer touches.

Fig. 6. Active conductors for the linearity test

💡 In case this is the first time you are doing it, this is the right place to understand why we have selected 2,3 and 4.

When we are done, we can start the simulation. The simulation will compute the reference “No Pointer” mutual capacitances and the mutual capacitances for all the pointer positions.

Now it is time to read the simulation results and figure out the linearity of our sensor!!

Interpreting the results

SENSE will prepare the results and visually represent them in a heat map. Also, SENSE will prepare a .csv file with the raw data.

For each pointer touch of our sweeping motion we are interested in two things:

  • The influence of the pointer on each node

  • The position of the actual touch

Although there are many different types of algorithms that interpret the results, usually based on the IP of the chip manufacturer, all of them read the values of the neighbouring nodes of the touch. For example, Microchip is doing the following:

  • Determines the coarse touch position by identifying the electrode with the peak measured signal.

  • Determine the fine touch position by calculating a ratio of the measured signal strength for the two electrodes that are adjacent to the identified peak electrode

The specific interpolation algorithm is:

First of all, let’s create a map of all the Electrode Positions:

Fig. 7. Node positions and cell representation

Below is a matrix with the actual pointer touches

Table 1. Actual positions of the touches inside a cell

The Electrode Pitch in the equation has been mentioned as cell size in this guide and is 5 mm. The Electrode Amplitude is the change of the mutual capacitance of each node, before and after the touch.

For each pointer touch, we simulate the change of mutual capacitances of all those nodes, for the Center to Center and the Edge to Edge slides.

Center to Center

Table 2. Mutual capacitance changes of each node for a single touch at Position 3 for Center to Center placement

For X axis, we use the 0.1882, 0.2260 and 0.0700 values

For Y axis, we use the 0.1903, 0.2260 and 0,0586 values

The registered touch position is:

Xregistered = -1.307

Yregistered = -1.456

The actual touch position is:

Xregistered = -1.5

Yregistered = -1.5

Edge to Edge

Table 3. Mutual capacitance changes of each node for a single touch at position 3 for Edge to Edge placement

For X axis, we use the 0.1882, 0.2260 and 0.0700 values

For Y axis, we use the 0.1903, 0.2260 and 0,0586 values

The registered touch position is:

Xregistered = -1.287

Yregistered = -1.026

The actual touch position is:

Xregistered = -1.5

Yregistered = -1.0

It is apparent that this specific algorithm registers the touch in a different position than they actually appear. This is how Center to Center and Edge to Edge touches will appear

Fig. 8. Center to Center registered vs actual touch

Fig. 9. Edge to Edge registered vs actual touch

At this point, we want to compare the results with the actual product specifications. We wanted a linearity of +/- 1 mm. We simply need to find the distance between the actual and registered touches. The table below shows just that:

Table 3. Linearity comparison of Center to Center and Edge to Edge tests

We observe that each position is well within the linearity limits that we wished, so no further adjustments need to be done in our sensor layout.

If you found this guide useful, check how you can run a charge time test with SENSE here

Did this answer your question?