全国电子设计大赛一等奖论文三相逆变微电网并联.docx
《全国电子设计大赛一等奖论文三相逆变微电网并联.docx》由会员分享,可在线阅读,更多相关《全国电子设计大赛一等奖论文三相逆变微电网并联.docx(18页珍藏版)》请在冰点文库上搜索。
微电网模拟系统设计报告
题目:
微电网模拟系统
摘要
本文针对微电网模拟系统研究背景,设计了可编程逻辑器件FPGA为控制核心的两个三相逆变器系统。
本系统的硬件主要由逆变主电路系统和FPGA控制电路系统构成,包括FPGA控制电路、CC2640的AD采样电路、三相逆变驱动电路、互感器电路、辅助电源电路、调压整流电路、滤波及缓冲电路等。
由FPGA控制电路输出六路PWM信号(PWM1-PWM6)来控制逆变器的MOS管通断,通过电流电压互感器对输出进行反馈,再经A/D转换器进行采样,传给FPGA控制电路来调节输出,构成闭环控制系统。
本系统软件设计是利用VerilogHDL的FPGA逻辑门、IP核、时钟(DMC)等资源生成SPWM模块、并行通信模块结合TI的CC260的A/D采集和显示模块。
最后,将软硬件系统联合调试,经验证,软硬件都达到预期目标,实际效果较好。
关键字:
微电网模拟系统;FPGA可编程逻辑;三相逆变;SPWM模块
目录
1 方案论证 1
1.1 主控单元的比较与选择 1
1.2 SPWM模块的比较与选择 1
1.3 驱动模块的比较与选择 1
1.4 方案描述 2
2 理论分析与计算 2
2.1 逆变器提高效率的方法 2
2.2 运行模式控制策略 3
3 电路与程序设计 3
3.1 逆变器主电路与器件选择 3
3.1.1 总体系统电路 4
3.1.2 逆变电路 4
3.1.3 滤波电路 4
3.2 控制电路与控制程序 5
3.2.1 控制电路 5
3.2.2 控制程序 6
4 测试方案与测试结果 6
4.1 测试方案及测试条件 6
4.2 测试结果 7
4.3 测试结果分析 7
5 总结 7
参考文献 8
附件 8
附1:
元器件明细表 8
附2:
仪器设备清单 8
附3:
电路图图纸 9
附4:
PCB图 10
附6:
程序清单 11
ii
1方案论证
1.1主控单元的比较与选择
方案一:
采用数字信号处理器DSP。
传统基于DSP的逆变控制的设计虽然在计算的复杂度和软件的灵活性上有一定优势,但是程序为顺序运行从而导致逆变器控制算法在计算速度上受到很大的限制。
方案二:
采用可编程逻辑器件FPGA。
基于FPGA的逆变器的并行特点使其非常适合产生SPWM,从而在速度上占很大的优势,适合本题目要求。
综上所述,选择方案二。
1.2SPWM模块的比较与选择
方案一:
采用比较器对正弦波和三角波进行比较得到PWM波,然后送入驱动电路放大再驱动MOSFET。
但该方案受运放参数影响较大,调试困难。
方案二:
运用可编程逻辑器件FPGA产生PWM通过正弦值查表法来产生SPWM。
该方案实现简单,有较强的抗干扰能力。
综上所述,选择方案二。
1.3驱动模块的比较与选择
方案一:
采用专用驱动芯片IRS2186搭建驱动电路。
驱动芯片配合外围电路完成,该方法优点是系统的集成度高,有良好的过载和短路保护功能。
。
方案二:
采用分立元器件搭建驱动电路。
电路中选用高速开关管8050和8550,其反应速度可以达到微秒级,可以避免信号在传输过程中的累加延迟,有利于减少输出波形的失真度。
但电路较复杂化,需要额外搭建保护电路。
综上所述,选择方案一。
1.4方案描述
本设计的整体方案主要有FPGA控制模块,SPWM模块,驱动模块,A/D采样模块,OLED显示模块和并行通信模块组成。
FPGA
可编程逻辑主控
CC2640
低功耗MCU
并行通信
三相全桥
逆变电路
MOS
驱动电路
LC滤波器
按键设置
显示模块
滤波电路
输入
输出
图1总体系统方案框架图
2理论分析与计算
2.1逆变器提高效率的方法
逆变器效率提升技术主要集中在两个方面:
结构和器件等硬件;控制及调制策略。
结构及器件上的改进,采用软开关技术通过谐振电路,实现功率器件在零电压状态下开通或者关断,从而有效减小换流时MOS管的开关损耗,达到提升逆变器效率的目的。
控制策略的改进,采用电压空间矢量脉宽调制技术通过三相交流电压综合在一起,通过对称排列方式,可获得减小MOS管开关次数的效果,从而能够进一步减小逆变器功率器件的开关损耗。
2.2运行模式控制策略
本设计三相逆变器有单独工作模式和并联工作模式。
通过分析逆变电源并联基础模型,采样一种基于FPGA的无互连线复合控制方案。
双闭环反馈控制中,设Kv,Kvf为电压环的比例系数和反馈系数,Kc,Kcf为电流调节器的比例系数和反馈系数,Uref为参考的指令电压。
忽略参数r的影响,经过环路分析,设K=KcKvKpwm,可推导出系统传递函数为:
Ps=Uc(s)Uref(s)=KLCs2+KcKcfKpwmCs+KKvf+1(公式1)
故空载时逆变系统的幅值静差:
1-UcsUrefs=1-KKKv+1-LCw22+KcKfKpwmCs+KKvf+12(公式2)
可见,系统的静差可随Kv,Kvf和Kc,Kcf的增大而不断减小。
基于内模原理的重复控制技术,对于给定或具有重复性干扰的系统具有较好的控制效果,有效降低并联电流波形的THD。
结合双闭环和重复控制的并联波形控制方法,解决并联逆变电源的功率分配问题,不用模式切换即可方便地并联使用。
3电路与程序设计
3.1逆变器主电路与器件选择
本系统器件选择FPGA主控,LC滤波电路,全桥AOTF298L芯片,电压电流互感器,OLED显示屏,以及薄膜按键。
3.1.1总体系统电路
图2总体系统电路图
3.1.2逆变电路
逆变电路的设计采用全控型MOSFET三相桥式逆变电路。
由FPGA控制器产生SPWM到IRS2186芯片搭建的驱动电路,驱动电路控制MOSFET管的通断,逆变输出经过低通滤波器将SPWM波形变换成较稳定的正弦波电压。
在此电路中存在布线电感,在开关器件关断的过程中容易出现过尖峰电压,严重时会损坏开关器件,因此需要设置保护电路来抑制尖峰电压,而且设置瞬态电压抑制器和快速二极管组成的钳位电路可将MOSFET关断过程产生的尖峰电压限制在安全范围内,同时可以减少开关损耗。
逆变电路图如下:
FPGA
主控制器
三相
SPWM
IRS2186
驱动电路
三相逆变
滤波输出
图3逆变电路图
3.1.3滤波电路
滤波电路的设计在逆变器的输出中含有逆变器开关频率和开关频率整数倍附近的谐波,如果不滤除这些高频谐波,将会给电路带来谐波污染。
因此本设计选择LC滤波电路。
逆变全桥输出的是200KHz的SPWM方波,基波为工频50Hz,还含有低次和高次谐波,其中幅值最大的是200KHz的谐波。
在实际应用中,忽略电感对负载的分压作用及电容对负载的分流作用,并考虑变压器的电感,经计算及实验调整后,取L =100u H,C=4.7uF/100V。
3.2控制电路与控制程序
本系统采用FPGA和CC2640联合控制方案,能更好的实现均流和任意比例电流输出,达到较好并联的效果。
(控制电路见附录)
3.2.1控制程序
开始
装载正弦值
按键?
SPWM输出
结束
调幅调频
图4主程序程序流程图
3.3测试方案与测试结果
第一步:
将四通道示波器的三个探针接在单片机输出PWM的引脚;
第二步:
记录输出三相波形数据;
第三步:
改变单片机输出SPWM的频率,返回第一步操作,直到调出50HZ的SPWM波测试完。
3.4测试结果
图5三相输出波形图
3.5测试结果分析
结果分析由数据表明,三相逆变电源输出每路相位相差120度的频率可调的正弦波,电压有效值24V,电流最大输出3A。
基本实现所有功能,满足题目要求。
4总结
通过比赛,大大提高了我们的创新精神,动手能力,团队协作和竞争意识。
充分发挥团队合作精神,工作进展很顺利。
我们在比赛中做到精益求精,在完成基本功能之后,又向发挥部分进发,最后完成了所有的基本功能和发挥部分,较好的达到了题目要求的各项指标。
参考文献
[1] 邱关源.电路[M].北京:
高等教育出版社,2003
[2] 华成英,童诗白.模拟电子技术基础[M].北京:
高等教育出版社,2006
[3] 李练兵,光伏发电并网逆变技术:
化学工业出版社,2016
[4] 路秋生,中大功率开关变换器:
机械工业出版社,2017
附件
附1:
元器件明细表
序号
元器件
数量
1
可编程逻辑器件FPGA
2
2
TLC272
1
3
MOS管
12
4
散热片
2
5
电容
若干
6
INA282
10
7
电阻
若干
附2:
仪器设备清单
序号
仪器
数量
1
四位半数字万用表
4
2
数字电桥
1
3
直流稳压电源
1
4
函数信发生器
1
5
500MHz4GSa/s数字示波器
1
附3:
电路图图纸
附图1过压保护电路图
附图2主控制电路图
附4:
PCB图
附图3主控板PCB正面图
附图4主控板PCB背面图
附6:
程序清单
FPGA代码:
modulesanxiangA
(clk,ah,al,bh,bl,ch,cl,hafeh,hafel,led,key_in,key_in1,key_out,data_in,
control_jk,din,sclk,sync,enable,ldac,v_back,flag_out,flag_in);
inputclk;//输入时钟50M
input[1:
0]data_in;
inputv_back;//电压采样反馈
input[4:
0]key_in1;//映射按键key[4]是并联控制信号
input[4:
0]key_in;//按键输入
output[4:
0]key_out;//按键输出
wire[4:
0]key_out;//
assignkey_out[3:
0]=key_in[3:
0];
assignkey_out[4]=key_temp;
regkey_temp;
outputcontrol_jk;//并联继电器控制
regcontrol_jk=0;//0为继电器断开
inputflag_in;
outputflag_out;
wireflag_out;
assignflag_out=flag_a;
outputhafeh;//50%pwm高管
outputhafel;//50%pwm低管
output[3:
0]led;
parameter[25:
0]pwm_timer_full=26'd1000;//pwm总计数1000次即1000档
reg[9:
0]pwm_timer_high=10'd450;//pwm最高档位不应大于pwm_timer_full用于调幅
reg[9:
0]pwm_hold_a=10'd10;//pwm高电平所用计数数量
reg[9:
0]pwm_hold_b=10'd10;//pwm高电平所用计数数量
reg[9:
0]pwm_hold_c=10'd10;//pwm高电平所用计数数量
reg[25:
0]count_pwm_count_a=26'd0;//a通道的pwm计数
reg[25:
0]count_pwm_count_b=26'd0;//b通道的pwm计数
reg[25:
0]count_pwm_count_c=26'd0;//c通道的pwm计数
parameter[25:
0]spwm_timer_1hz=26'd25_000;//spwm计数计数值为25’d24_999_999时为1HZ实质为半周期
reg[7:
0]spwm_f=8'd50;//spwm频率
reg[25:
0]count_spwm=26'd49_999;//spwm计数即一周期pwm波的总数量用于设置spwm波的频率最大为25’d24_999_999且count_spwm=spwm_timer_1hz/spwm_f
reg[25:
0]count=26'd0;
reg[3:
0]led;
regflag=0;//为0时是单通道为1时为并联
regflag_a=1;//为1时为上半波为0时为下班波
regflag_b=1;
regflag_c=1;
reg[25:
0]data_tatol=26'd500;//总数据量
reg[15:
0]datax[0:
500];//偏转值数据库
always@(posedgeclk)
begin
channel<=D;
count_spwm<=spwm_timer_1hz/spwm_f;
if(flag_a==1)beginpwm_hold_a<=10'd500+(datax[count_pwm_count_a*data_tatol/count_spwm]*pwm_timer_high/pwm_timer_full);end
if(flag_b==1)beginpwm_hold_b<=10'd500+(datax[count_pwm_count_b*data_tatol/count_spwm]*pwm_timer_high/pwm_timer_full);end
if(flag_c==1)beginpwm_hold_c<=10'd500+(datax[count_pwm_count_c*data_tatol/count_spwm]*pwm_timer_high/pwm_timer_full);end
if(flag_a==0)beginpwm_hold_a<=10'd500-(datax[count_pwm_count_a*data_tatol/count_spwm]*pwm_timer_high/pwm_timer_full);end
if(flag_b==0)beginpwm_hold_b<=10'd500-(datax[count_pwm_count_b*data_tatol/count_spwm]*pwm_timer_high/pwm_timer_full);end
if(flag_c==0)beginpwm_hold_c<=10'd500-(datax[count_pwm_count_c*data_tatol/count_spwm]*pwm_timer_high/pwm_timer_full);end
led<=4'b1110;
count<=count+26'd1;
if(count==26'd1)beginah<=1;bh<=1;ch<=1;al<=0;bl<=0;cl<=0;end
if(count==pwm_hold_a)beginah<=0;end
if(count==pwm_hold_b)beginbh<=0;end
if(count==pwm_hold_c)beginch<=0;end
if((count==pwm_hold_a+10'd5)&(pwm_hold_aif((count==pwm_hold_b+10'd5)&(pwm_hold_aif((count==pwm_hold_c+10'd5)&(pwm_hold_aif(count==pwm_timer_full-10'd5)beginal<=0;bl<=0;cl<=0;end
if(count==pwm_timer_full)begincount<=26'd0;key_temp<=1;
elsebeginpwm_timer_high<=pwm_timer_high-10'd1;endend//反馈电压监控
count_pwm_count_a<=count_pwm_count_a+26'd1;
count_pwm_count_b<=count_pwm_count_b+26'd1;
count_pwm_count_c<=count_pwm_count_c+26'd1;
end
if(pwm_hold_a==0)beginah<=0;end
if(pwm_hold_b==0)beginbh<=0;end
if(pwm_hold_c==0)beginch<=0;end
if((count_pwm_count_a>count_spwm)&&(count==26'd0))begincount_pwm_count_a<=8'd0;flag_a<=~flag_a;key_temp<=0;end
if((count_pwm_count_a==count_spwm*2/3)&&(count==26'd0))begincount_pwm_count_b<=8'd0;flag_b<=~flag_b;end
if((count_pwm_count_b==count_spwm*2/3)&&(count==26'd0))begincount_pwm_count_c<=8'd0;flag_c<=~flag_c;end
/*以下为按键监控*/
if(flag_key[0])beginif(spwm_f>=8'd100)beginspwm_f<=8'd100;endelsebeginspwm_f<=spwm_f+8'd1;endend
if(flag_key[1])beginif(spwm_f<=8'd0)beginspwm_f<=8'd0;endelsebeginspwm_f<=spwm_f-8'd1;endend
// if(flag_key[2])beginif(data>=16'h3998)begindata<=16'h3998;endelsebegindata<=data+16'd1;endend
// if(flag_key[3])beginif(data==16'h666)begindata<=16'h666;endelsebegindata<=data+16'd1;endend
if(flag_key[2])beginif(pwm_timer_high>=10'd475)beginpwm_timer_high<=10'd475;endelsebeginpwm_timer_high<=pwm_timer_high+10'd20;endend
if(flag_key[3])beginif(pwm_timer_high<=10'd25)beginpwm_timer_high<=10'd25;endelsebeginpwm_timer_high<=pwm_timer_high-10'd20;endend
if(flag_key[4])begin
beginflag_a<=flag_in;count_pwm_count_a<=8'd0;count<=26'd0;end
end
if(flag_key1[0])beginif(spwm_f>=8'd100)beginspwm_f<=8'd100;endelsebeginspwm_f<=spwm_f+8'd1;endend
if(flag_key1[1])beginif(spwm_f<=8'd0)beginspwm_f<=8'd0;endelsebeginspwm_f<=spwm_f-8'd1;endend
// if(flag_key[2])beginif(data>=16'h3998)begindata<=16'h3998;endelsebegindata<=data+16'd1;endend
// if(flag_key[3])beginif(data==16'h666)begindata<=16'h666;endelsebegindata<=data+16'd1;endend
if(flag_key1[2])beginif(pwm_timer_high>=10'd480)beginpwm_timer_high<=10'd475;endelsebeginpwm_timer_high<=pwm_timer_high+10'd10;endend
if(flag_key1[3])beginif(pwm_timer_high<=10'd25)beginpwm_timer_high<=10'd25;endelsebeginpwm_timer_high<=pwm_timer_high-10'd10;endend
if(flag_key1[4])begin
beginflag_a<=flag_in;count_pwm_count_a<=8'd0;count<=26'd0;end
//以下为外部来着2640的电压控制
// data<=16'h3fff;channel<=D;
// case(data_in)
// 1:
beginif(data>=16'h3998)begindata<=16'h3998;endelsebegindata<=data+16'd1;endend
// 2:
beginif(data<=16'h666)begindata<=16'h666;endelsebegindata<=data+16'd1;endend
// 3:
begindata<=data;end
// default:
begindata<=16'd12000;channel<=C;end
//endcase
end
/*以下为50%pwm输出*/
reg[9:
0]count_hafe=10'd0;
always@(posedgeclk)
begin
if(count_hafe==500)beginhafeh<=0;end
if(count_hafe==505)beginhafel<=1;end
if(count_hafe==995)beginhafel<=0;end
if(count_hafe==1000)beginhafeh<=1;count_hafe<=count_hafe+10'd1;end
count_hafe<=count_hafe+10'd1;
end
/*以下为按键设置*/
reg[19:
0]counttimer=20'd0;
reg[4:
0]key_scan;
reg[4:
0]key_scan1;
always@(posedgeclk)
begin
if(counttimer==20'd999_999)//20ms扫描一次按键,20ms计数(50M/50-1=999_999)
beg