嵌入式电压电流检测方法全解析:从电阻分压到霍尔传感器的实战指南
做嵌入式硬件这些年我几乎每天都在跟电压和电流检测方法打交道。从最简单的电阻分压测电池电压到电机驱动里的电流环采样再到EMC整改时追共模电流的回路本质上都是在解决“怎么把看不见的电学量变成看得见的数字”。电压量起来好像很简单ADC一采就完事电流就麻烦一些必须先转成电压再采样。但真到项目落地坑往往藏在细节里ADC参考电压漂了、采样电阻温漂了、传感器带宽不够、地线噪声耦合进来每一个都能让你调试到怀疑人生。这篇文章是我自己项目里用过、踩过、最终沉淀下来的电压电流检测方法全梳理覆盖电阻分压、电压跟随器、交流采样、采样电阻差分放大、霍尔传感器、电流互感器、单电阻重构、电流镜等主流方案会讲清楚每种方法的原理、适用场景、关键参数和实操避坑经验。适合正在做嵌入式、电源、电机控制、仪器仪表或电力电子的朋友参考新手也能从中建立起完整的检测链路概念。1. 内容整体设计与思路拆解1.1 电压与电流检测的本质差异拿到“电压、电流检测”这个题目我第一反应不是马上画电路而是先想清楚一件事电压和电流的测量本质完全不同。电压检测是对一个节点的电位做观测探头一点、地一夹读数就有了基础电流检测则是要对整个回路做观测电流没有直接暴露的电位节点你只能通过串联或者感应去“间接”把它变成电压信号。这个点测量和环测量的差异决定了后续所有方案布局。电压检测的核心要素有三个输入阻抗、参考基准、采样速率。电流检测的核心要素则是转换方式、串联位置、隔离手段。举个例子用STM32F103C8T6的ADC采集电压如果你直接用一个大阻值分压网络去接ADC内部的采样电容会从信号源抽取电荷高阻信号源根本供不动采集结果必然偏低。而电流检测用采样电阻其核心指标是阻值、功率和温漂用霍尔则要看零点漂移和带宽。两种检测的物理层需求不同选型逻辑自然不一样。1.2 方案选型的五个核心维度我在实际项目中选检测方案基本就看五个维度精度、带宽、共模电压、隔离、成本。这五个维度相互制约离开场景谈检测方法都是空谈。维度电压检测关注点电流检测关注点精度参考电压、分压电阻精度采样电阻精度、放大器失调电压带宽ADC采样率、抗混叠滤波传感器响应时间、运放压摆率共模电压分压网络输入范围高端/低端采样位置、CMRR隔离多数场合不需要工业、电网场合常有硬性要求成本电阻和基准几乎可忽略从毫欧电阻到霍尔、互感器差距巨大比如测一个5A的直流电流精度要求1%最经济的方法就是10mΩ采样电阻加差分放大总成本几块钱但如果要求电气隔离采样电阻方案在高压侧就行不通得换成霍尔传感器成本直接翻几倍如果还要上百kHz带宽普通霍尔又不够可能得上高频电流互感器或者同轴分流器。所以每次做方案我都建议先把这五个维度列成一张表把需求值填进去再选方法而不是凭习惯套用某个电路。2. 电压检测方法全梳理2.1 电阻分压ADC分压电阻取值与参考电压校准电阻分压是电压检测的地基。两个电阻串在待测电压和地之间中间节点接ADC公式就是 Vout Vin * R2 / (R1 R2)。这个电路简单但翻车率极高原因在于分压电阻的取值总被低估。R1和R2的总阻值取太小比如几十欧分压网络自身功耗大得离谱取太大比如1M信号源阻抗太高ADC根本采不准。以STM32F103C8T6为例官方资料里对ADC外部源阻抗的建议一般不超过10kΩ。如果你用两只100k电阻做分压等效源阻抗就是50k上下ADC内部采样电容还没充到目标电压就开始转换了读数偏低且随温度抖动。国产的STC8H1K28做电压检测板也是同样的道理只是配置寄存器和采样时间要重新核对不能照搬库函数。我的常用做法是总阻值取10k到100k之间后端要么接电压跟随器要么在ADC引脚加一个0.1uF电容并适当延长采样时间。如果测量的是电池这种需要低功耗的场景总阻值可以放大到几百k但一定要加缓冲否则精度和功耗不可兼得。分压网络里还有个容易忽略的点就是参考电压。STM32的ADC默认参考电压是VDD如果VDD本身有纹波采集结果就会跟着抖。要求高的时候换外部基准芯片比如TL431或者REF3030要求没那么高至少加一个独立ADC通道去采已知电压做软件校准。很多工程师只盯着分压电阻忽略基准结果换了一堆器件还是不准。至于电路检修里常说的“导通前电压电阻高导通后电压电阻低的元件”其实就是二极管或者MOSFET体二极管。测量时用万用表二极管档正反向压差就能判断好坏原理还是分压和阈值比较本质上也是一种电压检测应用。2.2 电压跟随器解决ADC输入阻抗不够的问题电压跟随器是我处理高阻分压网络时的首选缓冲方案。它由运放接成单位增益负反馈输入阻抗接近运放自身输入阻抗通常几十MΩ以上输出阻抗只有几欧姆正好把“高阻信号源”和“ADC采样电容”隔开。选运放时注意三点输入共模范围、输出电压摆幅、偏置电流。用LM358这种老片做跟随器如果输入接近电源轨输出会明显变形因为它不是轨到轨运放单电源供电时输入信号低于地或者接近地也会出问题。我习惯在分压节点加一个RC低通滤波比如10k10nF再进跟随器这样既能滤掉高频噪声又不会因为滤波电容影响ADC的建立时间。还有一个细节跟随器前面的滤波电容不要选太大否则分压网络还要给电容充电每次信号变化都有很长的建立过程。我见过有人放了10uF大电容结果电压从0V跳到3V要几百毫秒动态响应一塌糊涂。电压跟随器虽然叫“跟随”但它只帮你看清信号不帮你提高信号本身的真实性前端设计不合理后端再干净也没用。跟电压检测同源的还有DAC输出模拟电压波形。DAC输出裸奔时会有一串台阶驱动能力弱通常也需要通过电压跟随器缓冲再用低通平滑。很多人觉得DAC只是输出跟检测无关但在实际检测板里DAC经常被用来生成偏置电压、比较器参考、或者模拟传感器输出DAC波形稳不稳直接决定检测系统的标定基准准不准。2.3 交流电压和SPWM波形采样偏置、滤波与有效值交流电压采样比直流麻烦得多。如果待测信号是市电或者变压器次级通常先通过电压互感器降压或者直接用高阻分压网络衰减到ADC可接受的范围。但ADC是单极性交流信号有负半周直接采会削波。常见做法是给信号叠加一个Vref/2的直流偏置把-1V~1V变成0V~2V软件里再减去偏置。更省心的做法是用真有效值芯片如AD8436先把交流有效值变成直流再采代价是成本和响应速度。SPWM电压也是热门场景。SPWM波形本质上不是正弦波而是一串宽度按正弦规律变化的PWM脉冲直接用ADC采瞬时值软件算出来的电压是乱的。要测SPWM的输出电压正确姿势是先滤掉高频载波PWM频率附近再采样基波。最简单就是加一个截止频率在基波和载波之间的低通LC或者有源滤波都行。热词里提到LCD段码屏产生交流电时会有一小段电流峰值这个现象常见于段码液晶的AC驱动驱动波形翻转瞬间会有瞬态充电电流测量电路如果用积分或者比较器做阈值判断很容易误触发需要在判断逻辑里加消隐窗口。交流采样还有个高频踩坑点偏置电阻网络的噪声。Vref/2偏置一般用两个电阻从参考电压分压得到但这个分压点如果直接接信号相当于信号源又并入了一个阻抗网络会改变增益。严谨点用运放搭一个加法器把信号和偏置真正相加而不是简单电阻并联。2.4 负压产生和电压比较器双极性信号与过压保护做双极性信号检测时经常会需要负电源。比如运放要处理-5V到5V的电流检测信号单电源环境下就得生成一路-5V。最简单的方案是电荷泵比如ICL7660把5V反相成-5V输出能力几十mA够给运放供电要求更高可以用反相Buck-Boost噪声更小但电路复杂一些。我自己的原则是只给模拟前端供电用电荷泵一旦负载电流大或者对电源纹波敏感就把DC-DC方案加上。热词里的“5V转-5V负电压产生电路”说的就是这类需求。电压比较器则更多用在过压、欠压保护上。普通比较器的问题在于临界点附近容易抖动输入信号一有噪声输出就开始反复跳。解决办法是加正反馈组成滞回比较器回差电压一般取信号噪声峰峰值的1.5到2倍。比较器如果是开漏输出还要接上拉电阻上拉电压要和后级逻辑电平匹配。用LM393这类片子时输入共模范围也要注意不能超过电源。这个电路虽然简单但配合分压网络就能做成一个不依赖单片机的硬件过压保护响应速度比软件快得多。顺带提一句PN结电压随温度变化的现象硅二极管正向压降大约每摄氏度下降2mV。这既是坏事精密测量时温漂也是好事可以做低成本温度传感器。检测电路里如果直接用二极管导通压降做基准温度一变读数就飘所以真正的基准都应该用带隙基准源原理就是利用正负温度系数相互抵消。另外检测电路里经常用到二极管钳位电压效应。比如ADC输入引脚加上钳位二极管限制输入摆幅在电源轨±0.7V内防止过压烧毁芯片。但这个钳位有代价信号接近电源轨时二极管的漏电流会畸变采样值。所以钳位保护只放在信号链路末端并且要确认正常工作范围内二极管完全不导通否则它就成了非线性负载。3. 电流检测方法全梳理3.1 采样电阻差分放大从LM358电路看懂电流采样电流采样最朴素也最常用的方法就是在电流回路上串一只精密电阻测它两端的压降。这个电阻叫分流器或者采样电阻欧姆定律直接生效I V / R。关键在于采样电阻的阻值和功率选择。举个例子要测0到5A的直流电流期望满量程压降50mV那么R 50mV / 5A 10mΩ。这个压降不能太小否则放大器和ADC的噪声会吃掉信号也不能太大否则负载端的压降会带来效率损失。功耗是 I²R5A时 P 25 * 0.01 0.25W必须选2512封装或者更大否则电阻过热会漂移。采样电阻的温漂系数一般选低于50ppm/℃合金电阻比绕线电阻稳定得多。采样位置分低端和高端。低端采样是电阻串联在负载和地之间测量电路地和工作地共地简单安全但负载地被抬高了一个小电压高端采样是电阻串联在电源和负载之间不干扰地平面但共模电压很高放大器需要高共模抑制比。LM358做低端采样的电路网上很多但我要泼盆冷水LM358的输入失调电压典型值在2mV左右如果采样压降只有50mV失调带来的误差就有4%这还不算温漂。所以低精度玩玩可以真正要测量建议用专用电流检测放大器比如INA240、INA282或者零漂移运放OPA333失调电压降到微伏级。还有一个经验采样电阻的引线要尽量短用开尔文连接方式把采样点直接引到放大器输入不要让功率电流流过信号线。很多设计把采样电阻放在大电流走线中间两端直接接放大器结果采样到的不是电阻压降而是走线的压降和磁感应噪声数据自然是飘的。3.2 霍尔传感器与电流互感器隔离方案怎么选需要隔离时采样电阻就不好使了这时用霍尔传感器或者电流互感器。ACS724系列是典型的霍尔电流传感器内部集成了低阻抗导体、霍尔元件和信号调理电路外部供电5V输出端通常以Vcc/2为零点灵敏度按量程不同而不同。以ACS724LLCTR-50AB-T为例标称量程±50A灵敏度约为40mV/A具体以数据手册为准带宽一般几百kHz。用这类传感器其实包含两层技术一是针对霍尔电流传感器精度的问题需要特别注意零点失调和温漂不少片子出厂有个零点电压上电后要软件校准二是传感器引脚的功率走线不要和信号走线交叉内部霍尔元件对磁场敏感外部的di/dt也会串扰。电流互感器则是电力电子里的老将。它只能测交流一次侧穿心导线相当于一匝二次侧接成小电流回路。核心规律是“一次电流由负载决定”CT的二次电流不是由CT本身决定的而是主回路负载电流经变比折算而来互感器只是按比例“复制”一个小的测量电流。二次侧绝对不允许开路否则会在二次端感应出危险高压所以现场接CT时第一步就是把二次端子可靠短接。电力系统里10kV配电网的短路电流保护三段式电流保护电流速断、限时速断、定时限过电流就是基于CT采样配合继电保护装置实现的每一段整定的电流值和延时不同用来区分近区故障和远区故障整定值通常要结合短路电流仿真结果来设定。3.3 单电阻电流重构低成本三相电流采样的原理与限制电机控制里三相电流采样有个省成本方案叫单电阻电流重构。FOC控制需要知道三相电流传统做法是每相一个采样电阻或者每相一个霍尔三个采样通道成本高。单电阻方案只在直流母线上放一个采样电阻利用IGBT/MOSFET不同开关组合下母线电流等于某一相电流的原理在PWM周期的特定时刻采样两次就能推出三相电流。这个方案的问题也很明显调制深度高或者低的时候某些空间矢量作用时间太短采样窗口不够电流会重构失败这就是所谓的重构盲区。解决思路有移相PWM、增加采样窗口、或者在盲区用观测器补偿。我在实际项目里单电阻重构配合FOC跑低速伺服是够用的但如果你做的是高动态响应或者低速大转矩双电阻甚至三电阻方案会更稳妥采样精度和可靠性是第一位的。电流速度FOC控制里电流环是内环速度环是外环电流环的反馈就是电流采样值。采样出来的电流毛刺太多速度环再努力也白搭所以本质还是要回到采样电路本身的滤波和调理。位置式PID控制输出电压也一样先保证反馈量可信再谈控制参数调节。3.4 电流镜的测量原理与layout匹配电流镜不算典型的测量手段但它经常出现在检测电路内部比如恒流源偏置、电流复制。两个同型号、同尺寸的MOSFET栅极相连一个管子接参考电流另一个管子就“镜像”出电流比例关系由宽长比决定。集成芯片里常用电流镜做静态电流检测或者偏置但我这里想聊的是它的版图匹配问题。版图热词是“layout版图电流镜匹配”这个太关键了。电流镜的两个管子如果不匹配镜像电流就会有百分之几甚至更大的误差。layout时要做到两只管子形状完全一致、周围环境一致采用共质心布局四周加dummy器件保证边缘刻蚀一致走线尽量对称金属层和方向也要一致。温度和机械应力也会让匹配变差所以布局尽量靠近热源均匀的位置。这跟采样电阻的温漂问题是同一个道理检测电路精度的上限很大程度上由器件的物理匹配和热状态决定。4. 采样电路工程落地要点4.1 采样输入滤波RC截止频率怎么定电流采样电路输入滤波值得单独说。采样电阻或者传感器出来的信号通常混着开关噪声尤其是电机驱动这类PWM场景不滤波根本没法用。最常见的滤波就是RC低通。截止频率 f 1 / (2πRC)怎么定这个频率我有个实用原则让它高于信号有效带宽的3到5倍同时远低于开关噪声基频。举个具体例子电流环带宽设为1kHzPWM开关频率10kHz那么采样信号的主要成分一般在几kHz以内RC截止频率取10k到30kHz比较合适。如果截止频率取得太低比如1kHz有效电流信息被削掉了电流环动态响应会变得迟钝取得太高开关噪声滤不干净ADC采样值里全是毛刺。RC电容也不要直接挂在采样电阻两端否则会吸收开关瞬态电流形成不可预测的尖峰正确做法是把RC放在放大器输出端或者ADC输入引脚前。滤波还有个影响延迟。RC低通对高频有相位滞后多级滤波叠加起来会吃掉环路相位裕度。所以我强调能用一级RC解决的不要加两级除非你确认相位余量足够。滤波不是越狠越好够用且不伤动态才是对的。4.2 电流纹波与EMC共模电流测量时的地回路问题电流纹波也是热点词。Buck电路的电感电流纹波公式为 ΔI (Vin - Vout) * D / (L * fsw)其中D是占空比fsw是开关频率。电感选型时一般让纹波电流控制在输出电流的20%到40%即ΔI约等于0.2~0.4倍的Iout。测量电流纹波时示波器电流探头或者采样电阻的带宽要足够否则真的纹波和假的滤波傻傻分不清。共模电流这个问题很多硬件人都头痛热词问“EMC共模电流最终回到哪里了”。共模电流确实是真实存在的电流它沿着信号线或者电缆流出去然后通过寄生电容比如电缆对大地、PCB对机壳、变压器层间电容流回源端形成闭合环路。你在近场看到的高频干扰很多就是共模电流在环路阻抗上产生的电压。检测共模电流的方法之一是电流探头卡在整束线缆上读到的就是共模电流之和差分探头卡单根线读到的则是差模加共模混合。做EMC整改时顺着共模电流路径找关键耦合点目标就是减小环路面积、增加回路上高频阻抗。做电流测量时地回路安排直接影响精度。采样电路和功率电路如果共用地线功率地的di/dt会在阻抗上产生压降被采样放大器当成信号放大。所以模拟地和功率地单点连接采样返回线走独立路径是保精度的基本操作。这也是隔离采样的价值所在地不共干扰就少一大半。4.3 漏电流、静态电流与蓄电池放电电流的测量漏电流检测和静态电流测量是低功耗产品的必修课。比如设备休眠时只有几微安的待机电流你用普通万用表的电流档去测表本身的压降和量程误差就把结果污染了。我的做法是先用微安级电流表粗测再用采样电阻加精密仪表放大器精测或者直接串联一个1Ω~10Ω的电阻用电压表测压降电流等于压降除以电阻。测蓄电池放电电流又是另一类需求。蓄电池放电电流可以从几毫安到几百安跨度很大低压供电端如果用采样电阻压降可能让设备欠压如果用霍尔传感器零点漂移在小电流时又很头疼。这里我建议分档处理大电流路径用低阻分流器比如0.1mΩ加高精度放大器小电流检测单独用低端微功耗运放放大后再合并到逻辑判断。不管哪一类都要注意静态功耗对被测系统的反向影响检测电路本身不能成为电池的额外负担。“NAND standby电流”这类存储芯片待机电流本质也是静态电流测量量级在微安到毫安之间测试方法和上面完全一致。真正难的是现场环境下的漏电流检测比如绝缘老化导致的对地漏电流这是安规与维护层面的电学测量要使用专门的漏电流钳表和隔离设备自己做板子时尤其要把安全放第一位。4.4 PCB布线载流与采样引线布局有个很实操的问题0.05mm线宽能过多大电流。PCB铜箔载流能力一般用IPC-2221经验公式或者查表估算。1盎司约35um铜厚下常规经验是1A电流大约需要1mm左右的线宽才安全。0.05mm线宽只有50um差不多2mil这么细的走线承载的电流非常有限大概也就几十毫安级别而且和温升要求强相关。如果你在小线宽上跑几百毫安铜箔温升会很明显最终影响采样电阻精度甚至烧断。所以采样电路布局的第一原则就是大电流路径和采样信号路径分离。分流器的功率端子接大电流走线而采样端子用细线单独引到放大器的差分输入这种四线制开尔文接法能把接触电阻和走线压降排除在外。在layout版图电流镜匹配那块我也强调过走线对称、器件匹配是保证精度的物理基础。我再补一个经验采样引线两侧最好加地线保护避免邻近走线的交变磁场在采样环路上感应出噪声特别是当采样信号幅度只有几十毫伏时一点感应电压都是大误差。5. 常见问题与排查技巧实录5.1 ADC电压跳变和采集值偏低的排查电压跳变和采集值偏低是我被问得最多的两个现象。排查顺序我固定如下先看ADC引脚波形用示波器看转换前引脚电压是否稳定再看供电和参考电压是否干净最后查软件配置。引脚波形不稳定多半是信号源阻抗太大采样电流抽不动解决方案是加缓冲或者减小分压电阻同时可以在ADC引脚并联一个0.1uF电容给采样电容一个快速电荷池。参考电压若随负载波动可以在基准输出端加100nF和10uF两级去耦。软件层面STM32可以增大采样时间比如设成55.5周期并连续读多次求平均。下面是一个简化示例。// 以8次采样取平均为例降低ADC随机噪声影响 uint32_t sum 0; for (int i 0; i 8; i) { sum HAL_ADC_GetValue(hadc1); } uint16_t adc_val sum / 8;如果你发现采集值整体偏小但稳定性很好优先怀疑分压电阻精度和参考电压校准。把所有分压电阻换成0.1%精度然后软件里用已知基准做两点校准通常能把误差压到1%以内。不要一上来就怀疑ADC坏了ADC本身很少坏通常是前端没伺候好。5.2 电压环电流环双闭环中的振荡抑制boost电路电压环振荡是个经典难题。双闭环里电流环是内环带宽高负责快速响应电压环是外环带宽低负责稳态整定。如果电压环带宽设得和电流环太接近两个环路就会互相激励表现出来就是输出电压低频振荡或者开机过冲。经验上电压环带宽取电流环的1/5到1/10相位裕度要留足45度以上。单相逆变器电压电流双闭环也是同一个设计逻辑。抑制振荡的另一个重点在PID参数。位置式PID控制输出电压时积分饱和非常常见电压一超调积分项疯狂累积输出控制量饱和系统反而更慢回稳。解决方案是积分限幅和抗积分饱和比如积分分离。微分项在数字实现里噪声很大一定要加低通滤波或者用不完全微分。调参顺序永远是先内环后外环先比例后积分最后微分环环都稳定了再合并看整体响应。在LTspice里用电流模式控制模型仿真降压变换器其实也就是把电流环和电压环分别搭出来用扫描波特图的方法看相位裕度先仿真再上板比盲调省时间得多。5.3 跨场景热点问题速查焊接参数、功放供电与音频电流声有些社区热词跟电压电流检测关系没那么直接但里面反映出的问题本质上还是在跟电压电流打交道。我挑几个做个速查。问题核心原因处理思路SKS焊接机器人电流电压参数设置焊接电流决定熔深和焊丝熔化速度电压决定电弧长度按工艺评定表设定焊丝直径匹配电流范围调节电压观察电弧稳定性TDA7498E最高供电电压功放电源电压上限受器件耐压和封装散热限制以官方数据手册为准超压会损坏器件还要保证散热余量场块78040各脚电压场输出集成电路各引脚功能不同供电、反馈、泵电源、输出查器件资料对应功能用万用表量各脚电压对比正常值来判断故障Sovits模型电流声音频推理结果存在底噪/混响残留本质是信号里的本底干扰用降噪插件、高通滤波训练阶段清理数据集重采样和底噪焊接机器人设置电流电压参数核心是按焊接工艺卡来焊丝直径决定了电流可用范围电压低了电弧短容易粘丝电压高了电弧长飞溅大原理上还是电流电压匹配。功放供电TDA7498E这类D类功放的最高供电电压以数据手册为最终依据不要听网上流传的“我加了xx伏没事”就超规格跑。场块78040是行扫描电路里的垂直输出IC各脚电压因为品牌和周边电路不同会有差异维修时对照参数手册量测更靠谱。Sovits模型的电流声说穿了是音频信号里叠加了本底干扰先从数据端降噪再在输出端做滤波跟硬件电路里给采样信号加RC滤波是一个思路。5.4 检测方案定型前的最终检查清单如果让我给一个检测项目做review我会按这份清单过一遍信号源阻抗是否匹配ADC输入规格采样电阻的功率和温漂是否留足余量差分放大器的共模电压和输出电压范围是否覆盖极端情况RC滤波的截止频率是否既低于噪声又高于信号带宽基准源是否足够干净PCB布线上采样路径和大电流路径是否分离软件校准和滤波是否已实现。这份清单本质上是对前面所有内容的浓缩。我一直觉得电压和电流检测方法不是一个“查手册就能搞定”的科目它是信号链、电源、地回路、软件配合在一起的结果。任何一个环节掉链子最终读数就会告诉你这里还有问题没解决。所以我个人很建议把每个检测方案都写成独立的小模块接口定义清楚精度和带宽需求写在注释里这样换项目、换平台时能快速复用。写到这里我把这几年在电压和电流检测这件事上踩过的坑、留过的笔记都翻出来了。说句实话检测电路没有太多“高大上”的东西但每一个环节都需要较真分压电阻到底取10k还是100k采样电阻是1mΩ还是10mΩRC滤波的截止频率放哪里霍尔传感器的零点漂移怎么校准。这些细节决定了系统能不能稳定工作在标称精度内。我个人的体会是遇到检测问题不要急着换芯片先拿示波器把信号链路从头到尾量一遍往往能省下好几个晚上的调试时间。最后分享一个习惯每个检测电路定型之前把关键节点的波形截图存档哪天量测异常了翻出来对比定位问题比重新分析快得多。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →