拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

±1800V高压检测电路设计:电阻分压与ADC采样全解析

±1800V高压检测电路设计:电阻分压与ADC采样全解析 做高压测量第一反应就是拿电阻分压把电压降下来然后送 ADC。但真到了 ±1800V 这个量级事情就没那么简单了单颗电阻扛不住耐压、负压信号会把 ADC 输入端打坏、共模干扰和爬电距离一个都不能省更别提交直流都要能测。这篇记录一个我实际调过的电路把 ±1800V 的直流或交流峰值电压线性转换成 0~3V 单极性信号再进 STM32 的 ADC不用隔离探头也不需要双极性采样前端整套电路成本不高调试时踩的坑倒是不少一次性都写出来。1. 高压检测电路的整体设计思路为什么不能一根电阻分压完事1.1 单极性 ADC 与双极性信号的根本矛盾绝大多数单片机 ADC 的输入范围是 0~3.3V 或 0~5V内部采样结构也针对单极性信号设计。输入电压一旦低于 0V芯片内部的 ESD 保护二极管就会导通轻则采样值被钳位重则直接把引脚打坏。但我们要测的是 ±1800V分压之后依然是一个相对于地的正负电压。如果把 ±1800V 直接按 1:1200 分压得到的就是 ±1.5V负半周完全超过 ADC 允许范围。所以电路不能只做“降压”还必须做“电平搬移”把以 0V 为中心的 ±1.5V整体抬升到 0~3V 范围内。打个比方家里秤最大量程只能称 3kg现在要称的是“正向 1800kg”和“反向 1800kg”最简单的办法是先放一个 1800kg 的砝码让零点不再在秤的中心而是偏向一边。ADC 电路里的 1.5V 偏置就是那个砝码。1.2 三套可行方案怎么选我列过三种常见路线各有各的适用场景。方案优点缺点适用场景高阻分压 运放电平搬移成本低、带宽大、能保留瞬时波形信息无隔离安全设计需要自己做被测高压源参考地与系统地为同一点或浮地高压源经过人为定义参考点隔离运放 隔离供电前后级电气隔离安全性高成本高、带宽受隔离栅限制、需要额外隔离电源工业现场需要完全隔离、抗共模要求高真有效值 RMS 芯片如 AD8436输出直接是 RMS 电压软件简单动态范围有限无法还原波形细节直流和交流处理需要另加偏置只需要显示数值、不需要分析波形的仪器我这次选的是第一套。原因是它能把瞬时波形完整保留下来后级软件既能算直流也能算交流有效值还能算峰值适应性最强。缺点是安全隔离问题得自己兜住所以在 PCB 布局和防护器件上不能省。1.3 指标拆解范围、分辨率、带宽和安全裕度设计之前先把指标定下来避免做到一半发现带宽不够、满量程削顶。输入电压范围±1800V 峰值支持 DC也支持 AC 峰值不超过 1800V。输出电压范围0~3V对应 -1800V ~ 1800V。输入阻抗大于 10MΩ避免对被测高压源造成明显负载。信号带宽目标做到 10kHz 以上便于测量变频器、开关电源等非工频信号。输出精度常温下 ±1% 满量程通过两点校准可以更好。安全裕度每个分压电阻的耐压、功率、爬电距离都要留出 2 倍以上余量。这套指标定完心里就有数了所有设计和计算都围绕这些约束展开。2. 前端分压网络与偏置电路从 ±1800V 到 0~3V 的完整计算2.1 高压分压电阻一颗电阻扛不住 1800V先把 1800V 降下来最直观的分压比是 1200:1。高压臂总阻值用 12MΩ低压臂用 10kΩ理论上分压输出就是 ±1.5V但这里有个很容易忽略的问题一颗 12MΩ 的电阻直接跨在 1800V 上封装耐压基本都不够而且电阻两端焊盘之间爬电距离太短空气稍微潮湿一点就可能爬弧。所以实际电路里12MΩ 必须拆成多颗电阻串联。我用了 12 颗 1MΩ 电阻串联每颗电阻在满量程时最多承受大约 150V 压降。这样做的目的有三个第一单颗电阻的额定电压降下来了第二每颗电阻的实际功耗只有 150V × 150V / 1MΩ 22.5mW长期运行温升可以忽略第三串联之后即使某一颗电阻开路也不会瞬间出现高压直通低压的问题安全性更高。需要说明的是高压臂的分压电阻普通厚膜贴片电阻在高压下会有电压系数VCR阻值会随两端电压变化发生轻微变化导致高压时增益非线性。所以不要用太便宜的普通贴片电阻最好选择高压厚膜电阻或金属膜电阻并且多颗串联后每颗承受电压更低非线性也会被分摊。我实际选的是 1206 封装的 1MΩ 高压电阻单颗额定电压按 200V 看待150V 压降大约 75% 降额勉强可用如果追求更稳可以换成 16 颗 1MΩ让每颗只承受约 112VR2 同步调到 13.33kΩ。方案高压臂电阻每颗压降低压臂电阻实际分压比12颗 1MΩ12MΩ150V10kΩ1201:116颗 1MΩ16MΩ112.5V13.33kΩ1201:110颗 1MΩ10MΩ180V8.33kΩ1201:1我最后选了 12 颗 1MΩ 串联再加 10kΩ 低压臂的方案因为 10kΩ 是标准阻值温漂也更可控。2.2 运放电平搬移用同相加法器把负压变成正压分压网络输出的 Vx 是 ±1.5V接下来的任务是把 -1.5V~1.5V 映射成 0~3V。很多人第一反应是先加一个运放电压跟随器缓冲再进加法电路但这里有个大坑如果第一级用单电源运放做跟随器输入负压时会直接超过运放输入共模范围轻则失真重则损坏。要处理好负压得给运放加负电源成本就上去了。正确的单电源做法是把负压信号和 1.5V 基准先在同相端混合让混合点电位永远不为负再用同相比例放大电路把信号搬移出来。具体电路是这样的运放同相端接两个电阻一个电阻 R3 接 Vx一个电阻 R4 接 Vref1.5VR3 和 R4 都取 100kΩ。同相端电压 Vp 等于Vp (Vx / R3 Vref / R4) / (1/R3 1/R4)当 R3 R4 时就是Vp (Vx Vref) / 2因为 Vx 范围是 ±1.5VVref 是 1.5V所以 Vp 的范围正好是 0~1.5V不会出现负压。再看输出运放做成同相比例放大反馈电阻 Rf 和接地电阻 Rg 都取 100kΩ增益是 1 Rf/Rg 2所以输出Vout 2 × Vp Vx Vref于是输出范围就是 0~3V完美送进 ADC。这个设计最关键的地方就是“先混偏置再放大”而不是“先放大再混偏置”。前者全程只有一个运放单电源就能工作后者需要双电源或者额外处理负压。2.3 滤波和保护TVS、RC、ESD 的位置不搞错分压网络和电平搬移只是主干周边保护与滤波决定这套电路在恶劣环境中能不能活下来。保护的第一层在高压输入端。我在高压侧焊接了一个自恢复保险丝并在高压输入端子到机壳地之间并联了一颗气体放电管防止意外浪涌直接冲击分压电阻网络。注意气体放电管动作电压要选得比 1800V 高一些否则正常工作时漏电流会干扰测量我选的是动作电压 2500V 的型号。保护的第二层在运放同相输入端。虽然正常工作时 Vp 在 0~1.5V但如果 Vref 异常、接线错误或分压网络故障Vp 可能被拉出运放输入范围。我在 R3、R4 汇合点对地和对电源分别接了一颗低漏电二极管比如 BAV199把输入电压钳位在 -0.3V ~ VCC0.3V 以内。注意要选漏电小的型号普通 1N4148 在这种高阻抗节点上会引入明显偏置误差。保护之后是 ADC 输入滤波。运放输出到 ADC 引脚之间我加了一个 100Ω 电阻和 1nF 电容组成的 RC 低通滤波器截止频率约 1.6MHz主要滤高频尖刺。如果只需要测 50Hz 工频可以把电阻加大到 1kΩ、电容加到 10nF截止频率约 16kHz抗混叠效果更好但要注意 ADC 采样保持时间会变长必须保证采样前电容已充好电。3. 交直流测量策略与 ADC 采集校准3.1 采样时刻与采样点数有效值算法别瞎采硬件输出的是瞬时值不是有效值。ADC 采到的是一个随时变化的电压波形要还原交直流电压软件侧必须做对应处理。先说采样率。50Hz 工频信号一个周期 20ms。如果每个周期只采几十个点RMS 计算误差会很大我用定时器触发 ADC固定每个周期采 256 点采样率就是 12.8kSPS。对 50Hz 正弦波256 点每周期做 RMS 运算理论上精度已经非常好。如果是变频器输出频率可能到 400Hz需要提高采样率否则一个周期点太少RMS 结果会漂。再说采样窗口。RMS 算法要求采样数据尽量覆盖完整周期。如果只采一个不完整周期结果会有明显波动。最省事的办法是连续采多个周期比如采 512 点或 1024 点覆盖 2~4 个完整工频周期然后在软件里统一计算。我实际用 1024 点约 80ms 数据窗口效果和抗噪能力都好于固定 256 点。3.2 MCU 侧计算直流均值、交流有效值和峰值ADC 读到的是抬升后的 0~3V 电压要从里面还原真实电压步骤很简单先算出 ADC 对应的电压 Vadc再减去 1.5V 偏置最后乘以分压比 1200就是瞬时真实电压。#define ADC_REF_VOLT 3.3f #define ADC_BITS 4096.0f #define SCALE_GAIN 1200.0f #define OFFSET_VOLT 1.5f float adc_to_input(uint32_t adc_code) { float vadc (float)adc_code / ADC_BITS * ADC_REF_VOLT; return (vadc - OFFSET_VOLT) * SCALE_GAIN; }直流测量很简单直接把多次采样的瞬时值求平均平均值就是直流电压。交流真有效值要分情况。如果只想测交流分量需要从每个采样点里先减掉这一段数据的平均值相当于去掉直流偏置再平方平均开方。如果想把直流和交流一起算成“总 RMS”就不要减平均值直接对原始瞬时值做平方平均开方。float calc_rms(uint16_t *buf, uint32_t n) { float sum 0.0f; for (uint32_t i 0; i n; i) { float v adc_to_input(buf[i]); sum v * v; } float rms sqrtf(sum / n); return rms; }这段代码算的是包含直流分量的总 RMS对于纯交流正弦波1800V 峰值对应的 RMS 读出约 1273V对于 1800V 直流读出约 1800V。两种场景都正确。峰值测量就更直接在采样数组里找最大值和最小值经过上式的 adc_to_input 换算后两者差的一半就是交流峰值。如果有高频毛刺我会先做一次滑动平均滤波再找峰谷否则尖峰会被误认为真实峰值。3.3 两点校准法与温漂处理分压电阻、偏置基准、运放偏移都会带来增益误差和零点误差靠硬件精度硬扛很难做到 1% 以内。我用两点校准把系统误差抹掉。第一步校准零点。输入端接地也就是输入电压为 0V理论上 ADC 输出应该是 1.5V 对应的码但由于 Vref 误差和运放偏移实际码可能偏一点。把这个实际码记成 offset_code。第二步校准增益。输入端接一个已知电压最好用标准直流源加准确的 1800V也可以退而求其次用 1000V记录此时 ADC 码然后计算每伏特对应的 ADC 码变化量得到 gain_code。这里有个建议校准电压至少取量程的一半不然斜率受偏移误差影响很大。校准之后实际电压换算公式要改成uint16_t voltage_code (adc_code - offset_code) * COEFFICIENT;这个 COEFFICIENT 通过校准数据算出来等效于原来的 1200 倍的增益系数。两点校准能把电阻误差和偏置误差一次性消除。温度漂移是校准的主要敌人。分压电阻我选了温漂 25ppm/°C 的金属膜电阻运放选了低温漂型号Vref 是基准芯片输出不是从 MCU 电源分压硬拉的。这样整机温度从 20°C 升到 60°C零点漂移能控制在几十毫伏以内折算到高压端也就几十伏量级的误差。如果要求更高就得用低温漂电阻网络甚至恒温方案但普通设备没必要。4. 调试实录常见问题与排查方法4.1 ADC 读数整体偏低或偏高这是最常见的现象。刚焊完电路输入 0V 时 ADC 显示不是 1.5V而是 1.63V或者输入 500V 时计算出来只有 480V。先不用怀疑电路烧了大概率是偏置基准或分压电阻比例问题。排查顺序先用万用表量分压网络输出 Vx确认它和理论值是否一致再量运放输出看它和 Vx Vref 是否一致。如果 Vx 正常而运放输出偏高一般是 Vref 偏了重点检查基准芯片和分压电阻如果 Vx 偏低一般是高压臂电阻某颗阻值漂了或贴错值。另外要小心探头本身的影响。普通万用表输入阻抗只有 10MΩ直接跨在 12MΩ 高压臂上会把分压比拉偏测量结果偏低。试着用高输入阻抗数字电压表或者用差分探头不然你看到的“错误”其实是测量方式造成的。4.2 50Hz 工频干扰和高频噪声ADC 数值跳动幅度很大尤其是输入电压为 0V 时理论上应该是稳定的 1.5V结果采样值忽大忽小。这多是被测回路和 PCB 走线之间耦合进来的共模干扰。我把分压电阻到运放这段信号线全部走内层两侧铺地并且把输入引线改用带屏蔽的硅胶线屏蔽层单端接地。这个问题就基本消失了。还有一类噪声来自采样瞬间数字电路翻转特别是 STM32 的 ADC 引脚紧挨着 SPI 或 GPIO 走线。我会在 ADC 引脚附近放一个 100nF 电容到地并适当增加采样时间让采样电容充电更充分。4.3 高压下电阻冒烟或爬弧如果一上高压PCB 表面或者电阻封装边缘出现蓝色电弧十有八九是爬电距离不够。±1800V 不是 220V 那种级别高压端到低压端之间的空气间距和表面间距都要足够宽。我实际把高压焊盘到最近低电压网络的距离做到了 10mm 以上并且在 PCB 上开了 2mm 宽的隔离槽再刷一层三防漆。这样做之后即便在湿度较高的环境也没有再出现爬弧。还要检查高压臂每颗电阻的实际压降。如果某个电阻压降异常高说明串联分压不均通常是旁边有电容、二极管漏电或 PCB 污染造成泄漏电流。可以用低漏电的保护器件并保证 PCB 清洁。4.4 示波器测量时 ADC 电压变高有朋友问我为什么用示波器探头一接触 ADC 引脚读数会变高。这是示波器探头输入电容和输入电阻对高阻节点的影响。分压网络输出阻抗大约 10kΩ示波器探头一加上去等于在低压臂并联了一个几 pF 电容和 10MΩ 电阻改变了分压比输出电压自然变高。这个现象在高压电路调试中很常见不要以为是电路设计出了问题。正确做法是用有源探头或直接把示波器探头接到运放输出端因为运放输出阻抗很低探头影响可以忽略。5. 关键物料选型与最终体会5.1 元件清单简表我整理了一份可以直接照抄的物料清单按当前设计参数给出位号型号 / 参数数量关键选择理由R1~R121MΩ 1206 高压厚膜电阻1%12分摊高压降低 VCR 和功耗R210kΩ 0.1% 低温漂电阻1决定分压精度R3、R4、Rf、Rg100kΩ 1% 薄膜电阻4运放同相加法增益网络U1OPA2192 或 MCP6022 双运放1轨至轨、低偏置、单电源可用VrefREF3030 电阻分压得到1.5V1精密偏置避免零点漂移D1、D2BAV199 低漏电二极管2钳位保护漏电小Rc、Cc100Ω 1nF1组ADC 输入端滤波F1自恢复保险丝1高压输入端过流保护GDT2500V 气体放电管1浪涌冲击保护第一道防线这些物料都是常规件采购不困难。OPA2192 价格略高但胜在偏置电流极小、轨至轨输出干净如果成本敏感替换成 MCP6022 也能用只是精度稍微差一点。5.2 我踩过的几个独门细节这套电路里最容易被忽略的其实是 BAV199 的位置。最初我把 TVS 管直接并在分压网络低压臂上结果低压臂电压一高TVS 的结电容和漏电直接把有效值算法搞乱了。后来改成限流后钳位问题解决。保护器件不是越多越好放在信号高阻节点上要格外慎重。另一个细节是 PCB 上高压臂电阻之间不要铺实铜容易形成寄生电容导致交流高频时增益不平坦。我后来在高压臂电阻下用了大面积挖空处理交流波形明显更干净。如果是纯工频测量影响不大但既然标题写了“交直流”高频特性还是要照顾。最后再分享一个实用经验调试时先用低压直流跑通整个链路输入 0V 看输出是否为 1.5V 中点输入 3V 看输出是否有明显变化确认运放和 ADC 没问题之后再上高压。高压测试每次都要断开电源接线用绝缘工具操作不要在带电状态下触碰任何焊点。安全这条底线比任何设计指标都重要。
返回列表