DSP数字电源方案 Buck-Boost双向变换器 数字控制方式:C2000系列 主控TMS32F28069 300W,8A,输入10-75V,输出5-75V 双向升降压功率转换器buck-boost结构 提供主板PCB,原理图(AD格式),源代码,无控制板资料。

"搞电源开发的兄弟们,看到Buck-Boost双向变换器是不是又爱又恨?今天咱们来拆解一套基于C2000的DSP数字电源方案,这个支持10-75V超宽电压范围还能双向跑的家伙有点意思。核心板用的是TI家的TMS320F28069,这颗芯片的CLA协处理器搞实时控制真是天生神力。

先看硬件架构,功率拓扑用的是四开关Buck-Boost结构,配合电流互感器和电压分压网络做双重采样。这里有个骚操作:用同一个电感实现能量双向流动,硬件上省掉了一组开关器件。PCB布局上要注意功率回路和信号回路分地处理,特别是当输出75V时,MOSFET驱动信号的隔离得下点功夫。

重点看软件部分,主控的PWM模块配置是关键。初始化时得把死区时间调得恰到好处,这里直接上干货:

EPwm1Regs.DBRED = dead_time;  //上升沿死区
EPwm1Regs.DBFED = dead_time;  //下降沿死区
EPwm1Regs.CMPA.half.CMPA = duty_cycle * EPWM_PERIOD; //占空比计算

这个配置直接影响着上下管的切换时序,调试时建议先用示波器抓互补PWM波形,确保没有直通风险。ADC采样部分用了窗口触发模式,配合DMA搬运数据,实测采样延迟控制在500ns以内。

DSP数字电源方案 Buck-Boost双向变换器 数字控制方式:C2000系列 主控TMS32F28069 300W,8A,输入10-75V,输出5-75V 双向升降压功率转换器buck-boost结构 提供主板PCB,原理图(AD格式),源代码,无控制板资料。

电压环和电流环的双闭环控制是核心算法,代码里用CLA实现了并行PID运算。看这段增量式PID实现:

__attribute__((ramfunc)) 
void CLA_PID_Update(PID_Obj *v)
{
    v->Err = v->Ref - v->Fdb;
    v->Integral += v->Ki * v->Err;
    v->Output = v->Kp * v->Err + v->Integral - v->Kd * (v->Fdb - v->LastFdb);
    v->LastFdb = v->Fdb;
}

注意这里的ramfunc修饰符,确保PID算法跑在CLA的本地内存里。调试时遇到过积分饱和问题,后来加了抗饱和处理才稳住输出电压。

保护机制必须重点说说,过流保护用了两级触发:硬件比较器直接封锁PWM输出,软件再补一个看门狗定时器。这段故障处理代码救过我的板子:

interrupt void EPWM1_ISR(void)
{
    if(EPwm1Regs.TZFLG.bit.OST == 1) //过流标志
    {
        EPwm1Regs.TZCLR.bit.OST = 1;
        SystemSafeState(); //进入安全状态
    }
    EPwm1Regs.ETCLR.bit.INT = 1;
}

实测从过流触发到完全关断耗时2.5μs,这个响应速度在短路测试时表现优秀。最后提个醒,源码里的补偿网络参数需要根据实际电感参数调整,别直接烧录默认值,不然环路震荡起来堪比蹦迪现场。

这套方案的开发资料还算良心,AD格式的原理图可以直接导出BOM,但控制板得自己魔改。建议先用TI的digitalpower SDK打个底,再移植他们的代码框架。调通之后实测效率曲线,在30V转24V工况下能跑到94%的效率,轻载时切到PFM模式还能再抠点功耗。"

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