Reports.Trackpad History

Hide minor edits - Show changes to output

Changed lines 51-53 from:
To be continued.
to:
[[https://docs.google.com/presentation/d/1snQRiXM2CeZRZK7C1J8rNWVmpMd-vZqOQenCJ3m3Gh8/edit|slides]]
Changed lines 48-52 from:


To tired to continue today....

Attach:m_touch_tired.jpg
to:
Attach:m_touch_interpolating_position.png


To be continued.
Added lines 45-46:

Another issue of touch pad is resolution. Normally the pitch of electrode is too big for our desired level of accuracy. Since the sensor reading contains more information than ON and OFF, we can use these value to interpolate touch positions between adjacent electrodes. First peak detection is used to get the rough position of touch. Then the precise position is determined by calculating a ratio of the measured signal strength for the two electrodes that are adjacent to the identified peak electrode.
Added lines 42-44:
The baseline is updated constantly. If there is no touch for some time, reading of electrodes will be saved. If touch doesn't appear for a while after sampling, that sample will be accepted as a new baseline.

Attach:m_touch_baseline_logic.png
Changed lines 38-41 from:
In order to get a correct reading from capacitance. A baseline is applied as a reference. When reading value exceed a certain threshold over baseline, it is judged as a "touch".
to:
In order to get a correct reading from capacitance. A baseline is applied as a reference. When reading value exceed a certain threshold over baseline, it is judged as a "touch". Due to parasitic capacitance variations in the touch system that can not be controlled, a touch is determined based on measurement differences from “no-touch” capacitance measurements. The reading is normalized according:

'''Normalized = Raw – Baseline'''
Changed line 38 from:
In order to get a correct reading from capacitance. A baseline is applied as a reference. When reading value exceed a certain threshold over baseline, it is judged as a "touch".
to:
In order to get a correct reading from capacitance. A baseline is applied as a reference. When reading value exceed a certain threshold over baseline, it is judged as a "touch".
Changed line 38 from:
to:
In order to get a correct reading from capacitance. A baseline is applied as a reference. When reading value exceed a certain threshold over baseline, it is judged as a "touch".
Added lines 35-38:

It is obvious that using mutual capacitance is the best way to get touch statues on each node. The only problem is time. If we spend too much time on sensing finger's position, it will slow down refresh rate and causes feeling of lag. For a M by N matrix, there will be M+N samples for self capacitance. But there will be M*N samples for complete mutual capacitance sensing. In order to save time. We can first perform a self capacitance scan and get all intersections. Then we can only test mutual capacitance on these intersections. For a two finger touch. Only M + N + 4 scans can get correct position of fingers.
Added lines 35-36:
Changed line 32 from:
There is way called "Mutual Capacitance". Instead of scanning every electrode, mutual capacitance scans each combination of X and Y electrode (a node). When scanning a certain node, one electrode works as a driving electrode and the other works as a sensing electrode.
to:
There is way called "Mutual Capacitance". Instead of scanning every electrode, mutual capacitance scans each combination of X and Y electrode (a node). When scanning a certain node, one electrode works as a driving electrode and the other works as a sensing electrode. When finger tip is near this node, finger tip will reduce the coupling between two electrodes and steal some charge. So the affection on sensing node is reduced and the touch can be figured.
Changed lines 46-52 from:
AN1101–Introduction to Capacitive Sensing Microchip Technology Inc.

TB3064-mTouchTM Projected Capacitive Touch Screen Sensing Theory of Operation Microchip Technology Inc.

Projected-Capacitive Touch Technology Gary Barrett and Ryomei Omote

Touch Technology Brief: Projected Capacitive Technology 3M Touch Systems
to:
AN1101–Introduction to Capacitive Sensing _ Microchip Technology Inc.

TB3064-mTouchTM Projected Capacitive Touch Screen Sensing Theory of Operation _ Microchip Technology Inc.

Projected-Capacitive Touch Technology _ Gary Barrett and Ryomei Omote

Touch Technology Brief: Projected Capacitive Technology _ 3M Touch Systems
Added lines 34-35:
Attach:m_touch_mut_cap_pri.png
Changed lines 50-52 from:
Projected-Capacitive Touch Technology Gary Barrett and Ryomei Omote
to:
Projected-Capacitive Touch Technology Gary Barrett and Ryomei Omote

Touch Technology Brief: Projected Capacitive Technology 3M Touch Systems
Changed line 32 from:
There is way called "Mutual Capacitance". Instead of scanning every electrode, mutual capacitance scans each combination of X and Y electrode.
to:
There is way called "Mutual Capacitance". Instead of scanning every electrode, mutual capacitance scans each combination of X and Y electrode (a node). When scanning a certain node, one electrode works as a driving electrode and the other works as a sensing electrode.
Changed line 32 from:
to:
There is way called "Mutual Capacitance". Instead of scanning every electrode, mutual capacitance scans each combination of X and Y electrode.
Changed line 28 from:
The biggest drawback of this method is it can not handle multi-touch well. In the following example, there are peaks on X1 and X2, Y0 and Y3 and creates 4 intersections. But the system can not figure out the combination is X2Y0 and X1Y3 or X2Y3 and X1Y0, or combination of 3 points or 4. X2Y3 and X1Y0 are called ghost points. However, gestures may still be recognized as long as probable combination won't change in touching process. Thus, Scrolling, Multi-finger tapping, Zooming, Rotation (within one quadrant) and Swiping are still achievable by software because we don't care the real combination is these gestures.
to:
The biggest drawback of this method is it can not handle multi-touch well. In the following example, there are peaks on X1 and X2, Y0 and Y3 and creates 4 intersections. But the system can not figure out the combination is X2Y0 and X1Y3 or X2Y3 and X1Y0, or combination of 3 points or 4. X2Y3 and X1Y0 are called ghost points. However, gestures may still be recognized as long as probable combination won't change in touching process. Thus, Scrolling, Multi-finger tapping, Zooming, Rotation (within one quadrant) and Swiping are still achievable by software because we don't care the real combination in these gestures.
Changed lines 28-29 from:
The biggest drawback of this method is it can not handle multi-touch well. In the following example, there are peaks on X1 and X2, Y0 and Y3 and creates 4 intersections. But the system can not figure out the combination is X2Y0 and X1Y3 or X2Y3 and X1Y0, or combination of 3 points or 4. X2Y3 and X1Y0 are called ghost points.
to:
The biggest drawback of this method is it can not handle multi-touch well. In the following example, there are peaks on X1 and X2, Y0 and Y3 and creates 4 intersections. But the system can not figure out the combination is X2Y0 and X1Y3 or X2Y3 and X1Y0, or combination of 3 points or 4. X2Y3 and X1Y0 are called ghost points. However, gestures may still be recognized as long as probable combination won't change in touching process. Thus, Scrolling, Multi-finger tapping, Zooming, Rotation (within one quadrant) and Swiping are still achievable by software because we don't care the real combination is these gestures.
Added lines 32-33:
Changed lines 46-48 from:
TB3064-mTouchTM Projected Capacitive Touch Screen Sensing Theory of Operation Microchip Technology Inc.
to:
TB3064-mTouchTM Projected Capacitive Touch Screen Sensing Theory of Operation Microchip Technology Inc.

Projected-Capacitive Touch Technology Gary Barrett and Ryomei Omote
Changed lines 28-30 from:
to:
The biggest drawback of this method is it can not handle multi-touch well. In the following example, there are peaks on X1 and X2, Y0 and Y3 and creates 4 intersections. But the system can not figure out the combination is X2Y0 and X1Y3 or X2Y3 and X1Y0, or combination of 3 points or 4. X2Y3 and X1Y0 are called ghost points.

Attach:m_touch_ghostpoints.png
Changed lines 21-22 from:
My first attempt was creating a touchpad and a PIC16F707 breakout board. The sensor sends information to Arduino via I2C to maximize usable channels. The program read each electrode one by one to get capacitance on them. It is efficient for single touch.
to:
My first attempt was creating a touchpad and a PIC16F707 breakout board. The sensor sends information to Arduino via I2C to maximize usable channels. The program read each electrode one by one to get capacitance on them. It is effective for single touch.
Added lines 26-27:
This method is called "Self Capacitance". Peaks of values on both X and Y axis can be figured out easily. With interpolation (will be explained later), the position of both X and Y can be obtained and the touching position is on the intersection.
Added lines 21-25:
My first attempt was creating a touchpad and a PIC16F707 breakout board. The sensor sends information to Arduino via I2C to maximize usable channels. The program read each electrode one by one to get capacitance on them. It is efficient for single touch.

Attach:pic707_photo.jpg
Attach:pic707_pre_Capture.png
Added lines 17-22:
The easiest way to do capacitive sensing is use electrode independently. Each electrode is sensed separately and all other electrodes are tied to ground meanwhile. Ground other electrode creates a reference to capacitive sensing. The capacitance between finger tip and ground electrode nearby may reduce the necessity of a real ground.

Attach:m_touch_ground_benefit.png

Added line 26:
Changed lines 17-21 from:
To tired to continue today.... XD
to:
To tired to continue today....

Attach:m_touch_tired.jpg
Added lines 14-17:

Attach:m_touch_projected.png

To tired to continue today.... XD
Added line 4:
Added line 6:
Added line 8:
Added line 10:
Added line 12:
Added line 17:
Added line 19:
Changed lines 8-10 from:
to:
That is how a single touch key works. With interpolation technique, we can combine several keys to form a slider or wheel. If we go even further, we can use two set of orthogonal electrodes to form a touch screen or touch pad.
Changed lines 12-13 from:
AN1101–Introduction to Capacitive Sensing Microchip Technology Inc.
to:
AN1101–Introduction to Capacitive Sensing Microchip Technology Inc.
TB3064-mTouchTM Projected Capacitive Touch Screen Sensing Theory of Operation
Microchip Technology Inc.
Changed line 7 from:
In order to measure a capacitance, the simplest way is to convert capacitance to time which is the most accurate and easy for a digital system to measure. Often a discrete or distributed resistor is used along with the capacitor. Since the resistance of resistor is fairly stable, the change of capacitance will change the RC constant (a value related to speed of charging or discharging the capacitor). Arduino's Capsense library uses step response of the RC circuit. The larger the capacitance be, the longer time it will take for the sensing pin to reach threshold. Quantum, now Atmel Qtouch, uses a serial of pulses to charge the capacitor instead of a simple high level voltage. Microchip's mtouch technology uses it's internal module to form a free-run oscillator
to:
In order to measure a capacitance, the simplest way is to convert capacitance to time which is the most accurate and easy for a digital system to measure. Often a discrete or distributed resistor is used along with the capacitor. Since the resistance of resistor is fairly stable, the change of capacitance will change the RC constant (a value related to speed of charging or discharging the capacitor). Arduino's Capsense library uses step response of the RC circuit. The larger the capacitance be, the longer time it will take for the sensing pin to reach threshold. Quantum, now Atmel Qtouch, uses a serial of pulses to charge the capacitor instead of a simple high level voltage. Microchip's mtouch technology uses it's internal module to form a free-run oscillator with the distributed capacitor on electrode. It measures time when the oscillator runs a certain number of oscillations.
Added line 7:
In order to measure a capacitance, the simplest way is to convert capacitance to time which is the most accurate and easy for a digital system to measure. Often a discrete or distributed resistor is used along with the capacitor. Since the resistance of resistor is fairly stable, the change of capacitance will change the RC constant (a value related to speed of charging or discharging the capacitor). Arduino's Capsense library uses step response of the RC circuit. The larger the capacitance be, the longer time it will take for the sensing pin to reach threshold. Quantum, now Atmel Qtouch, uses a serial of pulses to charge the capacitor instead of a simple high level voltage. Microchip's mtouch technology uses it's internal module to form a free-run oscillator
Changed line 6 from:
to:
Attach:m_touch_RC.png
Added lines 5-9:
In capacitive sensing, any conductive material with a low resistance can act as an electrode. Normally there will be a distributed capacitance between electrode and ground which can be measured by sensor, though it's absolution value is unknown. When you put your finger on that, due to the conductivity of your body and the huge size (compared to the electrode) of your body, your fingertip will introduce a small additional capacitance to the electrode. Although the absolute value of neither state can be measured, the change between them can. That is the physical principle of this kind of sensor.


Ref:
AN1101–Introduction to Capacitive Sensing Microchip Technology Inc.
Added lines 4-5:
Attach:m_touch_Cap_ill.png
Added lines 1-4:
Initial report by [[~ds3457 | Deqing Sun]], Feb, 2012

In this application I choose PIC16F707 as a trackpad sensor. It isn't the only one sensor available for a trackpad or touchscreen application, but it may be the only sensor with reference material on their website. Strictly speaking it is a microcontroller rather than a sensor. But despite of it's 32 channel Capacitive Sensing Module, other resources are really scare for task other than capacitive sensing and signal analysis. So I just program it as a sensor and sent it's result via I2C bus.