别小看这两个电阻:ADC 分压比例里的门道

教程

在 Meshtastic 设备里,ADC(模数转换器)最常见的用途就是检测电池电压,从而推算出当前电池电量。这样用户在屏幕或 App 上就能直观地看到电池还剩多少电。

要实现这一点,电池的电压需要送入 MCU 的 ADC 引脚,但电池电压往往高于 ADC 可承受的上限,于是就引出了“电阻分压”这个环节。分压比例的选择不仅关系到芯片是否安全,还会直接影响电量显示的精度。

MeshCN 的微信群里,群友 齐齐哈尔-BG2ELG🍓 提出了一个很典型又有意思的问题:

“为什么大家普遍推荐用 2:3 的电阻分压比例?既然 ADC 系数可以在软件里自定义,为什么还是推荐 2:3 呢?”

别看问题简短,这背后其实隐藏着嵌入式硬件设计里的经验法则。

有意思的是,BG2ELG 哥不只是爱提问,他还是社区的活跃贡献者。几个月前,他在 MeshCN 博客上发表过一篇教程《【超越蓝牙、WiFi、串口】使用 Meshtastic mesh 网络远程管理节点》,详细讲解了如何通过 PKC 公钥体系来远程管理节点,如同平时使用电脑的远程桌面一样。那篇文章更多是软件和安全层面的探索,而这一次,他的问题则把我们带回到了硬件电路设计的细节。

更精彩的是,BG2ELG 和另一位群友 大庆-BG2EFX,曾经一起创造了 MeshCN 中国社区迄今为止最远的直连记录:从大庆到齐齐哈尔,整整 114 公里的距离,依然能稳定 LoRa 直接连通!这让社区的小伙伴们第一次真切地感受到 LoRa Mesh 在极端距离下的潜力。

我们就借这个问题,把电阻分压和 ADC 的故事好好聊一聊。

分压与 ADC 的关系

在嵌入式系统中,ADC(模数转换器)的作用是将模拟电压信号转换为数字数值。由于绝大多数 MCU 的 ADC 输入范围上限是 3.3V(有些是 1.2V 或 5V,但常见的是 3.3V),如果直接将电池电压接入,往往会超出这个范围,从而导致芯片损坏。

以单节锂电池为例,它的满电电压大约是 4.2V,这显然高于 ADC 的安全电压,因此需要通过电阻分压电路把电压降到安全范围之内。

Voltage divider for Meshtastic battery sensing, scaling 2.7–4.2V down to 1.93–3V with 800kΩ and 2MΩ resistors

电阻分压的原理很简单,它通过两个串联的电阻将输入电压按比例分配,输出电压会落在总电压的某一个比例区间内。公式可以写作:

$$
V_{adc} = V_{bat} \times \frac{R_2}{R_1 + R_2}
$$

其中,$V_{bat}$ 是电池电压,$V_{adc}$ (在上图中是 AIN)是进入 ADC 的电压,$R_1:R_2$ 是分压电阻的比例。通过选择合适的电阻比例,我们就可以把 4.2V 压低到 3.3V 以下,确保 ADC 安全工作。

分压比例不仅决定了电池电压是否安全地映射到 ADC,还直接影响 ADC 的测量精度。

ADC 本身的分辨率是固定的,例如 12 位 ADC 拥有 4096 个台阶。如果电池的工作区间是 3.0V 到 4.2V,总跨度只有 1.2V,而分压电路会进一步把这段电压压缩到某个更小的范围。

压缩得太多,就意味着同样的 1.2V 电池电压变化,只能映射到 ADC 的少数几个台阶上,测量精度就下降了。压缩得过少,虽然利用了更多的 ADC 台阶,但可能会接近 3.3V 上限,风险增大。

因此,分压比例本质上是在安全性和精度之间寻找平衡。

例如,如果使用 1:1 的分压,电池 4.2V 会被压到 2.1V,非常安全,但浪费了 ADC 的可用范围,只有约 64% 的量程被利用。

相比之下,使用 2:3 的分压,电池 4.2V 会被压到 2.8V,这样既能保持安全余量,又能让电池电压的变化覆盖大约 85% 的 ADC 范围,分辨率也显著提高。

