Touch sensing

Hi,
I wanted to make a touch capacitance sensor. I did some research and experiments but I am not sure how to continue.
There are many ways how to sense capacitance and it's change.

  1. Simplest one is discharging the cap -> charging it slowly -> measure how long it take. Noone seriously uses this method. Why? It worked quite consistently for me.
  2. Another method is discharging sampling cap of ADC (reading GND), charge the touch cap and read it. It works as well but needs ADC.
  3. Another method is to discharge external sampling cap -> charge touch cap -> discharge touch cap to sampling cap -> repeat until the sampling cap read HIGH. ??? Looks quite complicated, needs 2 pins, extra external cap... But it is preferred method in Atmel's QTouch library and others. Why???
  4. Last method I know is to use RC oscillator. The faster it oscillates the lower touch cap. Looks complicated but maybe easier to implement with analog circuitry.

So my question is why method 3) is preferred when it is more complicated than 1)? Is 2) somehow better than 1) and comparable with 3)?

Also I didn't manage to find understandable explanation how to make the touch plate itself. I took small plate of aluminium. It worked somehow but it's capacitance was very small (compared to 22pF cap or just another Arduino pin configured as input). Is there something I am missing? I tried to put it on "ground plane" (plate of metal connected to GND, isolated by sheet of paper) but it made no difference.

After experimenting I have some more info. It looks like my touch button was too crude. Now I am using about 2x2 cm aluminium foil as the touch button covered by paper as isolation.
With method 1) and 100k pull-up I measure this times (in CK; due to implementation I measure only multiples of 3):
39 when pull-up is between 5V hole and sensing pin directly on Arduino Uno
42 when connected to breadboard without wire to button
45-48 when wire to button is connected but the button itself is not
48 when button is connected
51 when I hold connecting wire with 2 fingers
57 when I very lightly touch the button with one finger
up to 100 when I press 2 fingers on the button
But using not so thick plastic between the button and fingers reduces maximum time to only 54. On the other side touching the button directly gives time 160.

Using method 2) I get following ADC readings:
687 with nothing connected
738 with breadboard
765 with wire
780 with button connected
810 holding the wire with 2 fingers
870 light touch
up to 900 firm touch with 2 fingers
Around 820 through plastic (and 970 touching directly).

I tried to calibrate both methods to "known caps". I got
5 pf ~ 48 CK ~ 780 ADC ~ untouched button
10 pf ~ 54 CK ~ 812 ADC ~ light touch of the button or touching connecting wire
22 pf ~ 69 CK ~ 860 ADC ~ better touch of the button
32 pf ~ 81 CK ~ 887 ADC ~ firm touch of the button
100 pf ~ 141 CK ~ 940 ADC ~ touching bare button

If anyone has experience with touch sensing can you confirm if those values are believable? Is 5 pF for button OK or is it too low? I am concerned about poor sensitivity of the sensor, I expected more. The values for plastic are close to noise even with good touch. Is there a way to improve the results or is it "feature" of touch sensing and software needs to compensate?