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.


One of the biggest headaches of a touchscreen designer is to achieve a seamless performance over the whole surface of the screen. Many times, strict product specifications, pressuring research and development deliverable timeframes and an attempt to re-use what worked in previous projects instead of designing from scratch lead to problematic touchscreen performance. Those touchscreens, more often than not, face the same problem - they do not work as intended on the corners of the screen. Either they are unresponsive to touch or produce false touches.

In this article we are going to discuss why this problem occurs, how it can be identified and suggest possible solutions by running a performance test using SENSE that can be easily replicated inside a laboratory using just an oscilloscope.

  1. 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. Use the Import feature of SENSE. Assign each conductive layer to the corresponding Element in SENSE [How to import a .dxf file].

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

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

  5. Build the StackUp of your touchscreen by assigning the thickness and the relative permittivity of your dielectrics and the sheet resistance of your conductors [StackUp of Materials].

The touchscreen 3D virtual model is now ready for evaluation.

2. Prepare the Performance Test

💡 If you have imported your touchscreen and built the StackUp, you can start with the Performance Test. If you still have questions, you might want to revise some of your choices with the help of the FAQ.

In this stage we want to understand what is a good metric of the touchscreen performance. We can start from the operation principle of a mutual capacitance touchscreen. When a screen is activated for the first time, the controller performs a calibration scan. This calibration scan will read the signal from all the nodes of the screen (e.g. a 20-Transmitter, 30-Receiver screen has 600 nodes) and get the baseline value, a value without a touch. In case there are areas that show big variation in those readings, the controller will use data post-processing algorithms to achieve a very flat baseline value.

However, a bad layout design cannot be fully compensated. When there is a significant variation of the capacitance values between the different nodes of the touchscreen, a touch event will be interpreted in different ways over different areas and the performance will be affected. Those areas are usually located on the corners and edges of the screen. This means that achieving similar baseline values is a metric of the performance of a touchscreen.

So, the first step is to extract the baseline values for each node of the sensor. Then, based on the results, to perform additional tests over the areas that show discrepancies and investigate if the performance is indeed compromised there. We will use as a performance metric the voltage response of the sensor.

In short, the voltage response of the sensor are the values a voltmeter would read on the open end of a Receiver, when a Transmitter is driven with a voltage source. During these measurements, the remaining Transmitters and Receivers are held to ground potential. This setup is close to how a controller measures the signal.

In order to be able to perform the voltage response simulations, the Equivalent Circuit of the touch screen is required. The Equivalent Circuit is the electrical equivalent of the touchscreen and consists of all the capacitance and resistance values and the way they are connected in electrical nodes. The equivalent circuit is automatically extracted by SENSE in a netlist format. Combining the equivalent circuit with any SPICE simulator a virtual lab is created.

The extraction of the Equivalent Circuit is quite straightforward in SENSE. Below are the steps that need to be taken to set up an Equivalent Circuit analysis [How to run an Equivalent Circuit Analysis].

Fig. 1. Full screen representation in SENSE

It is important to use the whole screen for this simulation, as the voltage response depends on the whole circuit. In comparison to the mutual capacitance simulations, where mutual capacitance is generally concentrated in an area where transmitters and receivers overlap or are in close proximity, a voltage response depends on the whole path of the current from the transmitter source to the receiver sink.

Therefore it is important:

  • to use the whole screen

  • to choose the correct ports where the current enters and exits the circuit. All transmitters should be assigned to a Source/Voltage Terminal and all Receivers to a Sink/Ground terminal.

Zooming in the area where the controller is connected to the traces, the choice of the ports is done by selecting the curves where the current enters and leaves the circuit.

Fig. 2. Selecting transmitter and receiver ports

Once the terminals are selected, the Equivalent Circuit analysis is ready to start. Since the whole screen is used, necessary resources should also be selected. 24 vCPUs and 48GBs of RAM are a popular choice.

3. How to setup the SPICE analysis

Now we will use a SPICE simulator to run the performance investigation of the touchscreen using the netlist that we extracted in the previous step. Any SPICE simulator will work for this test. The netlist that is created from SENSE can have different representations depending on the software that will be used. The generic netlist is a simple text file (.cir format) that contains the information of the mutual and self capacitances of the screen and the resistances of the traces and electrodes together with their nodes in a specific syntax.

Fig. 3. Different types of Netlist representation

For our test we will experiment with LTspice. In LTspice the equivalent circuit of the screen is represented as a block with open Source and Sink ports. Inside the block, capacitances and resistances are connected using τ- and π- equivalents that are automatically created by SENSE. Other tools might have different representations.

