单片机 ADC 电压与电流检测及电阻选型指南

在嵌入式开发与电源设计中,使用单片机(MCU)的 ADC(模数转换器)采集电路中的电压和电流是极常见的需求。由于单片机 ADC 引脚有严格的输入电压范围(通常为 0~3.3V),因此需要通过合理的硬件电路将大电压或电流信号转换/缩放到 ADC 可读取的范围内。

一、 电压检测原理与分压电阻选型

1. 检测原理

由于待测电压(如 12\\text{V} / 20\\text{V})超出了单片机 ADC 的输入上限(3.3\\text{V}),需利用电阻串联分压原理,将高电压按固定比例缩小后送入 ADC 引脚。

电路拓扑:

待测高压 V_{\\text{IN}} 经过上拉电阻 R_1 与下拉电阻 R_2 串联接地,中间节点接 ADC:

V_{\\text{ADC}} = V_{\\text{IN}} \\times \\frac{R_2}{R_1 + R_2}

复制代码
V_IN  ----+---- [ R1 ] ----+---- [ R2 ] ---- GND
          |                |
          +---- V_OUT ----> MCU_ADC

2. 分压电阻选型三步法

  1. 计算分压比:

    确定待测最高电压 V_{\\text{IN\\_MAX}}(留出约 20% 裕量)与 ADC 最高参考电压 V_{\\text{ADC\\_MAX}}(如 3.3\\text{V})。

    \\frac{R_2}{R_1 + R_2} \< \\frac{V_{\\text{ADC\\_MAX}}}{V_{\\text{IN\\_MAX}}}

  2. 确定总阻值范围(关键折中):

    • 阻值不能太小: 阻值过小会导致分压支路通过电流过大,增加电路静态功耗并引发电阻发热偏差。

    • 阻值不能太大: 单片机 ADC 采样保持电路内部有输入阻抗(通常为几十 \\text{k}\\Omega),如果外部分压电阻阻值过大,会导致 ADC 采样电容充放电速度不够,引发测量不准。

    • 推荐经验值: 分压网络总阻值建议在 10\\text{k}\\Omega \\sim 100\\text{k}\\Omega 之间。

  3. 标称阻值匹配举例:

    若需检测最高 12\\text{V} 电压:

    • 选择 R_1 = 10\\text{k}\\OmegaR_2 = 3.3\\text{k}\\Omega

    • V_{\\text{IN}} = 12\\text{V} 时,V_{\\text{ADC}} = 12\\text{V} \\times \\frac{3.3}{10 + 3.3} \\approx 2.977\\text{V} \< 3.3\\text{V},在安全范围内。

    • 精度建议: 选用 1% 或 0.1% 精度的贴片电阻(如 0805/0603 封装),避免普通 5% 精度电阻带来的累计误差。

二、 电流检测原理与采样电阻选型

1. 检测原理

电流信号无法直接被 ADC 读取,必须转换为电压。通常在主回路中串联一颗毫欧级别的采样电阻(Shunt Resistor),利用欧姆定律 V = I \\times R 将电流转化为微弱压差。

因为毫欧电阻上的压差极小(仅几毫伏到几十毫伏),单片机 ADC 无法精准分辨,所以必须配合电流检测放大器(如 INA180/INA219 等) 将信号放大数十到上百倍后再送入 ADC。

复制代码
VBUS/VOUT ----+---- [ R_shunt ] ----+---- 负载
              |                     |
             IN+                   IN-
              |                     |
              +---> [运放/INA180] <--+
                         |
                         +---> MCU_ADC (放大后电压)

2. 采样电阻选型三大核心考量

