电容触摸感应:没有机械开关,芯片怎么知道手指放上来了
更新时间:2026-09-24。本文是「集成电路大类 · 芯片设计」入门层(beginner) 数字逻辑基础的一篇。手机屏幕、电磁炉面板、电梯按钮、TWS 耳机柄上的触摸区,都没有任何可动的机械触点:不会抖、不怕氧化、可以整块密封防水。芯片能感知手指,靠的是一个物理量——电容,再由数字电路把「手指靠近造成的微小电容变化」翻译成可计数的时间或频率差。这条链路大量复用 定时器与输入捕获 和 计数器与移位寄存器 里的基本功。
本文要回答的问题
- 手指既没碰到金属、也没闭合任何回路,电极的电容为什么会变?
- 皮法(pF)级、只变化百分之几的电容,怎么用纯数字的定时器/计数器测出来?
- 张弛振荡器法和 RC 充电计数法(CVD)各自怎么工作,差在哪?
- 温度、湿度、水汽会让基准缓慢漂移,怎样自动校准才不会误触发?
- 一条滑条只有十几个电极,为什么能报出连续的手指位置?噪声和防水又怎么处理?
一、原理:手指是一块「会移动的电容」
任何两块被绝缘介质隔开的导体之间都存在电容。PCB 上一块手掌大小的触摸铜箔电极,与内层的地平面隔着 FR4 介质,天然就带着一个很小的寄生电容 Cp,典型值几 pF 到几十 pF——走线越长、电极越大、离地平面越近,Cp 就越大。它是触摸系统「天生的底噪」。
人体组织含大量体液,本质上是导电的;站立或握持设备时,人体通过手与机壳的接触、通过人体对空间的杂散电容,与设备地之间保持着松耦合的交流等电位。于是手指贴近电极时,隔着面板玻璃(或亚克力)就与电极构成了一个新的小电容 Cf。这个 Cf 与原有的 Cp 在电路上是并联关系,电极看到的总电容变成:
C = Cp + CfCf 的大小由手指覆盖面积、面板厚度与介电常数决定:面板越薄、贴得越实,Cf 越大。实际系统里它往往只有亚 pF 到几 pF,让总电容增加约 5%~15%。电容触摸感应要解决的全部问题,就是从温漂、电源纹波和空间电磁噪声里,可靠地分辨这一点点增量。
这张图对应了上面的物理模型:自上而下是手指、绝缘面板、电极、地平面,电流在交流意义上从电极经 Cf「绕」进人体,再与 Cp 并联到地。注意全程没有直流闭合回路,也正因为测的是交流耦合的电容,面板必须是非金属绝缘材料——金属外壳会把电极整个短路到地,触摸就失效了。
可以用一组数字感受检测难度:假设电极 Cp 约 10pF,手指按上去 Cf 约 0.5pF,变化只有 5%。若张弛振荡器在无触摸时跑在 1MHz,按下只让频率掉约 50kHz;10ms 闸门内计数值从 10000 降到约 9500,差值 500 个脉冲听起来不少,但温漂一秒钟就可能带来几十个计数的慢移动,空间干扰又在单次计数上叠加抖动。所谓触摸算法,做的就是把这 500 个「确定的脉冲差」从几十个/次的随机抖动和持续不停的慢漂移中间干净地剥出来。
二、张弛振荡器法:电容变大,振荡频率变低
第一个主流检测思路是干脆让电极电容参与振荡,把电容量翻译成频率。最典型的是张弛振荡器:电容经电阻(或恒流源)充电,电压升到上门限时电路翻转并迅速放电,放到下门限再次翻转充电,如此往复。忽略翻转延迟,振荡频率近似为:
f ≈ 1 / (k · R · C)其中 k 是与门限、充电路径有关的常数。手指按下使 C 增大,充放电一个周期搬运的电荷变多、用时变长,频率降低、周期变长。这就把测电容变成了数字电路最擅长的两件事。
- 测频法(固定闸门数脉冲):用一个精确的时间闸门(比如 10 ms)去数振荡器输出的脉冲个数。无手指时计数大,按下后计数明显变小。这正是 频率、周期与脉宽测量 里的闸门计数。
- 测周法(高频时钟量周期):用几 MHz 到几十 MHz 的参考时钟去数一个振荡周期内的时钟数,按下时周期变长、读数变大。单次测量快,适合按键扫描。
为了分辨亚 pF 的变化,一次扫描通常对几十个周期积分或多次测量取平均,等效于把分辨率做上去。商用触摸外设很少真的用分立电阻搭 RC:更常见的是一对匹配电流源对电极电容交替充放电,配合施密特比较器把电容转成一连串边沿,再用 16 位甚至 24 位计数器累计,充放电源和比较器都在片内做匹配,抗噪和一致性远好于板级 RC。也有设计把电极接进 片上环形振荡器 式的延时链,用振荡或传播延时承载电容信息。
三、RC 充电计数法(CVD):电容变大,充到阈值更慢
第二大类思路不做连续振荡,而是一次一次地「充电—测量—复位」,业内常称充电计数法,Microchip 的 CVD(Capacitive Voltage Divider,电容分压)采样是这类方法的代表。
基本动作是:用已知恒流源 I(或已知电阻 R)给电极电容充电,同时一个比较器盯着电容上的电压;电压从 0 爬到阈值 Vth 的瞬间比较器翻转,这段时间由高频时钟计数:
t = C · Vth / I 计数值 N = fclk · tC 越大,充电斜率越平缓,N 越大——手指按下的信号就是计数变大。一次扫描结束后电极放电复位,状态机过若干毫秒再来一次。
这张图给出了 CVD 链路的数据流向:状态机调度节拍,电极电容把电流量转换成电压斜坡,比较器把「电压过阈」这个模拟事件变成一个干净的数字边沿,计数器把边沿之间的时间变成整数,最后全部交给数字逻辑判定。其中比较器与斜坡的配合,与 模拟与混合信号基础:ADC 与比较器 里的单斜率/双积分 ADC 同源。
实际 CVD 还会走一步更聪明的棋:让电极先预充到 Vdd、再把电荷分享到 ADC 内部的采样保持电容(一个已知的片内电容),形成电容分压,用 ADC 直接读分压结果;或者把「外部电极」与「片内参考电容」交替测量、取比值(ratiometric)。无论电源电压、参考时钟还是温度怎么漂移,只要对两次测量是共同的,就在相减或相除里抵消掉,留下的只是电极电容的相对变化。这也是纯 RC 张弛法相对吃亏的地方:它对 R、C、门限的绝对值更敏感。
| 张弛振荡器法 | RC 充电计数 / CVD 法 | |
|---|---|---|
| 测量方式 | 连续振荡,数频率或周期 | 逐次充电,数到阈值的时间(或读电容分压) |
| 按下时读数 | 频率变低、周期变长 | 充电计数变大(分压读数改变) |
| 模拟电路 | 恒流源 + 施密特比较器 | 恒流源/开关 + 比较器,常复用 ADC |
| 抗共模漂移 | 依赖片内匹配 | 可与参考电容做比值,抵消电源/时钟/温漂 |
| 典型叫法 | Capsense(部分模式)、CTSU | CVD、TSC、电容分压采样 |
四、基准、差分与自动校准
工程上真正难的不是测出电容,而是在漂移和噪声里分辨那百分之几的变化。设备晒了太阳、进了浴室、面板上积了一层油污,Cp 都会缓慢改变;如果拿一个出厂时写死的阈值去判,要么乱触发,要么彻底失灵。所以触摸系统普遍建立一套动态基准。
- 基准(baseline)与差分阈值:开机后先扫描若干次,把无手指状态的原始计数存为基准。判定不看绝对值,而看「当前计数 − 基准」这个差值:差值超过上线判按下,跌回下线才判释放。上下两条线构成迟滞,避免手指在临界点时输出来回抖动,思路与 脉冲同步与施密特整形 完全一致。
- 快慢双通道与自动校准:环境漂移是慢的(秒级到分钟级),手指是快的(几十毫秒)。基准滤波器用很长的时间常数慢速跟踪:没有触摸时慢慢吸收 Cp 的变化,一旦差值进入疑似按下区间就冻结基准,防止把手指误学进基准。快通道负责实时检测,慢通道负责持续校准,两个时间常数的配合是触摸算法的核心参数。
- 去抖与事件生成:连续 N 次扫描都超阈值才确认按下,释放同理;在此基础上生成单击、双击、长按、拖动等事件,去抖逻辑和 矩阵键盘扫描与去抖 同构,只是扫描的对象从电平变成了电容计数。
- 抗干扰:对计数做滑动平均或中值滤波压制白噪声;故意让扫描频率小幅抖动(frequency hopping),避开充电器、开关电源的固定开关频率及其谐波;高噪声场景还会加一层屏蔽电极,在 shield 上驱动与测量信号同相的波形,把共模干扰「托住」,不让它转成差分信号。
五、滑条、滚轮与电极物理设计
一个按键只能报 0/1,滑条却要报连续位置。做法是沿一条线排开多个(常见 8~16 个)独立电极,电极常做成楔形或交指状,让相邻电极的感应区域互相重叠。手指放上去时,通常有两三个电极同时出现计数增量,且离手指中心越近增量越大。对这几个相邻通道的信号做加权质心(centroid):
位置 pos = Σ(通道编号 i × 该通道信号强度 si) / Σ si算出来的 pos 不是整数档位,而是连续坐标,分辨率可以远高于电极个数,再配合插值和滤波就能得到平滑的拖动轨迹。环形排列的电极则构成滚轮/旋钮,报的是角度。
物理层面的规矩同样不少:电极直接用 PCB 顶层覆铜实现,上面盖玻璃、亚克力或注塑胶片;背面完整铺地,电极之间留出规定间隙,连接电极到芯片的走线尽量短、两侧包地,避免把走线电容和天线效应引进来;面板与电极之间不能有空隙气隙,空气的介电常数低且不稳定,贴不紧会直接让灵敏度批次性波动。整组电极由一个扫描状态机按周期轮询,逻辑上很像 矩阵键盘的行列扫描,只不过每个交叉点测的是电容。芯片对外只通过 IO/PAD 与电极相连,部分触摸外设要求专用引脚结构以减小管脚寄生电容。
六、噪声、防水、低功耗与片上触摸外设
两个实际场景值得单独说。水是电容触摸的天敌:水珠和水膜本身是导电的,会在电极与地之间搭出额外电容,看起来像一只「摊平的手指」。应对办法一是靠形态——多个电极同时均匀变化更可能是整片水膜,局部尖锐变化才是手指,算法据此区分;二是屏蔽驱动与面板密封设计;高端方案还会结合自容(电极对地)和互容(发射—接收电极交叉点)两种测量:互容扫描时一片电极发激励波、另一片电极接收,手指从交叉点「偷走」的是差分场,信号在手指处是减弱而不是整片增强,因此对水膜和大面积导体的分辨能力更强,手机触摸屏普遍采用互容网格,正是为了支持多点触控和抗水。低功耗方面,电池设备不可能持续全速扫描:空闲时把扫描率从几十 Hz 降到几 Hz,或者平时只有一个低频通道值班,检测到疑似电容变化再唤醒主控全速确认,这正是 低功耗设计入门 里「慢时钟值守 + 事件唤醒」的典型用法。
落到产品形态上,厂商已经把整条链路固化成 MCU 的片上外设:赛普拉斯(现英飞凌)的 Capsense、瑞萨的 CTSU、ST 的 TSC、Microchip 的 CVD 外设,内部集成了充电开关、比较器/ADC、计数器、基准跟踪和去抖状态机,CPU 只需配置阈值和灵敏度、周期性读取「哪个键按下、滑条在什么位置」的结果。理解了前面六节,再看这些外设手册里的参数——扫描分辨率、基准更新率、迟滞阈值、去抖次数——就都能对应回具体的物理环节。
这一篇在知识体系里的位置
本篇属于芯片设计入门层的数字外设与混合信号专题,回答「没有机械触点的人机交互如何实现」。向数字基础读,检测链路的本体是 计数器与移位寄存器 和 频率、周期与脉宽测量;向模拟侧读,充电斜坡与比较器对应 模拟与混合信号基础:ADC 与比较器;向交互与系统读,可以对照 矩阵键盘扫描与去抖 看机械按键的做法、衔接 低功耗设计入门 看触摸唤醒,时钟来源可参考 片上环形振荡器,引脚约束见 IO 与 PAD。把「电容 → 时间/频率 → 计数 → 差分判定」这条链记牢,就掌握了所有电容触摸外设的共同骨架。
总结
电容触摸感应的本质,是手指隔着绝缘面板与 PCB 电极并联出一个额外电容 Cf,使总电容 Cp+Cf 只增大百分之几到十几;数字系统用两种方式把这点皮法级变化变成可测的量——张弛振荡器法让 C 参与振荡、C 变大则频率降低周期变长,用固定闸门数脉冲或高频时钟测周期读出,RC 充电计数法(CVD)让恒流源给 C 充电、比较器检测到阈值的时间(t≈C·Vth/I),并与片内参考电容做比值以抵消电源、时钟、温度的共模漂移;工程关键是动态基准加迟滞差分阈值、用快慢两个滤波器区分缓慢环境漂移与手指快速变化并自动校准、连续多次扫描去抖、用积分平均和频率抖动抗充电器干扰;滑条靠相邻电极信号做加权质心得到连续位置,电极在 PCB 覆铜、盖绝缘面板、背面铺地、走线包地,整片由片上触摸外设周期轮询、空闲降频并支持触摸唤醒——整套系统剥到底,就是「测频测时的定时器计数器 + 基准校准 + 去抖状态机」。