几分钱单片机也能做触控:PFS173耳机触摸面板开发实战
本案例使用应广(Padauk)PFS173单片机的普通数字IO测量RC放电时间,在不使用专用触摸芯片的情况下实现耳机电容触摸控制,并通过高阻输入与低电平输出模拟蓝牙音频板上的机械按键。
文章目录
一、项目概述
原项目将传统有线耳机改造成蓝牙耳机,并在耳罩外侧增加触摸控制面板。蓝牙和音频由VHM-314一类蓝牙音频板负责,PFS173只负责检测手指触摸,然后向蓝牙板输出与机械按键相同的接地信号。
可实现的具体功能取决于蓝牙音频板提供的按键输入,通常包括:
- 播放或暂停音乐;
- 上一曲和下一曲;
- 增加或降低音量;
- 接听、挂断或其他组合按键功能。

二、PFS173电容触摸检测原理
每个触摸通道由一个PFS173数字IO、一个PCB铜箔触摸区和一个约1MΩ下拉电阻组成。原作者最初预留了外部电容,随后发现PFS173引脚、PCB铜箔和走线本身的寄生电容已经足够,因此最终方案可以不安装额外电容。
单次触摸测量过程
- 将触摸IO配置成输出高电平,为触摸铜箔和寄生电容充电。
- 等待固定时间,使触摸点电压稳定。
- 迅速将IO切换为高阻输入。
- 触摸点通过1MΩ电阻向GND放电。
- PFS173统计该IO从高电平下降为低电平所需的时间。
无人触摸时,触摸点等效电容较小,放电速度较快;手指触摸或靠近铜箔后,等效电容增大,放电时间随之延长。程序只需比较当前放电时间与无触摸基准值,即可判断是否发生触摸。
PFS173触摸IO ───── PCB铜箔触摸区
│
└──── 1MΩ ──── GND
三、蓝牙按键模拟接口
蓝牙音频板上的机械按键通常为常开结构,按下时把控制节点连接到GND。PFS173因此不能在未操作状态主动输出高电平,而应采用“高阻输入+输出低电平”的方式模拟开漏输出。
| 控制状态 | PFS173引脚模式 | 蓝牙音频板看到的状态 |
|---|---|---|
| 没有操作 | 配置为高阻输入 | 相当于机械按键松开 |
| 触发功能 | 配置为输出低电平 | 相当于机械按键按下并接地 |
| 触发结束 | 恢复为高阻输入 | 相当于释放机械按键 |
PFS173控制IO ───── 蓝牙板按键控制点
PFS173 GND ───── 蓝牙板GND
正常状态:控制IO为高阻输入
按键状态:控制IO输出低电平约80至120毫秒
PA5引脚注意事项
原作者调试时发现,PFS173的PA5用作输出时需要外接上拉电阻。增加10kΩ上拉后,该路输出恢复正常。新PCB可以避开PA5作为按键输出,或者在PA5与VDD之间预留10kΩ上拉电阻。
四、硬件组成与连接建议
| 器件 | 推荐数量 | 主要用途 |
|---|---|---|
| PFS173单片机 | 1个 | 触摸测量、触摸判断和蓝牙按键输出 |
| 1MΩ电阻 | 每路1个 | 为触摸点提供RC放电通路 |
| 10kΩ电阻 | 1个,可选 | PA5作为输出时的外部上拉 |
| 100nF陶瓷电容 | 1个 | PFS173电源去耦 |
| 1至10µF电容 | 1个 | 降低电源波动对触摸基准的影响 |
| PCB触摸铜箔 | 按通道配置 | 形成手指触摸电极 |
| 蓝牙音频板 | 1个 | 处理蓝牙、音频和媒体按键命令 |
| 3.7V锂电池及安全充电电路 | 1组 | 为整机供电 |
| 电源开关 | 1个 | 长期不用时完全切断电池 |
| 编程焊盘 | 1组 | 连接应广Writer或调试设备 |
原项目将PFS173安装在PCB背面,使触摸面保持平整。正面只保留较大的触摸铜箔,控制板再通过细线连接另一侧的蓝牙音频板。
五、启动校准与触摸判断
固定阈值容易受到元件误差、电池电压、装配结构和温湿度变化影响。原项目后续加入启动校准:每个通道连续测量8次放电时间,再取平均值作为无触摸基准。
- 开机后等待电源和IO状态稳定。
- 依次为每个触摸点充电并测量放电时间。
- 每个通道重复测量8次。
- 去除明显异常值或直接计算8次平均值。
- 把平均结果保存为该通道的基准值。
推荐触摸判定
触摸成立 = 当前放电时间 > 基准时间 + 通道阈值
或者:
触摸成立 = 当前放电时间 > 基准时间 × 灵敏度系数
原文章没有公布最终阈值,因此实际数值需要通过目标PCB测量确定。可以从连续确认2至3次、释放确认2至4次、输出低电平80至120毫秒和重复触发锁定300至500毫秒开始调试。
六、PFS173程序流程
原作者使用应广官方IDE和Mini-C。下面是依据原项目工作原理整理的程序结构,用于说明算法关系,并非对原始源码逐字复制。
初始化时钟、定时器和IO
所有蓝牙控制输出设置为高阻输入
延时等待电源稳定
for 每个触摸通道:
baseline[channel] = 连续8次放电时间的平均值
while (1):
for 每个触摸通道:
value = 测量放电时间(channel)
if value > baseline[channel] + threshold[channel]:
增加触摸确认计数
else:
清除触摸确认计数
if 连续达到触摸确认条件:
对应蓝牙控制IO输出低电平
延时约100毫秒
对应IO恢复高阻输入
等待手指释放并锁定短时间
执行STOPEXE
定时唤醒后继续扫描
单通道测量函数
measure_touch(channel)
{
将触摸IO设置为输出高电平;
固定时间充电;
清零计数器;
将触摸IO切换为高阻输入;
while (触摸IO仍为高电平 && 计数器未超时)
计数器++;
return 计数器;
}
每次测量都应设置最大计数值,防止触摸IO因短路、焊接问题或外部干扰一直保持高电平而卡死程序。
七、STOPEXE低功耗设计
电容触摸需要反复为触摸点充放电,持续高速扫描会明显增加功耗。原作者在扫描间隙停止主时钟,通过PFS173的STOPEXE进入低功耗状态。
| 测试状态 | 原作者测得电流 | 说明 |
|---|---|---|
| 没有进行低功耗优化 | 约654µA | 持续执行触摸扫描 |
| 单独测试STOPEXE | 约2.5µA | 主时钟停止后的实验结果 |
| 实际触摸板活动状态 | 约600µA | 包含实际触摸测量 |
| 实际触摸板睡眠状态 | 约9µA | 最终应用中的休眠结果 |
作者采用约1:10的活动与休眠比例,使触摸控制器平均功耗显著下降。尝试进一步降低工作时钟虽然可能减少电流,但会改变RC计时结果,导致触摸灵敏度下降或阈值失效。
原耳机使用约500mAh电池,整机续航约2至3天。主要耗电来自蓝牙连接、音频处理和扬声器功放,PFS173触摸控制器并不是决定整机续航的主要负载。
八、PCB布局与防误触设计
触摸铜箔布局
- 单个触摸区可以从10至20mm尺寸开始试验。
- 触摸铜箔之间保留足够距离,减少相邻通道串扰。
- 触摸走线应尽量短,避免靠近开关电源、音频功放和蓝牙天线。
- 触摸铜箔正下方不要大面积铺地,否则会降低对手指的灵敏度。
- 蓝牙天线区域不要布置触摸铜箔、MCU、电池或大面积铜层。
- PFS173电源脚附近放置100nF去耦电容。
- 预留编程焊盘和串联电流测量位置,方便调试功耗。
软件防误触
- 连续检测到2至3次触摸后才确认操作。
- 确认手指释放后才能接受下一次按键。
- 单次持续触摸只触发一次,避免连续切歌或连续调音量。
- 触摸期间禁止更新基准值。
- 从休眠状态唤醒后丢弃第一次测量结果。
- 多个通道同时异常增大时,可判定为手掌覆盖或环境干扰。
- 电池电压变化较大或长时间无操作时,可执行一次重新校准。
若需要缓慢跟踪环境变化,可以在确认无人触摸时使用低速基准更新:
新基准 = 旧基准 + (当前值 - 旧基准) / 32
九、项目复现步骤
- 使用万用表找出蓝牙音频板各按键的公共GND与控制节点。
- 手动将控制节点短接到GND,验证播放、切歌和音量功能。
- 先制作单通道触摸实验板,记录触摸前后的放电计数。
- 根据实测差值设置初始阈值、防抖次数和测量超时。
- 使用PFS173高阻输入与输出低电平方式模拟一个蓝牙按键。
- 确认单路稳定后,再扩展为多路触摸控制。
- 加入每通道8次平均的开机校准。
- 加入
STOPEXE和定时唤醒,测量活动与睡眠电流。 - 制作耳罩外形PCB,并将PFS173安装在触摸板背面。
- 完成整机装配后重新调校阈值,测试走动、头发、汗液和长按等场景。
十、节电
由于耳机使用的电池容量相对较小,约为500mAh,因此在触摸板通过充电和放电功能工作时,也需要节约用电量。无需任何功率优化,当前抽签为654uA。

然而,如果我们停止主时钟的执行,实际上会暂停设备,就能实现2.5u的功耗。
STOPEXE 就是停止执行

从技术上讲,通过将计时器切换到低频时钟也有可能降低,但我发现这存在问题,因为触摸灵敏度会受到影响。一项简单的测试表明,帕达乌克数据表与现实世界的测量值相匹配。
十一、案例总结
PFS173电容触摸耳机控制面板的价值,在于使用极少的硬件完成触摸检测、按键模拟和电池供电优化。复现时最关键的三个细节是:每路约1MΩ放电电阻、启动时进行8次平均校准,以及蓝牙控制输出只能在低电平和高阻两种状态之间切换。
如果需要进一步提高抗干扰能力,可以在现有方案上增加动态基准、湿手识别、多通道互斥、ESD保护和电池电压补偿;如果产品要求更高一致性,则可以改用应广带专用Touch通道的型号或独立电容触摸芯片。 校准将微控制器上的每个引脚固定在高位,以长时间(相对)稳定读数,并快速将引脚设置为输入。这使得外部连接的电容器能够放电,我们将等待引脚检测到低信号。平均超过8次,以获得准确的基准,并像魅力一样发挥作用。在设置完此基条代码后,每次触摸都能准确完成

