wkhn
认证:优质创作者
作者动态
STM32G4系列MCU——数字电源入门(4)
2023-03-14 10:46
STM32G4系列MCU——数字电源入门(3)
2023-03-13 20:05
STM32G4系列MCU——数字电源入门(2)
2023-03-13 19:51
STM32G4系列MCU——数字电源入门(1)
2023-03-13 14:24
2KW交错并联+同步整流BUCK电路的数字DC-DC电源实践
2023-01-31 20:45

通向数字电源之路——LLC数字电源(1)

        最近准备做一个数字控制LLC电源的研发,为了熟悉LLC的工作过程,笔者画了一个简单的LLC数字电源板,以供学习之用。

电源参数:

输入电压:370Vdc-420Vdc

输出电压:22V

输出电流:10A

LLC功率级:对称半桥谐振LLC

控制芯片:Microchip的dsPIC33CK256MP506做全数字环路控制。

控制模式:电压模式。

原理图和PCB板图如上所示。

1)功率级元器件:

关于LLC的功率级的参数设计,网上已经有很多文章介绍相关的内容,这里不做阐述。通过计算得到:

谐振电容:30nF

谐振电感:50uH

变压器初级电感量:268uH。

最高工作频率:220KHz

最低工作频率:88KHz

额定工作频率:150KHz

2)环路控制:

采用全数字环路控制,电压模式。

用到的dsp芯片资源:

ADC的AN0引脚:采样输出电压。

比较器CMP1:输入引脚CMP1A与AN0同一个引脚

PWM1H:控制上桥臂的mos管

PWM1L:控制下桥臂的mos管

dsp内部的运放OA2:用来做输出电流采样的差分放大器。

ADC的ANA1引脚:采样OA2的输出电压。

GPIO:RC1、RC2、RC6用来接LED灯。

下面开始编写代码:

笔者用的是MPLAB X IDE v5.45,MCC的版本是v4.0.2。

新建工程,并打开MCC。

  • 系统时钟的配置

         用外置晶振12MHz,并使能主PLL,将系统时钟配置为100MHz的运行频率。

         再配置辅助时钟,辅助时钟的源来自FRC,并使能辅助PLL,辅助时钟的输出设为500MHz。

         ICD根据实际选择,这里用的是PGC1和PGD1

  • LED引脚配置

         三个LED的输出脚为RC1、RC2、RC6,将对应的脚设为输出。

         重命名LED的名称,并将LED2输出默认为高。

  • 配置定时器1(Timer1)

         Timer1的时钟源设为FOSC/2,打开中断,将定时器周期改为1ms

         然后生成代码。

         为了点亮LED灯,使LED每300ms亮灭一次。还要在tmr1.c文件中添加代码:

      编译通过后,下载到dsp芯片中,如果正常应该可以看到LED闪亮。

  •  配置PWM

         PWM的时钟源选AFVCO/2,时钟频率为500MHz,在PWM Generator1界面中,先不要使能PWM。

         PWM的工作模式为:独立边沿模式。

         PWM的输出模式为:推挽模式。

         在这里要说明一下,PWM输出方式有多种选择,也可以选择互补方式,如果选择互补模式,则可以通过死区寄存器设定一个固定的死区时间,对于LLC上下桥臂占空比对称的驱动方式来说也是比较合适的。但是在本例中,笔者使用了推挽方式,之所以这样做,是因为用推挽方式,可以实现既调频又调宽(PFM+PWM)的发波方式,扩展了输出电压的范围。但是LLC上下桥臂的死区就要自己来设定。通常是用控制占空比的方式,来设定死区时间。

PWM采用“自触发”模式,触发ADC的配置见下图:

数据更新触发模式采用占空比更新触发:

这里的数据更新触发是指:PWM相关的数据,如周期、死区和占空比等数据寄存器是在满足什么触发条件下才会更新,如果选择占空比更新触发,就是当占空比寄存器出现写入情况时,就会自动更新PWM相关的数据。当然也可以手动更新,如下图:

