基于DSP28335逆变器程序,单相全桥逆变器程序,采用双极性调制 程序逻辑清晰,注释详

基于DSP28335逆变器程序,单相全桥逆变器程序,采用双极性调制
程序逻辑清晰,注释详细,详细到几乎每一句都有注释,对于小白异常友好,有些地方甚至基本原理都补充写明了,百分之99的程序注释不会有我写的这么详细
完整工程文件
采用闭环电流控制,SPWM调制
已上电验证可用,注释详细,逻辑清晰,排版整洁,适合新手学习
另有移相程序看主页,搜索移相程序,或私信我,我发给你链接
开发环境为CCS,适用的DSP型号为TI公司的TMS320F28335,针对其他型号的DSP程序也可以借鉴。
很多编程思路都可以借鉴到其他类型的电力电子变换器的闭环控制程序中
包含:程序说明、ADC采样模块、ePWM模块、PID控制、中断等
注释详细,适合新手学习

YID:665787732383870

爱心资源素材


基于DSP28335逆变器程序,单相全桥逆变器程序,采用双极性调制

在电力电子领域中,逆变器是非常重要的设备之一。逆变器的主要功能是将直流电能转换为交流电能,广泛应用于电网、电动汽车等领域。作为一款基于DSP28335的逆变器程序,该单相全桥逆变器程序采用了双极性调制技术,具有清晰的程序逻辑和详细的注释,几乎每一句代码都有注释,非常友好于初学者。相比其他类似的逆变器程序,该程序注释的详细程度达到了99%以上。

该程序提供了完整的工程文件,包括了ADC采样模块、ePWM模块、PID控制、中断等多个模块。这些模块的注释也非常详细,逻辑清晰,排版整洁,非常适合新手学习。另外,该程序还采用了闭环电流控制和SPWM调制技术,通过这些技术的应用,实现了对逆变器的稳定控制。经过上电验证,该程序在实际应用中表现出良好的可用性。

如果对移相程序感兴趣,可以通过主页搜索移相程序或私信我获取相关链接。该移相程序是与该逆变器程序相配套的,也是基于DSP28335的,可以借鉴到其他类型的电力电子变换器的闭环控制程序中。与逆变器程序一样,移相程序的注释也非常详细,适合初学者学习。

开发环境方面,该程序采用CCS作为开发环境,适用的DSP型号为TI公司的TMS320F28335。不过,其他型号的DSP程序同样可以借鉴该程序的编程思路。毕竟,在电力电子变换器的闭环控制程序中,许多编程思路是通用的。

综上所述,基于DSP28335的单相全桥逆变器程序是一款具有清晰逻辑和详细注释的优秀程序。它不仅提供了完整的工程文件,而且适合于初学者学习。通过该程序的学习,不仅可以掌握逆变器的闭环电流控制和SPWM调制技术,还可以借鉴到其他类型的电力电子变换器的闭环控制程序中。

