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

资讯详情

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

±1800V高压电压检测电路设计:电阻分压、交直流采样与ADC采集全流程

±1800V高压电压检测电路设计:电阻分压、交直流采样与ADC采集全流程 做硬件的人最怕听到“测高压”三个字。我最近在调一套大功率系统要监测对地 ±1800V 的直流母线电压顺带还得把交流输入的有效值读出来信号最终统一送进单片机的 ADC。这其实就是高压电压检测电路的典型场景把 ±1800V 的交直流信号安全地转换到 0~3V 的 ADC 采样范围。很多人第一反应是“电阻分压呗”但真动手会发现3600V 的压差、交直流两套处理路径、爬电距离、运放输入偏置电流、浪涌防护每一个环节都能让你改版三次。这篇文章把我的完整设计过程写出来包括计算、选型、校准步骤和翻车记录给同样在捣鼓高压采样的朋友一个能直接抄作业的参考。先说明前提这套方案是非隔离的要求高压侧的参考地和测量系统地是同一个电位点。如果你的场景是悬浮高压、需要强弱电完全隔离那要改用隔离运放或隔离 ADC不在本文范围内。1. 需求拆解±1800V 量级带来的三个“隐形难题”表面看这只是一个简单的量程换算输入 ±1800V输出 0~3V总增益就是 3/3600 1/1200。但真正动手设计时有三个容易被忽略的问题会卡住你。1.1 先算一笔账量程映射和总体增益我的目标映射关系是输入 -1800V 时ADC 引脚电压 0V输入 0V 时ADC 引脚电压 1.5V输入 1800V 时ADC 引脚电压 3V所以电路拆成两级理解先用电阻分压把 ±1800V 衰减到 ±1.5V再通过加法器把 1.5V 的直流偏置叠加上去得到 0~3V。分压比就是 1.5V / 1800V 1/1200取整后我实际用了 1/1201 的标称分压比最后靠软件校准把微小的比例偏差修正掉。为什么不直接分压到 0~3V因为电阻分压只能做“等比例缩小”它没办法在你输入 -1800V 时输出 0V——分压节点只会输出负电压而单极性 ADC 吃不了负压。所以分压到 ±1.5V 再加直流偏置是最直接的思路。1.2 交直流同时测通道必须分开这个标题里“交直流转 0-3V”是最容易踩坑的地方。直流测量好办分压后加偏置就行交流测量就不一样了交流信号有正有负你想知道的是它的有效值RMS而不是瞬时值。峰值检波、均值整流在波形畸形时误差都很大要精度就得用 RMS-DC 转换芯片。我在设计里把通道彻底分开了直流通道分压 → 缓冲 → 偏置加法 → 低通滤波 → ADC交流通道分压 → 缓冲 → AC 耦合 → RMS-DC 芯片 → 增益缩放 → ADC两个通道共用同一个前端分压网络但后续处理完全独立。这样做的好处是MCU 可以同时拿到“母线当前真实电压”和“交流信号有效值”互不干扰。1.3 非隔离方案的前提条件再强调一次这套电路能成立的条件是高压侧参考地必须和 MCU 的模拟地连在一起。如果被测对象是悬浮系统或者设备内部强电和弱电要求隔离那分压接地点会出现问题共模电压会把后面的运放和 ADC 全部干掉。真遇到隔离需求直接上隔离放大器或者隔离式 ADC不要用本文的拓扑硬扛。2. 电阻分压网络扛住 3600V 的不是一颗电阻而是“一串”分压网络是整个电路的核心也是风险最集中的地方。±1800V 意味着最大压差 3600V普通电阻单颗根本扛不住。2.1 为什么一颗电阻扛不住耐压与爬电很多人以为电阻的额定参数只有功率忽略了一个更关键的指标——额定电压。以贴片电阻为例0603 封装耐压只有 50V1206 大约 200V2512 可以达到 500V。如果让一颗 0603 直接承受 3600V接线瞬间就会沿电阻体表面爬电击穿轻则烧毁重则炸裂。所以我一开始就放弃了“单颗高阻值电阻”的方案改用一串电阻串联把 3600V 分摊到每一颗头上。串联的另一个好处是万一某一颗电阻被击穿短路剩下的电阻仍能限制电流不至于把整个板子烧穿。2.2 具体取值24 颗 5MΩ 串联的完整计算我选用的方案是高压臂用 24 颗 5MΩ 电阻串联总阻值 120MΩ低压臂用一颗 100kΩ 电阻。分压比计算R_high 24 × 5MΩ 120MΩ R_low 100kΩ 分压比 R_low / (R_high R_low) 100k / (120M 100k) ≈ 1/1201输入 1800V 时分压节点输出约 1.4987V输入 -1800V 时输出约 -1.4987V完全符合预期。再算每颗电阻的电压和功率。24 颗电阻分摊 3600V 压差每颗大约承受 150V远低于 2512 封装 500V 的额定电压留了三倍余量。功率方面P U² / R 150² / 5MΩ ≈ 4.5mW这个功耗完全可以忽略电阻不会发热。流过电阻串的电流也只有 3600V / 120.1MΩ ≈ 30µA对高压源的影响微乎其微。这里有个取舍要说明高压臂阻值不是越大越好。120MΩ 已经让源阻抗高达 100kΩ 级别如果阻值再翻倍PCB 表面的湿气漏电和运放的输入偏置电流带来的误差会指数级增长。我实测过在梅雨季节空气湿度 80% 以上时高阻网络附近如果有铺铜或助焊剂残留漏电流造成的漂移能吃掉整整 0.5% 的精度这在高压领域是不可接受的。2.3 温漂、源阻抗和缓冲的必要性电阻分压的精度依赖阻值比例而普通厚膜电阻的温漂通常在 ±100ppm/°C 以上环境温度变化 50°C 就能带来 0.5% 的误差。我用了温漂 ±25ppm/°C 的金属膜电阻或精密厚膜电阻虽然贵一点但长期稳定性好很多。分压节点对外的等效源阻抗是 R_high // R_low约等于 100kΩ。如果直接把分压点接到 STM32 的 ADC 引脚ADC 内部的采样保持电容充电电荷会抽走一部分电流等效于在信号源上并联了一个动态负载。ADC 输入阻抗通常在兆欧级但采样瞬间阻抗会骤降到几千欧读数跳变就是家常便饭。所以必须在分压点之后接一级高输入阻抗的缓冲运放这是整个电路能否稳定工作的关键。3. 直流通道偏置加法器如何把 ±1.5V“翻译”成 0~3V分压节点出来的是 ±1.5V 的双极性信号要变成 0~3V 的单极性信号得加一个 1.5V 的直流偏置。方案有很多我选了最直观的同相加法器输出关系就是 Vout Vref Vin。3.1 为什么需要偏置负电源从哪来如果直接用 STM32 的 ADC 采集 ±1.5V负半周会被 ADC 内部钳位二极管砍掉这就不需要过多解释了。要“硬扛”负输入运放的工作点必须能覆盖负电压。同相加法器里运放同相输入端的电位是 (Vin Vref)/2当 Vin 是 -1.5V 时同相端电位为 0V输出端也能正常输出接近 0V这个过程要求运放的负电源轨必须低于 0V所以我给运放供了一组 ±3.3V 的双电源。负 3.3V 不需要单独买电源模块一片 TPS60403 电荷泵就能从 3.3V 生成 -3.3V输出电流 60mA 左右带动两片运放绰绰有余。3.2 同相加法器电路与计算电路结构很简单缓冲运放的输出 V1±1.5V通过一个 10kΩ 电阻接到加法器运放的同相端Vref1.5V通过另一个 10kΩ 电阻也接到同相端同相端对地接 10kΩ 电阻反馈电阻 10kΩ。三个 10kΩ 输入电阻在加法节点处的叠加结果是V (V1 Vref) / 3 × 2? 不对重新算。标准双输入同相加法器当两个输入电阻相等且反馈比取 1 时更容易的做法是让同相端两个输入电阻 R1、R2 相等运放增益设为 2于是V (V1/R1 Vref/R2) / (1/R1 1/R2) (V1 Vref) / 2 Vout 2 × V V1 Vref实际连接V1 接 10kΩ 到同相端Vref 接 10kΩ 到同相端同相端对地接 10kΩ等一下如果同相端接了 V1、Vref 两条支路同相端点位的计算是 (V1 Vref)/2 的前提是两个源各自通过等值电阻到此节点。但同相端还有一个到地的电阻会影响分压比。正确做法是V1 串 10kΩ 接到同相端Vref 串 10kΩ 接到同相端不用再接对地电阻这样同相端 (V1 Vref)/2反馈回路 Rf 10kΩ同相端与输出之间接 10kΩ同时同相端通过 10kΩ 到地不对同相加法器的反馈是从输出接反相端反相端通过电阻到地跟同相端无关。同相端只需要确定输入节点分压。严谨的电路是V1 → R1 (10kΩ) → 同相端Vref → R2 (10kΩ) → 同相端同相端与反相端之间无需连接同相端不再接地反馈输出 → Rf (10kΩ) → 反相端反相端通过 Rg (10kΩ) 到地此时V (V1 Vref) / 2 Vout V × (1 Rf/Rg) 2 × V V1 Vref这样输出正是 0~3V。电阻都用 0.1% 精密电阻比例误差小稳定性好。3.3 Vref 生成与比例测量的技巧Vref 我用 3.3V 电源经过两个精密电阻分压得到12kΩ 和 10kΩ 串联中间抽头电压 3.3 × 10 / (12 10) 1.5V再经一片运放缓冲后输出。有人会质疑3.3V 电源本身有纹波和波动Vref 不稳定怎么办这里有个比例测量的技巧ADC 的参考电压也来自同一个 3.3V。当电源电压波动时Vref 会跟着变ADC 的满量程也会跟着变两者在转换结果里基本抵消。所以只要不是追求实验室级别的绝对精度这种“借电源做基准”的方案完全够用。当然如果系统里 3.3V 是开关电源直接出来的、纹波超过 50mV那就老老实实加一颗基准芯片比如 REF3025 分压出 1.5V别在这上面省钱。3.4 输出滤波、Charge-Kickback 滤波与 ADC 保护加法器输出后我加了一个一阶 RC 低通取 1kΩ 串联 100nF 对地截止频率约 1.6kHz。这个带宽对母线电压监测来说足够也能滤掉一部分开关噪声。在运放输出到 ADC 引脚之间再串一个 100Ω 电阻配合 ADC 引脚对地的 10nF 电容构成标准的 charge-kickback filter。STM32 的 ADC 在采样保持阶段会从引脚抽取瞬间电荷这个 RC 能吸收反冲避免采样值抖动。这个是实际调试中一个挺关键的细节不加的话即便用了低输出阻抗的运放采样值也可能在低位跳动。最后ADC 引脚前用两颗二极管 BAV199 做钳位保护把电压限制在 0~3.3V 之间。万一运放故障输出超量程ADC 还能保住。4. 交流通道RMS-DC 芯片把交流幅值变成纯直流直流通道搞定了交流通道是另一个战场。4.1 为什么选 RMS-DC 而不是峰值检波或均值整流交流电压的测量有几种做法峰值检波、均值整流、真有效值RMS转换。前两者对波形形状有严格要求正弦波时还能对付遇到斩波、畸变、开关电源的毛刺电压误差能到 10% 以上。RMS-DC 芯片做的是真有效值转换不管波形什么样输出都对应真实的发热等效值这是我要的。市面上常见芯片有 AD736、AD8436、AD637 和 LTC1966AD736 便宜且外围简单我选它作为主方案。4.2 AD736 配置与增益设计交流支路从分压网络缓冲器后取信号先经过一个 1µF 的薄膜电容做 AC 耦合把直流分量隔掉只留交流成分。分压后的最大信号是 ±1.5V 的正弦波对应有效值约 1.061V。AD736 在输入 1V 以上时精度在 0.3% 左右这个量程用着正合适。AD736 的外围主要是两个电容Cav 和 CF。Cav 是平均电容决定了输出纹波大小和响应速度我用了 33µF纹波可以控制在 0.2% 以内代价是输出建立时间约 100ms 量级——对电压监测来说完全无所谓。CF 是输出滤波电容用 10µF 配合内部的 100kΩ 输出电阻形成约 0.16Hz 的低通进一步把纹波压下去。后级增益怎么定如果 1800V 指的是交流有效值满量程那么最大输入 RMS 1800V分压后为 1.5VAD736 输出 1.5V DC要放大 2 倍才能到 3V 满量程。如果你的“±1800V”指的是峰值量程那最大 RMS 只有约 1273V对应 AD736 输出 1.061V后级增益就要改成 2.83 倍。这两种定义差一个反馈电阻原理上完全一样选型时根据自己的需求定即可。4.3 通道切换和采样率的坑如果你打算用一颗 ADC 分时切换直流和交流通道我要提醒一句RMS-DC 芯片的建立时间慢切换通道后要等 100ms 以上读数才稳定这会严重拖慢采样节奏。我的做法是用 STM32 的两个 ADC 通道一个挂直流输出一个挂交流输出同时采样互不等待。STM32 的 ADC 支持 scan 模式配置成规则通道序列一轮 DMA 读回两路数据效率很高。交流通道的带宽很低MCU 端只要以 100Hz 左右的速率读取即可不做高速采样。真需要看波形那是另一套示波器方案的事了。5. 校准与实测精度是靠两点校准“抠”出来的别指望 1% 电阻配出来就有 0.1% 的精度。分压电阻、运放失调、Vref 误差每样都在叠加不校准的话误差在 1% 到 2% 是常态。我这里的实测流程是用高压源给已知电压记录 ADC 码值反推真实增益和零点再把这些参数写进软件。5.1 误差来源盘点先把误差账算清楚分压电阻精度高压臂和低压臂的标称比是 1/1201实际可能有 ±1% 偏差运放输入失调电压好的 FET 运放失调也就 100µV 以内折算到输入高压侧要乘 1201约 0.12V可忽略但不能不防Vref 精度电阻分压得到的 1.5V 误差在 ±0.5% 左右直接影响零点RMS-DC 芯片的转换误差AD736 在典型的输入幅度下精度约 0.5%这四类误差叠加起来满量程误差可能到 2%。校准的思路很朴素找一个可靠的高压基准源输入已知电压测出实际 ADC 码然后用两点确定一条直线把比例系数和零点偏移都修正掉。5.2 两点校准实操流程我的实际操作上电预热 10 分钟让电阻和运放温度稳定输入 0V记录 ADC 读数记为 offset。理论上是 1.5V 对应的码值 1862但实际可能差一些输入 1800V或者 900V 也行只要是高精度源记录 ADC 读数记为 span计算斜率 k (V_high - V_low) / (ADC_high - ADC_low)把 k 和 offset 存进 Flash软件运行时电压 (ADC - offset) × k如果方便把负输入也测一组检查整个量程的线性度。线性度差通常是运放输出接近电源轨导致的这时候就要看看输出是否还有足够的余量。5.3 实测数据与温漂结果我用的 12 位 ADCVref 3.3V校准后得到一组典型数据如下表施加电压理论 ADC 码实测 ADC 码换算电压误差-1800V23-1798.4V1.6V-900V932930-902.3V-2.3V0V18621860-1.6V-1.6V900V27922795901.6V1.6V1800V372237251801.1V1.1V最大误差约 2.3V满量程的 0.13%这个精度对工业监测足够了。如果你想更好一是换更高精度的分压电阻二是把 ADC 换成 16 位的 ADS1120、MCP3421 之类三是把运放换成零漂移的如 OPA2188。温漂方面我做了一个粗测把整个分压板放进恒温箱从 25°C 升到 70°C输入固定 1000V读数漂移约 0.3%。用 ±25ppm 电阻和零漂移运放后漂移降到 0.1% 以内。如果后期发现温漂明显可以在电阻旁边贴一个 NTC软件查表补偿。5.4 ADC 采样与软件滤波硬件做到位了软件也别偷懒。STM32 ADC 的采样时间我设成了最慢档采样周期 239.5 个 ADC 时钟这对高阻信号源很有帮助。采样触发用定时器周期性启动避免主循环抖动影响采样节拍。使用去极值平均滤波对付偶尔出现的尖峰很有效。我的代码风格如下uint16_t adc_filter_read(ADC_HandleTypeDef *hadc, uint8_t count) { uint32_t sum 0; uint16_t buf[8]; uint16_t min 0xFFFF, max 0; for (uint8_t i 0; i count; i) { HAL_ADC_Start(hadc); HAL_ADC_PollForConversion(hadc, 10); buf[i] HAL_ADC_GetValue(hadc); sum buf[i]; if (buf[i] min) min buf[i]; if (buf[i] max) max buf[i]; HAL_Delay(2); } // 去掉一个最大值和一个最小值再做平均 sum - min max; return (uint16_t)(sum / (count - 2)); }这个函数很简单但能把 50Hz 工频干扰和偶发的采样毛刺压下去。注意如果采样速率远高于工频连续采样平均也能有不错的滤波效果但去极值平均对尖峰更有效。6. 踩坑记录爬电距离、湿度、浪涌每一个都让板子冒过烟最后聊几个我实打实踩过的坑都是文档里不会写的。6.1 爬电距离不足通电瞬间看到打火第一批板子我把高压电阻焊在普通 PCB 上电阻之间间距只有 1mm。通电升压到 1500V 左右板子背面开始冒烟仔细一看电阻两端的焊盘之间出现了贯穿碳化的痕迹——爬电击穿。3600V 的压差不是开玩笑的爬电距离至少要按 10mm/kV 估算3600V 就是 36mm。我的改法是高压电阻立式安装电阻本体悬空引脚之间留出 4mm 以上的空气间隙板面在高压区域开了一道贯通槽把爬电路径彻底切断。改完之后2000V 连续运行几个小时都没有问题。6.2 高压电阻选型翻车0603 直接崩一开始贪便宜用了一串 0603 封装做分压。低压测试没问题到 1000V 时其中一颗电阻表面直接拉弧烧黑。原因就是我前面说的0603 额定电压只有 50V哪怕每颗电阻只分到几十伏瞬态过压一来就突破极限。后来全部换成 2512 封装的厚膜高压电阻每颗实际承受的电压控制在额定电压的三分之一以内并且每颗两端并联了一个 2MΩ 的均压电阻不对串联分压本身不需要均压电阻只要阻值一致性够好就行。这里更正确的做法是选电压系数小的电阻高压厚膜电阻的电压系数通常标在手册里别买那种当普通低阻用的型号。6.3 没有浪涌防护一次测试打坏一片最惨的一次我用一台高压电源直接给分压板加电结果电源上电瞬间有过冲把加法器的运放打穿顺带把 STM32 的 ADC 引脚也干掉了一个换芯片才救回来。从那以后我在输入端并联了一颗气体放电管 GDT分压网络输出端加了一颗双向 TVS 钳位ADC 引脚前再串联 1kΩ 电阻限流。三级防护下来就算输入端误接入瞬态高压能量也会被 GDT 泄放到地TVS 把电压钳住1kΩ 电阻限制流入 ADC 的电流。多一道防护多一分安心高压电路上永远不要赌“不会有意外”。6.4 高阻网络的湿度与漏电梅雨天读数漂120MΩ 的高阻网络对湿度非常敏感。有一年梅雨季校准好的板子隔了一天再测零点漂了将近 30 个码折合电压十几伏。查了半天才发现分压网络附近 PCB 表面吸附了水汽形成微弱漏电通道。解决办法有三个第一高压区域 PCB 表面开槽切断漏电路径第二整板清洗后喷涂三防漆把高阻区覆盖起来第三把分压电阻设计成悬空立式安装不让电阻体直接贴在 PCB 表面上。做了这些之后同样的湿度条件下零点漂移降到个位数码值。最后再啰嗦几句安全方面的实操体会。调高压电路不要一个人加班时通电至少旁边有同事照应改接线之前务必先用放电棒把高压节点对地放电万用表确认电压归零再动手。±1800V 只是看起来温顺的“直流数字”它真出问题的时候不会给你第二秒反应时间。这批板子调完我最大的感受是——高压采样的难点从来不在原理图而在你对待每一毫米间距、每一颗电阻选型的敬畏心。
返回列表