资讯详情

低成本隔离4-20mA输出:PWM+光耦+滤波的完整设计指南

📅 2026/9/19 8:04:59 | 华诺云谱 👁 阅读
低成本隔离4-20mA输出:PWM+光耦+滤波的完整设计指南
1. 方案来源为什么工业现场总绕不开4-20mA做工业电子、仪器仪表或者现场设备改造的工程师对4-20mA电流环应该都不陌生。温度变送器、压力变送器、液位计、阀门定位器甚至不少PLC的模拟量输入模块底层信号标准都是4-20mA。搞了这么多年嵌入式我越来越觉得这个模拟信号标准真的很难被替代原因不复杂电流信号抗干扰能力强线损不会直接导致测量误差而且4mA的零点还能给两线制仪表提供静态工作电流断线了马上就能发现故障诊断也方便。但问题来了——单片机和DSP并不直接输出4-20mA。MCU出来的是数字量要么走DAC转成电压再经过V/I转换电路变成电流要么干脆用PWM加滤波把占空比变成直流电压再做电压转电流。DAC方案看着正规但有个很现实的问题工业级、带隔离的模拟输出通道成本实在压不下来。隔离DAC、隔离电源模块、精密基准源一套下来少说几十块对于量产型产品来说这颗成本压力很具体。于是不少人开始琢磨能不能用便宜的PWM加光耦来实现一个便宜但精度够用的隔离型4-20mA输出我把这套方案完整做了一遍从原理验证到样板调试前后差不多花了两周时间。这篇文章把整个设计思路、关键参数计算、以及调试中踩过的坑一次性讲清楚能给准备用低成本方案做模拟量输出的朋友省不少弯路。2. 低成本隔离4-20mA输出的整体设计拆解2.1 为什么用PWM而不是DAC先聊清楚选型逻辑。DAC当然精度高、纹波小、响应快数据手册翻出来性能指标都很漂亮但放到实际量产环境里问题就出来了。首先是成本哪怕是几块钱的国产DAC加上外围的基准、运放、隔离器件整体成本就上去了。其次是隔离结构如果需要隔离你得先选隔离式DAC或者用数字隔离器把SPI/IIC信号隔离再驱动非隔离的DAC两级结构一出来BOM就复杂了。PWM方案的本质是用MCU自带的PWM外设生成占空比可调的方波再用低通滤波器把方波的平均值提取出来等效成一个直流电压。MCU的PWM外设成本为零滤波器只需要电阻和电容整个模拟前端就是运放加晶体管成本非常可控。而且PWM的分辨率并不低一个16位定时器跑在72MHz输出频率20kHz左右的PWM理论上能实现约11位的有效分辨率配合校准之后达到0.1%的精度是可行的。有人说PWM响应慢低通滤波器需要时间稳定这确实是个约束。但工业过程控制本身就是慢变量温度、压力、液位这些物理量变化以秒甚至分钟为单位几百毫秒的稳定时间完全可以接受。用PWM做4-20mA输出本质上是在成本和响应速度之间做了一个合理取舍。2.2 光耦在系统里扮演的角色光耦在这个方案里的作用不是简单地用数字脉冲去跨隔离带而是要把整个模拟通路都隔离掉。输入端的PWM信号经过光耦传输到隔离侧后再经过滤波变成直流电压最后转换电流。这样的好处是隔离两侧的电源和地完全独立现场侧的干扰不会通过信号通路串进控制侧的系统地。这里要特别提醒一点光耦本身有传输延迟不同批次、不同温度下延迟不一致PWM的上升沿和下降沿经过光耦后会发生不同程度的偏移等效出来就是占空比失真。所以光耦不能随便选普通的低速光耦像TLP521上升沿下降沿都有好几微秒20kHz PWM一个周期才50微秒失真占比太高不太适合。最好选高速数字光耦比如6N137或者国产的亿光、冠西这类响应时间在百纳秒级别的器件。2.3 整体架构与信号流向整套系统的信号流向是这样的MCU输出PWM经过光耦隔离传到隔离侧光耦输出的是同频率、近似同占空比的方波再用二阶低通滤波器把方波变成平滑的直流电压最后用一个压控恒流源电路把电压线性映射成4-20mA电流驱动外部负载。这个架构的优点很明显隔离侧不需要MCU、不需要DAC、不需要复杂的数字逻辑就是一个纯模拟电路可靠性反而更高。现场侧只要提供一个隔离电源比如B0505S这类模块就能独立完成信号调理和电流输出。我实际搭出来的电路在24V供电情况下带载能力能做到750欧姆足够覆盖大多数PLC模拟量输入模块的输入阻抗。3. 关键细节解析与核心参数计算3.1 光耦选型与驱动电路设计光耦选型是整个方案里最容易埋雷的地方。如果只用TLP521做20kHz PWM传输你会发现输出波形已经完全变了样上升沿变得平缓占空比失真明显滤波后的电压跟理论值偏差可能达到1%-2%。这个误差靠软件校准可以修一部分但温漂没法修因为光耦的传输延迟随温度变化很大。我的建议是光耦选高速型响应时间tPLH/tPHL都在1微秒以内输出端加上拉电阻阻值根据光耦的CTR和工作电流确定输入端串联限流电阻保证IF在5-10mA范围以6N137为例输入端串一个330欧姆电阻接到MCU引脚MCU高电平3.3V时IF大约5mA左右输出端上拉电阻取4.7k到5V输出波形就是标准方波。这里有个细节6N137是集电极开路输出必须加上拉电阻否则输出根本拉不高。如果是5V供电的MCU限流电阻可以取220欧姆IF大约10mA。驱动能力上单片机的GPIO推挽输出完全能驱动光耦不需要额外的三极管缓冲。3.2 二阶低通滤波器设计与截止频率计算PWM信号经过光耦后还是方波必须滤波才能变成直流。滤波器的阶数、截止频率直接影响最终的纹波水平和建立时间。我用的是RC二阶低通滤波器两个电阻两个电容。以20kHz PWM、占空比50%输出为例来算方波经过一阶RC滤波后纹波幅值大约为Vpp的1/πfRC要在满载20mA档位上做到纹波小于4微安需要把纹波电压压到微伏级别一阶滤波很难达到二阶滤波器的衰减斜率是-40dB/decade高频纹波压制效果要好得多。截止频率f1/(2π√(R1R2C1C2))我实际取R1R210kΩC1C2100nF算下来截止频率约159Hz。对于20kHz PWM二次谐波在40kHz衰减量40kHz/159Hz的两倍对数比大约衰减50dB输出电压纹波被压到0.3%以内。如果要求高可以把电容加大到220nF纹波更低不过建立时间会变长。实测下来在满载变化时输出稳定到0.1%精度大约需要100毫秒左右工业场景完全能接受。有个经验值可以参考PWM频率选20kHz以上截止频率选在PWM频率的1/100到1/50之间这样纹波和响应时间都能兼顾。3.3 V/I转换电路与电阻取值逻辑滤波得到的直流电压最终要变成4-20mA的电流。这个环节我推荐用经典运放加晶体管的压控恒流源结构相比专门的集成V/I转换芯片比如AD694、XTR117成本低很多性能也够用。核心原理是用运放强制让采样电阻两端的电压等于输入电压。采样电阻R_sense串联在输出回路里流过它的电流就是输出电流运放通过调整晶体管的基极电流让R_sense上的压降和输入电压相等。输入电压0.4V对应4mA输入电压2V对应20mA。这个电路有几个关键参数要算清楚采样电阻R_sense决定转换增益IV_in/R_senseR_sense取100Ω那么0.4V对应4mA、2V对应20mA运放的供电电压Vs至少要比最大输出电压高2-3V因为晶体管有饱和压降、采样电阻有压降晶体管的耗散功率24V供电、20mA输出时如果负载150Ω晶体管上的压降约21V耗散功率0.42W需要选TO-252封装的小功率三极管电阻精度直接影响电流精度R_sense建议用0.1%精度、25ppm温漂的精密电阻不要用普通5%的贴片电阻。我用的是1206封装的精密电阻实测温漂控制在0.05%以内。4. 完整电路原理与实现过程4.1 电路各环节的信号变换计算整条信号链路可以用一张表理清楚环节输入输出关键关系MCU PWM占空比D方波幅值3.3V/5V平均值V_H*D光耦隔离方波方波幅值5V延迟引入微小占空比误差二阶低通滤波方波直流电压V_fV_f ≈ 5V × DV/I转换V_f电流I_outI_out V_f / R_sense举个例子要输出12mA输出电流对应的输入电压就是1.2V对应PWM占空比就是1.2/524%。整个链路的传递函数是线性的校准起来非常方便。实际做的时候我遇到过一个问题光耦输出上拉到5V但MCU的PWM高电平是3.3V滤波后的电压最大值就不是5V而是3.3V。这也行只是把映射关系整体平移了但要注意留给PWM满占空比到满量程之间的余量。我后来把光耦输出上拉电源改成5V用5V作为滤波基准这样PWM从0到100%对应0到5V映射关系更清晰。4.2 基于STM32的PWM配置要点以STM32F103为例PWM配置的关键参数是定时器时钟、预分频、自动重载值。我配置的PWM频率20kHz定时器时钟72MHz预分频PSC2自动重载值ARR1200这样实际PWM频率72MHz/(3×1201)≈19.98kHz接近20kHz。占空比寄存器CCR的调节范围是0到1200对应0到100%占空比。如果要输出4-20mA对应的占空比区间先算滤波电压4mA对应0.4V20mA对应2V在5V基准下占空比范围就是8%到40%对应CCR范围是96到480。MCU端设置PWM模式为PWM1极性选择高电平有效GPIO配置为复用推挽输出。光耦输入端并联了一个100Ω的电阻这个电阻的作用是加快光耦输入端的关断速度让下降沿更陡峭改善占空比失真。4.3 PCB布局与布线注意事项PCB布局决定模拟性能。我画板子的时候踩过一个坑滤波电阻电容离光耦输出太远中间隔了一条数字信号线导致输出纹波里多了不少尖峰脉冲。后来重新布局严格按照信号流向排列器件滤波电容靠近光耦输出引脚模拟地单点接地效果立刻改善。几个实用的布局原则光耦放在隔离带正中间两侧分别对应数字区和模拟区滤波电阻电容贴近光耦输出端走线短而粗采样电阻和运放的反馈网络远离开关电源和电感模拟地单点连接不要在滤波器和V/I转换之间形成地环路输出级晶体管和采样电阻附近开通风窗辅助散热5. 常见问题与排查技巧实录5.1 输出电流非线性与校准方法最常见的问题就是输出电流和理论值对不上而且不是成比例地偏是中间段偏、两端准的S形曲线。这种非线性通常来自光耦传输延迟引起的占空比失真。PWM占空比小时光耦延迟占的比例大占空比大时占空比失真方向相反导致中间段偏。排查思路是先分段测量分别设置占空比10%、30%、50%、70%、90%用万用表精确测量输出电流和PWM占空比的实际关系。描点画出来后会看到一条轻微弯曲的曲线。这时候用两点校准只能修增益和零点中间段的误差修不掉。解决办法是分段线性校准把整个量程分成4段或8段每段单独算增益和偏移在MCU里用查表加插值的方式修正。实测8段校准后非线性误差可以压缩到0.1%以内。5.2 输出纹波超标与滤波参数优化用示波器测输出电流时如果看到明显的周期性纹波峰值达到几十微安甚至更大问题基本出在滤波环节。先排查LC滤波器的截止频率是否合理PWM频率是否太低。如果用的是20kHz PWM截止频率却设到了1kHz那纹波衰减远远不够。解决办法是降低截止频率比如从1kHz降到200Hz或者在末端再加一级RC滤波。不过要注意截止频率降太多输出建立时间会变长。实测如果只靠滤波器把纹波压到极低动态响应会比较慢建议纹波目标设成满量程的0.1%也就是20微安以内这样响应和纹波能同时满足。另外光耦输出端的电源如果纹波大也会耦合到滤波后的直流电压里建议光耦输出上拉电源用LDO单独稳压。5.3 带载能力不足与电源裕量调整输出电流带不动大负载表现为接到PLC模块后电流上不去或者输出端电压被拉低通常有两个原因。一是电源电压不够24V供电串接一个750Ω的PLC输入电阻后负载压降就有15V加上采样电阻压降2V和晶体管的压降运放供电余量不足。解决方法是提高供电电压到28V-30V或者降低采样电阻值以减小压降。采样电阻100Ω时满载压降2V如果改成50Ω压降就变成1V对低压供电场景很有帮助。另一个原因是运放输出范围不够无法驱动晶体管进入线性放大区可以选择轨到轨输出运放比如LM358在单电源下输出到不了轨选TLV2372或者MCP6002这类运放就很稳。5.4 温度漂移与精度保持策略4-20mA输出对温漂比较敏感。光耦的CTR随温度变化晶体管的Vbe随温度变化采样电阻的阻值也随温度变化三级叠加很容易出现温度每升10度输出电流偏个几十微安的情况。我的做法是拆开来看光耦CTR变化影响的是前级电压可以通过校准来修正晶体管的Vbe漂移在运放反馈环路里会被自动抑制因为运放在闭环控制V(R_sense)晶体管的Vbe在环路之外不影响输出电流真正需要关注的是采样电阻的温度系数。所以采样电阻一定选低温漂的至少25ppm最好选10ppm的金属膜或精密合金电阻。如果要做宽温度范围的产品建议在软件里加一个温度补偿表用板载NTC或DS18B20测量环境温度查表修正PWM占空比。6. 方案优势与适用场景边界6.1 成本与性能的平衡点分析这套方案的硬件成本我很认真算过高速光耦6N137大约1块多运放用LM358五毛钱左右精密采样电阻一两块普通电阻电容加起来不到一块稳压芯片和隔离电源模块三四块散件加起来不超过10块钱算上PCB和焊接整个隔离模拟输出通道的物料成本控制在15元以内完全没问题。而用隔离DAC加精密运放的方案光隔离DAC就要30块钱以上加上隔离电源模块总成本翻倍。当然成本换来的代价是精度和响应速度的折中。DAC方案能做到16位分辨率、微秒级响应PWM方案的有效分辨率在12位左右响应在百毫秒级。对温度、压力、液位这类慢变量PWM方案的性能完全够用但如果是伺服控制、变频器这类需要快速响应的场景还是老老实实选DAC。6.2 适合应用的工控场景这套方案的典型适用场景我在实际项目里验证过几类传感器变送器把温度、湿度、压力传感器的数字信号转成标准的4-20mA电流环信号传给PLC工业设备改造老设备只有数字IO需要模拟量输出时用PWM加光耦的方案扩展模拟通道教学实验平台低成本实现隔离模拟量输出让学生理解PWM、滤波、V/I转换的完整链路远程数据采集在数据采集终端里输出隔离的4-20mA信号驱动指示仪表或执行机构需要提醒的是如果要求本安防爆认证或者精度达到0.05%以上这套低成本方案不太合适需要走正规的隔离放大器和精密DAC路线。6.3 后续可以做的功能扩展方向这套方案还可以沿着几个方向扩展。一是把输出从单路扩展到多路利用MCU多路PWM加多路光耦同时输出多路4-20mA信号适合多通道变送器。二是增加HART协议调制解调功能HART就是在4-20mA电流上叠加FSK数字信号频率1.2kHz和2.2kHz现有的模拟链路只要在输入端叠加正弦信号输出端加一个解调电路就能实现。三是增加自诊断功能利用MCU的ADC监控输出电流把采样电阻的电压实时回读判断输出是否超出量程或断线。最后分享点个人实操体会这套方案我前后做了三轮迭代第一版直接用普通光耦TLP521结果精度惨不忍睹第二版换高速光耦改了滤波结构精度上去不少但温漂还是不对第三版把采样电阻换成精密型、供电加了稳压才算真正达到工业应用的门槛。整个过程最深的体会是这种看似简单的模拟电路每个环节都藏着物理极限不能只靠计算得实际搭电路测数据才行。尤其是占空比失真这个问题理论算出来觉得没事实测下来才发现是主要误差来源。大家做的时候别怕踩坑多拿示波器看波形多记录数据方案最终一定可以收敛。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。