This guide assumes that you have basic knowledge of capacitive sensing and you are familiar with the SENSE environment. If you are a new SENSE user, you may want to read the following articles that will help you get started:
Design: How to import a .dxf file
StackUp: StackUp of Materials & Vias in StackUp
Pointer: Pointer Creation & Pointer Placements
Equivalent Circuit Analysis: How to run an Equivalent Circuit Analysis
In capacitive touch sensing applications, the operation principle is that the capacitance values of a touch sensor are changing when a touch event occurs. Taking this principle into consideration, a touch controller is able to determine if a finger is “touching” the electrode or not.
When a source is charging a touch sensor, it takes some time for the sensor to respond to this charging. This delay is called charge time and its value depends on the values of the resistances and capacitances that a touch sensor essentially consists of. The time it takes to charge the touch sensor defines the experience of the user. If it takes too much time, we might experience delays in our touch.
Also, charging a touch sensor input with a voltage pulse and then checking its output is a very popular touch controller architecture. In order to obtain stable results, it is important that the voltage pulse applied as input to a touch sensor (VIN) is allowed to settle properly and hence transfer all the charge into the capacitances of the touch sensor. The time (tc) that the voltage output (VOUT) requires to reach a specific threshold (VTH) is called charge time.
Charge time demonstration Figure source
As we can see, charge time must allow the touch controller to be able to compromise between two requirements:
- Avoid false detection on untouched nearby touch sensors due to a low VTH compared to the signal controller gets from the touch sensor.
- Avoid detection loss due to a high VTH compared to the signal controller gets from the touch sensor.
Charge time measurement
We can measure the charge time in two ways:
- We can measure it directly on a prototype of our touch sensor with an oscilloscope. This is a time consuming and expensive process that requires certain expertise.
- We can create an equivalent circuit of our touch sensor in SENSE and use a SPICE tool to perform the measurements. This option is obviously faster and simpler.
In this document we will follow the second way and work with SENSE and LTspice and use a touch sensor that consists of four circular buttons as example. We will also set a voltage threshold of 90% when measuring the charge time. We work through simple steps:
- Create a equivalent circuit of our touch sensor
a. Build the touch sensor layout
b. Build the touch sensor stackup
c. Set up the pointer placements
d. Set up and run the Equivalent Circuit Analysis
- Set up and run a SPICE analysis
a. Import the equivalent circuit to LTspice
b. Create the necessary elements and connect them
c. Run transient analysis and get the charge time result
1. Create a circuit equivalent of our touch sensor
Inside SENSE we can create a touch sensor layout either by using SENSE library elements or by importing a design we have created through a CAD tool. In a way similar to the one described in How to import a .dxf file, we will import a dxf file of a four buttons touch sensor design as seen in the following image.
Touch buttons as they appear in SENSE Layout environment
Next, we create the stackup in a similar way to the one described in StackUp of Materials & Vias in StackUp, as seen in the image that follows. Here we select the dielectric and conductive materials of our touch sensor.
Stackup of touch sensor as it appears in SENSE StackUp section
In order to perform a test of a finger pressed against the top cover of our touch sensor and test how it affects the charge time of each button we create pointer placements, like it is described in Pointer Creation & Pointer Placements. We can do that in a very simple manner as demonstrated in the two following images.
A pointer representing a finger pressed against the touch sensor surface
Demonstration of the finger placements over each touch button
Next step is to set up and run an Equivalent Circuit Analysis, as it is explained in How to run an Equivalent Circuit Analysis. Equivalent Circuit Analysis will create a block representation that contains all the information from our touch sensor needed in order to create an equivalent circuit, which we will use in the next stage of SPICE analysis.
Equivalent Circuit Analysis’ essence.
During the Equivalent Circuit Analysis set up, we assign the Voltage and GND Terminals of the equivalent circuit that will be created. During the SPICE analysis we will connect Voltage and GND to the respective terminals, so this is an important step. Afterwards, we add the pointer placements we previously created, we select the resources for our Equivalent Circuit Analysis and then we run it.
Selection of terminals during Equivalent Circuit Analysis set up
When the Equivalent Circuit Analysis is complete we will get a separate netlist for every case of each pointer placement case along with the no pointer case. A netlist is a text file containing information about the resistances, capacitances and ports that form the equivalent circuit of the sensor. To easily manipulate them, we transform them into Components. By doing so, we will have the visual representation of our touch sensor, with the Voltage (sources) and GND (sinks) terminals open.
Netlist created for the case of the finger over the top left button
2. Set up and run a SPICE analysis
Hurray, we have the netlist files of our choice provided by SENSE!
Now, we open LTspice or some other similar SPICE tool to work on our netlists.
We click on “Open” from the LTspice top toolbar and find our netlists (*.cir) and open them one by one. Then, we scroll down until we find the “.SUBCKT eq_circ...” line. We rename “eq_circ” that will also be the created component’s name and then we save our changes (with Ctrl+s). For example, we will use “eq_circ_NP” for the no pointer case netlist and “eq_circ_TL” for the pointer over top left button case netlist. Next, we right click on the edited line of the netlist and select the “Create Symbol” option.
Adding your netlist as Component to the LTspice library, after you open the netlist inside LTspice.
After confirming, we are provided with the outline of the component we created
LTspice component representing the netlist of the no pointer case
We repeat this process for all the netlists we want to perform SPICE analysis for. In our current SPICE analysis, we will investigate the case where no pointer is present and the case where the pointer is over the top left sensor of our touch sensor.
Then, we click on “New Schematic”. Here we will design the complete circuit equivalent required for the measurement of charge time, selecting the voltage source, the earth and the connectivity of the sensor. To do that, we click on “Component” on the LTspice top toolbar and we find the components we have created and place them in our schematic one by one.
Selecting our created component inside the LTspice component library for the schematic
The same way we select the component for “voltage”, we place it, then right click it and go to “Advanced” options. We create a square pulse to simulate a common way a touch controller normally triggers the touch sensor and apply it to Source2 which is connected to the top left button of the touch sensor presented in this use case. We connect the rest sources and the sink to earth. We will again go to the LTspice toolbar and first click on the “Ground” to make our ground and then on the “Wire” to connect voltage to Source2 and everything else to the ground we created. We can see a demonstration in the image below.
Equivalent circuits of our two cases, along with the voltage settings and the transient analysis options
Then we select “Run” from the toolbar and run a transient analysis and get the voltage output at the sink. The two different circuits will show the deviation of Charge Time when there is no touch and when a finger touches the top left button.
Then a window with the result plots pop up. If we select the voltages of both the outputs/sinks, we will get what is presented below:
SPICE Analysis results
In our example, with a voltage threshold of 90%, we will get for the “no pointer” case a charge time of 195ps and for the “pointer over the top left button” case a charge time of 157ps.
Charge time depends directly on the touch sensor and the type of touch. We can easily simulate different combinations of touch sensors with varying parameters (design, materials, etc), types of touch and/or excitations following the simple process described above.
Apart from the speed performance, the touch sensor design affects the sensitivity of your sensor. There are two ways you can test the sensitivity of your touch sensor virtually, either you can perform a combination of Equivalent Circuit Analysis and SPICE Analysis similar to the one demonstrated here or you can focus on the Capacitance Analysis of your touch sensor as it is analytically presented in How to evaluate the touch sensitivity of a mutual-capacitive touch panel.