省二【C题-安师大】文龙队-三端口DC-DC变换器
本系统目的为实现DC-DC变换器,设计以buck电路为核心。变换器有两种工作模式:模式 I,模拟光伏电池向负载供电的同时为电池组充电(IB>0);模式 II,模拟光伏电池和电池组同时为负载供电(IB<0)。
标签
2021电赛
C题
zhangwenlong
更新2021-12-14
安徽师范大学
2234

1引言

题目整体考察的就是DC-DC变换器的设计、使用、控制。

设计方面可以通过基本的升降压电路、DC-DC芯片完成DC-DC变换功能。而本次设计就选用了最基本的buck电路闭环控制设计。Buck电路,又称降压电路,由PWM波控制其,基本特征是DC-DC转换电路,输出电压低于输入电压。输入电流为脉动的,输出电流为连续的。实现了DC-DC变换的相对稳定输出。

控制方面,选用了国产芯片MM32SPIN27PS,MM32SPIN27PS是灵动专门为电机与电源相关应用设计的产品家族。本产品是使用高性能的Arm Cortex-M0 为内核的32 位微控制器,最高工作频率可达96MHz,内置128KB Flash、12KB SRAM,具有丰富的I/O 端口和外设。

电流检测采用ACS712模块,ACS712是基于霍尔效应的电流传感器,带 2.1 kVRMS电压绝缘及低电阻电流导体的全集成传感器IC可检测,可对0-20A的电流进行测量。

2系统方案

2.1  方案描述

根据题目的要求,确定如下方案:选择Buke电路进行DC降压;使用MM32SPIN27PS对电路进行信息处理和控制;通过控制Buke电路,从而控制电源的充放电。

2.2  方案比较

(1)最小系统板的选择

方案一:C51

方案二:M32SPIN27PS

方案三:STM32

方案四:K60

51单片机处理位数太低,数据处理和运算能力太低,显然不满足系统要求;M32SPIN27PS、STM32和K60是32位,三者都满足系统要求,不过K60的价格高,性价比不高,不建议采用;处理运算时,STM32速度略快但功耗也略高;M32SPIN27PS是专门为电机与电源相关应用设计,具有丰富的I/O口,较好满足所需,且为国产芯片。综合所做系统复杂度考虑,相对而言,M32SPIN27PS更为适合。

(2)基于DC-DC降压的选择

方案一:降压芯片SY840ABC

方案二:搭建降压电路Buke

初始选择降压芯片SY840ABC,搭建好外围电路后,进行测试后,未达到预期效果,所具有的资料太少,且所需元件也较稀有,不太适合短时间电路搭建;Buck电路是基础电路,也是最为经典的降压电路,且输入输出范围符合要求,相对更为合适。

(3)驱动芯片的选择

方案一:EG2104

方案二:IR2104

EG2104 高端的工作电压可达 600V,低端 Vcc的电源电压范围宽 2.8V~20V,静态功耗小于 1uA;IR2104工作电压可达600V,稳定性相对较好,且芯片外围电路简单,而EG2104芯片稳定性较差,综合比较选择IR2104作为驱动芯片更合适。

2.3  方案选择

综合所有选项,系统方案选定完毕。如下:

最小系统板:M32SPIN27PS 

降压电路选择:Buck

驱动芯片:IR2104

3系统结构论证与电路设计

3.1 总电路系统框图及流程图

直流电源流入电路,首先电源两极接入一个滤波电容,再通过Buck电路得到输出电压,输出接入负载和电池电源,同样都需要并联电容。系统总体框图如图所示:

FtbuOxuuQ_bqemaP5pE_utguwIyc

MM32核心板控制Buck电路,通过对电路电压电流进行采样,通过PID算法,来得到稳定的电压输出。电源的充放电同样可以通过Buke电路来控制其充放的状态。系统流程图如图所示:

Fnh4h7iVWS_3_oLrzBAtW3Xt12M9

3.2 Buke电路与驱动电路原理图

控制的PWM信号送入以IR2104为驱动芯片的驱动电路,用来驱动IRF540N的导通或断开,从而使得达到降压目的。原理图如图所示:

FjA1I7AI9q_ytqSJ_JqvRzTfY3Pq

 

4程序设计

4.1 程序设计流程

Fn8DYMhV1Ot1g-7a_c-eT1vom6xl

4.2 程序介绍

程序设计采用模块化设计,各功能函数经过主函数调用,程序首先是初始化,当开关启动后,对各引脚初始化,然后主函数开始调动各函数。

对电压电流进行连续采样,通过权重滤波算法,得到较为准确的采样值,根据采样值与目标值的偏差,利用PID算法来控制PWM波的占空比,从而实现输出电压的升降。对电流电压采样值的判断,观察电路环境,与模式一模式二的条件进行匹配,从而进行模式选择。

4.2 程序介绍

见附件

5测试方案与测试结果

5.1 测试设备及方案 

所用测试设备有:直流电压源,万用表,数字示波器。

测试方案描述如下:

(1)US=50V、IO=1.2A 条件下,变换器工作在模式 I,UO=30V±0.1V,IB≥0.1A。

 表1 基本要求(1)的测量结果

 

1

2

3

4

5

分析

UO

30.01

30.05