做完上面的配置工作后,生成代码。

因为前面的配置并没有使能PWM模块,所以在main.c文件中,完成外设初始化后,要添加代码使能PWM模块。

因为只有当写入占空比寄存器时,才会进行PWM的寄存器的更新,所以添加代码:

完成上面工作后,编译程序并下载到芯片中,正常情况下,应该有150KHz频率且带有一定死区时间的一对方波输出。调整PG1DC寄存器的数据,也能控制上下桥臂的死区时间。

  • ADC外设配置

         在MCC界面中将ADC外设添加进来

使能ADC,还要使能AN0,触发源选择“PWM1 Trigger1”且中断要打开。

之前已经使能了Timer1中断了,此处的ADC中断要比前面的Timer1的中断优先级高。

将ADC的中断优先级设定为6(数字越大,优先级越高)。

  • 比较器1(CMP1)配置         

         CMP1的输入引脚与ADC的AN0用的是同一个脚,用于输出过压保护。设置输出过压比较值。注意:比较器1的时钟频率固定为500MHz。

  • 配置PWM的PCI输出过压         

         当出现输出过压时,比较器1输出高电平,同时关掉PWM1H和PWM1L的驱动波形,所以要设置PWM的PCI模块。回到MCC中的PWM外设配置界面,注意要切换到“Registers”选项卡中:

然后生成代码,再进行代码的修改。

在adc1.c中包含PWM的头文件。

先注释掉ADC采样中断里面对回调函数的调用。

更新占空比寄存器PG1DC。记住,要将前面在main主函数中更新PG1DC代码去掉。

生成代码后,编译程序并下载到芯片中。芯片上电后,给电源输出加入一个电压,当电压达到CMP1比较器设定的22V时,PWM1H和PWM1L同时输出低电平(由PG1IOCONL.FLTDAT中的两个bit决定,1输出高电平,0输出低电平),mos管关断。过压保护功能有效。

下面说说PWM隔离驱动电路:

因为dsp芯片是在变压器的次级,所以要驱动初级侧的mos管,就需要用到隔离驱动电路。在本例中是用驱动变压器来实现驱动mos管的功能。

上图这是mos管驱动的原理图。

在最初的电路调试时红圈中R92和R98是短路的,D23和D24是没有焊接的状态。测试驱动变压器的次级,波形如下:

可以看到驱动波形有一个非常明显的振荡,会严重干扰mos管的正常工作。为了改善这种情况,在R92和R98串入22Ω的电阻,实测波形为

振荡消失。但还有一个问题,驱动的下降沿太慢了,为了改善驱动的下降速度,焊接D23和D24工位,ES1B。可以看到驱动幅值-17V—+14V。

该驱动电路的优点是,在关断mos管时,mos管的GS两端为负压,能有效的抑制干扰。笔者用的mos管是650V 120mΩ的普通硅管,驱动电压范围是+/-30V,所以是驱动mos管是安全的。经过测试,在小占空比的条件下,也能正常驱动mos管,不会出现上下管幅值不等的情况。

到此,功率级已经能够开环运行了,在额定条件下,能在ZVS状态下工作,在下一节中,将介绍一种快速设计数字环路的方法。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 23
收藏 40
关注 438
成为作者 赚取收益
全部留言
0/200
  • dy-D1jNJuQm 2022-10-29 19:47
    一定是大神
    回复
  • BEYOND1993 2022-07-22 01:00
    用高速隔离栅芯片如UCC21225等,比较好
    回复
  • dy-Qdm76yft 2022-07-10 00:13
    有芯片的封装
    回复
  • dy-Qdm76yft 2022-07-10 00:02
    用变压器做隔离不好吧
    回复
  • Westbrook 2022-06-30 17:45
    大佬,你好!
    回复 1条回复