(1) 阻值选择(越小越好)
  • 核心目的: 降低插入压降发热功耗

  • 计算逻辑:

    如果电路电流为 3\\text{A},若选用 1\\Omega 电阻,压降达 3\\text{V}(后级电路供电不足),且功耗 P = I\^2 R = 9\\text{W}(严重发热);若改用 10\\text{m}\\Omega (0.01\\Omega) 采样电阻:

    • 压差: V = 3\\text{A} \\times 0.01\\Omega = 0.03\\text{V} (30\\text{mV})(对后级供电几乎无影响)。

    • 功耗: P = 3\^2 \\times 0.01 = 0.09\\text{W} (90\\text{mW})(普通贴片电阻即可承受)。

  • 推荐经验值: 采样电阻通常选 5\\text{m}\\Omega \\sim 50\\text{m}\\Omega 之间。

(2) 电阻额定功率(耐功率能力)

采样电阻必须保证在最大电流下不被烧毁。

  • 计算公式: P_{\\text{rated}} \\ge I_{\\text{MAX}}\^2 \\times R_{\\text{shunt}} \\times 2 (建议留出 2 倍以上安全裕量)。

  • 封装选择: 大电流采样通常选用 25121206 封装的合金采样电阻(如 3\\text{W} 功率)。

(3) 结合运放倍数推导最大测量电流

假设运放增益为 G(如 INA180A3 的 G = 100),ADC 允许的最大电压为 V_{\\text{ADC\\_MAX}} = 3.3\\text{V},采样电阻为 R_{\\text{shunt}}

I_{\\text{MAX}} = \\frac{V_{\\text{ADC\\_MAX}}}{G \\times R_{\\text{shunt}}}

  • 例: R_{\\text{shunt}} = 10\\text{m}\\OmegaG = 100,则最大能测量的电流为:

    I_{\\text{MAX}} = \\frac{3.3\\text{V}}{100 \\times 0.01\\Omega} = 3.3\\text{A}

三、 设计总结与避坑要点

  1. 电压检测:

    • 注意串联电阻总阻值,推荐 10\\text{k}\\Omega \\sim 100\\text{k}\\Omega

    • 可以在下拉电阻两端并联一个 10\\text{nF} \\sim 100\\text{nF} 的 RC 滤波电容,吸收高频噪声,稳定 ADC 读数。

  2. 电流检测:

    • 必须采用高精度低温飘的合金采样电阻,防止温度升高导致阻值偏移从而引发测量失准。

    • 优先选择高边采样(High-Side Sensing),将采样电阻接在电源正极线(VOUT),避免低边采样破坏系统共地。

    • PCB 走线时,采样电阻到运放 IN+/IN- 引脚的连线必须采用 开尔文走线(Kelvin Sensing),防止走线铜箔本身的电阻干扰微弱信号采集。

相关推荐
驴友花雕3 小时前
【花雕动手做】行空板 K10 系列实验之人工智能语音识别小车的10个参考案例
人工智能·单片机·嵌入式硬件·语音识别·行空板 k10 系列实验·花雕动手做·小车的10个参考案例
日拱一卒的小田9 小时前
ZYNQ学习笔记3-ZYNQ的IIC控制器1
笔记·单片机·学习
cardinal_50810 小时前
STM32MP157F-DK2开发板构建交叉编译链
stm32·单片机·嵌入式硬件
小羊先生car10 小时前
F429-HAL-RS485(回环/双机实验)(2026/8/16)
c语言·单片机·嵌入式硬件·软件构建
木白CPP10 小时前
Linux 驱动UART子系统源码分析
linux·运维·服务器·驱动开发·嵌入式硬件·开源软件
zlinear数据采集卡12 小时前
数据采集卡从入门到精通(10):采样率与分辨率的核心关系——反比律、架构分布与过采样
arm开发·嵌入式硬件·算法·fpga开发·架构·开源
水果里面有苹果14 小时前
33-TPS62130RGTR-3A降压器
嵌入式硬件
振南的单片机世界15 小时前
推挽vs开漏:一个“强拉硬灌”,一个“只拉不管”
arm开发·stm32·单片机·嵌入式硬件
小心亦新15 小时前
STM32学习23--I2C-1
stm32·嵌入式硬件·学习
小羊先生car15 小时前
F429-HAL-Can总线(回环及双机实验)(2026/8/15)
c语言·单片机·嵌入式硬件·软件构建