当前位置: 首页 > news >正文

完整dab变换器的dsp28335程序,包含状态机,adc中断,抗饱和pi算法等

完整dab变换器的dsp28335程序,包含状态机,adc中断,抗饱和pi算法等。

DAB变换器的数字控制核心在于状态管理和实时调节,搞过数字电源的兄弟应该都清楚,这玩意儿对时序和精度的要求有多变态。拿DSP28335来搞的话,咱们得把整个系统拆成几个关键模块来盘。

状态机这块必须得稳,直接上switch-case结构最实在。比如定义运行模式、故障保护、待机这几个基本状态:

typedef enum { SYS_INIT, STANDBY, RUNNING, FAULT } SystemState; volatile SystemState g_sysState = SYS_INIT;

在main循环里搞个状态巡检,重点注意状态切换时的硬件初始化。特别是从故障恢复时,记得先复位PWM输出再清故障标志,不然分分钟炸管给你看。

完整dab变换器的dsp28335程序,包含状态机,adc中断,抗饱和pi算法等。

ADC中断这块有个坑得注意,28335的ADC结果寄存器居然他娘的不是双缓冲结构!这就意味着如果在中断里直接读取数据时刚好遇到ADC正在转换,可能读到半截数据。解决办法是在中断里先把数据拷贝到临时变量:

__interrupt void adc_isr(void){ static struct AdcResult { Uint16 input_voltage; Uint16 output_current; } adc_buff; adc_buff.input_voltage = AdcResult.ADCRESULT0 >>4; adc_buff.output_current = AdcResult.ADCRESULT1 >>4; AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // 复位排序器 AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR = 1; PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; g_real_time_data = adc_buff; // 用结构体整体赋值避免数据撕裂 }

这里用结构体整体赋值是个骚操作,因为28335是32位处理器,两个16位数据刚好可以原子操作,避免主程序读到不一致的数据。

抗饱和PI算法才是重头戏,普通PI在输出限幅时积分项会疯狂累积。咱们在误差符号变化时给积分项来个急刹车:

typedef struct { float Kp; float Ki; float integral; float out_max; float out_min; } AntiWindupPI; float pi_calculate(AntiWindupPI *pi, float error){ float output = pi->Kp * error + pi->integral; // 抗饱和处理 if((error >0 && output >= pi->out_max) || (error <0 && output <= pi->out_min)){ return (output > pi->out_max) ? pi->out_max : pi->out_min; } pi->integral += pi->Ki * error * 0.0001; // 根据控制周期调整 return output; }

注意这里积分项更新前先判断输出是否饱和,这样当系统处于饱和状态时,积分器自动停止累积。实测这个操作能让系统从过载恢复时响应速度快一倍不止。

最后把这三个模块串起来,主循环里根据状态机切模式,ADC中断喂数据,PI计算结果扔给PWM模块。有个细节是PWM死区时间建议用硬件自动生成,别在软件里折腾,28335的ePWM模块配置好之后比软件模拟的靠谱多了:

void InitEPwm(){ EPwm1Regs.TBPRD = SYSTEM_FREQ / SWITCHING_FREQ; // 周期寄存器 EPwm1Regs.CMPA.half.CMPA = 0; // 初始占空比 EPwm1Regs.DBCTL.bit.OUT_MODE = 0x3; // 使能上升沿和下降沿死区 EPwm1Regs.DBFED = 100; // 死区时间ns级配置 EPwm1Regs.DBPRD = 100; }

调试时建议先拿电子负载做测试,别直接上真实负载。曾经有个兄弟没加死区时间直接上电,瞬间两千块的MOS管就放烟花了,那味道能在实验室飘三天...

http://www.jsqmd.com/news/361055/

相关文章:

  • 2026年靠谱的定制打包箱房/拓展型打包箱房可靠供应商参考推荐几家 - 品牌宣传支持者
  • Linux系统Wi-Fi 6优化指南:Realtek 8852AE驱动配置与网络性能调优
  • 2026年专业的大连日本留学中介/大连日本留学哪家靠谱实力工厂参考 - 品牌宣传支持者
  • 5个突破性技巧:用UAVLogViewer实现无人机日志深度分析
  • 关于GameCreator引擎资源解密
  • 软件包兼容性困境突破:从应急修复到标准化构建
  • Cursor极速启动优化指南:从卡顿到秒开的全流程解决方案
  • 掌握4个Python开发提速技巧:从效率瓶颈到流畅编码
  • PCL2启动器下载安装全攻略:2026最新版PCL启动器使用教程 - xiema
  • 从Transformer到基础模型:时空预测技术全景解读
  • 还在为Masa模组英文界面发愁?这款汉化工具让配置效率提升300%
  • 2026年性价比高的贴骨袋厂家推荐,河北雄安屹晨众创科技口碑佳 - mypinpai
  • 写作压力小了!9个AI论文网站测评:本科生毕业论文+科研写作必备工具推荐
  • es-client:Elasticsearch集群管理与数据可视化的全能工具
  • 2026年比较好的大连学习3D建模畅销厂家采购指南如何选 - 品牌宣传支持者
  • 开源音频转换器fre:ac:让无损音乐转换更简单
  • 这次终于选对! 降AIGC网站 千笔·降AI率助手 VS PaperRed,本科生专属更高效
  • 3步解锁智能扫码体验:MHY_Scanner重新定义游戏登录效率
  • 星际争霸 —— AI游戏 —— 基于规则的硬编码AI如何取得优异的性能表现 (rule-based AI)—— 小型地图任务
  • 穿透云端的“黑匣子”:CloudWatch与GCP Logging的信息泄露与注入攻防实战
  • 2026年浙江口碑好的央企求职机构排名,衔芦职导上榜引发关注 - myqiye
  • 零基础上手VoxelShop:免费开源3D建模工具效率倍增指南
  • 2026年优秀的大连校企合作的公司生产商实力参考哪家质量好(更新) - 品牌宣传支持者
  • Android 基础入门教程4.3.1 BroadcastReceiver牛刀小试分类
  • 百泰派克生物科技:蛋白质表征客户案例(二)
  • 建议收藏|更贴合本科生需求的一键生成论文工具,千笔写作工具 VS 灵感风暴AI
  • HS2-HF_Patch工具:全方位优化Honey Select 2游戏体验的解决方案
  • OpenClaw vs Claude Cowork:桌面AI Agent对决,谁才是下一代“操作系统入口”
  • Minecraft矿物透视:探索者的地下资源定位指南
  • 毕业论文神器!降AIGC网站 千笔·降AI率助手 VS Checkjie 本科生专属