以上相关代码,程序地址:http://wekup.cn/787732383870.html

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于DSP28335的全桥驱动程序需要涉及到以下几个方面: 1. 硬件设计:全桥的硬件设计需要考虑到电路的稳定性、可靠性和的输出质量等因素。需要设计相关的电路板、选用合适的元件、连接线路等。 2. 软件设计:基于DSP28335的全桥驱动程序需要编写相关的软件程序。该程序需要实现PWM波的生成、的控制、PID控制算法的实现等。 3. 系统调试:完成软硬件设计后,需要进行系统调试。包括调试PWM波的频率和占空比、输出波形的质量、PID控制算法的效果等。 以下是一个基于DSP28335的全桥驱动程序的示例: ``` #include "DSP2833x_Device.h" #include "DSP2833x_GlobalPrototypes.h" #include "DSP2833x_EPwm_defines.h" #define PWM_FREQUENCY 20000 // PWM 波频率 #define MAX_DUTY_CYCLE 0.95 // PWM 占空比最大值 #define MIN_DUTY_CYCLE 0.05 // PWM 占空比最小值 float32 voltage_ref = 0; // 电压参考值 float32 voltage_fb = 0; // 电压反馈值 float32 error = 0; // 误差值 float32 integral = 0; // 积分值 float32 derivative = 0; // 微分值 float32 pid_output = 0; // PID 控制输出值 float32 k_p = 0.1; // 比例系数 float32 k_i = 0.01; // 积分系数 float32 k_d = 0.001; // 微分系数 void InitEPwm1(void) { EPwm1Regs.TBPRD = 1500; // 设定周期 EPwm1Regs.CMPA.half.CMPA = 750; // 设定占空比 EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 设定计数模式为上下计数 EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 禁用相位同步功能 EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // 高速时钟分频系数为 1 EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; // 时钟分频系数为 1 EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; // 当计数计数值等于 CMPA 时清空 PWM 脚 EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // 当计数计数值等于 0 时置高 PWM 脚 EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; // 当计数计数值等于 CMPB 时清空 PWM 脚 EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; // 当计数计数值等于 0 时置高 PWM 脚 EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // 设置 Dead Band 电压极性 EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // 使能 Dead Band EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL; // 使能 Dead Band 到 A 端 EPwm1Regs.DBRED = 25; // 设定 Dead Band 时间 EPwm1Regs.DBFED = 25; // 设定 Dead Band 时间 } void InitADC(void) { AdcRegs.ADCTRL1.bit.RESET = 1; // 重置 ADC AdcRegs.ADCTRL1.bit.SUSMOD = 2; // 使能暂停模式 AdcRegs.ADCTRL1.bit.ACQ_PS = 0; // 采样周期为 1 个 ADC 时钟周期 AdcRegs.ADCTRL1.bit.CPS = 0; // 使能连续采样模式 AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 使能级联采样模式 AdcRegs.ADCTRL1.bit.SEQ_OVRD = 1; // 使能覆盖模式 AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // 使能连续运行模式 AdcRegs.ADCTRL1.bit.CLKDIV2EN = 1; // 使能 ADC 时钟分频 AdcRegs.ADCTRL1.bit.SUSMOD = 3; // 使能暂停模式 AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 使能级联采样模式 AdcRegs.ADCTRL3.bit.ADCCLKPS = 0; // 采样周期为 1 个 ADC 时钟周期 AdcRegs.ADCTRL3.bit.SMODE_SEL = 0; // 单端模式 AdcRegs.ADCTRL3.bit.ADCBGRFDN = 1; // 使能 ADC 带基准电压下降模式 AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // 使能 ADC 下降模式 AdcRegs.ADCTRL3.bit.ADCCLKPS = 0; // 设置 ADC 时钟分频系数 AdcRegs.ADCTRL3.bit.ADCBGRFDN = 1; // 使能 ADC 带基准电压下降 AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0; // 设定最大转换次数 AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0; // 设定 ADC 转换通道 AdcRegs.ADCTRL1.bit.RESET = 0; // 取消 ADC 复位 } void InitSystem(void) { InitSysCtrl(); // 初始化系统控制寄存 InitPieCtrl(); // 初始化中断控制 InitPieVectTable(); // 初始化中断向量表 InitADC(); // 初始化 ADC InitEPwm1(); // 初始化 EPwm1 } void main(void) { InitSystem(); // 初始化系统 while(1) { voltage_fb = AdcRegs.ADCRESULT0 * 3.3 / 4096; // 读取反馈电压值 error = voltage_ref - voltage_fb; // 计算误差值 integral = integral + error; // 累加误差值 derivative = error - pid_output; // 计算微分值 pid_output = k_p * error + k_i * integral + k_d * derivative; // 计算 PID 控制输出值 if(pid_output > MAX_DUTY_CYCLE) // 限制 PID 控制输出值范围 { pid_output = MAX_DUTY_CYCLE; } else if(pid_output < MIN_DUTY_CYCLE) { pid_output = MIN_DUTY_CYCLE; } EPwm1Regs.CMPA.half.CMPA = pid_output * EPwm1Regs.TBPRD; // 设定 PWM 占空比 } } ``` 以上是一个基于DSP28335的全桥驱动程序的示例,代码中包含了PWM波的生成、的控制、PID控制算法的实现等。需要根据实际情况进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值