用单键触摸芯片和3个三极管做低成本河流桌感应灯矩阵
Contents
起因
刷到不少"河流桌"的视频:整块木桌中间灌一条透明环氧树脂当"河",河里埋 LED,手从桌面上拂过,扫过的位置亮起来,离开后又慢慢暗下去,像水面荡开的涟漪。市面上的做法基本两类:成品桌天价;DIY 的多是单片机(Arduino/ESP32)+ WS2812 + 红外对管/触摸传感器,一套下来要写代码、要调传感器阈值、要烧录,对不想碰固件的朋友不友好。
我想做一个纯硬件、零代码、模块化的版本:把"手过去灯亮、手离开灯灭"这个交互拆到一块块圆形小电路板上,单板 BOM 压在 2 块钱以内,整张桌子的电子部分 60 元封顶。整套方案就三样东西:一个单键触摸芯片 + 3 个三极管(NPN+PNP)+ LED 矩阵。
效果与整体架构
最终交互:手掌扫过桌面 → 被覆盖的圆板依次点亮(响应几十毫秒,跟手)→ 手离开后该板约 3 秒渐灭。板与板之间只有两根电源线,互不通信,天然形成"手到哪、哪亮"的跟随效果——这也是全硬件方案最妙的地方,不需要任何协调逻辑。
每块圆形 PCB 就是一个完整的最小单元,信号链:
|
|
为什么不用单片机
动手前先算账:
| 对比项 | 单片机方案(如 CH552/STM8) | 本方案(全硬件) |
|---|---|---|
| 主控 BOM | ¥1.2+(还要触摸外设或 RC 自制触摸) | TTP223 ¥0.2 + 三极管 ¥0.1 |
| 开发链路 | 焊 DFU/烧录器、写固件、调灵敏度算法、维护代码 | 零代码,通电即工作 |
| 待机功耗 | 低功耗模式+轮询,十几 µA 起 | 单板约 2µA |
| 可靠性 | 看门狗、死机、静电后固件异常 | 无固件可死机 |
| 效果可玩性 | 渐变曲线/彩控随便改 | 渐灭时长由 RC 定,改效果要烙铁 |
结论很直白:要的是"亮/灭"这种一比特的交互,模拟方案完全够,而且每块板独立、坏一块换一块。MCU 的可编程优势等想上全彩流水时再动(文末有升级路线)。
触摸检测:单键触摸芯片 TTP223
选 TTP223(通泰 Tontek,SOT23-6 封装,几毛钱一颗),市面上最烂大街的单键电容触摸芯片,资料多、兼容替代也多。
工作原理一句话:芯片内部持续测量感应盘对地的等效电容,人体是个对大地几十到几百 pF 的导体,手靠近感应盘时相当于把人体电容并联上盘,电容增量超过阈值输出就翻转。上电后有约 0.5 秒的自校准(以当时的环境电容为零点,上电时手别压在板子上,否则基准被带偏);运行中长时间无触发也会周期性重新校准。
关键参数(手册口径):
| 参数 | 数值 | 与本方案的关系 |
|---|---|---|
| VDD | 2.0~5.5V | 5V 供电直接用 |
| 待机电流 | 约 1.5µA@3V | 整桌待机可忽略 |
| 输出 | CMOS 电平,±1mA 级负载下保证摆幅 | 带不动 LED,后面三极管就是干这个的 |
| 响应时间 | 约 60~220ms(模式相关) | 跟手足够 |
| 灵敏度 | CS 引脚对地电容 0~50pF 调节,悬空(0pF)最灵敏 | 隔树脂+悬空感应的关键旋钮 |
输出模式(瞬动/自锁、高/低有效)在裸片上由封装绑定决定,市售蓝色小模块的跳线默认"瞬动+高有效"——手在输出高、手走输出低,正是本方案要的。自己画板买裸片时,下单认准默认配置的后缀即可。
接近感应(非接触触发)怎么调:手指接触式的用法在这里不够,要手掌悬空 1~3cm 就触发,两个手段:
- 感应盘做大——做成板边缘一整圈环形敷铜(约 3~4mm 宽),手掌覆盖面积大,电容增量就大;
- CS 悬空用最灵敏档——隔着 2
3mm 环氧树脂再悬空 13cm,手掌可靠触发。
灵敏度和误触发是一对矛盾,具体平衡见踩坑一节。
三极管放大电路:3 颗管子各干什么
为什么芯片输出不能直接带 LED
先算账:本板 8 颗白光 LED,15mA/颗,合计 120mA。TTP223 的输出是 CMOS 结构,手册里 VOH/VOL 都是按 ±1mA 级负载标的,直接挂 120mA 轻则输出电压塌掉灯不亮,重则烧片。差了两个数量级,必须做电流放大。
三管分工
- Q1(NPN,S9013)——开关级 + 渐灭。基极挂一组 RC:手在时快速充满,手走后缓慢放电,让灯"渐灭"而不是"啪"地断电,这是河流桌"涟漪感"的灵魂。
- Q2(PNP,S8550)+ Q3(NPN,S8050)——Sziklai 互补复合管。两管组合等效成一颗 β ≈ βQ2×βQ3(万级)的大 PNP,做高侧大电流开关。
为什么开关放在高侧(电源正端):这样 LED 的阴极全部直接落在整板 GND 平面上,灯的大电流回路不穿过感应盘下方,触摸检测的地参考干净——电容感应最怕地电位被功率回路扰动。
电路连接
|
|
建议先在面包板上用 TO-92 直插管 + TTP223 小模块搭一块验证灵敏度,再画 PCB。
工作过程
亮:手靠近 → OUT 拉高 → 经 R1、D1 给 C1 快速充电(时间常数毫秒级,灯"立亮")→ Q1 饱和 → Q2 基极经 R3 被拉向地 → 复合管导通 → LED 点亮。
渐灭:手离开 → OUT 拉低 → D1 反偏截止,C1 的电荷退不回芯片 → 只能经 R5 和 Q1 基极缓慢泄放 → 基极电流维持 Q1 继续导通几秒 → LED 渐暗至熄灭。渐灭时长由 R5×C1 时间常数主导:4.7µF 约 3 秒,10µF 约 6 秒,想再长优先加大 C1。
| 手 | OUT | C1 | Q1 | Q2/Q3 | LED |
|---|---|---|---|---|---|
| 靠近 | 高 | 快充至约 4.2V | 饱和 | 导通 | 亮 |
| 刚离开 | 低 | 缓慢放电 | 维持导通 | 导通 | 渐暗 |
| 离开数秒后 | 低 | <0.7V | 截止 | 截止 | 灭 |
元件取值与验算
按 β≈100 的保守口径过一遍:
- R3(47k):Q1 饱和后,Q2 基极电流 IB2 = (5 − 0.7 − 0.2) / 47k ≈ 89µA。负载 120mA 需要的复合管基流约 120mA / (βQ2×βQ3) ≈ 10µA,余量近 9 倍。
- R4(100k):Q1 截止时把 Q2 基极钳在 VCC,防止管子漏电或温漂导致半亮。上电瞬间 LED 闪一下亮,九成是忘了这颗上拉。
- 不追求深饱和:LED 电流由限流电阻决定,复合管工作在放大区即可。高侧输出节点约 4.1V(掉了 Q2 饱和压降 + Q3 的 VBE),已计入限流电阻计算。
- R6(68Ω):白光 Vf≈3.1V,R6 = (4.1 − 3.1) / 15mA ≈ 68Ω。换蓝光/红光按各自 Vf 重算。
- Q3 功耗:(5 − 4.1)V × 120mA ≈ 0.11W,SOT-23 封装无压力。
- Q1 电流:IC1 = IB2 + IR4 ≈ 89µA + 48µA ≈ 137µA,C1 放电时基极只抽约 1.4µA,这就是渐灭能拖几秒的物理基础。
圆形 PCB 与 LED 矩阵
板级布局要点
- 圆板直径建议 Φ35~45mm,8 颗 5730 暖白 LED 沿圆心区域一圈均匀分布,出光在树脂里混得开。
- 环形感应盘沿板边一整圈(宽 3~4mm),这是手掌"隔空触发"的感应面积来源。
- 感应盘正下方和 PCB 背面投影区挖空:不铺铜、不走线。盘下方叠着地平面会显著增大对地电容、吃掉灵敏度。
- TTP223 的 IN 走线短而细,远离 LED 电流回路;CS 电容紧贴引脚(如果 CS 悬空,焊盘留着,调灵敏度时随时补)。
- GND 大平面兜底,LED 电流沿外圈回流,不穿板中心。
组网
- 板与板之间只有 VCC/GND 两线,0.5
1mm² 硅胶线链形或星形都行,板间距 35mm。 - 每板独立一套"触摸+放大+LED",手覆盖哪块哪块亮,相邻板靠手掌的自然覆盖衔接成"涟漪"。
- 想要"越靠近亮得越多"的层次感,可以把相邻两板的感应盘用一颗小电容(1~10nF)弱耦合,做涟漪扩散的模拟味道——进阶玩法,先跑通基础的再说。
灌树脂
- 透明环氧(水晶滴胶/E-44 体系)2~3mm 厚度内,调好 CS 后感应距离衰减可以接受;固化前先把整板架起来实测一遍触发距离。
- 不要用金属闪粉类填料(导电+改变介电常数,灵敏度直接乱掉),云母粉、干花这类绝缘填料没事。
- 树脂固化放热峰值不高,0805/5730/三极管都耐得住,但 TTP223 的自校准要在树脂固化后、最终环境温度下再确认一遍灵敏度。
电源与功耗预算
| 状态 | 单板 | 24 板矩阵 |
|---|---|---|
| 待机(手不在) | ≈2µA | ≈50µA |
| 单板点亮 | ≈120mA | — |
| 全亮(仅调试时) | — | ≈2.9A |
- 电源选 5V/3A:日常交互同时亮的就 1~3 块板,实际不到 0.5A;3A 余量留给全亮调试。
- 每板入口 100nF + 47µF 去耦,长电源线的电感尖峰是误触发的重要来源。
- 待机电流微安级,理论上加颗锂电池+升压也能玩便携版,但桌面场景 5V 适配器最省心。
踩坑记录与注意事项
- 灵敏度过头会自激:感应盘大 + CS 悬空 + 相邻板靠太近,会出现没人碰自己亮/闪烁。逐板加 CS(几 pF 起加)压灵敏度,板间距拉开到一个板径以上。
- 上电 0.5 秒校准期手别压板:否则基准电容被计入人体,要么常亮要么再也不亮。做成整机后断电重启一次就好。
- 湿度温漂:梅雨天/夏天高湿,误触发变多是正常物理现象,CS 留出上调余量,按最湿季节调定。
- 上电瞬间 LED 闪亮:R4(Q2 基极对 VCC 上拉)没焊或虚焊,第一时间查它。
- 长电源线耦合误触发:电源线别和感应盘平行走线,去耦电容别省。
- 人体接地差异:穿鞋踩地板、干燥天气,人体对地电容变小,感应距离会变近,属正常,按"最不利姿势"验收。
- 渐灭想拉长:优先加大 C1(10µF→22µF),别把 R5 加到 1MΩ 以上——阻值太大后漏电流和干扰占主导,时间失控。
- CS 别一上来就贴死 50pF:那样只剩接触式灵敏度,“手过去就亮"就没意义了。从悬空开始,逐步加。
成本核算
淘宝/立创量级,仅供参考(按 100 片批量):
| 物料 | 用量 | 单价 | 小计 |
|---|---|---|---|
| TTP223 | 1 | ¥0.2~0.35 | ¥0.3 |
| S9013/S8050/S8550 | 3 | ¥0.02~0.03 | ¥0.08 |
| 1N4148 | 1 | ¥0.01 | ¥0.01 |
| 阻容(含去耦) | 约 10 | — | ¥0.1 |
| 5730 暖白 LED | 8 | ¥0.04 | ¥0.32 |
| Φ40 圆板 PCB | 1 | ¥0.6~1 | ¥0.8 |
| 单板合计 | ≈¥1.6 |
24 板矩阵控制部分约 ¥38,加 5V/3A 电源和线材,整套电子成本 60 元内。对比 MCU 方案省下的不只是钱,还有固件调试时间和"这块板程序为什么跑飞"的深夜。
可扩展方向
- TTP224(四键版):单板四个象限独立感应,能做方向判断(手从左往右扫,板按象限顺序亮),涟漪更有方向感。
- 光敏联动:一颗光敏电阻+1 个三极管串在 Q2 基极回路里,白天自动锁存不亮。
- 恒流升级:把 R6 换成两管恒流或线性恒流芯,LED 亮度不受电源波动影响,适合电源线拉得长的桌子。
- 全彩终极形态:WS2812 + ESP32,涟漪扩散算法、彩虹流水、蓝牙配网随便玩——这是另一篇文章的事了。
参考链接
- Tontek 官网——TTP223 原厂,中文手册也可在立创商城元件页下载
- Sziklai pair - Wikipedia——互补复合管的原理与变形
Author 软件开发大郭
LastMod 2026-09-06