The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings.
Described herein is a method and apparatus for detecting an environmental effect and the presence of a conductive object on a touch-sensing device without using a dedicated environmental effect sensor, and compensating for the environmental effect on the detection of the conductive object. The following description sets forth numerous specific details such as examples of specific systems, components, methods and so forth, in order to provide a good understanding of several embodiments of the present invention. It will be apparent to one skilled in the art, however, that at least some embodiments of the present invention may be practiced without these specific details. In other instances, well-known components or methods are not described in detail or are presented in simple block diagram form in order to avoid unnecessarily obscuring the present invention. Thus, the specific details set forth are merely exemplary. Particular implementations may vary from these exemplary details and still be contemplated to be within the spirit and scope of the present invention.
Embodiments of a method and apparatus are described to detect an environmental effect and the presence of a conductive object on a touch-sensing device without using a dedicated environmental effect sensor, and to compensate for the environmental effect on the detection of the conductive object. In one embodiment, the method may include detecting an environmental effect on a touch-sensing device using a (reference) touch sensor that is unresponsive to the presence of a conductive object during the detection of the conductive object, detecting the presence of the conductive object with a sensor that is responsive to the presence of the conductive object, and compensating for the environmental effect on the detection of the conductive object. In one embodiment, the apparatus may include a touch-sensing device having a touch sensor to detect an environmental effect and the presence of a conductive object on the touch-sensing device, and a processing device coupled to the touch sensor to compensate for the environmental effect on the detection of the conductive object. The touch sensor may be unresponsive to the presence of the conductive object during the detection of the environmental effect. The touch sensor may include a first pin uncoupled to a touch-sensing switch and a second pin coupled to a touch-sensing switch. The processing device may be configured to read a signal corresponding to the environmental effect from the first pin and to calculate a difference value between the signal corresponding to the environmental effect from the first pin and a first baseline value related to the first pin. In effect, the processing device may be configured to adjust a first baseline value related to the first pin and a second baseline value related to the second pin if a difference value between a signal corresponding to the environmental effect from the first pin and the first baseline value exceeds a predetermined range for a predetermined amount of time.
As described herein, in a touch-sensing device having substantially similar touch sensors, all of the touch sensors will be exposed to the same environmental factors, and all of the sensors will respond to changes in the environmental factors (e.g., temperature changes) in the same way (e.g., temperature drift). One touch sensor that is exposed to the environmental effect but otherwise shielded from user interaction (e.g., a conductive object such as a stylus or the user's finger) may be responsive to the environmental effect but unresponsive to the presence of the conductive object. Compensation for the environmental effect may be achieved using the response of this particular touch sensor as a reference.
By using a touch sensor that is exposed to the environmental effect, but otherwise shielded from the user, to provide a reference for the environmental effect, the cost of a dedicated environmental effect sensor may be avoided. In addition, compensation for the environmental effect may be carried out without being impacted by the presence of a conductive object as would be in the case of a conventional software-only compensation method (e.g., the “button lock” problem caused by a user pressing a button during warm-up stage of the touch-sensing device). This is because the touch sensor shielded from the user cannot be accessed by the user and therefore any change in capacitance measured on this touch sensor will be due to the environmental effect alone. The embodiments described herein may be used for applications of touch-sensor buttons. Alternatively, the embodiments described herein may be implemented in touch-sensor pads or touch-sensor sliders.
The touch-sensing switch array 220 may include one or multiple touch-sensing switches. In one embodiment, touch-sensing switch array 220 may include touch-sensing switches 222-228. As illustrated in
It should be noted that, while the touch-sensing switch array 220 is exposed to a user for detecting user interaction in the form of a presence of a conductive object, touch sensor 210 is shielded from the user and hence is not exposed to the user interaction. It should be further noted that, although touch sensor 210 is shielded from the user, it is nevertheless subject to the effect of environmental factor 280. As illustrated in
As illustrated in
The conductive object in this case is a finger, alternatively, this technique may be applied to any conductive object, for example, a conductive door switch, position sensor, or conductive pen in a stylus tracking system (e.g., stylus).
The relaxation oscillator begins by charging the capacitor 413 from a ground potential or zero voltage and continues to add charge to the capacitor 413 at a fixed charging current IC 457 until the voltage across the capacitor 413 at node 415 reaches a reference voltage or threshold voltage, VTH 458. The time required for the capacitor voltage to reach VTH is TRO, which is the period of oscillation of the relaxation oscillator. At VTH 458, the relaxation oscillator allows the accumulated charge at node 415 to discharge (e.g., the capacitor 413 to “relax” back to the ground potential) and then the process repeats itself. In particular, the output of comparator 453 asserts a clock signal FOUT 456 (e.g., FOUT 456 goes high), which enables the reset switch 454. This resets the voltage on the capacitor at node 415 to ground and the charge cycle starts again. The relaxation oscillator outputs a relaxation oscillator clock signal (FOUT 456) having a frequency (fRO=1/TRO) dependent upon capacitance C of the capacitor 413 and charging current IC 457. It should be noted that the operation of relaxation oscillator 450 described herein is true for each of the capacitors coupled to pins 411(1)-411(N) and not just capacitor 413.
The trip time of the comparator 453 and reset switch 454 adds a fixed delay. The output of the comparator 453 is synchronized with a reference system clock to guarantee that the comparator reset time is long enough to completely reset the charging voltage on capacitor 415. This sets a practical upper limit to the operating frequency. For example, if capacitance C of the capacitor 413 changes, then fRO will change proportionally according to Equation (1). By comparing fRO of FOUT 456 against the frequency (fREF) of a known reference system clock signal (REF CLK), the change in capacitance ΔC can be measured. Accordingly, equations (2) and (3) below describe that a change in frequency between FOUT 456 and REF CLK is proportional to a change in capacitance of the capacitor 413.
ΔC∝1/Δf, where (2)
Δf=fRO−fREF. (3)
In one embodiment, a frequency comparator may be coupled to receive relaxation oscillator clock signal (FOUT 456) and REF CLK, compare their frequencies fRO and fREF, respectively, and output a signal indicative of the difference Δf between these frequencies. By monitoring Δf one can determine whether the capacitance of the capacitor 413 has changed.
In one exemplary embodiment, the relaxation oscillator 450 may be built using a programmable timer (e.g., a 555 timer) to implement the comparator 453 and reset switch 454. Alternatively, the relaxation oscillator 450 may be built using other circuitry. Relaxation oscillators are known by those of ordinary skill in the art, including relaxation oscillators that operate in the frequency measurement mode described above as well as a period measurement mode described briefly below. Accordingly, additional details regarding their operation have not been included so as to not obscure the present embodiments.
Capacitive sensor 410 of
Relaxation oscillator 450 of
Digital counter 440 is coupled to the output of the relaxation oscillator 450. Digital counter 440 receives the relaxation oscillator output signal 456 (FOUT). Digital counter 440 is configured to count at least one of a frequency or a period of the relaxation oscillator output received from the relaxation oscillator.
As previously described with respect to the relaxation oscillator 450, when a finger or conductive object is placed on the capacitive switch, the capacitance increases from CP to CP+CF so the relaxation oscillator output signal 456 (FOUT) decreases. The relaxation oscillator output signal 456 (FOUT) is fed to the digital counter 440 for measurement. There are two methods for counting the relaxation oscillator output signal 456, frequency measurement and period measurement. In one embodiment, the digital counter 440 may include two multiplexers 443 and 444. Multiplexers 443 and 444 are configured to select the inputs for the PWM 441 and the timer 442 for the two measurement methods, frequency measurement and period measurement, in response to a period/frequency select signal 447. Alternatively, other selection circuits may be used to select the inputs for the PWM 441 and the timer 442. In an alternative embodiment, multiplexers 443 and 444 are not included in the digital counter, for example, the digital counter 440 may be configured in one, or the other, measurement configuration.
In the frequency measurement method, the relaxation oscillator output signal 456 is counted for a fixed period of time (gate time). The timer 442 is read to obtain the number of counts during the gate time. This method works well at low frequencies where the oscillator reset time is small compared to the oscillator period. A pulse width modulator (PWM) 441 is clocked for a fixed period by a derivative of the system clock, VC3446 (which is a divider from system clock 445, e.g., 24 MHz). Pulse width modulation is a modulation technique that generates variable-length pulses to represent the amplitude of an analog input signal; in this case VC3446. The output of PWM 441 enables timer 442. The relaxation oscillator output signal 456 clocks the timer 442. The timer 442 is reset at the start of the sequence, and the count value is read out at the end of the gate period.
In the period measurement method, the relaxation oscillator output signal 456 gates a timer 442, which is clocked by the system clock 445 (e.g., 24 MHz). In order to improve sensitivity and resolution, multiple periods of the oscillator are counted with the PWM 441. The output of PWM 441 is used to gate the timer 442. In this method, the relaxation oscillator output signal 456 drives the clock input of PWM 441. As previously described, pulse width modulation is a modulation technique that generates variable-length pulses to represent the amplitude of an analog input signal; in this case the relaxation oscillator output signal 456. The output of the PWM 441 enables timer 442 (e.g., 16-bit), which is clocked at the system clock frequency 445 (e.g., 24 MHz). When the output of PWM 441 is asserted (e.g., goes high), the count starts by releasing the capture control. When the terminal count of the PWM 441 is reached, the capture signal is asserted (e.g., goes high), stopping the count and setting the PWM's interrupt. The timer value is read in this interrupt. The relaxation oscillator 450 is coupled to the next switch (e.g., capacitor coupled to pin 411(2)) to be measured and the count sequence is started again.
The two counting methods may have equivalent performance in sensitivity and signal-to-noise ratio (SNR). The period measurement method may have a slightly faster data acquisition rate, but this rate is dependent on software loads and the values of the switch capacitances. The frequency measurement method has a fixed-switch data acquisition rate.
The length of the timer 442 and the detection time required for the switch are determined by sensitivity requirements. Small changes in the capacitance on capacitor 413, for example, result in small changes in frequency. In order to find these small changes, it may be necessary to count for a considerable time.
At startup (or boot) the switches (e.g., capacitors coupled to pins 411(1)-411(N)) are scanned and the count values for each switch with no actuation are stored as a baseline array of CP values for the switches. The presence of a finger on the switch is determined by the difference in counts between a stored value for no switch actuation and the acquired value with switch actuation, referred to here as Δn. The sensitivity of a single switch is approximately:
The value of Δn should be large enough for reasonable resolution and clear indication of switch actuation. This drives switch construction decisions.
CF should be as large a fraction of CP as possible. In one exemplary embodiment, the ratio of CF/CP ranges between approximately 0.01 to approximately 2.0. Alternatively, other ratios may be used for CF/CP. Since CF is determined by finger area and distance from the finger to the switch's conductive traces (through the over-lying insulator), the baseline capacitance CP should be minimized. The baseline capacitance CP includes the capacitance of the switch pad plus any parasitics, including routing and chip pin capacitance.
In switch array applications, variations in sensitivity among switches should be minimized. If there are large differences in Δn from one switch to another, one switch may actuate at 1.0 cm, while another may not actuate until direct contact. This presents a non-ideal user interface device. There are numerous methods for balancing the sensitivity. These may include precisely matching on-board capacitance with PC trace length modification, adding balance capacitors on each switch's PC board trace, and/or adapting a calibration factor to each switch to be applied each time the switch is tested.
It should be noted that the count window should be long enough for Δn to be a “significant number.” In one embodiment, the “significant number” can be as little as 10, or alternatively, as much as several hundred. In one exemplary embodiment, where CF is 1.0% of CP (a typical “weak” switch), and where the switch threshold is set at a count value of 20, n is found to be:
Adding some margin to yield 2500 counts, and running the frequency measurement method at 1.0 MHz, the detection time for the switch is 2.5 milliseconds. In the frequency measurement method, the frequency difference between a switch with and without actuation (i.e., CP+CF vs. CP) is approximately:
This shows that the sensitivity variation between one channel and another is a function of the square of the difference in the two channels' static capacitances. This sensitivity difference can be compensated using routines in high-level Application Programming Interfaces (APIs).
In the period measurement method, the count difference between a switch with and without actuation (i.e., CP+CF vs. CP) is approximately:
The charge currents are typically lower and the period is longer to increase sensitivity, or the number of periods for which fSysClk is counted can be increased. In either method, by matching the static (parasitic) capacitances Cp of the individual switches, the repeatability of detection increases, making all switches work approximately at the same difference. Compensation for this variation can be done in software at runtime. The compensation algorithms for both the frequency method and period method may be included in the high-level APIs.
Some implementations of this circuit use a current source programmed by a fixed-resistor value. If the range of capacitance to be measured changes, external components (e.g., resistors) should be adjusted.
In one embodiment, using the multiplexer array 430, multiple capacitive switches may be sequentially scanned to provide current to and measure the capacitance from the capacitors (e.g., capacitive switches), as previously described. In other words, while one capacitive switch is being measured, the remaining capacitive switches are grounded using the GPIO port 707 as illustrated in
The capacitor charging current for the relaxation oscillator 450 may be generated in a register programmable current output DAC (also known as IDAC). Accordingly, the current source 452 is a current DAC or IDAC. The IDAC output current may be set by an 8-bit value provided by the processing device 230, such as from the processing core of processing device 230. The 8-bit value may be stored in a register or in memory.
Estimating and measuring PCB capacitances may be difficult. The oscillator-reset time may add to the oscillator period (especially at higher frequencies); and there may be some variation to the magnitude of the IDAC output current with operating frequency. Accordingly, the optimum oscillation frequency and operating current for a particular switch array may be determined to some degree by experimentation.
In many capacitive switch designs the two “plates” (e.g., 301 and 302) of the sensing capacitor are actually adjacent sensor elements that are electrically isolated (e.g., PCB pads or traces), as indicated in
The dimensions of equation (8) are in meters. This is an approximation of the capacitance. The reality is that there are fringing effects that substantially increase the switch-to-ground (and PCB trace-to-ground) capacitance.
Switch sensitivity (i.e., actuation distance) may be increased by one or more of the following: 1) increasing board thickness to increase the distance between the active switch and any parasitics; 2) minimizing PC trace routing underneath switches; 3) utilizing a gridded ground with 50% or less fill if use of a ground plane is absolutely necessary; 4) increasing the spacing between switch pads and any adjacent ground plane; 5) increasing pad area; 6) decreasing thickness of any insulating overlay; or 7) verifying that there is no air-gap between the PC pad surface and the touching finger.
There is some variation of switch sensitivity as a result of environmental factors such as ambient temperature and humidity. A baseline update routine, which compensates for this variation, may be provided in the firmware or high-level APIs.
Sliding switches are used for control requiring gradual adjustments. Examples include a lighting control (dimmer), volume control, graphic equalizer, and speed control. These switches are mechanically adjacent to one another. Actuation of one switch results in partial actuation of physically adjacent switches. The actual position in the sliding switch is found by computing the centroid location of the set of switches activated.
In applications for touch-sensor sliders (e.g., sliding switches) and touch-sensor pads it is often necessary to determine finger (or other capacitive object) position to more resolution than the native pitch of the individual switches. The contact area of a finger on a sliding switch or a touch-pad is often larger than any single switch. In one embodiment, in order to calculate the interpolated position using a centroid, the array is first scanned to verify that a given switch location is valid. The requirement is for some number of adjacent switch signals to be above a noise threshold. When the strongest signal is found, this signal and those immediately adjacent are used to compute a centroid:
The calculated value will almost certainly be fractional. In order to report the centroid to a specific resolution, for example a range of 0 to 100 for 12 switches, the centroid value may be multiplied by a calculated scalar. It may be more efficient to combine the interpolation and scaling operations into a single calculation and report this result directly in the desired scale. This may be handled in the high-level APIs. Alternatively, other methods may be used to interpolate the position of the conductive object.
A physical touchpad assembly is a multi-layered module to detect a conductive object. In one embodiment, the multi-layer stack-up of a touchpad assembly includes a PCB, an adhesive layer and an overlay. The PCB includes the processing device 230 and other components, such as the connector to the host 750 as illustrated in
The PCB may be made of standard materials, such as FR4 or Kapton™ (e.g., flexible PCB). In either case, the processing device 230 may be attached (e.g., soldered) directly to the sensing PCB (e.g., attached to the non-sensing side of the PCB). The PCB thickness varies depending on multiple variables, including height restrictions and sensitivity requirements. In one embodiment, the PCB thickness is at least approximately 0.3 millimeters (mm). Alternatively, the PCB may have other thicknesses. It should be noted that thicker PCBs may yield better results. The PCB length and width is dependent on individual design requirements for the device on which the sensing device is mounted, such as a notebook or mobile handset.
The adhesive layer is directly on top of the PCB sensing array and is used to affix the overlay to the overall touchpad assembly. Typical material used for connecting the overlay to the PCB is non-conductive adhesive such as 3M 467 or 468. In one exemplary embodiment, the adhesive thickness is approximately 0.05 mm. Alternatively, other thicknesses may be used.
The overlay may be non-conductive material used to protect the PCB circuitry to environmental elements and to insulate the user's finger (e.g., conductive object) from the circuitry. Overlay can be ABS plastic, polycarbonate, glass or Mylar™. Alternatively, other materials known by those of ordinary skill in the art may be used. In one exemplary embodiment, the overlay has a thickness of approximately 1.0 mm. In another exemplary embodiment, the overlay thickness has a thickness of approximately 2.0 mm. Alternatively, other thicknesses may be used.
The switch array may be a grid-like pattern of sensor elements (e.g., capacitive switches) used in conjunction with the touch sensor 210 and processing device 230 to detect a presence of a conductive object, such as finger, to a resolution greater than that which is native. A touch-sensor pad layout pattern may be used which maximizes the area covered by conductive material, such as copper, in relation to spaces necessary to define the rows and columns of the sensor array.
In one embodiment, step 630 may include steps 631-638 that determine whether the difference value from step 620 is outside of a specified range and update the baseline values if necessary. In step 631, it is determined whether the difference value is outside of a specified range. If the difference value is not outside of the specified range, an abnormal count variable is reset to zero (step 637). If the difference value is outside of a specified range, the abnormal count variable is incremented (step 632). Next, it is determined whether the abnormal count variable is above a specified threshold (step 633). If the abnormal count variable is not above a specified threshold, baseline values of all the pins are updated in step 638 (e.g., by calling a baseline update function); and in this case there may not be any changes made to the baseline values. If the abnormal count variable is above a specified threshold, the difference value from step 620 is multiplied by a predetermined factor and the result is stored in a temporary variable (step 634). In an alternative embodiment, in step 634, a predetermined factor may be added to the difference value. The value in the temporary variable is then added to the baseline values of all the pins (step 635). The abnormal count variable is reset to zero (step 636), and the baseline values of all the pins are updated (step 638). In step 638, how the baseline values are updated depends on the environmental effect. For example, if the ambient temperature is increasing, the baseline values are increased accordingly; and, likewise, if the ambient temperature is decreasing, the baseline values are decreased accordingly. Additional details regarding alternative embodiments of compensating for environmental effects have not been included so as to not obscure the present embodiments, and because these alternative embodiments are known by those of ordinary skill in the art.
The processing device 230 may also include an analog block array (not illustrated). The analog block array is also coupled to the system bus. Analog block array also may be configured to implement a variety of analog circuits (e.g., ADC, analog filters, etc.) using, in one embodiment, configurable UMs. The analog block array may also be coupled to the GPIO 707.
As illustrated, capacitive sensor 410 may be integrated into processing device 230. Capacitive sensor 410 may include analog I/O for coupling to an external component, such as touch-sensor pad 720, touch-sensor slider 730, touch-sensor buttons 740, and/or other devices.
It should be noted that the embodiments described herein are not limited to touch-sensor pads for notebook implementations, but can be used in other capacitive sensing implementations, for example, the sensing device may be a touch-sensor slider 730, or a touch-sensor button 740 (e.g., capacitance sensing button). Similarly, the operations described herein are not limited to notebook cursor operations, but can include other operations, such as lighting control (dimmer), volume control, graphic equalizer control, speed control or other control operations requiring gradual adjustments. It should also be noted that these embodiments of capacitive sensing implementations may be used in conjunction with non-capacitive sensing elements, including but not limited to pick buttons, sliders (e.g., display brightness and contrast), scroll-wheels, multi-media control (e.g., volume, track advance, etc) handwriting recognition and numeric keypad operation.
In one embodiment, the electronic system 700 includes a touch-sensor pad 720 coupled to the processing device 230 via bus 721. Touch-sensor pad 720 may include a multi-dimension sensor array. The multi-dimension sensor array comprises a plurality of sensor elements, organized as rows and columns. In an alternative embodiment, the electronic system 700 includes a touch-sensor slider 730 coupled to the processing device 230 via bus 731. Touch-sensor slider 730 may include a single-dimension sensor array. The single-dimension sensor array comprises a plurality of sensor elements, organized as rows, or alternatively, as columns. In another embodiment, the electronic system 700 includes a touch-sensor button 740 coupled to the processing device 230 via bus 741. Touch-sensor button 740 may include a single-dimension or multi-dimension sensor array. The single- or multi-dimension sensor array comprises a plurality of sensor elements. For a touch-sensor button, the plurality of sensor elements may be coupled together to detect a presence of a conductive object over the entire surface of the sensing device. Alternatively, the touch-sensor button 740 has a single sensor element to detect the presence of the conductive object. In one embodiment, the touch-sensor button 740 may be a capacitive sensor element. Capacitive sensor elements may be used as non-contact switches. These switches, when protected by an insulating layer, offer resistance to severe environments.
The electronic system 700 may include any combination of one or more of the touch-sensor pad 720, touch-sensor slider 730 and/or touch-sensor button 740. In an alternative embodiment, the electronic system 700 may also include non-capacitive sensor elements 770 coupled to the processing device 230 via bus 771. The non-capacitive sensor elements 770 may include buttons, light emitting diodes (LEDs) and other user interface devices, such as a mouse, a keyboard or other functional keys that do not require capacitance sensing. In one embodiment, buses 771, 741, 731 and 721 may be a single bus. Alternatively, these buses may be configured into any combination of one or more separate buses.
The processing device may also provide value-added functionality such as keyboard control integration, LEDs, battery charger and general purpose I/O, as illustrated as non-capacitive sensor elements 770. Non-capacitive sensor elements 770 are coupled to the GPIO 707.
Processing device 230 may include internal oscillator/clocks 706 and communication block 708. The oscillator/clocks block 706 provides clock signals to one or more of the components of processing device 230. Communication block 708 may be used to communicate with an external component, such as a host processor 750, via host interface (I/F) line 751. Alternatively, processing device 230 may also be coupled to embedded controller 760 to communicate with the external components, such as host 750. Interfacing to the host 750 can be through various methods. In one exemplary embodiment, interfacing with the host 750 may be done using a standard PS/2 interface to connect to an embedded controller 760, which in turn sends data to the host 750 via low pin count (LPC) interface. In some instances, it may be beneficial for the processing device 230 to do both touch-sensor pad and keyboard control operations, thereby freeing up the embedded controller 760 for other housekeeping functions. In another exemplary embodiment, interfacing may be done using a universal serial bus (USB) interface directly coupled to the host 750 via host interface line 751. Alternatively, the processing device 230 may communicate to external components, such as the host 750 using industry standard interfaces, such as USB, PS/2, inter-integrated circuit (I2C) bus, or system packet interfaces (SPI). The host 750 and/or embedded controller 760 may be coupled to the processing device 230 with a ribbon or flex cable from an assembly, which houses the sensing device and processing device.
In one embodiment, the processing device 230 is configured to communicate with the embedded controller 760 or the host 750 to send and/or receive data. The data may be a command or alternatively a signal. In an exemplary embodiment, the electronic system 700 may operate in both standard-mouse compatible and enhanced modes. The standard-mouse compatible mode utilizes the HID class drivers already built into the Operating System (OS) software of host 750. These drivers enable the processing device 230 and sensing device to operate as a standard cursor control user interface device, such as a two-button PS/2 mouse. The enhanced mode may enable additional features such as scrolling (reporting absolute position) or disabling the sensing device, such as when a mouse is plugged into the notebook. Alternatively, the processing device 230 may be configured to communicate with the embedded controller 760 or the host 750, using non-OS drivers, such as dedicated touch-sensor pad drivers, or other drivers known by those of ordinary skill in the art.
In other words, the processing device 230 may operate to communicate data (e.g., commands or signals) using hardware, software, and/or firmware, and the data may be communicated directly to the processing device of the host 750, such as a host processor, or alternatively, may be communicated to the host 750 via drivers of the host 750, such as OS drivers, or other non-OS drivers. It should also be noted that the host 750 may directly communicate with the processing device 230 via host interface 751.
In one embodiment, the data sent to the host 750 from the processing device 230 includes click, double-click, movement of the cursor, scroll-up, scroll-down, scroll-left, scroll-right, step back, step forward, Rewind, Fast Forward, Play, Stop, etc. Alternatively, other user interface device commands may be communicated to the host 750 from the processing device 230. These commands may be based on gestures occurring on the sensing device that are recognized by the processing device, such as tap, push, hop, and zigzag gestures. Alternatively, other commands may be recognized. Similarly, signals may be sent that indicate the recognition of these operations.
In particular, a tap gesture, for example, may be a user's finger (e.g., conductive object) is on the sensing device for less than a threshold time. If the time the finger is placed on the touchpad is greater than the threshold time it may be considered to be a movement of the cursor, in the x- or y-axes. Scroll-up, scroll-down, scroll-left, and scroll-right, step back, and step-forward may be detected when the absolute position of the conductive object is within a pre-defined area, and movement of the conductive object is detected.
Processing device 230 may reside on a common carrier substrate such as, for example, an integrated circuit (IC) die substrate, a multi-chip module substrate or the like. Alternatively, the components of processing device 230 may be one or more separate integrated circuits and/or discrete components. In one exemplary embodiment, processing device 230 may be a Programmable System on a Chip (PSoC™) processing device, manufactured by Cypress Semiconductor Corporation, San Jose, Calif. Alternatively, processing device 230 may be one or more other processing devices known by those of ordinary skill in the art, such as a microprocessor or central processing unit, a controller, special-purpose processor, digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or the like. In an alternative embodiment, for example, the processing device may be a network processor having multiple processors including a core unit and multiple microengines. Additionally, the processing device may include any combination of general-purpose processing device(s) and special-purpose processing device(s).
It should be noted that the embodiments described herein are not limited to having a configuration of a processing device coupled to a host, but may include a system that measures the capacitance on the touch-sensing device and sends the new data to a host computer where it is analyzed by an application. In effect the processing that is done by processing device 230 may also be done in the host.
In one embodiment, the method and apparatus described herein may be implemented in a fully self-contained touch-sensor pad, which outputs fully processed x/y movement and gestures data signals or data commands to a host. In an alternative embodiment, the method and apparatus may be implemented in a touch-sensor pad, which outputs x/y movement data and also finger presence data to a host, and where the host processes-the received data to detect gestures. In another embodiment, the method and apparatus may be implemented in a touch-sensor pad, which outputs raw capacitance data to a host, where the host processes the capacitance data to compensate for quiescent and stray capacitance, and calculate x/y movement and detects gestures by processing the capacitance data. Alternatively, the method and apparatus may be implemented in a touch-sensor pad, which outputs pre-processed capacitance data to a host, where the touch-sensor pad processes the capacitance data to compensate for quiescent and stray capacitance, and the host calculate x/y movement and detects gestures from the pre-processed capacitance data.
In one embodiment, the electronic system that includes the embodiments described herein may be implemented in a conventional laptop touch-sensor pad. Alternatively, it may be implemented in a wired or wireless keyboard integrating a touch-sensor pad, which is itself connected to a host. In such an implementation, the processing described above as being performed by the “host” may be performed in part or in whole by the keyboard controller, which may then pass fully processed, pre-processed or unprocessed data to the system host. In another embodiment, the embodiments may be implemented in a mobile handset (e.g., cell phone) or other electronic devices where the touch-sensor pad may operate in one of two or more modes. For example, the touch-sensor pad may operate either as a touch-sensor pad for x/y positioning and gesture recognition, or as a keypad or other array of touch-sensor buttons and/or sliders.
Capacitive sensor 410 may be integrated into the IC of the processing device 230, or alternatively, in a separate IC. Alternatively, descriptions of capacitive sensor 410 may be generated and compiled for incorporation into other integrated circuits. For example, behavioral level code describing capacitive sensor 410, or portions thereof, may be generated using a hardware descriptive language, such as VHDL or Verilog, and stored to a machine-accessible medium (e.g., CD-ROM, hard disk, floppy disk, etc.). Furthermore, the behavioral level code can be compiled into register transfer level (“RTL”) code, a netlist or even a circuit layout and stored to a machine-accessible medium. The behavioral level code, the RTL code, the netlist and the circuit layout all represent various levels of abstraction to describe capacitive sensor 410.
It should be noted that the components of electronic system 700 may include all the components described above. Alternatively, electronic system 700 may include only some of the components described above.
In one embodiment, electronic system 700 may be used in a notebook computer. Alternatively, the electronic device may be used in other applications, such as a mobile handset, a personal data assistant (PDA), a keyboard, a television, a remote control, a monitor, a handheld multi-media device, a handheld video player, a handheld gaming device, or a control panel.
In one embodiment, capacitive sensor 410 may be a capacitive sensor relaxation oscillator (CSR). The CSR may have an array of capacitive touch switches using a current-programmable relaxation oscillator, an analog multiplexer, digital counting functions and high-level software routines to compensate for environmental and physical switch variations. The switch array may include combinations of independent switches, sliding switches (e.g., touch-sensor slider), and touch-sensor pads implemented as a pair of orthogonal sliding switches. The CSR may include physical, electrical, and software components. The physical component may include the physical switch itself, typically a pattern constructed on a printed circuit board (PCB) with an insulating cover, a flexible membrane or a transparent overlay. The electrical component may include an oscillator or other means to convert a changed capacitance into a measured signal. The electrical component may also include a counter or timer to measure the oscillator output. The software component may include detection and compensation software algorithms to convert the count value into a switch detection decision. For example, in the case of slide switches or X-Y touch-sensor pads, a calculation for finding position of the conductive object to greater resolution than the physical pitch of the switches may be used.
It should be noted that there are various known methods for measuring capacitance. Although the embodiments described herein are described using a relaxation oscillator, the present embodiments are not limited to using relaxation oscillators, but may include other methods, such as current versus voltage phase shift measurement, resistor-capacitor charge timing, capacitive bridge divider, charge transfer, or the like.
The current versus voltage phase shift measurement may include driving the capacitance through a fixed-value resistor to yield voltage and current waveforms that are out of phase by a predictable amount. The drive frequency can be adjusted to keep the phase measurement in a readily measured range. The resistor-capacitor charge timing may include charging the capacitor through a fixed resistor and measuring timing on the voltage ramp. Small capacitor values may require very large resistors for reasonable timing. The capacitive bridge divider may include driving the capacitor under test through a fixed reference capacitor. The reference capacitor and the capacitor under test form a voltage divider. The voltage signal is recovered with a synchronous demodulator, which may be done in the processing device 230. The charge transfer may be conceptually similar to an R-C charging circuit. In this method, CP is the capacitance being sensed. CSUM is the summing capacitor, into which charge is transferred on successive cycles. At the start of the measurement cycle, the voltage on CSUM is reset. The voltage on CSUM increases exponentially (and only slightly) with each clock cycle. The time for this voltage to reach a specific threshold is measured with a counter. Additional details regarding these alternative embodiments have not been included so as to not obscure the present embodiments, and because these alternative embodiments for measuring capacitance are known by those of ordinary skill in the art.
Embodiments of the present invention, described herein, include various operations. These operations may be performed by hardware components, software, firmware or a combination thereof. Any of the signals provided over various buses described herein may be time multiplexed with other signals and provided over one or more common buses. Additionally, the interconnection between circuit components or blocks may be shown as buses or as single signal lines. Each of the buses may alternatively be one or more single signal lines and each of the single signal lines may alternatively be buses.
Certain embodiments may be implemented as a computer program product that may include instructions stored on a machine-readable medium. These instructions may be used to program a general-purpose or special-purpose processor to perform the described operations. A machine-readable medium includes any mechanism for storing or transmitting information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). The machine-readable medium may include, but is not limited to, magnetic storage medium (e.g., floppy diskette); optical storage medium (e.g., CD-ROM); magneto-optical storage medium; read-only memory (ROM); random-access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; electrical, optical, acoustical, or other form of propagated signal (e.g., carrier waves, infrared signals, digital signals, etc.); or another type of medium suitable for storing electronic instructions.
Additionally, some embodiments may be practiced in distributed computing environments where the machine-readable medium is stored on and/or executed by more than one computer system. In addition, the information transferred between computer systems may either be pulled or pushed across the communication medium connecting the computer systems.
Although the operations of the method(s) herein are shown and described in a particular order, the order of the operations of each method may be altered so that certain operations may be performed in an inverse order or so that certain operation may be performed, at least in part, concurrently with other operations. In another embodiment, instructions or sub-operations of distinct operations may be in an intermittent and/or alternating manner.
In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.