To view this block, we simply click on “Open” from the LTspice top toolbar and find our netlist (*.cir). Then, we scroll down until we find the “.SUBCKT eq_circ” line. Next, we right click on the edited line of the netlist and select the “Create Symbol” option. The netlist of SENSE is now placed in the components library of LTspice ready to be used in a SPICE analysis.

Fig. 4. Creating a SENSE component in LTspice

To run a spice analysis, we click on “New Schematic”. Here we will design the complete circuit equivalent required for the simulation of the voltage response. To do that, we click on “Component” on the LTspice top toolbar, find the component we have created and place it in our schematic. Then, using the components library, we create and connect a voltage source to one Transmitter (Source). All other transmitters are grounded using the earth component. Then all receivers are grounded except for one, as shown below:

Fig. 5. Voltage response set up

The voltage source is a square pulse with rise time 5ns, period of 300us and 50% duty cycle. We read the voltage response of the active receiver.

Fig. 6. Voltage signal

In order to get the map of the voltage responses of the whole screen, we have to replicate this experiment 150 times (= 10 Transmitters x 15 Receivers). In the end, the voltage response we are measuring is the voltage that the waveform reaches in steady state.

Fig. 7. Voltage response

4. Reading the results

Fig. 8. Map of baseline voltage responses

This figure shows the voltage response of each node, after we followed the process described above. Each number represents the voltage response read in one receiver when one transmitter is active. For example, the value 110 mV (left corner) occurs when we activate transmitter 1, read from receiver 1 and all other Tx and Rx are grounded.

Such a mapping is a quite common reading of the IC. The IC, depending on the modulation method, will convert those voltage measurements into counts, will use post processing algorithms and finally print a map of counts that looks like a flat plane. Of course, the baseline values always remain different.

💡 This is the reason why when touching in different positions on a seemingly flat touchscreen 3D counts’ map you get different count responses. It all comes down to the different baseline values, even though what appears to the user seems exactly the same.

There can be numerous readings for the voltages in this figure. However, if we attempt to analyze it, starting from left to right, we observe that the voltage response value is increasing by a few millivolts per node until the center of the screen when it starts decreasing in a similar manner. We also observe that some areas do not follow this trend - for example the bottom left corner and edge areas with 110 and 81 mV respectively.

If we received those results inside our lab, the next thing to do is touch on the warmer and colder areas of the screen to investigate if it operates in the same way. This is the next step of our experiment - validate the performance on areas of interest.

Fig. 9. Pointer placements on areas of interest

We choose a corner and an edge area as well as a more central area. We apply a pointer touch there.

We then run an Equivalent Circuit analysis in SENSE. This will create 3 new netlists. Each netlist represents the electrical equivalent of the sensor when a pointer is touching those three different positions (not simultaneously) [Pointer Creation, Pointer Placements].

The block of the screen contains a floating pointer model. This means that if it was a human finger touching the screen, the equivalent model of the human body that is connected to earth is absent. It can be added by placing in the netlist a resistance and a capacitance (1.5k Οhm and 100 pF are common values) as shown below.

Fig. 10. Human body model description

Here is how the syntax in t e whole human body, around 100pF, having the human body resistance, around 1.5k Οhm

Fig. 11. Example of assigning the human body model in the netlist

With all 3 new netlists with the human body model ready, we can repeat the SPICE analyses. Following the same process, we prepare the SPICE simulation and we extract the voltage response values of each node for the three pointer touches (Figure 12):

Fig. 12. Map of voltage responses for the three different pointer touches

Center and Corner touches seem reasonable. When we touch a central position, we observe a 20 mV change of the voltage there and a slight change in the nearby nodes. It is quite straightforward to pinpoint the position of the touch. Similar story when touching on the corner node. Things get tricky when touching the edge node. The voltage change over the node is again around 20 mV. However, we observe a change of 38 and 34 mV in the neighbouring nodes, even a change of 16 mV far away from the touch.

💡 It is quite clear that this touch will not be registered to the correct position from the IC.

In order to fix this problem, the first step would be to consider a different sensor layout design. The goto solution is to separate the traces with bigger distances and to introduce shielding surfaces between them (shown below)

Fig. 13. Original touchscreen traces design

Fig. 14. Suggestion of improvements by adding a shield

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


  • To automatically run all SPICE simulations, run the script here or ask Fieldscale

  • To automatically edit the netlists to edit the human body model, run the script here or ask Fieldscale

The Layout presented in this example includes a .dxf file that was imported in SENSE. This .dxf is a simple diamond pattern double layer touchscreen. The horizontal electrodes are the transmitters (10 in total) and the vertical are the receivers (15 in total)

The following figure is representative of the stackup settings that were used:

Any pointer will work fine in this simulation. Below is what was used for the test:

Did this answer your question?