29.92

30.08

30.15

存在测量误差

IB

0.22A

0.23A

0.18A

0.20A

0.15A

存在测量误差

(2)IO=1.2A、US由 45V 增加至 55V ,电压调整率 SU ≤ 0.5% 。

表2 基本要求(2)的测量结果

 

1

2

3

4

5

分析

SU

0.5%

0.45%

0.55%

0.40%

0.45%

有测量误差

(3)US=50V、IO由 2A 减小至 0.6A,负载调整率 SI ≤ 0.5%。

表3 基本要求(3)的测量结果

 

1

2

3

4

5

分析

SI

0.5%

0.45%

0.55%

0.40%

0.45%

有测量误差

(4)US=50V、IO=1.2A 条件下,变换器效率hI ≥90%。

表4 基本要求(4)的测量结果

 

1

2

3

4

5

分析

hI

94%

95%

95%

94%

94%

满足

5.2测试结果分析

(1)基础要求(1):测量结果满足要求,有少许误差,应是测量方面存在的误差,可以忽略,相对结果而言,基本满足需求。

(2)基础要求(2):测量结果满足要求,有少许误差,应是测量方面存在的误差,可以忽略,相对结果而言,基本满足需求。

(3)基础要求(3):测量结果满足要求,有少许误差,应是测量方面存在的误差,可以忽略,相对结果而言,基本满足需求。

(4)基础要求(4):测量结果满足要求,设计方案可行。

6结论

电源类实验有一定的危险性,一定要选好正确的方案,当电路连接好时一定要检查有没有错误,最好请教老师。本次实验历时3天4夜,在这个过程中学到了很多,也深深认识到自己的不足,电源类题目考察的是我们对电路一些基本特性的理解,电路元件大小的选择,一些参数的修改,这些改动都会影响最后产品的性能。

心得:第二次做电赛,又有了不同的收获,第一次做电赛的时候我们磕磕绊绊拿了一个省三,这一次我们选择了电源题,是新的开始亦是突破,可惜,对于一些参数的选定和最终电路的搭建出现了一点问题,不过,参与对我们来说就是最大的收货,理论和实践的结合也让我们意识到知识的重要性,这一次学到了很多,也很开心有这样一次机会用这几天,用尽全身经历来做这件事情。

最后,电赛已经结束了,可我们并不认为这个作品已经完成,没完成的我们也一定会在日后的时间里来完善它。

附件代码:

#include "headfile.h"
// **************************** value group ****************************
char txt[20];
// **************************** code group ****************************
int main(void)
{
        direction = 1;                        //   Set initial direction to positive 
        delta = 1;                           //   Amount by which to adjust the PWM - 7-bit resolution so duty step of 2% 
        pwm = 26;                           //   Initial position of the PWM - 50% Duty Cycle with 7-bit resolution.    
        upperbound = 49;                     //   Upper bound of the PWM %          
        lowerbound = 1;                        //   Lower bound of the PWM %          
        power = 0;                           //   Initial Value of Power             
board_init(true); 
// 初始化 debug 输出串口
        lcd_init();
        gpio_init(A9,GPO_PP,1);
        gpio_init(A10,GPO_PP,1);

        adc_init (ADC_1, ADC1_CH00_A00, ADC_12BIT);
        adc_init (ADC_1, ADC1_CH01_A01, ADC_12BIT);
        adc_init (ADC_1, ADC1_CH02_A02, ADC_12BIT);
        adc_init (ADC_1, ADC1_CH03_A03, ADC_12BIT);
        adc_init (ADC_1, ADC1_CH04_A04, ADC_12BIT);
        adc_init (ADC_1, ADC1_CH05_A05, ADC_12BIT);
        adc_init (ADC_1, ADC1_CH06_A06, ADC_12BIT);
        adc_init (ADC_1, ADC1_CH07_A07, ADC_12BIT);
        adc_init (ADC_1, ADC1_CH08_B00, ADC_12BIT);
        adc_init (ADC_1, ADC1_CH09_B01, ADC_12BIT);
        adc_init (ADC_1, ADC1_CH10_B02, ADC_12BIT);
        pwm_init (TIM_2,TIM_2_CH3_C09,50*1000,6000);
        pwm_init (TIM_2,TIM_2_CH4_B11,50*1000,5600);
       tim_interrupt_init (TIM_3, 200, 0x00);
//此处编写用户代码(例如:外设初始化代码等)

//此处编写用户代码(例如:外设初始化代码等)

while(1)
{
           systick_delay_ms(300);
          lcd_clear(WHITE);
          sprintf(txt,"U1:%d",ADC_Value[0]); 
          lcd_showstr(0,0,txt);
          sprintf(txt,"error:%.2f",error); 
          lcd_showstr(0,1,txt);
          sprintf(txt,"pwm_i:%.2f",pwm_i); 
          lcd_showstr(0,2,txt);
          sprintf(txt,"pwm:%d",pwm); 
          lcd_showstr(0,3,txt);
          sprintf(txt,"Us:%d",ADC_Value[1]); 
          lcd_showstr(0,4,txt);
//此处编写需要循环执行的代码
}
}
// **************************** code group ****************************

 

 

附件下载
附件.rar
团队介绍
安徽师范大学
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号