3.1基于XMC4500单片机的BUCK输出电压闭环控制的编程

3.1.1基于APP方式的XM C4500单片机编程

打开英飞凌为XMC系列单片机提供的集成开发环境DAVE软件,如图3-1所示,选择新建CE Project项目,然后输入项目名称,选择XMC4500 Relax Kit开发板,平台会自动配置APP方式编程所需的相关文档和文件夹。

为了实现BUCK电路的输出电压闭环控制,需要单片机的ADC电压采集模块、中断模块和PWM模块。如图3-2所示,点击添加新的APP按钮,在出现的对话框中输入PWM进行搜索,选择PWM[4.1.12]后点击Add,然后依次添加INTERRUPT与PWM两个APP。

为了实现BUCK电路的输出电压闭环控制,需要单片机的ADC电压采集模块、中断模块和PWM模块。如图3-2所示,点击添加新的APP按钮,在出现的对话框中输入PWM进行搜索,选择PWM[4.1.12]后点击Add,然后依次添加INTERRUPT与PWM两个APP。

图3-3  添加PWM与INTERRUPT的APP

然后正确设置各APP的参数,如下图3-4所示,将ADC APP设置为一路模拟电压采集(12位精度)。

需要正确设置各模块使用的单片机引脚,如图3-5所示。

需要正确设置各模块使用的单片机引脚,如图3-5所示。

将PWM APP的中断源与中断APP建立映射,如图3-6所示。

图3-6 中断源映射关系

3.1.2用户程序的编程

以APP方式在DAVE中编程,在完成上述各APP的参数设置后,点击生成代码,系统可以自动生成main.c等一系列相关文件和文件夹。然后在主程序文件main.c的最下方编辑中断服务程序UserIRQHandler(void)如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
void UserIRQHandler(void)
{
float u2_fb = 0.0f; // 电压反馈值,从ADC获取
float duty_u = 0.0f;
float u2_command = 10.0f;
float P_aur = 0.0f;
static float I_aur = 0.0f;
float PI_aur;
float delta_u2;

ADC_MEASUREMENT_StartConversion(&ADC_MEASUREMENT_0);
u2_fb = ADC_MEASUREMENT_GetResult(&ADC_MEASUREMENT_Channel_A) * 3.3f / 4095 * 10;

if (u2_command > 20.0f)
u2_command = 20.0f;

delta_u2 = u2_command - u2_fb;

P_aur = 0.01f * delta_u2; // P调节
I_aur += 10.0f * delta_u2 * 0.0001f; // I调节

if (I_aur > 1.0f) I_aur = 1.0f;

PI_aur = P_aur + I_aur;

if (PI_aur < 0.0f) PI_aur = 0.0f;
if (PI_aur > 1.0f) PI_aur = 1.0f; // 占空比限幅

duty_u = PI_aur * 10000.0f;
PWM_SetDutyCycle(&PWM_0, duty_u); // 库函数中10000对应100%
}

3.2PocketBench的设置及其与XMC开发板的连接

在PC机PocketBench开发软件中设置BUCK变换器,各参数设置如图3-7所示。XMC单片机开发板与PocketBench连接的试验系统图片如图3-8所示。

3.3系统试验波形及分析

在PocketBench开发软件中启动仿真后,可以观测到波形如图3-9所示,可以看出电压稳定在给定值20V,10kHz开关频率下的电感电流波形也是比较理想的。