第四节:电荷转移法——电容检测的“灵魂”

做触摸传感器这么多年,我试过不少检测方法。但要说最经典、最实用的,还得是电荷转移法。说白了,它就是利用电容充放电的特性,把“有没有触摸”这个物理量,转换成我们能测量的电压信号。

你想想看,手指靠近传感器时,寄生电容会变化。怎么捕捉这个变化?电荷转移法就是答案。我个人习惯把它比作“搬运工”——每次搬运固定量的电荷,然后看搬运了多少次,或者看搬运后的电压变化。

4.1 电荷转移原理

先讲核心思想。电荷转移法基于一个简单事实:电容两端的电压和存储的电荷成正比。公式就是 Q = C × V。

具体怎么操作?看下面这个流程:

  1. 充电阶段:把传感器电容 Cx 充电到已知电压 Vdd。
  2. 转移阶段:把 Cx 上的电荷,全部转移到参考电容 Cs 上。
  3. 检测阶段:测量 Cs 两端的电压变化。

嗯,这里要注意:每次转移,Cs 上的电压都会升高一点点。转移次数越多,电压越高。如果手指触摸了,Cx 变大,每次转移的电荷量就更多,Cs 电压上升得更快。

核心公式:经过 N 次转移后,Cs 上的电压为:

VCs = Vdd × [1 - (Cs / (Cs + Cx))N]

当 N 足够大时,VCs 趋近于 Vdd。但关键是,Cx 的变化会改变这个趋近速度。

我在项目中遇到过一个问题:一开始用单次转移,信噪比很差。后来改成多次转移并取平均,效果立竿见影。这就是电荷转移法的精髓——通过多次累积,把微小的电容变化放大到可测量的程度

4.2 C-V转换:从电容到电压

电容本身不能直接测量,得转换成电压。C-V转换就是干这个的。常用的方法有两种:

方法 原理 优点 缺点
恒流源充电法 用恒定电流给 Cx 充电,测量电压上升时间 电路简单,线性度好 对电流源精度要求高
电荷转移法 多次转移电荷到参考电容,测量累积电压 抗干扰强,灵敏度可调 需要时序控制

我个人更偏爱电荷转移法做C-V转换。为什么?因为它天然具有积分效果,能抑制高频噪声。你想想看,每次转移相当于一次采样,多次平均下来,噪声就被平滑掉了。

具体实现时,我建议用开关电容网络。用两个非交叠时钟控制开关,一个负责充电,一个负责转移。时钟频率一般选几百kHz到几MHz,太低则响应慢,太高则功耗大。

实战技巧:我曾经在做一个电容式滑条时,发现C-V转换的线性度不够。后来查资料发现,是因为参考电容 Cs 选得太小了。换成大一点的 Cs,线性度立马改善。记住:Cs 一般取 Cx 的 10~100 倍。

4.3 积分电路设计

积分电路是电荷转移法的“心脏”。它的任务是把每次转移来的电荷,累加起来,形成稳定的电压输出。

经典的积分电路长这样:

// 伪代码描述积分电路工作流程
void charge_transfer_cycle() {
    // 阶段1:复位积分器
    reset_integrator();
    
    // 阶段2:执行N次电荷转移
    for (int i = 0; i < N; i++) {
        charge_Cx_to_Vdd();   // 给传感器电容充电
        transfer_to_Cs();     // 转移到积分电容
    }
    
    // 阶段3:读取输出电压
    uint16_t adc_value = read_ADC();
    
    // 阶段4:根据电压反推电容变化
    float delta_C = calculate_capacitance(adc_value);
}

实际硬件设计时,有几个关键点:

  • 运放选择:一定要选低偏置电流的CMOS运放。我吃过亏,用普通运放,偏置电流把积分电容充得乱七八糟,基线都稳不住。
  • 积分电容:用C0G或NP0材质的电容,温度系数小。X7R的别用,温漂会让你怀疑人生。
  • 开关:用模拟开关,比如CD4066或更专业的DG系列。导通电阻要小,漏电流要低。
  • 复位开关:积分器每次测量前必须复位,把积分电容上的电荷放干净。这个开关的漏电流同样重要。

避坑指南:我曾经设计过一款产品,量产时发现部分板子灵敏度不一致。查了三天,最后发现是PCB布局问题——积分电容离热源太近,温度变化导致电容值漂移。后来把电容移到远离发热器件的位置,问题解决。

4.4 知识体系总览

说了这么多,我画了一张图帮你理清思路。电荷转移法的核心逻辑就是:电容变化 → 电荷量变化 → 电压变化 → ADC读数变化

电荷转移法知识体系 传感器电容 Cx 手指触摸 → 电容增大 电荷转移过程 充电 → 转移 → 累积 C-V 转换 积分电容 Cs 上电压 ADC 采样 数字量输出 算法处理 滤波、基线跟踪、阈值判断 关键设计参数 • 转移次数 N:决定灵敏度 • 时钟频率:影响响应速度 • 积分电容 Cs:决定量程 • 运放偏置电流:影响基线 • 开关漏电流:限制精度 • PCB布局:抗干扰能力

这张图把整个流程串起来了。从左到右是信号流向,从传感器到最终的数字输出。左侧列出了设计时需要注意的关键参数,每一个都踩过坑,都是真金白银换来的经验。

4.5 实战要点总结

最后,我把自己这些年做电荷转移法的心得,浓缩成几条:

  • 基线校准:每次上电先做一次空载测量,记录基线值。环境变化后要重新校准。
  • 动态范围:转移次数 N 不是越大越好。N 太大,积分器容易饱和。一般取 16~128 次。
  • 屏蔽与保护:传感器走线要用地线包围,减少串扰。我习惯在PCB上做“保护环”。
  • 软件滤波:ADC读数后,加一个滑动平均滤波器,窗口长度 4~8 就够用。

一个小技巧:如果你发现触摸灵敏度不够,别急着改硬件。先试试增加转移次数 N,或者降低积分电容 Cs。这两个参数调整起来最方便,效果也最明显。

电荷转移法说难不难,说简单也不简单。关键是把原理吃透,再结合自己的项目去调参数。我当年也是从“照着参考设计抄”到“自己改参数优化”,一步步走过来的。希望今天的内容,能帮你少走一些弯路。