换句话说,电阻分压不仅是一个保护措施,它还决定了 ADC 测量的细腻程度。比例选得过于保守,虽然安全,但数值变化不够灵敏;比例选得过于激进,虽然分辨率高,但可能带来过压风险。

2:3 的“黄金比例”

以 4.2V 电池、12 位 ADC 为例,我们来比较一下常见分压方案:

分压比例 4.2V 电池对应 ADC 电压 ADC 利用率 可用台阶数 每步电压 (mV) 优点 缺点
1:1 2.1V 64% ≈2620 ≈0.46 电路简单,永远安全 浪费量程,精度一般
1:2 2.1V 64% ≈2620 ≈0.46 安全余量最大 测量不够精细
2:3 2.8V 85% ≈3480 ≈0.34 精度最高,安全合适 电压尖峰风险略高
3:5 2.52V 76% ≈3120 ≈0.38 折中方案 不如 2:3 精度高

从表格数据可以看出,分压比例直接决定了 ADC 的利用率和分辨率。对于 12 位 ADC 而言,总共有 2 的 12 次方,即 4096 个台阶可用,但如果输入电压被压得太低,就只能用到其中一部分,从而降低了精度。

  • 在 1:1 或 1:2 分压下,4.2V 电池电压被压到约 2.1V,只利用了大约 64% 的 ADC 动态范围。换句话说,本来 4096 个台阶只用了 2620 个左右,每个台阶大约对应 0.46 mV 的分辨率。这种情况下测量仍然可用,但对细节变化的感知能力下降。
  • 2:3 分压则让 4.2V 映射到 2.8V,利用率达到 85%,可以用到 3480 个台阶。每一步电压缩小到 0.34 mV,比前面两种情况更精细。这样,电池电压的微小变化都能被捕捉到,非常适合需要高精度监测的场合。
  • 3:5 分压介于两者之间,利用率 76%,每步约 0.38 mV。虽然比 1:1、1:2 好一些,但依然不如 2:3 充分。

为什么说 2:3 是最佳选择?原因主要有三点:

第一,保护 ADC 不超压。当电池 4.2V 时,经过 2:3 分压后只剩下约 2.8V,离 3.3V 还有余量,安全可靠。就算充电时偶尔出现小尖峰,也不会轻易烧坏芯片。

第二,提高测量精度。ADC 的位数是固定的(12 位 = 4096 步)。如果分压比例太大,电池电压被压得太小,相当于把“尺子”拿来只用一半,浪费了精度。2:3 分压能把电池常见的 3.0–4.2V 转换成 1.8–2.8V 的范围,几乎用满了 ADC 的量程,分辨率非常高。

第三,安全与精度兼顾。1:2 太安全但浪费量程,3:4 精度更高但几乎没有余量。只有 2:3 在两者之间找到了完美平衡点。

因此,从分辨率和 mV 精度的角度来看,2:3 分压确实是最合理的选择。它既能充分利用 ADC 的动态范围,又不会让输出电压接近 3.3V 极限,兼顾了安全性与精度。

为什么不能只靠软件校准?

有人可能会说:“既然 ADC 系数可以在软件里改,分压比例不就随便了吗?”

其实不行。原因有三:

  1. 软件无法避免硬件过压风险;
  2. 软件也改变不了 ADC 分辨率的利用率;

所以,分压比例不是“想改就改”的参数,而是设计中必须先考虑好的安全保障。

总结

这就是为什么在很多 MCU 需要分压电路的项目里,大家都会默契地推荐 2:3 的分压比例。它不仅仅是一个简单的电阻选择,更是安全与精度之间的经验平衡。

而更让人兴奋的是,像 齐齐哈尔-BG2ELG🍓大庆-BG2EFX 这样的群友,不只是钻研电路的小细节,还敢于挑战极限。他们联手创造了 114 KM 直连的纪录,让 MeshCN 社区第一次见识到 LoRa Mesh 在现实环境下的真正潜力。

正是因为有这些既好奇又敢玩的伙伴,MeshCN 的讨论氛围才格外生动。下次有人问你为什么要选 2:3 的分压比例时,你不仅可以讲清楚原理,还能顺带吹一波社区里传奇们的故事。

本文作者: Hays Chan | 陈希

本文链接: https://meshcn.net/meshtastic-voltage-divider-2-3-ratio/