电压检测设计电路以及原理 一、电路用途这个电路用于把较高的输入电压 IN例如 60V、72V、84V、100V 等转换成 MCU ADC 可以安全采样的低电压。MCU 的 ADC 通常只能测量 0V 到 3.3V不能直接接 72V 电池或高压电源。所以需要先用电阻分压把高电压缩小到 3.3V 以下再送入 ADC。二、当前电路结构当前电路参数如下R1 150kΩR2 150kΩR3 10kΩR4 4.7kΩC1 0.47uF电路连接关系IN ---- R1 ---- R2 -------- R4 ---- ADC| |R3 C1| |GND GND三、每个元件的作用1. R1 和 R2R1 和 R2 是高边分压电阻。它们的作用是承受大部分输入高压把 72V 这类高电压限制成较小电流再和 R3 一起形成分压。这里没有直接用一个 300kΩ 电阻而是用两个 150kΩ 串联原因是1分摊电压提高耐压可靠性。2降低单个电阻承受的功耗。3实际购买和布板更方便。R1 R2 150kΩ 150kΩ 300kΩ2. R3R3 是下拉分压电阻。它和 R1、R2 一起决定分压比例。分压点电压为Vdiv IN * R3 / (R1 R2 R3)代入当前参数Vdiv IN * 10k / (150k 150k 10k)Vdiv IN * 10k / 310kVdiv IN / 31所以这个电路的分压比例是 1/31。也就是说ADC前面的分压点电压约等于输入电压的 1/31。3. R4R4 是 ADC 前的串联电阻。它主要有三个作用1限制异常电流保护 ADC 引脚。2和 C1 组成 RC 低通滤波电路。3隔离 ADC 内部采样电容对前级分压电路的影响。正常静态测量时ADC 输入阻抗很高几乎不吸电流所以 R4 上几乎没有直流压降。电阻压降公式V I * R如果 ADC 输入电流非常小那么流过 R4 的电流也非常小所以 R4 两端压降接近 0V。因此在计算静态 ADC 电压时通常可以近似认为Vadc ≈ Vdiv也就是Vadc ≈ IN / 314. C1C1 是 ADC 输入端对地滤波电容。它和 R4 组成 RC 低通滤波器用来滤除输入电压中的高频噪声和电机、电调、电源纹波带来的干扰。连接方式R4 ---- ADC|C1|GND当前 C1 0.47uF。四、当前电路的电压计算当前电路分压比例Vadc ≈ IN / 31常见输入电压对应 ADC 电压IN 60V 时Vadc 60 / 31 1.94VIN 72V 时Vadc 72 / 31 2.32VIN 84V 时Vadc 84 / 31 2.71VIN 90V 时Vadc 90 / 31 2.90VIN 100V 时Vadc 100 / 31 3.23V如果 MCU ADC 最大输入电压是 3.3V那么这个电路理论上可以测到IN_max 3.3V * 31 102.3V实际设计时不建议刚好用到极限建议最高输入电压留一些余量。五、ADC 数值怎么换算成实际电压假设 MCU ADC 是 12 位参考电压 Vref 3.3V。12 位 ADC 数值范围是0 到 4095ADC 数值转 ADC 引脚电压Vadc ADC_value / 4095 * 3.3V实际输入电压IN Vadc * 31合并公式IN ADC_value / 4095 * 3.3V * 31例如 ADC 读数为 2880Vadc 2880 / 4095 * 3.3 2.32VIN 2.32 * 31 71.92V所以 ADC 读数 2880 左右时输入电压大约是 72V。六、分压电阻怎么选选择分压电阻时先确定三个条件1最高要测多少电压。2MCU ADC 最大输入电压是多少。3希望留多少安全余量。例如要测 72V 电池不能只按 72V 算。72V 铅酸电池满电可能接近 79V。72V 锂电池如果是 20 串满电可能是4.2V * 20 84V所以设计时可以按 90V 或 100V 计算。假设 ADC 最大电压是 3.3V希望 100V 时 ADC 电压不超过 3.3V。需要分压比例Vadc / IN 3.3 / 100Vadc / IN 0.033当前电路分压比例10k / (150k 150k 10k) 10 / 310 0.03226这个比例满足要求。七、为什么 R1 和 R2 用大电阻如果分压电阻太小会一直消耗电池电流。当前电路总分压电阻Rtotal R1 R2 R3Rtotal 150k 150k 10k 310kΩ输入 72V 时分压电流I 72V / 310kΩ 0.232mA输入 100V 时分压电流I 100V / 310kΩ 0.323mA这个电流比较小适合长期接在电池上。如果把电阻整体缩小 10 倍例如 15k、15k、1k总电阻只有 31kΩ。72V 时电流I 72V / 31kΩ 2.32mA耗电会增加 10 倍不适合长期低功耗设备。八、电阻功耗怎么计算电阻功耗公式P I^2 * R按 IN 100V 计算分压电流约I 100V / 310kΩ 0.323mAR1 功耗P_R1 I^2 * 150kP_R1 0.000323^2 * 150000P_R1 ≈ 0.0156WR2 功耗同样约 0.0156W。R3 功耗P_R3 I^2 * 10kP_R3 0.000323^2 * 10000P_R3 ≈ 0.0010W所以普通 1/4W 电阻功耗足够。但是还要注意电阻耐压。高压侧建议用多个电阻串联分摊电压所以 R1、R2 分成两个 150kΩ 是合理的。九、R4 怎么选R4 不主要负责分压它主要负责保护和滤波。常用范围R4 1kΩ 到 10kΩ如果 R4 太小1保护限流效果弱一些。2同样电容下滤波效果弱一些。如果 R4 太大1ADC 采样电容充电变慢。2采样时间太短时 ADC 读数可能偏低或不稳定。3受 ADC 输入漏电流影响更明显。比较常用的选择R4 1kΩR4 2.2kΩR4 4.7kΩR4 10kΩ当前选择 R4 4.7kΩ是比较合适的折中值。十、C1 怎么选C1 和 R4 组成 RC 低通滤波器。时间常数τ R4 * C1截止频率fc 1 / (2πR4C1)当前参数R4 4.7kΩC1 0.47uF时间常数τ 4700 * 0.47uFτ 4700 * 0.00000047τ ≈ 0.00221sτ ≈ 2.21ms截止频率fc 1 / (2π * 4700 * 0.47uF)fc ≈ 72Hz这个滤波强度适合电池电压检测。电池电压本身变化比较慢不需要很快响应所以 72Hz 左右的低通滤波是可以的。十一、R4 和 C1 怎么配合选择如果希望滤波效果差不多就让 R4 * C1 的乘积差不多。例如下面几组时间常数都接近 1msR4 1kΩC1 1uFR4 2.2kΩC1 0.47uFR4 4.7kΩC1 0.22uFR4 10kΩC1 0.1uF当前参数R4 4.7kΩC1 0.47uF时间常数约 2.21ms滤波比 1ms 更强一些响应更慢一些。对于电池电压检测这是可以接受的。如果你想响应快一点可以改成R4 4.7kΩC1 0.1uF 或 0.22uF如果你想读数更平稳可以保持R4 4.7kΩC1 0.47uF或者增大到C1 1uF但 C1 越大电压变化反应越慢上电后 ADC 电压稳定也会更慢。十二、C1 耐压怎么选C1 接在 ADC 引脚对地。正常情况下ADC 电压最高约 3.3V所以 C1 不需要承受 72V 或 100V。一般选择16V、25V、50V 都可以。常见推荐0.1uF 到 0.47uFX7R 陶瓷电容耐压 25V 或 50V。当前 0.47uF 可以选0.47uF / 25V / X7R或者0.47uF / 50V / X7R十三、电路设计注意事项1. ADC 输入不能超过 MCU 允许范围。如果 MCU 是 3.3V 系统ADC 不要超过 3.3V。当前分压比例下100V 输入时 ADC 约 3.23V已经接近 3.3V。如果输入有可能超过 100V建议提高 R1 R2 或降低 R3。2. 建议使用 1% 精度电阻。电阻误差会直接影响电压测量精度。如果只是做欠压保护1% 通常够用。如果要做较准确的电压显示可以用 0.1% 电阻或者在软件里校准。3. 高压侧电阻要注意耐压。R1 和 R2 串联可以分摊电压。如果输入最高 100VR1 和 R2 大约各承受 48V 左右。这比单个电阻承受 96V 更安全。4. ADC 引脚附近放 C1。C1 要靠近 MCU ADC 引脚放置滤波效果更好。5. MCU GND 必须和被测电压负极共地。这个电路是非隔离采样。如果 IN 的负极和 MCU GND 没有连接ADC 测量没有参考点读数会不正确甚至可能损坏芯片。6. 软件需要做平均滤波。硬件 RC 滤波后软件中仍建议多次采样平均。例如采样 16 次取平均采样 32 次取平均这样可以让电压显示更稳定。十四、当前电路总结当前电路IN ---- 150k ---- 150k -------- 4.7k ---- ADC| |10k 0.47uF| |GND GND分压比例Vadc ≈ IN / 31对应关系60V - 1.94V72V - 2.32V84V - 2.71V100V - 3.23VRC 滤波R4 4.7kΩC1 0.47uF时间常数约 2.21ms截止频率约 72Hz这个电路适合用于 72V 电池、电动车控制器、电源母线电压等低速电压检测。如果最高输入不超过 100V并且 ADC 参考电压是 3.3V这组参数整体是合理的。