Abstract:
Disclosed herein is a capacitive touch sensitive device. One aspect of the touch sensitive device described herein is a reduction in the number of sensor circuits needed for circular or linear capacitive touch sensitive devices while maintaining the same resolution and absolute position determination for a single object. A related aspect of the touch sensitive device described herein a coding pattern that allows each sensor circuit of a capacitive touch sensitive device to share multiple electrodes at specially chosen locations in a sensor array such that the ability to determine the absolute position of a single object over the array is not compromised.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS  
       [0001]     This application is related to and claims priority to Provisional U.S. Patent Application Ser. No. 60/522,107, filed Aug. 16, 2004, having the same title and inventors as herein, which provisional application is hereby incorporated by reference in its entirety. 
     
    
     BACKGROUND  
       [0002]     The present invention relates generally to the field of touch sensitive devices, and, in particular, to the field of optimizing capacitive sensing electrode shape and arrangement to increase the effective spatial resolution and/or the physical range of the sensing device using a limited number of sensors.  
         [0003]     In a capacitive touch sensitive device, each sensor, of which there may be many, comprises a conductive pad that forms one plate of a capacitor and a way to measure the capacitance of the conductive pad in conjunction with another movable conductive object. The movable conductive object is typically a finger or stylus that is kept at a minimum distance from the conductive pad by a non-conductive spacer. The two conductive objects (conductive pad and movable conductive object), along with the non-conductive dielectric between them, form a capacitor. As known to those skilled in the art, the capacitance of this capacitor changes as the distance and/or overlap between the objects changes. In a typical device the number of conductive pads (henceforth called electrodes), the size of the electrodes, and the spacing between the electrodes determine the physical range and spatial resolution of the touch sensitive device.  
         [0004]     In typical implementations of capacitive touch sensitive devices the position of a finger gliding over a dielectric-covered array of sensor electrodes is determined by observing the change in capacitance as the finger moves on the surface. Scanning and processing circuitry measures the change in capacitance due to the varying overlap between the finger and a given electrode. If a finger is large enough to partially overlap multiple neighboring electrodes then interpolation allows the finger position to be determined to a resolution much higher than the electrode spacing. The interpolation calculation follows the classic centroid formula: the sum of the signal values at each electrode is multiplied by its coordinate and divided by the sum of all the signal values. This technique works equally well with linear arrays of row and column electrodes, radial arrays of electrodes arranged as spokes in a wheel, or two-dimensional arrays of electrodes arranged to fill a planar space. Special electrode shapes intended to boost interpolation accuracy or resolution are the main distinction between the various related art designs.  
         [0005]     For example, U.S. Pat. No. 5,463,388 to Boie et al., which is hereby incorporated by reference, teaches fingertip sized, interleaved electrode spirals to minimize the number of electrodes needed for a multi-touch sensor array. The interleaving ensures that a finger overlaps multiple electrodes even when centered on a particular electrode and electrodes are one fingertip width apart. Stable interpolation generally requires continual finger overlap with multiple electrodes.  
         [0006]     Seonkyoo Lee, “A Fast Multiple-Touch-Sensitive Input Device,” Master&#39;s Thesis, University of Toronto (1984) teaches virtual grouping of square electrode cells to more quickly determine whether an object is present within a neighborhood. U.S. Pat. No. 5,767,457 to Gerpheide teaches locating an object by finding the balance point of a virtual grouping of electrodes on either side of the object. Both of these references are hereby incorporated by reference.  
         [0007]     Finally, U.S. Pat. Nos. 5,543,590; 5,543,591; 5,880,411; and 6,414,671; each assigned to Synaptics and hereby incorporated by reference, teach dense interleaving of row and column spanning electrodes in the same plane by shaping each row electrode as a connected string of diamond shapes, and each column electrode as a string of diamond shapes with centers offset from the row diamond centers.  
         [0008]     However, additional improvement in resolution is still desired for such devices. Although resolution may be increased by adding additional sensor elements, dictates of scanning time, circuitry cost, and power consumption simultaneously drive systems towards as few sensor elements as possible. Therefore, there is a need in the art of sensor array design for sensor arrangements that maximize resolution with a limited number of sensors. Disclosed herein is a touch sensitive device that addresses the needs of the prior art for increased resolution and decreased sensor element count.  
       SUMMARY  
       [0009]     Disclosed herein is a capacitive touch sensitive device. One aspect of the touch sensitive device described herein is a reduction in the number of sensor circuits needed for circular or linear capacitive touch sensitive devices while maintaining the same resolution and absolute position determination for a single object. A related aspect of the touch sensitive device described herein a coding pattern that allows each sensor circuit of a capacitive touch sensitive device to share multiple electrodes at specially chosen locations in a sensor array such that the ability to determine the absolute position of a single object over the array is not compromised. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0010]      FIG. 1  illustrates a touch sensitive device employing certain teachings of the present invention. 
     
    
     DETAILED DESCRIPTION  
       [0011]     A capacitive touch sensor is described herein. The following embodiments of the invention are illustrative only and should not be considered limiting in any respect.  
         [0012]     The touch sensitive device described herein allows each sensor circuit to share two or more electrodes by dispersing the shared electrodes in a particular pattern. The electrodes are shared in the sense that they both electrically connect to the same capacitive measuring sensor circuit through a common conductor without the need for multiplexing switches. Preferably, the distance separating a pair of shared electrodes, i.e., the dispersal distance, is one-third the number of electrodes in the device. The touch sensitive device employed herein further includes a particular coding pattern so that: 1) adjacent electrodes never share the same sensor circuit; and 2) the electrodes sharing the same sensor circuit are always separated from one another by the dispersal distance, i.e., roughly one third of the number of electrodes.  
         [0013]     A touch sensitive device incorporating the teachings herein is illustrated in  FIG. 1 . The capacitive touch sensitive device  100  is a one-dimensional circular array, although other arrangements, e.g., linear arrays, etc., could also be used. The circular array includes 22 electrodes, numbered 0-21. The circular array includes only 11 sensor circuits. These sensor circuits may take the form of various sensor circuits known to those skilled in the art. One such circuit is disclosed in U.S. Pat. No. 6,323,846, entitled “Method and Apparatus for Integrating Manual Input,” which is hereby incorporated by reference. The sensor circuit corresponding to each electrode is designated by a number located at the outer portion of each sensor electrode.  
         [0014]     The touch sensitive device  100  thus shares two electrodes per sensor. However, additional electrodes may be shared with each sensor. Each electrode in  FIG. 1  also includes a group designator, either “A” or “B”. Each group A electrode shares a sensor with a group “B” electrode. As noted above, the preferred dispersal distance (i.e., the distance between two electrodes sharing a sensor) is a span of approximately one-third the number of sensors, and thus approximately one-third of a characteristic dimension of the device. Thus for the circular device illustrated in  FIG. 1 , the preferred dispersal distance is approximately one-third the circumference of the circle, thus encompassing approximately one third of the sensors. Any two adjacent electrodes and the two electrodes that share sensor circuits will thus be evenly spaced, a third of the way around the circle. For example, electrode  1  in group A shares sensor  1  with electrode  8  in group B. Electrode  1  is located at approximately the eleven o&#39;clock position, while electrode  8  is located at approximately the seven o&#39;clock position. Similarly, electrode  0  in group A shares sensor  0  with electrode  15  in group B. Electrode  0  is located at the twelve o&#39;clock position, while electrode  15  is located at approximately the four o&#39;clock position.  
         [0015]     The sensor may alternatively be constructed as a one-dimensional linear array. For such a sensor, the dispersal pattern is basically the same as for a circular array: linear arrays can be treated as a circular array that has been broken between two electrodes and uncurled. Again, it is preferred that the dispersal difference between two electrodes sharing a sensor be about one-third the characteristic dimension of the device, which for a linear sensor is the length of the device.  
         [0016]     Obviously, because multiple electrodes share a sensing circuit, the absolute position of an object in contact (proximity) with a single electrode cannot be determined. For absolute position interpolation to work properly in a device constructed according to the principles herein, each electrode must be sufficiently narrow enough that the object being tracked, usually a finger or conductive stylus, overlaps multiple (e.g., two or three) adjacent electrodes. Likewise, to eliminate any ambiguity, the object being tracked must be smaller than the dispersal distance so that it does not overlap both shared electrodes of any sensor circuit.  
         [0017]     While other electrode sharing patterns are possible, some of these can not be used to unambiguously determine the position of a finger. For example, an electrode arrangement with a dispersal distance of half the array size would fail. For a circular array, this would correspond to sharing of electrodes on opposite sides of the circle, 180 degrees from one another. No matter how decoding and interpolation were done, the system could never tell whether the finger or stylus was really at the opposite position halfway around the circle.  
         [0018]     Because each sensor circuit is connected to multiple electrodes, the sensor illustrated herein requires a decoding method that finds the set of electrodes with the largest signals, then decides which of two possible electrode groups would attribute these largest signals to adjacent rather than scattered electrodes. Once this best decoding is known, classic centroid interpolation can commence amongst the adjacent electrodes. For purposes of centroid computation, each sensor&#39;s entire signal is attributed to its electrode in the adjacent group, leaving its other electrode from the dispersed group with zero signal and zero contribution to the centroid. Assuming the signal to noise ratio of the sensor circuits is adequate, the sensor described herein offers the same position resolution as a conventional position detector that has a separate sensor circuit for each electrode.  
         [0019]     The example of computer instructions below demonstrates the algorithm used in the present invention to find the position of a finger or stylus that is touching somewhere on the circular array of electrodes. Sensor and electrode mappings are held in look-up-tables (LUTs) to minimize the computation needed for decoding the location of the touching finger. The LUTs map electrode number to sensor number for each group (Sensor_to_A_type_electrode, Sensor_to_B_type_electrode), map the sensor number corresponding to the adjacent electrode (next_X_electrode_sensor, previous_X_electrode_sensor, where X=A or B), and electrode number to sensor number (Electrode_to_Sensor). The use of these LUTs simplifies the calculation of the finger location using the present invention but they are not necessary.  
         [0020]     A brief description of the algorithm implemented by the code is as follows: 
        1. The sensor array is scanned and the signal values corresponding to each sensor are collected.     2. The sensor having maximum strength signal is located using code segment findMaxSensor.     3. The electrode under which the finger is located is computed using code segment findMaxElectrode.     4. The centroid is computed using code segment computeCentroid.        
 
         [0025]     5. Steps 1-4 are repeated.  
                                                                                                                                                                                                                                                                                                                                                                         #define NUM_SENSORS 11       #define NUM_ELECTRODES 22       // Group A electrode and sensor mappings       Sensor_to_A_type_electrode[NUM_SENSORS] = {0,1,2,3,       4,5,6,7,9,11,13};       next_A_electrode_sensor[NUM_SENSORS] = {1,2,3,4,5,6,7,       1,3,5,7};       previous_A_electrode_sensor[NUM_SENSORS] = {6,0,1,2,3,4,5,       6,1,3,5};       // Group B electrode and sensor mappings       Sensor_to_B_type_electrode[NUM_SENSORS] = {15,8,17,       10,19,12,21,14,16,18,20};       next_B_electrode_sensor[NUM_SENSORS] = {8,8,9,9,10,10,0,0,2,       4,6};       previous_A_electrode_sensor[NUM_SENSORS] = {7,7,8,8,9,9,10,       10,0,2,4};       // Electrode to sensor mapping       Electrode_to_Sensor[NUM_ELECTRODES] = {                0, // 0           1, // 1           2, // 2           3, // 3           4, // 4           5, // 5           6, // 6           7, // 7           1, // 8           8, // 9           3, // 10           9, // 11           5, // 12           10, // 13           7, // 14           0, // 15           8, // 16           2, // 17           9, // 18           4, // 19           10, // 20           6 // 21                };           // This code finds the sensor that has the strongest signal           void findMaxSensor(void) {                unsigned char maxval, i;           max_sensor = 0;           maxval = 0;           for (i = 0; i &lt; NUM_SENSORS; i++) {                if (SensorData[e] &gt; maxval) {                maxval = SensorData[i];           max_sensor = i;                }                }                }           // This code finds the electrode that has the strongest           signal           // It starts by examining the electrodes adjacent to those electrodes           // that belong to the maximum sensor. The electrode being touched is           // identified by comparing the signal strength of the two electrodes on           // either side of the electrodes belonging to the maximum sensor. The           // group with the largest signal is the one under the touching finger.           void findMaxElectrode(void) {                int Asum, Bsum;           Asum = SensorData[next_A_electrode_sensor[max —             sensor]] +                SensorData[previous_A_electrode_sensor[max —             sensor]];                Bsum = SensorData[next_A_electrode_sensor[max_sensor]] +                SensorData[previous_B_electrode_sensor[max —             sensor]];                if (Asum &gt; Bsum) {                maxelectrode = Sensor_to_A_type_electrode           [max_sensor];                } else {                maxelectrode = Sensor_to_B_type_electrode           [max_sensor];                }                }           // This code computes the centroid corresponding to the touching           // finger using the location decoded using the algorithm of the           invention.           #define CENTMULTIPLIER 8           void computeCentroid(void) {                int pos_sum, electrode;           char offset;           int sval;           pos_sum = 0;           total_signal = 0;           //sum from maxelectrode in positive direction for two electrodes           for (offset = 1; offset &lt; 3; offset++) {                electrode = maxelectrode + offset;                if (electrode &gt;= NUM_ELECTRODES) {                electrode −= NUM_ELECTRODES;                }           sval = SensorData[Electrode_to_Sensor[electrode]];           total_signal += sval;           pos_sum += CENTMULTIPLIER*sval*offset;                }                //sum from maxelectrode in negative direction for two electrodes           for (offset = 1; offset &lt;3; offset++) {           electrode = maxelectrode − offset;           if (electrode &lt; 0) {                electrode += NUM_ELECTRODES;                }           sval = SensorData[Electrode_to_Sensor[electrode]];           total_signal += sval;           pos_sum −= CENTMULTIPLIER*sval*offset;                }           total_signal += SensorData[maxe];           sval = pos_sum/total_signal;           sval += CENTMULTIPLIER*maxelectrode; //absolute offset           by maxelectrode           if(sval &lt; 0) {                Centroid = 176 + sval;                }           else {                Centroid = sval;                }            }                  
 
         [0026]     While the invention has been disclosed with respect to a limited number of embodiments, numerous modifications and variations will be appreciated by those skilled in the art. It is intended that all such variations and modifications fall with in the scope of the following claims.