单片机 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),防止走线铜箔本身的电阻干扰微弱信号采集。

相关推荐
jianqiang.xue43 分钟前
ESP-IDF保姆级入门29|FreeRTOS任务管理与调度全解:任务创建/状态切换/优先级调度/双核负载均衡/实时性优化,掌握嵌入式多任务编程核心
stm32·单片机·mcu·物联网·51单片机·iot
自小吃多1 小时前
PCB Editor软件走线、修线操作笔记
笔记·嵌入式硬件
新晨单片机设计2 小时前
S008A-基于STM32单片机八路抢答器(数码管)【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus
米饭不加菜2 小时前
STM32——数码管显示
stm32·单片机·嵌入式硬件
梵亿3 小时前
基于 STM32F103C8T6 的无人机低功耗设计与实现
stm32·嵌入式硬件·无人机·低功耗
hrw_embedded3 小时前
Keil开发与STM32Cube开发的差异点总结(未完待续)
stm32·单片机·嵌入式硬件
Brilliantwxx3 小时前
【STM32】RCC与时钟树 深度详解
stm32·单片机·嵌入式硬件·架构
天空'之城3 小时前
单片机基础核心知识点汇总(二十九)
单片机·嵌入式硬件
Rsingstarzengjx3 小时前
第二十六章 Linux 蜂鸣器实验笔记
linux·驱动开发·笔记·stm32·嵌入式硬件·stm32mp157
一路往蓝-Anbo4 小时前
第七篇:以太网设计 —— 从 RMII 时序到变压器隔离的深度拆解
stm32·单片机·嵌入式硬件·嵌入式·stm32硬件设计