尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

dsPIC33EP GS系列:数字电源专用DSC的选型与实战解析

dsPIC33EP GS系列:数字电源专用DSC的选型与实战解析 “GS”这个缩写放到电源工程师面前第一反应往往是MOSFET的栅源极但在Microchip的产品目录里它还有一个身份——dsPIC33EP系列中专为数字电源应用优化的子系列。这段时间我在做一个带数字PFC的100W适配器项目把这块芯片从选型到控制环路的整个流程重新走了一遍正好把心得整理出来。这篇文章会围绕dsPIC33EP GS系列本身展开它相比普通MCU和通用DSC优化了哪些地方一颗适合数字电源的芯片内部到底有哪些关键外设以及实际搭建闭环控制时的步骤与参数估算方法。适合正在做开关电源、PFC、逆变器或DC-DC的数字控制方案想从模拟电源转到数字控制或者正在为控制芯片选型纠结的工程师参考。1. 项目定位数字电源为什么需要专用DSC1.1 普通MCU和专用DSC的差距很多刚接触数字电源的工程师会产生一个疑问现在的MCU主频也不低ADC也有12位为什么非得用专门的数字信号控制器DSC来做电源环路这个问题我在项目初期也纠结过当时我用了一款常见的ARM Cortex-M系列MCU去驱动一个半桥LLC结果发现要做的事情远不只是“输出两路PWM”这么简单。开关电源的数字控制本质是一个固定采样周期的实时控制任务ADC采样输出电压和电感电流控制器计算占空比修正量PWM模块输出新的驱动波形。这个循环必须在固定的时间间隔内完成而且它的周期是跟着开关频率走的。假如开关频率是100kHz一个控制周期就是10微秒芯片主频70MHz折合成指令周期只有700条。这700条指令里还要算上ADC中断进入时间、现场保护、算法运算、PWM寄存器更新留给PID算法的空间并不多。普通MCU在这几个环节上往往短板明显。首先是PWM分辨率很多MCU的PWM是基于定时器分频产生的在几百kHz的开关频率下占空比调节步进会变得很大输出纹波和环路极限环振荡随之而来。其次是ADC触发方式做电源控制时要求采样点必须精确卡在PWM周期的某个相位上普通MCU的ADC触发源往往没法直接与高频PWM模块硬件联动只能靠定时器软件同步时序抖动会直接影响控制效果。再者是硬件级别的故障保护电源系统要求过流时PWM能在纳秒级关断靠软件中断去响应速度上根本无法保证。这些痛点恰恰是dsPIC33EP GS系列存在的理由。这是一颗16位DSC内核带DSP指令集不是通用MCU而是面向固定周期控制任务设计的一类处理器。它的外设组合——高速PWM、高速ADC、模拟比较器、内部运放——几乎就是照着数字电源的典型架构来排布的。把它理解成“一颗把电源控制该有的硬件都给齐了”的专用控制器比把它理解成普通单片机要准确得多。1.2 “GS”后缀到底是什么含义dsPIC33EP是Microchip旗下成熟的16位DSC系列而“GS”是这个大系列中一个细分方向的后缀。Microchip在同一个内核基础上根据面向的应用做了外设层面的裁剪和增强GS就是面向数字电源Digital Power应用优化的那一批型号。这里的“GS”具体是什么意思官方文档里并没有给出一个像“Signal Processing”那样明确的展开词。从产品定位和参考手册的表述来看它在逻辑上就是“开关电源Switching”方向的标识。实际选型时你不用纠结这个缩写的原始含义只需要知道当你看到型号里有“GS”这块芯片就是为电源控制准备的它的PWM、ADC、比较器、运放等外设组合经过了针对性优化。这个系列还有一点值得注意它不是另起炉灶的新架构。内核指令集、开发工具、参考手册都和dsPIC33EP通用系列高度一致。这意味着你之前用过dsPIC33E系列迁移到GS系列几乎没有学习成本如果是第一次接触看参考手册时重点关注的章节也是PWM、ADC、比较器和DSP库其他通用外设反而可以放到后面再读。1.3 GS系列适合用在哪些产品里从产品形态上看GS系列几乎覆盖了数字电源的主流应用场景。AC-DC适配器、DC-DC模块电源、PFC功率因数校正前端、LED恒流驱动、电池充电器、光伏微型逆变器、车载OBC车载充电机、服务器电源这些方向我都见过用GS系列做的方案。这些产品有什么共同点第一开关频率高动辄100kHz以上PWM刷新率和分辨率要求高。第二对环路动态响应要求苛刻比如服务器电源的负载从10%跳到100%时输出电压跌落要控制在很小的范围内需要足够宽的控制带宽。第三普遍需要做PFC、同步整流、多相交错这类复杂的控制策略对算力和外设配合的要求远高于普通电机控制或简单BMS应用。还有一类使用者是高校实验室和研究所。数字电源是电力电子方向比较热门的研究课题GS系列适合用来验证各种先进的控制算法比如无差拍控制、滑模控制、模型预测控制等。对于这类用户芯片的封装尺寸、成本不是首要考虑因素关键是外设齐全、开发工具成熟、参考资料丰富。GS系列在这几点上做得不错很多大学电源课题的论文里都能看到它的身影。2. 硬件架构拆解一颗数字电源芯片的自我修养2.1 PWM模块不是能输出方波就算数我对GS系列最满意的地方就是它的PWM模块。很多MCU也号称带PWM但真正对照电源应用的需求去逐条检查时差距就出来了。GS系列的PWM模块有几个特点是专门为电源控制场景设计的。第一个特点是高分辨率。数字电源里PWM占空比的调节步进直接决定了输出纹波和静态精度。如果占空比一次调节就只能跳变0.1%那么输出电压的调整精度上限也就是0.1%。GS系列通过PLL将PWM时钟倍频到很高频率让脉宽调节的分辨率远高于普通定时器分频能做到的水平。实际项目中在300kHz左右的开关频率下占空比调节能做到非常精细的步进输出电压稳定度可以做得很好。第二个特点是支持互补输出和可编程死区。半桥、全桥、同步Buck这类拓扑需要上下管互补驱动而且必须插入死区时间避免上下管直通。GS系列的PWM模块每一对输出都能自动生成带死区的互补波形死区时间可以通过寄存器精确设置不用外部死区芯片。第三个特点是故障输入引脚。PWM模块的故障输入FLTA/FLTB可以直接把PWM输出打到安全状态高阻或固定电平这个过程是纯硬件的行为不经过CPU延迟通常在纳秒级别。电源系统里过流保护能不能在1微秒内关断很多时候决定了功率管会不会炸。第四个特点是周期边界同步更新。设置新的占空比时如果异步写入寄存器可能导致当前周期的脉宽异常产生毛刺。GS系列的PWM模块支持在周期边界统一更新影子寄存器保证占空比每个周期都是完整、平滑地变化。这个特性在数字环路里非常重要因为控制算法每个周期都会更新一次占空比如果更新时机不对输出的波形会很难看。2.2 ADC与模拟前端采样精度决定控制精度数字电源里的ADC不能只看位数。12位、14位只是静态指标真正影响环路性能的是采样时序的确定性和模拟前端的抗干扰能力。GS系列的ADC模块可以直接由PWM模块的触发信号启动转换不用外部定时器干预。这个“直接硬件联动”看起来是个小功能在实际项目中价值极大。它保证每次采样点都精确落在PWM周期的同一个相位上不会因为软件中断的响应时间抖动而漂移。采样点固定了控制环路里的延时才能固定建模和参数整定才有依据。在模拟前端上GS系列集成了一些非常实用的外设。内部运放可以用来放大电流采样信号比如低边采样电阻上的压降通常只有几十毫伏直接进ADC分辨率不够经过内部运放放大后再采样精度就好很多。内部比较器可以做快速过流比较输出直接连到PWM故障输入一旦电流超过阈值硬件会在下一个开关周期内执行保护动作比靠ADC采样再走软件判断快一个数量级。实际项目中有一个容易忽略的细节ADC的参考电压。很多低成本MCU的ADC参考电压就是电源电压但电源电压本身就会波动导致采样结果不稳定。GS系列支持使用外部参考电压源我建议在电源板上加一颗高精度基准芯片给ADC做参考成本增加不多但对环路稳定性改善非常明显。后文会再细说这一点。2.3 DSP引擎和中断响应控制环路的算力保障数字电源的控制算法看起来不复杂一个PID公式而已。但在100kHz采样率下运行一秒钟就要执行十万次而且每次执行必须在一个严格的时间内完成这对芯片算力提出了隐性要求。dsPIC33EP的内核带有DSP指令单周期乘累加、移位、位反转等操作对实现数字滤波和PID计算非常友好。我最初做电流环时需要在10微秒的控制周期内完成一次二阶低通滤波加一次增量式PID用带硬件乘单元的DSC只需要很少的指令周期就能完成这让我有充足的预算去处理其他辅助逻辑。另一个关键点是中断响应的确定性。用普通MCU时中断里可能有其他任务在运行导致ADC转换完成中断被延迟响应控制周期就被拉长或抖动。GS系列的中断控制器支持优先级配置可以把ADC转换完成中断设为最高优先级保证控制环路每次都能在固定时间点开始执行。这个“确定性”在电源控制里太重要了可以说没有固定延迟的控制环就不可能有稳定的相位裕量。2.4 硬件保护机制比CPU更快的事件数字电源虽然“数字”但关键保护功能必须由硬件来完成。模拟电源时代过流保护和过压保护靠比较器直接关断驱动器反应速度在几百纳秒以内。如果用纯软件方案ADC采样需要时间CPU判断需要时间PWM寄存器更新还需要时间整体延迟可能到好几微秒功率管可能已经烧了。GS系列把保护逻辑做到了PWM模块和比较器层面。电流采样信号输入比较器比较器输出直接接入PWM故障输入一旦电流超过阈值PWM输出立即进入预设的安全状态。这个过程不需要CPU参与。同时保护触发后可以配置成锁存模式或自动重试模式。锁存模式适合过温、过压这类需要人工排查的故障自动重试模式适合过流这类短暂故障也就是电源上常见的打嗝保护Hiccup Mode。我在实际调试中遇到过几次MOS管炸机的危险情况后面有了这套硬件保护机制即使软件还在跑飞状态PWM也会被硬件切断。这种“最后一道防线”级别的保护对于所有做电源的工程师来说都是刚需。3. 实操搭一个同步Buck变换器的数字控制环3.1 主电路参数设计与器件选型前面讲了很多芯片层面的东西现在用一个完整的实例把流程串起来。我以一个同步Buck DC-DC变换器作为示例输入电压10到14V输出电压5V输出电流10A开关频率100kHz。先做主电路参数估算。同步Buck的占空比约等于输出电压除以输入电压在最高输入电压14V时占空比最小D 5/14 ≈ 0.357。电感电流纹波通常取额定电流的20%也就是ΔIL 2A。电感值按最恶劣条件计算L (Vin_max - Vout) × D_min / (f_sw × ΔIL) (14 - 5) × 0.357 / (100kHz × 2A) ≈ 16uH理论计算取整留裕量实际选用22uH的电感。电感值偏大一点电流纹波会小一些但动态响应会稍慢实际项目中如果是电池供电设备还要综合考虑电感的体积和直流电阻损耗。输出电容按负载瞬态需求选择。假设允许2A阶跃负载时输出电压跌落不超过100mV经验公式可以简化估算C_out ≥ ΔI_load / (8 × f_sw × ΔV_out) 2 / (8 × 100kHz × 0.1V) 25uF再考虑到等效串联电阻的影响实际选用两颗47uF的陶瓷电容并联。选型时注意陶瓷电容的直流偏压特性会导致实际容值下降多留裕量没有坏处。功率级器件选型方面上管和下管都选用耐压30V左右的N沟道MOSFET导通电阻Ron在5到10毫欧栅极电荷Qg控制在20nC以内这样驱动损耗和开关损耗都比较低。电流采样我采用低边采样电阻方案采样电阻选1毫欧的合金电阻满载10A时压降只有10mV功耗0.1W对效率和温升影响都很小。这个10mV的微弱信号正好用GS系列内部运放放大后再进ADC可以省掉一颗外部运放。3.2 采样时序与ADC触发配置做数字电源控制最容易犯的错误是忽略采样时序。我见过很多新手第一次调环路时ADC采样用定时器触发采样点正好落在MOSFET开关瞬间采到的电压和电流值里全是开关噪声导致输出纹波大、环路啸叫怎么调PID参数都没用。正确的做法是用PWM模块的周期匹配信号触发ADC让采样点固定发生在开关周期的某个安全时刻。对于峰值电流模式或平均电流模式控制常用的采样点是PWM周期的中间点或起始点。以100kHz开关频率为例周期为10微秒如果采用中心对齐PWM模式周期匹配点正好在PWM波形的中间此时高边MOSFET导通稳定电感电流等于其平均值是采样电感电流的理想时机。在GS系列上配置这个逻辑只需要把PWM模块的特殊事件触发输出使能接到ADC触发输入端。ADC转换完成后会触发中断在中断服务程序里读取采样结果、执行控制算法、更新PWM占空比寄存器。这样采样、计算、输出的整个链路都是被PWM硬件时钟驱动的延迟固定时序清晰环路设计才可控。还有一点要注意ADC采样保持时间要设置合理。采样保持时间太短采样电容没有充到信号电压结果偏小太长又限制了转换频率。对于GS系列的ADC数据手册会给出最小采样时间要求我通常会设置成满足要求的基础上增加一点裕量。3.3 电流内环PID实现控制环路的实现我习惯采用增量式PID也就是每次只计算占空比的增量变化。增量式PID天然具备抗积分饱和的能力不容易因为积分项累积过大导致系统长时间饱和非常适合数字电源这类输出有限幅的控制场景。下面是一段典型的电流环代码框架运行在ADC转换完成中断里。注意这里的系数都是定点数为了防止浮点运算拖慢执行速度。数据结构为16位整数乘法用32位中间变量承接最后再截断回16位。#define KP_CURRENT 512 // Q12格式实际值为 512/4096 0.125 #define KI_CURRENT 64 // Q12格式实际值为 64/4096 0.015625 #define KD_CURRENT 128 // Q12格式实际值为 128/4096 0.03125 int16_t current_ref; // 电流给定来自电压环 int16_t current_fb; // 电流反馈来自ADC采样 int16_t duty; // PWM占空比输出 int32_t integral_acc; // 积分累加器 int16_t prev_error; void CurrentLoop_ISR(void) { int16_t error current_ref - current_fb; int32_t p_out (int32_t)KP_CURRENT * error; integral_acc (int32_t)KI_CURRENT * error; if (integral_acc 32767) integral_acc 32767; if (integral_acc -32768) integral_acc -32768; int32_t d_out (int32_t)KD_CURRENT * (error - prev_error); prev_error error; int32_t out p_out integral_acc d_out; if (out 32767) out 32767; if (out -32768) out -32768; duty (int16_t)out; PWM_UpdateDuty(duty); }代码里的积分限幅很关键。如果不对积分项做限幅停机时PID输出会被积分项推入深度饱和重新启动时动态响应会变得很迟钝。限幅的上下限需要根据实际调节范围来定这里取了16位定点能表示的最大范围。实际项目中我会把限幅进一步收紧让PID输出只在占空比可调节范围内活动。参数初估可以用一个简化的方法。从占空比到电感电流的传递函数在连续导通模式下近似为G(s) Vin / (sL)。假设期望电流环穿越频率为10kHz即开关频率的十分之一计算穿越频率处的对象增益幅值|G(jω)| Vin / (2π × f_c × L) 12 / (2π × 10000 × 22uH) ≈ 8.7为了让开环增益在穿越频率处为1PI控制器在穿越频率处的增益需要大约是1/8.7 ≈ 0.115。这是Kp初值附近的一个数量级参考。实际调试时可以先从这个值开始用示波器观察电流波形再逐步微调。注意这只是非常粗糙的估算实际还要考虑PWM调制器增益、采样比例系数、ADC量程等折算系数最终参数必然要经过仿真和实测修正。3.4 电压外环设计与联调电流内环稳定之后再往上叠电压外环。电压环的穿越频率一般取电流环的五分之一到十分之一我习惯取电流环穿越频率的十分之一即1kHz左右。这样内环对于外环来说足够快外环不会激发内环的不稳定模态。电压环的采样频率不需要跟开关频率相同。电流环必须逐周期采样因为电感电流变化快电压环是相对缓慢的量可以每个PWM周期采一次也可以每两个或三个周期采一次取决于ADC通道时间和CPU资源。实际项目中我会把电压环采样频率设为20kHz也就是每5个PWM周期采一次输出电压这样可以给CPU留出更多时间处理通信、显示和辅助保护逻辑。电压环的PI参数初估思路同电流环先只加比例项不加积分项观察闭环情况下输出电压是否收敛。如果只加P就能让输出稳定在额定值附近再加入积分项消除静态误差。关于静态误差这里有个细节只有P控制时负载不同输出电压会有偏差因为要产生维持输出的占空比控制器必须输出一个非零误差信号。加上积分项之后积分器不断累积误差直到稳态为零输出电压就能精确锁定在设定值。联调时我推荐一个稳妥的顺序上电前用万用表检查PWM输出占空比是否为初始值防止上电瞬间大占空比导致电流冲击然后逐步升高输入电压同时用示波器监测输出电压和电感电流波形。第一次投闭环时先把输入电压调到10V负载电阻接一个较大的功率电阻比如5欧姆让输出电流只有1A确认环路稳定后再逐步加大负载。4. 常见问题与排查技巧4.1 环路震荡和输出纹波大的几个原因数字电源调试过程中输出纹波大、环路震荡是最常见的问题。这类问题成因多样排查时要按可能性从大到小逐一排除。以下是我整理的一个速查表适用于大多数Buck、Boost和半桥拓扑。现象可能原因排查方向输出纹波大且纹波频率等于开关频率采样点落在开关噪声区ADC采到尖峰检查PWM触发ADC的相位改为周期中点采样输出出现低频振荡频率在数百Hz到数kHz电压环比例增益P过大相位裕量不足减小电压环P或降低电压环穿越频率输出出现高频振铃靠近开关频率电流环P过大内环接近不稳定减小电流环P增加电流环相位裕量轻载时输出电压跳动纹波不规律ADC采样值太小时量化噪声大环路断断续续提高ADC有效分辨率增加软件均值或死区负载瞬态后输出恢复时间很长积分系数Ki太小或穿越频率过低适当增大Ki提高电压环带宽有一个现象特别具有迷惑性采样点不在理想位置但ADC转换结果看起来正常环路也能稳住。实际上如果采样点落在电感电流的上升或下降沿上采样值会随占空比变化而摆动采到的不是平均电流而是某个瞬间电流这会等效于在环路里注入了一个额外扰动。这种不稳定通常表现为输出纹波看起来有周期性但并不完全规则用示波器的余辉模式观察会看到波形在抖动。遇到这种情况第一个要检查的就是采样相位对不对。4.2 死区、直通和驱动波形同步Buck的上下管直通是电源调试中最容易造成MOS管损坏的问题之一。导致直通的原因很多占空比突变、死区设置过小、驱动芯片延迟不一致都可能触发。GS系列PWM模块内置死区发生器用软件配置死区时间这比模拟芯片用RC延迟做死区可靠得多。死区时间设多大合适这取决于MOS管的栅极电荷和驱动芯片的峰值电流。简单估算方法T_dead ≥ Qg / I_drive假设功率管Qg为20nC驱动芯片峰值输出电流为2A那么T_dead ≥ 20nC / 2A 10ns这只是理论下限实际还要考虑驱动芯片的传播延迟、栅极电阻引起的上升沿变缓通常我会取理论值的3到5倍作为初始值再按实测波形调整。100kHz开关频率下死区设在100ns到200ns是常见区间。死区太大会导致续流期间体二极管导通太久损耗增加影响效率太小又有直通风险。用示波器同时测量上下管栅极电压波形观察交叉点有没有重叠是判断死区是否合适最直接的方法。还有一个容易忽视的问题死区期间的电感电流方向。同步Buck在死区期间电感电流会让下管沟道关断后的体二极管导通。如果电感电流反向下管体内的二极管会阻断电流导致下管漏极电压异常。这个问题在轻载或反向电流模式下尤其明显。GS系列的控制代码里可以通过检测电感电流方向决定是否需要切断同步管驱动让变换器进入非连续导通模式避免效率下降。4.3 地弹和采样噪声PCB布局对数字电源调试的影响往往比很多人想象中更大。数字电源芯片内部有模拟采样电路又有高频PWM输出如果PCB布局不合理模拟采样会受到严重干扰。我见过一个案例样机在测试台上反复出现电流采样异常用示波器测量芯片的模拟输入引脚发现每路PWM开关时都会出现一两百毫伏的毛刺最后检查发现是采样电阻的功率地回路和芯片的地引脚共用了一段铜皮。处理这类问题的经验可以归纳成几条。第一功率地大电流流过的地方和模拟地芯片模拟电路、采样电阻、基准源的地要单点连接不要大面积直接贯通。第二ADC采样走线尽量短远离开关节点和PWM驱动走线采样电阻到芯片运放输入引脚之间可以用一个小RC低通滤波器截止频率设置在几十兆赫兹滤除高频尖峰。第三芯片的电源引脚要就近放去耦电容0.1uF和10uF搭配使用电源走线先过电容再进芯片引脚。片上运放这么用会很方便采样电阻的差模信号可以直接就近接到运放输入在芯片内部完成放大后再送到ADC。信号路径短了环路面积小了被开关噪声干扰的几率就大大降低。我强烈建议只要GS型号里集成了运放就应该优先利用起来而不是再去板外接一颗运放平白增加一条高风险信号线。4.4 参数整定经验与工具数字电源的PID参数整定是个反复迭代的过程。很多工程师第一次调环时凭直觉给参数要么系统稳定但动态响应慢要么稍微给点扰动就振荡。我个人的经验是整定参数必须有一个明确的顺序和边界感。先用仿真工具把主电路和控制模型搭出来。Simulink、PLECS、LTspice都可以推荐PLECS它在电源级仿真上速度快控制环和功率级联合仿真很方便。在仿真里把电流环穿越频率调到开关频率的十分之一附近电压环调到电流环的五分之一到十分之一取45度左右的幅值相位裕量这样得到的参数作为第一次上电的初始值。上电实测时先验证空载和轻载观察输出电压精度和纹波。然后加一个阶跃负载观察输出电压跌落幅度和恢复时间。如果恢复时间太长增大电压环P或Ki如果出现振荡减小P。每改一次参数记录下示波器的波形形成一条参数-响应的对照曲线。这个过程听起来繁琐实际做上两三轮就会找到感觉也可以总结出适合自己拓扑的参数初估表。现在行业内有一些自动整定方法比如继电反馈法可以让芯片自动辨识出临界增益和临界周期再套用Ziegler-Nichols公式得到PID初值。GS系列的算力完全跑得动这类算法我在一个PFC项目里试过继电反馈法整定电压环效果比手工试凑快不少。当然自动整定结果只能作为初值最终还是要靠阶跃响应和环路分析仪来验证。5. 一些个人体会做数字电源这几年我最深的感觉是数字电源真正难的从来不是代码而是对采样、延迟、量化这些离散系统概念的把握。芯片选对很重要dsPIC33EP GS系列把PWM、ADC、比较器、运放这些电源控制需要的外设做得很扎实算是把“地基”打好了。但地基之上环路建模、时序设计、PCB布局、保护逻辑每一环都会吃掉你的调试时间。如果你是因为搜“GS”这个词点进来的也顺便说一句这里的GS是Microchip产品系列后缀和MOSFET的栅源极、可编程控制器的GS系列是两码事。MOSFET的GS之间加电容会改变开关速度和损耗这是功率电路里的另一个话题以后有时间我单独写一篇讲。选型的时候直接搜“Microchip dsPIC33EP GS”进官网产品页对照型号和封装选就行。最后分享一个对我帮助很大的小技巧给控制环路增加一个软件“观测点”把当前PID的输出值、采样值和给定值通过一个数字量转模拟量引脚实时输出到示波器上。GS系列没有内置DAC的话可以用一路空闲PWM加RC滤波实现简易DAC。这样做的好处是你能同时看到控制器的输入、输出和实际功率波形三者之间的关系排查采样时序和环路稳定性问题时会直观得多。这个习惯让我少走了很多弯路。
返回列表