ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

低功耗电压检测电路:MOS管开关控制电阻分压,将待机电流降至nA级

低功耗电压检测电路:MOS管开关控制电阻分压,将待机电流降至nA级 做低功耗设备最烦的一件事就是电压检测。你想监测电池电压、电源掉电告警、或者某个关键轨是否正常最直接的方案就是拿两个电阻分压把电压降到ADC量程内然后让MCU去采样。但这么干有一个绕不开的坑分压电阻只要接在电池上就会一直耗电。哪怕你用了100k100k一节3.7V锂电池也会被稳定抽走18.5uA一个月就吃掉了13mAh以上。对一颗主打超低功耗的单片机来说这简直是不可接受的。我后来在项目里把电阻分压和MOS管开关结合在一起平时用MOS管把分压网络和地或电源断开让电阻上没有任何电流等到MCU需要读取电压时再打开MOS管一小段时间采样完立刻关掉。这样平均待机电流能做到uA甚至nA级别电路结构又简单到只需要多加一个几毛钱的MOS管。这篇文章就围绕这个思路把分压电阻取值、MOS管选型、控制时序、常见坑一次讲清楚。不管你是做物联网传感节点、手持仪表还是只想给DIY小项目加个电池电压监测都应该用得上。1. 低功耗电压检测的整体思路为什么非要用电阻分压加MOS管1.1 静态电流是续航的第一杀手电压检测电路本身消耗的能量往往比MCU休眠时的电流还大。很多人做电池供电产品时把主控休眠电流优化到了2uA以内结果一看整机功耗还是几十uA查来查去发现是分压电阻在偷偷放电。举个例子假设电池电压是3.7V你用了两个1M电阻组成1/2分压静态电流大概是3.7V / 2M 1.85uA。一天24小时下来就是44.4uAh。对于一块容量为100mAh的纽扣电池来说理论待机时间也就2250小时约94天但MCU本身的休眠电流可能只有0.1uA也就是说分压电阻把理论续航直接砍掉了一大半。如果为了降低ADC源阻抗把电阻改成100k100k静态电流变成18.5uA待机时间更短。这里就产生了一个死结分压电阻小源阻抗低ADC采样稳定、读数准但耗电大分压电阻大耗电小但源阻抗高ADC读数会偏低、跳动甚至因为输入漏电产生明显误差。所以要真正解决低功耗电压检测不能只靠优化电阻而是在“机制”上做文章。既然MCU不是每时每刻都需要知道电压那分压电路也就没必要每时每刻都通电。用一个MOS管把分压网络的供电路径切断是最直接、成本最低、也最容易调试的做法。1.2 MOS管开关把“一直耗电”变成“采样瞬间耗电”很多人会想到用MCU的GPIO直接控制一个电子开关但选型上是有讲究的。低功耗检测电路通常需要开关处于“关断”状态时电流尽可能小处于“导通”状态时压降和损耗不影响精度。用增强型NMOS做低边开关就是最常见的方式。这里简述一下电路结构电池正极先接分压电阻R1R1的另一端是分压检测点检测点再接R2到地但R2不是直接接地而是接到NMOS的漏极NMOS的源极接地栅极由MCU GPIO控制。平时GPIO输出低电平NMOS关断R2下端悬空整个电阻分压网络没有电流通路需要采样时GPIO输出高电平NMOS导通R2通过MOS管接地分压网络正常工作ADC立刻能读到电压。这样做的核心是MOS管的关断电流极小。常规小信号NMOS在Vgs0V时的漏电流是nA级别甚至更低几乎可以忽略。而MOS管又是电压驱动器件栅极输入阻抗极高MCU GPIO控制它时基本不消耗电流。所以待机时的额外消耗仅仅来自MOS管的亚阈值漏电和栅极下拉电阻这个量级完全不影响续航。1.3 为什么不直接用三极管或集成负载开关也有人问用三极管不行吗普通NPN三极管是电流驱动器件要让MOS开关这个角色稳定在饱和区基极必须注入电流。比如2N3904在Ic1mA时需要的基极电流大约是0.1mA虽然这个1mA是分压电阻的电流但基极驱动电流来自GPIO也是电池的电流。就算把基极电阻加大三极管也不容易进入深度饱和导通压降会变大。而且在低电流下三极管的Iceo漏电也明显高于MOS管的Idss做高阻分压时会引入额外的测量误差。用集成负载开关芯片当然更省心很多负载开关自带软启动、电流限制关断电流也很小。但问题是绝大多数负载开关面向的是给整条负载电路供电不是给一个高阻分压网络供电。它们内部通常有一个FET驱动电路静态电流可能在几uA到几十uA之间比自己搭一个MOS管大得多。而且集成芯片成本高、封装大一个简单功能搞得像杀鸡用牛刀。相比之下一颗SOT-23封装的NMOS、两颗分压电阻、一颗采样电容整个电路不到一块钱PCB面积也小。对于固定用途的电压检测来说这是最务实的选择。2. MOS管的关键知识点选型、驱动和寄生效应2.1 增强型NMOS和PMOS的导通条件想用好MOS管首先得理解它和电阻、三极管的本质差异。MOS管是一种电压控制器件栅极和源极之间只要有足够的电压差就会在半导体表面形成导电沟道。以增强型NMOS为例电流从漏极D流向源极S导通条件是Vgs Vgs(th)也就是栅极电压必须比源极高出一个阈值电压。如果源极接地那栅极只要超过阈值电压管子就能导通。PMOS则相反电流从源极S流向漏极D导通条件是Vsg |Vgs(th)|也就是源极电压比栅极高出一个阈值电压在低功耗检测电路里PMOS通常用来做高边开关放在电源与分压电阻之间。实际选型时最容易踩的坑是阈值电压不匹配。比如MCU的GPIO只有3.3V你却选了一个Vgs(th)典型值在2V以上的NMOS那在低电压、低电流工况下可能勉勉强强导通但一旦MOS管工作温度变化Vgs(th)会跟着漂导通就可能不稳定。更安全的选择是所谓“逻辑电平MOS管”比如AO3400、SI2302它们的Vgs(th)典型值在1.2V到1.8V左右3.3V驱动时导通余量充足。还有一个指标容易被忽略BVDSS也就是漏源耐压。如果你检测的是12V甚至48V系统必须保证MOS管的Vds额定电压有余量。比如12V电池用AO340030V耐压勉强可以但48V系统就要换成IRLZ44N这类高耐压逻辑电平管否则一个尖峰就能击穿。2.2 低功耗电路选MOS管看哪几个参数在低功耗电压检测这种微安级电流场景里选MOS管其实不需要追求极低的Rds(on)。因为流过MOS管的电流很小就算Rds(on)是5Ω在1mA电流下压降也只有5mV对分压精度影响有限。真正要盯的是这几个参数Vgs(th)能否被MCU GPIO直接驱动必须看阈值电压的最坏情况。漏电流Idss关断时漏电流越大待机功耗越高。常规小信号管是nA级可以接受。栅极漏电流Igss虽然极小但如果你给栅极加了一个1M下拉电阻需要计算分压避免误触发的风险。Ciss、Coss、Crss这几个电容参数决定了开关速度虽然低功耗检测对开关速度要求不高但如果驱动源阻抗很大开通/关断时间会被拉长。封装和功耗采样占空比极低实际平均发热很小SOT-23已经足够。只要不是反复连续开关不用担心热问题。如果你用的是超低功耗MCUGPIO驱动能力可能只有2mA甚至更弱这时选MOS管时还要注意总栅极电荷Qg。Qg太大GPIO需要拉更长时间才能把栅极电压充到导通阈值导致“导通期间”电阻分压电流持续更久平均功耗反而增加。小信号管如2N7002的Qg只有0.6nC左右一颗GPIO完全推得动而大功率管的Qg动辄几十nC请远离这个场景。2.3 寄生电容和米勒效应开关慢一点没关系但不能失控MOS管栅极和漏极之间有一个密勒电容Cgd栅极充电到阈值后漏极电压开始下降Cgd会通过米勒效应把栅极电压“钳”住形成一个平台这就是常说的米勒平台。在开关电源里米勒平台会导致开关损耗增大需要专门驱动电路去应对。但在低功耗电压检测电路里开关频率极低一秒最多开关一两次所以米勒平台导致的开关损耗几乎可以忽略。这里真正需要注意的是如果GPIO驱动电阻太大或者MOS管选得太大米勒平台持续时间可能延长到几十毫秒。在这段时间里MOS管处于半导通状态Rds(on)很大分压电阻网络已经通了但压降不稳定ADC读数就可能是在“中间态”采到的。我调试时见过这种情况采样电容充电已经稳定但MOS管栅极充电还没完成Vgs一直停在米勒平台上漏源之间压降始终有几十毫伏最后ADC读到的电压比理论值低不少。解决办法有两个一是把GPIO驱动改为推挽模式减小驱动电阻二是程序里在打开MOS管后延时足够长的时间再读ADC比如延时2ms甚至10ms。对于电池电压这种慢变量多等几毫秒完全没问题。2.4 顺带聊聊MOS管的电平转换应用有些低功耗设计的MCU工作电压只有1.8V而要检测的电源域是3.3V或5V。这种情况下如果MCU的GPIO直接驱动一个NMOS做低边开关导通效果完全没问题因为MOS管源极接地1.8V已经大于很多逻辑电平MOSFET的阈值电压。但ADC输入通常不能直接接3.3V以上电压所以还需要处理好检测点的电压范围。MOS管还有另一个非常常用的角色双向电平转换。利用一个NMOS和一个上拉电阻就能让1.8V和3.3V两块芯片的I2C总线互相通信并且关断时静态电流几乎为零。思路和低功耗检测里的“开漏上拉”很像。这种电路在电池供电设备里同样值得掌握因为它能省掉一颗电平转换IC。不过它和分压检测是不同的应用方向这里就不展开了。3. 电阻分压网络的设计与功耗核算3.1 分压比和电阻阻值的选择逻辑设计电阻分压网络第一步永远是确定分压比。原则很简单在最高被测电压下ADC引脚的电压不能超过参考电压VR同时留出一点保护余量。假设你检测的是3.7V锂电池最高充满电压4.2VMCU的参考电压是3.3V那么分压比至少要小于3.3/4.2≈0.786。如果取R2/(R1R2)0.5那4.2V时ADC读到2.1V留有余量也方便换算。第二步是决定电阻总阻值。总阻值越大静态电流越小这是低功耗设计追求的方向但阻值大了以后分压点的输出阻抗也会变大ADC采样误差随之增加。分压点的输出阻抗等于R1与R2的并联值。比如R1R21M时输出阻抗是500kΩ如果ADC输入漏电流是1uA漏电流就会产生0.5V的误差完全不能接受。所以纯粹的电阻分压不能一味求大阻值这是很多新手翻车的地方。合理的策略是先把电阻总阻值控制在1M到5M之间再用后级的采样电容或者软件调整时间去换取精度。具体怎么选我一般按这个表来初步估算总阻值3.7V下静态电流分压点典型输出阻抗适用场景100k37uA25k~50k对功耗不敏感采样速度要求高200k18.5uA50k~100k常规电平采集注意软件补偿1M3.7uA250k~500k低功耗设备配采样电容5M0.74uA1.25M~2.5M超低功耗必须做稳定等待可以看到1M到5M区间是比较符合低功耗需求的。我实际项目里用得最多的是R11M、R21M或者R11.5M、R2470k前者简单后者分压比更低、功耗更小。关键是后面要么给ADC留足够采样时间要么并联一颗采样电容。3.2 低边开关与高边开关放在电源侧还是地侧MOS管放在分压网络的哪一端会直接决定电路的安全性和调试难度这一节值得仔细看。方案ANMOS低边开关。NMOS放在R2和地之间GPIO高电平导通。优点是驱动简单因为源极接地Vgs就是GPIO电压容易算清楚。缺点是MOS管关断后分压点并不是0V而是被上端R1拉到接近电池电压的状态。此时如果ADC引脚直接连到分压点可能会出现一个危险情况分压点电压超过MCU电源电压电流通过ADC引脚内部的ESD保护二极管倒灌到VDD不仅增加功耗还可能损坏芯片。所以低边开关方案里分压点不能直接怼到ADC引脚中间必须加一颗串联电阻限制电流最好再对地接一颗肖特基二极管或钳位保护。方案BPMOS高边开关。PMOS放在电池正极和R1之间栅极接控制信号。关断时分压网络彻底与电池断开分压点通过R2到地ADC引脚是安全的这是它的优点。缺点在于驱动逻辑PMOS导通条件是源极电压比栅极高也就是要让栅极电压低于源极电压。如果电池电压是3.7VGPIO高电平3.3V要让PMOS关断栅极必须拉到至少3.7V以上显然GPIO高电平均不够。更麻烦的是电池电压一直在变化栅极关断电压也要跟着变所以不能直接用GPIO驱动PMOS必须加一级电平转换或使用专门的PMOS驱动。综合来看小规模低功耗设计里NMOS低边开关更常见因为它“能用一颗管子解决问题”。但前提是要处理好ADC引脚的保护。如果你不想纠结ESD问题也可以把采样电容放在串联限流电阻后面让分压点的高压先给电容充电完成后再采样实际上很多量产品是这么做的。3.3 并联采样电容破解高阻分压和ADC输入的矛盾高阻分压最让人头疼的问题是ADC的采样保持电容充电时间不够。MCU内部的ADC在采样时会通过采样开关连接一个内部电容通常只有几pF到十几pF但如果外部分压源阻抗是500kΩ那么充电时间常数τ500kΩ×10pF5us。虽然看起来很小但ADC需要达到12位精度需要多个时间常数才能稳定内部的采样时间通常几个us到几十us勉强够用。如果分压电阻到5M源阻抗2.5M时间常数25us采样时间不足就会出现读数偏低。破解办法是在分压点对地并联一个外部采样电容C1比如100nF。MOS管导通后先让外部电容充电到目标电压然后再用ADC读取电容上的电压。因为外部电容足够大ADC采样时从它上面取走的电量微乎其微读数自然稳定。代价是多等一段时间让电容充满。充电时间由分压点输出阻抗和C1决定例如1M/1M分压输出阻抗500kΩC1100nF时间常数是50ms要等约5τ也就是250ms才能完全稳定。这个时间对每秒采样一次的低功耗场景来说太长所以C1通常取10nF或22nF时间常数降到5~11ms等10ms就能接受。这里的功耗牺牲其实很小。每次采样电容从0V充电到目标电压能量消耗约为0.5×C×V²。以C1100nFV1V每秒采样一次为例平均功耗只有50nW折合电流约13.5nA3.7V跟电阻直接搭着不放完全不是一个量级。所以并联采样电容是高阻分压方案的“黄金搭档”。3.4 实例计算一节锂电池的量程和功耗我们用一节锂电池来跑一遍完整计算。假设电池电压范围是3.0V到4.2VMCU的ADC参考电压3.3V采集分辨率12位。先定分压比Vmax 4.2VVadc_max 3.3V分压比k Vadc / Vbat。为了让最高电压时ADC留一点余量取k0.5也就是R1 R2 1MΩ。在电池最高电压4.2V时Vadc 2.1V在最低3.0V时Vadc 1.5V。12位ADC在3.3V参考下的分辨率是3.3V/4096≈0.8mV对应电池电压分辨率约1.6mV对于显示电压和低电量告警完全够用。再算功耗。分压网络总电阻2MΩ3.7V中点电压下静态电流约1.85uA功耗约6.8uW。如果一直通电一年消耗约16mAh。但加入MOS管后假设每次采样导通10ms每秒采样一次实际平均电流为1.85uA × 10ms/1000ms 18.5nA一年消耗约0.16mAh。这样MCU的休眠电流通常会成为功耗大头分压检测部分基本不构成威胁。如果你觉得1M电阻采样电容带来的时间常数不够快可以把R1改成820k、R2改成820k总阻值降到1.64M时间常数略降功耗仍然在可接受范围。实测下来1M/1M是精度、功耗、稳定性的一个比较好平衡点。4. 完整电路实现与调试实录4.1 原理图设计元件清单和关键参数我实际搭过的一个典型电路如下大家可以照着抄VBAT --- R1 (1MΩ) --- NODE --- R2 (1MΩ) --- D | NMOS (AO3400) | GND NODE --- R3 (1kΩ) --- ADC引脚 NODE --- C1 (22nF) --- GND GPIO --- R4 (100kΩ) --- NMOS栅极元件说明R1、R21MΩ±1%精度电阻构成1/2分压。如果需要低功耗可以加大到2M但建议不要超过5M否则受PCB漏电影响太大。NMOSAO3400或SI2302逻辑电平管SOT-23封装。注意AO3400的Vgs(th)最大约1.4V3.3V驱动没问题。R31kΩ串联保护电阻放在ADC引脚前端。万一NODE电压意外超出MCU电源这个电阻能限制通过ESD保护二极管的电流。C122nF采样电容。不是越大越好太大导致采样等待时间长太小又压不住ADC采样瞬间的电荷抽取。R4100kΩ栅极下拉电阻防止MOS管栅极浮空。这个电阻会在GPIO输出高电平时和GPIO内阻产生一点分压但100k对于K级驱动内阻来说影响很小。这个电路的逻辑是GPIO输出高电平NMOS导通NODE点电压变成VBAT的一半经过大约几毫秒后C1充电稳定ADC读取然后GPIO输出低电平MOS管关断。关断后NODE点理论上仍然通过R2到地但由于MOS管不导通NODE只有一条到地的电容放电回路最终会缓慢放电至0V。这里有个细节NMOS在关断时分压网络没有电流但C1上的电会通过R2放掉放电路径是NODE → R2 → 漏极D → 不导通 → 源极S此时D-S断实际上放不了电。所以NODE会保持在一个浮空电压上只是由于没有电流源它会缓慢通过外部污染漏电路径泄放。这就是我前面说为什么低边开关后NODE在关断时可能不是0VADC引脚保护要做好的原因。4.2 软件控制时序先开MOS再等待再采样最后关断软件流程用一句话概括就是先开MOS再等待再采样最后关断。但实际工程里要注意几个细节。比如说用STM32的ADC我会这样写// 初始化GPIO为推挽输出初始为低电平 GPIO_InitStructure.Mode GPIO_Mode_OUT; GPIO_InitStructure.Pin GPIO_PIN_0; GPIO_InitStructure.Speed GPIO_Speed_2MHz; HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); void battery_measure(void) { uint32_t sum 0; // 1. 打开MOS管让分压网络通电 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); // 2. 等采样电容充满 HAL_Delay(5); // 根据C1和分压阻抗调整至少5ms // 3. 连续采样多次做软件滤波 for (int i 0; i 8; i) { sum adc_read_single(); } sum / 8; // 4. 关断MOS管进入低功耗 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); // 5. 根据分压比换算实际电压 voltage_mv sum * 3300 / 4096 * 2; }注意如果MCU支持在低功耗模式下把GPIO设置成高阻输入那关断MOS后可以把GPIO切换成输入高阻同时依靠外部的R4下拉电阻把栅极稳住这样不会额外消耗电流。如果GPIO始终保持推挽输出低电平也是没问题的因为推挽输出低电平时不会从电源吸收电流只是会有一个低电平通过R4接到栅极栅极流向地的电流几乎为0。延时时长取决于C1。我用1M/1M和22nF电容时实测5ms已经稳定如果你把C1加大到100nF延时至少要20ms以上。这里有一个类比给大电容充电就像往大水池里灌水源阻抗是水管粗细池子越大灌满的时间越长。想要快速测量又想要低功耗只能折中选一个适中的电容。4.3 实测波形和电流数据示波器接在NODE点和MOS管栅极上能看到两条曲线。GPIO变高之后栅极电压迅速爬升NODE点电压按照RC曲线慢慢上升几毫秒后进入平台GPIO变低之后栅极电压掉到0NODE点不再有持续驱动电压会缓慢跌落具体跌落速度取决于漏电和电容。我测过一组数据供参考条件数值被测电压3.70V锂电池R1/R21MΩ / 1MΩ采样电容C122nFMOS管AO3400等待延时5ms稳定后ADC读数1.85V接近3.70/2关断后系统待机电流1.2uAMCU休眠栅极下拉漏电开启采样平均电流约20nA1Hz采样如果你发现稳定后ADC读数比理论值低20mV以上先怀疑延时不够再看MOS管的压降。小信号MOS管在微安级电流下压降很小通常只有几毫伏除非选了一个Vgs正好卡在阈值附近的管子。另外一个常见现象是采样结束后NODE点会保持在某一个电压不会立刻掉到0。这会让下一次采样时起点不是0V而是一个残余电压导致单次测量偏高。解决方法是多等几个采样周期或者软件上忽略第一次采样值。这一点很多人容易忽略。4.4 高电压场景需要注意的额外问题如果是12V电池组、24V工业设备甚至48V电动自行车BMS这个电路的原理依然适用但有三个问题必须单独处理。第一个是电阻功耗。12V下如果总阻值还是2M静态电流6uA功耗72uW完全没问题但如果你为了ADC源阻抗把分压电阻降到100k静态电流120uA功耗1.44mW一直通电就会发热和耗电。所以高压场景反而要把电阻加大比如R13M、R21M分压比1/412V时ADC读3V静态电流3uA功耗36uW。第二个是MOS管耐压。12V系统选30V耐压的AO3400还有余量但24V、48V系统要选至少60V/100V的管子。低功耗检测电流很小不需要散热但耐压一定要留两倍以上余量毕竟电池系统有负载突变和感性尖峰。第三个是分压点电压。12V电池用1/4分压正常情况下ADC引脚是3V但如果R1被短路或者上端接错有可能直接把12V送到ADC引脚烧掉MCU。稳妥做法是ADC引脚串一个10k电阻再在ADC引脚对地并一个5.1V稳压管。稳压管在正常采样时漏电流很小但在异常状态下能保住MCU。5. 常见问题速查与避坑指南5.1 关闭MOS后ADC引脚还有电压一直在漏电这是低边开关方案最典型的坑。明明GPIO已经输出低电平NMOS也关断了但用万用表量ADC引脚发现电压还有1V多整机电流也比预期高了几十uA。原因在于MOS管关断后分压点NODE通过R1被电池电压拉高处于浮空状态。NODE到ADC引脚之间如果直接相连ADC引脚的内部ESD二极管会把这个电压钳位在VDD0.3V左右于是电池电流就经R1、ESD二极管流进MCU的电源轨形成一条“看不见”的漏电路径。解决思路有几种一是把采样电容C1放在ADC引脚前利用电容和串联电阻形成低通让NODE即使虚高也无法通过RC路径拉多少电流二是在NODE对地加一颗高阻放电电阻比如10MΩ把浮空电压泄放掉三是干脆改用PMOS高边开关方案从根上避免这个问题。我最常做的是第一种加第二种组合ADC前先串1k电阻然后芯片引脚侧放一个10MΩ到地电阻。这样即使NODE虚高漏电流也会被限制在微安以下。5.2 MOS管栅极浮空导致上电随机导通如果MCU复位期间GPIO是高阻态MOS管栅极就悬空了。栅极是一个极高阻抗的输入端旁边任何电场、静电、手指触摸都可能让它意外导通。在系统刚上电那几百毫秒里如果MOS管导通分压网络就会把电池电压引到ADC引脚可能超出MCU允许范围也可能造成不明原因的开机电流异常。解决办法是在栅极到地之间放一个100kΩ下拉电阻。这个电阻在正常工作时会分走极小电流但在GPIO高阻期间能把栅极钳位在0V保证MOS管关断。有些人只设置了MCU内部下拉内部下拉阻值通常几十k到几百k不是所有芯片都有而且抗干扰能力弱。外部电阻更可靠。5.3 ADC读数偏低或不稳定前面已经讲过高阻分压源会让ADC采样电容充不满导致读数偏低。如果你遇到偏低先量一下分压点实际电压用万用表高阻档测量如果分压点电压正常而ADC读数低基本就是ADC输入阻抗问题。可以从三个方向修增加ADC采样保持时间在分压点并联采样电容降低分压电阻阻值。我建议优先提高采样保持时间这是最不增加硬件的办法。很多MCU的ADC采样时间可编程从1.5个周期到几百个周期都有试着把采样时间拉到最大看读数是否提升。如果还不行再并联电容。另外软件滤波也很有必要。电池电压在带载时可能会有几十毫伏的跌落你连续读10次取平均比只看单次数值可靠得多。我的经验是连续读8次去掉最大最小值再平均既稳又不会太慢。5.4 潮湿环境让高阻分压节点“短路”这一点我在做户外产品时踩过坑。电路板洗板没洗干净或者环境湿度大NODE点到地的PCB表面会形成一层微弱的导电膜等效电阻可能只有几MΩ甚至几百kΩ。如果分压电阻本身是1M级别这个等效电阻直接并联在上面分压比就跑了读数会明显偏低。要解决这个问题首先PCB layout上把NODE点到其它线路的距离拉大避免并行走线其次可以涂三防漆或灌封胶最关键的是不要贸然把分压电阻用到10M级别。5M已经是极限了10M在干燥环境里没问题但一受潮就会变成灾难。产品要求高的时候还可以在外部分压网络后面加一颗电压跟随器把高阻节点和ADC隔离。但跟随器本身也有静态功耗要选微功耗运放比如纳安级的LMP7721之类适合对成本不敏感的场合。6. 延伸TL431反馈电路里的分压电阻为什么不能照搬6.1 TL431的上下分压电阻怎么算很多人在网上搜“ATX电源辅助绕组反馈电路中TL431的上下分压电阻阻值大概是多少”这其实和低功耗检测分压电路是两套逻辑但可以放在一起比较。TL431是一种可调精密并联稳压器它的参考端电压是2.495V。反馈电路里输出电压通过两个电阻分压得到参考点电压当参考点电压等于2.495V时TL431稳定工作从而调节光耦电流稳定整个电源的输出电压。如果设上分压电阻为R1下分压电阻为R2目标输出电压为Vout公式是Vout (1 R1 / R2) × 2.495V反推的话R1/R2 Vout/2.495 - 1。比如目标输出电压12V那么R1/R2 ≈ 3.81。如果取R21kΩR1≈3.81kΩ取标准值3.9kΩ如果取R210kΩR1≈38.1kΩ取标准值39kΩ。看起来和普通分压计算一样但为什么实际ATX电源里经常看到的是几十kΩ级别的电阻甚至更低因为TL431正常工作需要阴极电流一般大于1mA而且反馈环路的带宽和相位裕度也受分压电阻影响。电阻太小功耗大电阻太大噪声变大、环路动态响应变差还可能因为TL431参考端输入电流典型值0.5uA左右产生误差。在ATX电源辅助绕组这个场景里上下分压电阻阻值常见范围在1kΩ到47kΩ之间具体要看辅助绕组的输出电压和功耗预算。如果辅助绕组输出12V我看到不少方案用10k/2.7k或10k/3.3k的组合如果是5V输出可能用4.7k/4.7k的组合。注意这里的“上分压、下分压”对应的是输出端到参考端的两个电阻和检测电路里的R1/R2叫法一致但设计目标完全不同。6.2 反馈分压和检测分压的本质差异TL431反馈分压和低功耗检测分压虽然表面都是“上下两个电阻中间取一个电压”但背后的约束条件差异很大容易让人混淆。低功耗检测分压的首要目标是低功耗所以总阻值尽量大经常达到1M级别它没有带宽要求因为电池电压或电源电压变化很慢它对噪声的要求也不算高因为MCU可以做软件滤波。TL431反馈分压的首要目标是稳定反馈环路和提供足够的工作电流。TL431不是一个“零电流检测”器件它的阴极到阳极之间必须有电流才能让内部误差放大器和输出晶体管正常工作。如果分压电阻取到1M级别TL431参考端抽取的电流虽然只有微安级但反馈点源阻抗极高环路增益会受到影响动态响应变差电源输出电压可能会抖动甚至振荡。所以TL431的分压电阻一般不会超过几十kΩ。我在实际维修电源时测过一个常见的5V辅助电源TL431上分压用8.2kΩ下分压用6.2kΩ计算输出约5.08V而实际输出是5.12V。这说明分压电阻的误差、TL431参考端电流、光耦压差都会影响最终精度。如果你在低功耗检测电路里照搬这种kΩ级电阻功耗会大得离谱如果你在电源反馈里照搬低功耗检测的MΩ级电阻电源大概率无法稳定工作。所以这两种“分压”各按各的逻辑来设计不能混用。理解背后的原理就不会在网上到处问“TL431上下分压电阻到底该取多少”了因为这本来就没有固定答案它取决于你设计的输出电压、功耗预算和环路稳定性要求。做低功耗电压检测做到这里我个人体会最深的一点是电路越简单越容易在细节上翻车。两颗电阻、一颗MOS管看起来几分钟就能搭完但真正把它放到电池供电设备里长时间跑就会发现浮空节点、漏电、潮湿、ADC采样时序这些坑一个接一个。我现在的习惯是新板子回来先不急着写逻辑而是用示波器看一遍GPIO打开后分压点电压的爬升曲线再算一遍待机电流。等这两个数据都对了剩下的软件换算其实非常简单。如果你也正在做类似电路不妨从1M分压加一颗逻辑电平NMOS开始试跑通后再按需求慢慢优化电容和延时这条路最稳。
返回列表