资讯动态

两路DC/DC并联均流电源设计:最大电流法与MSP430闭环

发布时间:2026/11/6 5:44:32 来源:尧图企业网站定制
简介面向电子设计竞赛参赛者与开关电源方向学习者的2011年全国电子设计大赛A题完整论文聚焦两路开关电源模块并联供电与自动均流系统的设计实现。文档以MSP430单片机为控制器、LM2576为电源芯片围绕赛题基本要求与发挥部分展开方案论证比较主从法、平均电流自动均流法、热应力自动均流法和最大电流均流法等策略的取舍并给出键盘设定输出电压、负载变化下自动分配电流、效率测试、过流保护及自动恢复的实现与调试思路。包内为1个docx文档压缩包约617KB篇幅完整、目录清晰适合按“题目要求—方案比较—模块选型—电路与软件—测试结果”的顺序查阅。已有804人学习下载可作为电赛电源类赛题复盘、论文写作和方案选型的参考样本。1. 两路并联一带载就失衡这道 2011 年电源题到底卡在哪两路 DC/DC 并联给同一个负载供电空载时两路输出电压都稳得像模像样一带上 2A 负载一路电流顶到限流点另一路在旁边摸鱼——这是并联供电最典型的翻车现场。2011 年一道电子设计竞赛 A 题把这个场景做成了硬指标8.0±0.4V 输出两路模块按 1:1、1:2 甚至 0.5~2.0 任意比例自动分配总电流误差压到 2% 以内还要 4.5A 短路保护能自恢复。这份资源就是当年针对该题写成的一篇完整技术论文从四种均流方案的论证、MSP430F149 加 LM2576 的选型到高边电流采样、12 位 AD/DA 链路、软件流程和实测数据表一条线走完。它适合正在做并联供电、数控电源、恒流源课设的读者想要一份能照着搭、照着改的完整方案而不是又一篇讲均流原理的科普。2. 系统架构拆解MSP430F149 与两路 LM2576 的闭环怎么搭这套系统的骨架其实很朴素两片 LM2576-ADJ 各自构成一路降压型开关电源输出端并联到同一个负载每路输出串一个毫欧级分流电阻用高边电流检测放大器把电流转成电压送进 ADC单片机算出差值再写 DACDAC 的输出经运放跟随后注入 LM2576 的反馈脚等效于动态修改反馈电阻的分压比从而微调这一路的输出电流。整条链路是一个慢速的软件闭环开关电源本身的 52kHz 环路不动软件只在外面套一层几十毫秒量级的均流环。这个结构的好处是把「稳压」和「均流」彻底解耦LM2576 自己负责把 8V 稳住软件只负责在两路之间微调那一点点电压差。两路电源并联时谁的输出电压高一点点谁就多扛电流软件要做的就是故意制造并控制这个微小差值。2.1 从题目指标倒推硬件选型选型不要凭感觉从左边的指标往右边推每一项都能落到具体器件上。题目指标对硬件的实际要求最终选型输出 8.0±0.4V总电流 1.0~4.0A单模块至少扛 2A 且留余量可调输出LM2576-ADJ3A 降压型开关稳压两路电流按 1:1、1:2 分配误差 ≤5%发挥部分 ≤2%电流采样分辨率优于 1%采样点要准25mΩ 分流电阻 INA270 高边检测电流比例宽范围可调0.5~2.0控制量输出分辨率至少 10 位DAC781112 位串行乘法 DAC短路保护阈值 4.5A±0.2A可自动恢复关断动作要快且必须能被软件重新拉起直接拉 LM2576 的 ON/OFF 脚效率不低于 60%发挥部分继续提高不能用线性稳压必须开关拓扑开关电源 肖特基续流键盘设定、液晶显示主控要有足够 IO 和运算能力MSP430F149硬件乘法器、低功耗、片上 12 位 ADC这里有个容易被忽略的点MSP430F149 片上本来就有 12 位 ADC但论文里实际采样用的是外挂的 ADS1232。原因很现实——片上 ADC 挂在 MCU 内部参考源和地都跟数字部分纠缠在一起开关电源的纹波一耦合进来读数就开始跳舞。外挂一颗 Σ-Δ 型 ADC把模拟前端和数字域在物理上分开布线上更容易做星形接地。常见做法是片上 ADC 用来监测输入电压、温度这类慢变量电流这种要算误差比例的量走外置 ADC。2.2 四种均流方案的取舍为什么最后选最大电流法论文里比较了四种主流均流方法这段论证是整份材料里最有价值的部分之一因为它把「为什么不用」讲清楚了。方案工作方式优点致命问题主从法指定一路做电压源其余做电流源电流值由主模块下发逻辑简单、均流精度高主模块一挂整个系统崩没有冗余平均电流法各模块经电阻接到公共均流母线 CSB母线电压代表平均电流精度高、不需要外加均流控制器母线短路或任一模块掉线会把母线拉低全体输出电压被拽下来热应力法按模块温度分配电流热的少扛、冷的多扛延长整体寿命响应慢跟电流精度指标不是一回事最大电流法用最大值比较器把电流最大的那路信号送上母线其余模块跟随天然冗余任一模块失效不影响母线母线需要隔离否则短路会拖垮全体选最大电流法的核心逻辑是冗余。这道题要求两路并联一旦某一路因为过流保护被关断剩下那一路必须能独立撑住主从法在这种情况下直接失效平均电流法会因为母线电压塌陷把幸存模块也拉下水。最大电流法里电流最大的模块自动成为「事实上的主」它的采样电压抬着母线走其他模块把自己电流往母线值上靠它一旦退出母线电压自动由下一个最大值接管不需要任何角色切换逻辑。提示最大电流法的均流母线一定要串限流电阻或二极管再做比较否则母线对地短路时所有模块会一起降流。这是这类方案唯一的硬伤硬件上补一刀就行。2.3 信号链一次采样到一次调压要经过几个环节把整条链路摊开看从负载电流变化到 DAC 输出修正中间有五个环节每个环节都会引入误差和延迟。环节器件关键参数误差贡献电流-电压转换25mΩ 分流电阻2A 时压降 50mV电阻精度 ±1%温漂是主要来源差分放大INA270增益 20V/V共模 -16~80V失调电压、增益误差模数转换ADS123224 位 Σ-Δ双通道差分有效位取 12~16 位噪声决定下限运算与控制MSP430F1498MHz硬件乘法器定点运算量化误差数模转换DAC781112 位需外部基准基准漂移直接变成输出漂移INA270 这一环要特别注意它的输入是分流电阻两端 50~100mV 的微小压差而这两端对地的共模电压接近 8V。普通运放做差分放大需要四颗精密电阻匹配匹配度差一点共模抑制就崩了。专用高边检测芯片把激光修调的电阻网络做在片内共模抑制比能到 100dB 以上这是它能测准的根本原因。再看 DAC 侧。DAC7811 是电流输出型乘法 DAC它的输出电流正比于「基准电压 × 数字码」需要外接运放做电流-电压转换转换后的电压经过一个电阻注入 LM2576 的反馈脚。这一步等效于把反馈分压网络的下臂电阻变成了「固定电阻并联一个受控电流源」DAC 输出变化时反馈脚的等效分压比跟着变输出电压就被拉动了。3. 关键电路逐段过反馈网络、高边采样、AD/DA 与过流关断3.1 LM2576 反馈网络输出电压只由两个电阻决定LM2576-ADJ 的工作原理很干脆内部把反馈脚第 4 脚电压稳在 1.23V流入反馈脚的电流近似为零。所以外部分压电阻上流过的电流相等输出电压完全由 R1、R2 的比值确定Vout 1.23 × (1 R2 / R1)题目要求 8.0V反推 R2/R1 ≈ 5.5。工程上不会直接凑这个比值而是先定下臂电阻 R1常见 1kΩ保证分压电流在 1mA 量级、远大于反馈脚漏电流再算上臂。下面这段脚本用来枚举 E96 系列的标准阻值组合找出误差最小的一对# 枚举 E96 系列电阻组合找最接近目标输出电压的 R1/R2 E96 [1.00, 1.02, 1.05, 1.07, 1.10, 1.13, 1.15, 1.18, 1.21, 1.24, 1.27, 1.30, 1.33, 1.37, 1.40, 1.43, 1.47, 1.50, 1.54, 1.58, 1.62, 1.65, 1.69, 1.74, 1.78, 1.82, 1.87, 1.91, 1.96, 2.00] E96 E96 [x * 10 for x in E96] [x * 100 for x in E96] # 扩到 1k~200k VREF 1.23 # LM2576 内部基准单位 V TARGET 8.00 # 目标输出电压 best None for r1 in [x for x in E96 if 800 x 2000]: # 下臂 0.8k~2k for r2 in [x for x in E96 if 3000 x 12000]: # 上臂 3k~12k vout VREF * (1 r2 / r1) err abs(vout - TARGET) if best is None or err best[0]: best (err, r1, r2, vout) print(误差 %.4fV R1%.0fΩ R2%.0fΩ Vout%.4fV % best) # 典型输出误差 0.0021V R11000Ω R25490Ω Vout7.9979V这段代码的关键不在算法而在于把「选电阻」这件事从拍脑袋变成可复现的搜索。参数说明VREF必须按芯片手册取LM2576 是 1.23VTARGET是题目要求的中心值取 8.00V 而不是 8.2V因为后面还有 DAC 注入的调整余量中心值留正偏差反而更难调。搜索结果里 R1 取 1kΩ、R2 取 5.49kΩ两者都用 1% 精度金属膜电阻实际输出电压落在 7.98~8.02V 之间。真正的坑在 DAC 注入点上。DAC 输出经运放跟随后要通过一个串联电阻接到反馈脚这个电阻不能太小否则 DAC 的输出噪声会直接灌进反馈环引起振荡也不能太大否则调节范围不够。经验值是取 R2 的 5~10 倍再配合 DAC 满量程输出算一下调节范围# 估算 DAC 注入支路带来的输出电压调节范围 VREF, R1, R2 1.23, 1000.0, 5490.0 R_INJ 47000.0 # DAC 注入串联电阻 V_DAC_MAX 2.5 # DAC 满量程输出外部 2.5V 基准 # 注入电流叠加到反馈节点等效于改变了上臂的等效阻值 i_inj_max (V_DAC_MAX - VREF) / R_INJ vout_nom VREF * (1 R2 / R1) vout_max vout_nom i_inj_max * R2 # 电流抽走/灌入引起的偏移 print(空调节 %.3fV最大可上调至 %.3fV调节量 %.3fV % (vout_nom, vout_max, vout_max - vout_nom)) # 输出空调节 7.998V最大可上调至 8.146V调节量 0.148V0.15V 的调节量听着不多但对均流来说足够了——两路模块之间需要的修正量通常只有几十毫伏。反过来如果这里算出零点几伏说明注入电阻取小了均流环会变得极其敏感一点点数字码抖动就被放大成输出电流跳变。3.2 INA270 高边采样25mΩ 是怎么算出来的采样电阻的取值是一个典型的三角权衡阻值大信号强、好测阻值大损耗也大、效率指标直接掉阻值小损耗低但失调电压的相对误差变大。论文里给了一个硬约束——INA270 的差分输入建议工作在 50~100mV 区间。按最大工作电流 2A/路来算R_sense 50mV / 2A 25mΩ这个阻值下的功耗是 I²R 2² × 0.025 0.1W选 2512 封装1W绰绰有余温漂引起的阻值变化也能压住。如果为了省电把阻值降到 10mΩ2A 时压降只有 20mV放大器自身的失调电压毫伏级就会变成百分之几的电流误差2% 的均流指标直接没戏。注意分流电阻必须用四线开尔文接法电压取样点从电阻本体的焊盘内侧引出绝对不能在走线上随便取两点。走线电阻是毫欧级的跟 25mΩ 同一量级取错点误差就是两位数百分比。INA270 的输出直接接 ADC 的差分输入。它的增益是 20V/V50mV 输入对应 1V 输出正好落在 ADS1232 在 2.5V 基准下的舒适区间。这里不需要额外的分压或衰减串一个 RC 低通常见 1kΩ 100nF截止频率 1.6kHz滤掉开关噪声即可。3.3 ADS1232 与 DAC7811模拟前端怎么跟 MCU 说上话ADS1232 是双通道 24 位 Σ-Δ ADC引脚少、时序简单SCLK 打 25 个脉冲就能读出一次转换结果。接线上有三个细节值得记引脚接法说明VREF接 2.5V 基准基准不稳读数直接漂不要用电源分压凑AINP1/AINN1接 INA270 输出与地差分走线等长靠近芯片入口加 RCPDWN上拉低电平进掉电模式调试时误拉低会以为芯片坏了SPEED接地低速模式 10SPS噪声最低均流环够用DAC7811 的接线更简单三线 SPISCLK、SDIN、SYNC外接 2.5V 基准论文原理图里用的是 MC1403 这类带隙基准。它是电流输出型IOUT 引脚必须接运放做 I/V 转换转换公式是V_out -V_ref × D / 4096负号来自运放的反相组态。这个负号在实际调试里很容易被忽略导致 DAC 码值越大、注入电流方向反而相反均流环变成正反馈直接发散。稳妥做法是在软件里把目标值取反或者干脆用两级反相把符号翻正。写 DAC 的代码没什么花头但时序不能错/* DAC7811 写 12 位数据SYNC 下降沿锁存MSB 先出 */ void dac7811_write(unsigned int code) { unsigned char i; code 0x0FFF; /* 只取低 12 位防止高位脏数据 */ DAC_SYNC_LOW(); /* 拉低 SYNC开始一帧 */ for (i 0; i 12; i) { if (code 0x0800) /* 从 bit11 开始逐位送出 */ DAC_DIN_HIGH(); else DAC_DIN_LOW(); DAC_SCLK_HIGH(); /* 上升沿移入 */ __delay_cycles(4); /* 8MHz 下约 0.5us留足建立时间 */ DAC_SCLK_LOW(); code 1; } DAC_SYNC_HIGH(); /* 上升沿把 12 位锁进 DAC 寄存器 */ }逻辑说明code先做掩码是因为上层算出来的值往往带溢出位直接送进去会把高 4 位当成无效数据。循环 12 次对应 12 位分辨率每次先摆好数据再给时钟是这类乘法 DAC 的标准时序。__delay_cycles(4)是 MSP430 的 intrinsics实际取值要看 SCLK 的上限频率宁可慢一点也不要贴着极限跑示波器上看时钟沿有振铃就说明太快了。3.4 过流保护为什么绕开软件直接拉 ON/OFF题目要求 4.5A±0.2A 保护、并且能自动恢复。实现上有两条路一是软件检测到电流超限后关断输出二是用比较器做硬件关断。论文选的是前者但关断动作落到 LM2576 的第 5 脚 ON/OFF 上——这颗脚是逻辑电平输入拉高关断、拉低工作关断后芯片自身进入低功耗状态输出电容上的能量通过负载自然泄放。软件保护的响应时间受采样周期限制。假设均流环 10ms 跑一圈最坏情况下短路持续 10ms 才被切断这期间 4A 多的电流全部灌进短路点。对竞赛台面来说可以接受因为电源本身还有逐周期限流兜底但如果做产品硬件比较器 单稳态触发是必须补的一环。自动恢复靠的是「打嗝」策略关断后延时一段时间重新使能如果电流立刻又超限就再关断循环往复。这样既能保护又不用人工按复位键。延时时间不能太短否则短路点持续发热也不能太长否则负载恢复正常后响应迟钝。500ms 是这类系统里比较常见的折中值。4. 软件实现预设加步进的双环控制与最大电流均流算法4.1 主流程与运行状态软件部分的分层很清楚最底层是 ADC/DAC/键盘/液晶的驱动中间层是采样滤波和标定换算最上层是均流调节和状态判断。主循环不是裸奔的 while(1)而是按状态推进状态进入条件主要动作退出条件INIT上电复位时钟、IO、ADC、DAC 初始化DAC 归零初始化完成IDLE初始化完成键盘扫描等待设定值收到启动命令CV收到启动命令输出 8V单路闭环稳压电流超过均流阈值SHARE总电流 0.5A按设定比例做均流调节电流回落或保护触发PROTECT任一路电流 4.5A拉高 ON/OFF关断两路500ms 定时到RECOVER保护延时到重新使能读一次电流正常则回 CV否则回 PROTECT这个状态机的好处是每一态的行为都能单独测。调均流的时候先把 PROTECT 屏蔽掉调保护的时候把均流环固定成 1:1不然两个环互相打架示波器上根本看不出是谁在动。4.2 均流环的代码骨架均流环的核心就三件事读两路电流、算目标值、写两路 DAC。用最大电流法的时候先找出两路中的较大值作为母线参考再把每路的实测值往「按比例分配后的目标值」上拉。/* 按比例设定值做均流ratio 表示 I1:I2例如 1:2 传入 1 和 2 */ void current_share_step(unsigned char r1, unsigned char r2) { long i1_raw, i2_raw; /* ADC 原始码 */ long i1_ma, i2_ma; /* 换算后的毫安值 */ long total, target1, target2; long err1, err2; i1_raw ads1232_read(CH1); /* 通道 1 电流采样 */ i2_raw ads1232_read(CH2); /* 通道 2 电流采样 */ i1_ma (i1_raw - offset1) * k1; /* k1 为标定系数单位 mA/LSB */ i2_ma (i2_raw - offset2) * k2; total i1_ma i2_ma; if (total 200) return; /* 轻载不做均流避免噪声引起抖动 */ /* 按设定比例算出各路应该扛的电流 */ target1 total * r1 / (r1 r2); target2 total - target1; err1 target1 - i1_ma; err2 target2 - i2_ma; /* 增量式 PI只调增量不做位置式累加避免积分饱和 */ dac1 (long)(KP * err1 KI * err1_hist1); dac2 (long)(KP * err2 KI * err2_hist2); err1_hist1 err1; /* 保存本次误差供下轮差分用 */ err2_hist2 err2; if (dac1 0) dac1 0; /* 限幅防止 DAC 码越界 */ if (dac1 4095) dac1 4095; if (dac2 0) dac2 0; if (dac2 4095) dac2 4095; dac7811_write((unsigned int)dac1); dac7811_write((unsigned int)dac2); }逐段说明。前四行是采样与换算offset是零电流时的 ADC 读数必须在上电、负载断开时现场标定一次并存进 Flash写死一个常数换个板子就废。k1、k2是斜率系数用标准电流源两点标定比如 1A 和 3A 各读一次算出来两路的k值一定不一样分流电阻的容差摆在那儿。total 200这个门限是血泪经验。总电流很小的时候两路 ADC 的读数都被噪声主导算出来的误差正负跳变DAC 码跟着来回摆输出电流上叠加一个低频纹波示波器一看还以为是环路振荡其实是均流环在轻载时不该工作。KP、KI两个参数没有万能值跟采样周期强相关。采样周期 10ms 时KP从 1 开始试KI取KP的十分之一如果观察到电流缓慢爬升后过冲再回调说明积分太强把KI减半如果始终差一点点回不到目标值说明积分不足慢慢加。这套调法纯靠示波器看电流波形比任何公式都直接。4.3 预设与步进键盘设定的两种输入方式论文里提到用「预设和步进两种方法」改变电流设定这个设计在竞赛现场很实用。预设是把 1:1、1:2、2:1 这几个题目要求的状态做成快捷键一键切换避免现场按半天还没设对步进是让用户可以按 0.1 的步长调节比例应对发挥部分「0.5~2.0 范围内任意比例」的要求。实现上就是一个键盘扫描加一个比例变量步进时注意别让两路比例同时为 0/* 步进调整比例step 为 1 或 -1范围限制在 1~20对应 0.5~2.0 的要求 */ void ratio_step(signed char step) { signed char next ratio_sel step; if (next 1) next 1; /* 比例下限防止除零 */ if (next 20) next 20; /* 比例上限对应 I1:I2 20:10 */ ratio_sel next; lcd_show_ratio(ratio_sel, 10); /* 固定分母 10 显示1~20 即 0.1~2.0 */ }这里分母固定成 10显示上就是 0.1 到 2.0 的连续可调跟题目的「0.5~2.0」正好对上。用整数比例而不是浮点是因为后面算目标电流时做的是整数乘除浮点在 MSP430 上要么吃主频要么吃 Flash没必要。5. 调试避坑并联供电台上最容易翻车的五个点5.1 空载一切正常一带载就一路顶到限流现象两路空载输出都是 8.00V接上 2A 负载后一路电流飙到 2.5A 被限流另一路只有 0.3A总电压掉到 7.5V。原因两路的采样点位置不一致。一路的分流电阻取样点取在电阻焊盘外侧另一路取在走线末端走线那几毫欧的电阻被算进了「输出电压」里导致两路的实际输出端电压差了十几毫伏。开关电源输出阻抗很低十几毫伏的差异就足以让电流分配严重失衡。这不是算法问题是布局问题软件怎么调都调不平。解决所有分流电阻统一改成四线开尔文接法电压取样走独立细线直接从电阻焊盘内侧引出且两路的取样走线长度尽量一致。改完之后再看空载时两路电流差能从 2A 降到 50mA 以内剩下的偏差才交给均流环去修。5.2 均流环一开就振荡电流波形上下摆现象手动固定 DAC 码值时输出很稳一旦闭环两路电流以 2~3Hz 的频率此起彼伏幅度能到 ±0.5A。原因PI 参数和采样周期不匹配。多数人是先在 PC 上按「连续系统」的思路算参数然后直接搬到 10ms 的离散采样里等效积分增益被放大了几十倍。另一个隐蔽原因是 ADC 读数没做滤波单次采样的噪声直接进了误差项等于给积分器灌了白噪声。解决先把KI置零只留KP从 1 开始往上加加到电流能快速跟随但不过冲为止再加KI每次加 0.1观察到过冲就退回去。同时在 ADC 读数后加一个滑动平均8 点即可能明显压住高频抖动。调完之后再用示波器看电流波形应该是一条带轻微纹波的直线而不是正弦。5.3 1:2 比例怎么调都不准误差总是超 5%现象1:1 能调到 2% 以内切到 1:2 误差就跑到 8% 以上而且怎么改 PI 参数都没用。原因DAC 的调节范围不够。1:2 意味着一路要扛总电流的三分之二另一路只扛三分之一需要的电压差比 1:1 大得多。前面算过 DAC 注入支路只能带来 0.15V 的调节量如果注入电阻取大了实际调节量只有几十毫伏1:2 这种大偏差根本拉不回来PI 积分器一路饱和到限幅值误差就固定在那儿了。解决先测调节范围。手动把 DAC 从 0 扫到 4095记录每一路的输出电流变化量如果单路电流的可调范围小于 ±0.5A就要减小注入电阻。改完之后重新标定k值再调 PI。5.4 短路保护动作后不恢复必须断电重上现象短接输出触发保护两路都关断了撤掉短路后输出电压一直是 0按键也没反应。原因LM2576 的 ON/OFF 脚是高阻输入如果没有外部上拉或下拉关断后引脚电平处于不确定状态软件再想拉低使能时引脚上的寄生电容还没放完电芯片识别不到有效电平。另一种情况是保护状态机卡在 PROTECT 里出不来因为恢复条件写的是「电流小于阈值」而关断状态下电流恒为 0这个条件本该立刻满足——除非判断顺序写错了先判恢复再判延时。解决ON/OFF 脚加一个 10kΩ 下拉电阻保证默认状态是使能软件里把恢复逻辑改成「延时到 → 先使能 → 延时 20ms 等输出建立 → 再读电流判断」避免刚使能时读到的是电容充电电流而误判为仍然短路。5.5 效率只有 55%差一点点够不到 60%现象满载时输入功率 40W输出 22W效率 55%怎么调都上不去。原因三个地方在偷效率。续流二极管用了普通整流管正向压降 0.7V在 2A 电流下就是 1.4W 的纯损耗电感选型偏小进入饱和电感电流线性上升导致峰值电流过大铜损按平方增长反馈走线从开关节点旁边穿过耦合进来的尖峰让芯片误判输出电压偏高占空比被压小实际输出靠后级电容硬撑。解决续流管换肖特基压降 0.4V 左右电感按饱和电流大于峰值电流 1.5 倍选反馈线远离电感和续流回路并加屏蔽地。这三条改完效率通常能回到 75% 以上60% 的指标自然就不是问题了。6. 二次开发把这套板子改成带通信的数控恒流源这套方案的可复用价值不在「8V/4A」这个具体指标上而在「软件闭环套在开关电源外面」这个结构。想把它改成能用的数控恒流源或者带遥测的并联供电系统改动集中在四个地方硬件基本不用动。改造点原方案改造做法影响面主控MSP430F149换 STM32F103保留相同外设底层驱动重写控制逻辑照搬DAC 接口并行时序的 DAC7811换 I2C 接口的 12 位 DAC省 IO代码改一个写函数通信无加 UART/CAN上报两路电流与状态主循环加一个非阻塞发送均流母线软件比较取最大值加一颗比较器做硬件最大值响应快一个数量级换主控的时候有个坑要提前说原方案的 PI 参数是按 10ms 采样周期整定的换到 1ms 采样的平台上如果参数照抄等效积分增益放大十倍必定振荡。正确做法是把 PI 参数按采样周期做归一化KI与Ts成反比缩放KP基本不变。验证改造是否成功我一般走三步。第一步是静态标定断开负载用高精度万用表逐点比对 DAC 码值与实际输出电流拟合出斜率和截距把结果写进参数区。第二步是动态阶跃用电子负载做 0.5A 到 2A 的阶跃看恢复时间和平稳度恢复时间在 50ms 以内、超调小于 10% 算合格。第三步是失衡测试故意把一路的 PWM 关掉模拟单模块失效看另一路能不能在 100ms 内把总电流补上这一步过不了说明均流逻辑里还藏着对两路同时工作的隐含依赖。下面这段是用来做静态标定的采集脚本跑在 PC 侧通过串口读出每一路的 ADC 码和万用表读数import serial import numpy as np ser serial.Serial(COM3, 115200, timeout1) codes, currents [], [] for target_ma in range(200, 3500, 200): # 200mA 到 3.4A 逐点 ser.write((SET %d\n % target_ma).encode()) ser.readline() # 吃掉回显 line ser.readline().decode().strip() # 格式 CH1,CH2 ch1, ch2 [int(x) for x in line.split(,)] real float(input(万用表读数(A))) # 人工录入标准值 codes.append(ch1) currents.append(real) k, b np.polyfit(codes, currents, 1) # 一次拟合出斜率与截距 print(标定系数 k%.6f mA/LSB offset%.3f % (k * 1000, b))np.polyfit出来的一次项就是代码里的k常数项对应offset。采样点不要只取两三个从 200mA 到 3.4A 均匀铺开拟合残差大于 1% 就说明分流电阻的温漂或者放大器的非线性已经影响到精度得回头查硬件靠软件补是补不回来的。从那以后我每次做并联电源都强制先在空载状态下把两路的采样零点各标一遍并存进参数区再开始调均流——这个动作只花两分钟却能省掉后面一整天怀疑算法的时间。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