单相逆变电源软件设计

您所在的位置:网站首页 逆变程序 单相逆变电源软件设计

单相逆变电源软件设计

2024-07-15 10:19| 来源: 网络整理| 查看: 265

单相逆变电源软件设计

文章目录 单相逆变电源软件设计一、题目要求1.题目2.系统总体框图 二、控制核心及环境配置1.CCS环境配置2.Quartus环境配置 三、软件核心功能1.产生SPWM波2.PID算法调控输出电压3.顶层设计 四、其他1.FPGA生成固化文件2.其他代码 总结

一、题目要求 1.题目

在这里插入图片描述 要求设计并制作输入为15V直流电压,输出为10V正弦交流电压的单相逆变电源。

2.系统总体框图

在这里插入图片描述软件思路: FPGA:利用Matlab生成正弦及三角波查找表,在Quartus中使用rom查表产生正弦波与三角波,比较二者的大小,正弦波大于三角波为“1”,正弦波小于三角波为“0”(双极性调制),产生两路互补的SPWM波,经由逆变电路及滤波电路最终可以得到正弦交变电压,通过改变正弦波的幅值可以改变最终输出电压的大小。 单片机:接收频率设定并传给FPGA,显示当前状态,进行AD采样数字信号到具体值的转换,PID算法稳压。 AD采样:采用ADS8688进行采样,通过积分法 U r m s 2 = 1 T ∫ 0 T ∣ U ∣ 2 d t U_{rms}^2=\frac{1}{T}{\int_{0}^{T}}\left| U \right| ^ 2dt Urms2​=T1​∫0T​∣U∣2dt得到交流有效值。

二、控制核心及环境配置

tiva系列单片机:TM4C123GH6PM Cyclone IVE 系列FPGA:EP4CE6E22C8 IDE:Code Composer Studio 以及 Quartus 17.0

1.CCS环境配置

Code Composer Studio配置: 在这里插入图片描述 在这里插入图片描述

2.Quartus环境配置

Quartus 17.0配置: 在这里插入图片描述 在这里插入图片描述

三、软件核心功能 1.产生SPWM波

方案一:单极性调制 在这里插入图片描述 方案二:双极性调制 在这里插入图片描述 这里我使用的是方案二,双极性调制产生正弦波。 首先利用Matlab产生正弦查找表以及三角波查找表。

产生正弦查找表的代码如下:

ADDR_WIDTH=12; DATA_WIDTH=16; depth=2^ADDR_WIDTH; x=ceil(((2^DATA_WIDTH/2-1)*sin(0:pi*2/depth:2*pi)+2^DATA_WIDTH/2)); fid=fopen('sinrom1.mif','w'); fprintf(fid,'width=%d;\n',DATA_WIDTH); fprintf(fid,'depth=%d;\n',depth); fprintf(fid,'address_radix=uns;\n'); fprintf(fid,'data_radix=uns;\n'); fprintf(fid,'Content Begin\n'); for(k=1:depth) fprintf(fid,'%d:%d;\n',k-1,x(k)); end fprintf(fid,'end;');

产生三角波查找表的代码如下:

ADDR_WIDTH=12; DATA_WIDTH=16; depth=2^ADDR_WIDTH; x=ceil(2*(2^DATA_WIDTH/2-1)*sawtooth(0:pi*2/depth:2*pi)+2^DATA_WIDTH - 1); y=ceil(-2*(2^DATA_WIDTH/2-1)*sawtooth(0:pi*2/depth:2*pi)+2^DATA_WIDTH - 1); fid=fopen('trirom1.mif','w'); fprintf(fid,'width=%d;\n',DATA_WIDTH); fprintf(fid,'depth=%d;\n',depth); fprintf(fid,'address_radix=uns;\n'); fprintf(fid,'data_radix=uns;\n'); fprintf(fid,'Content Begin\n'); for(k=1:depth/2) fprintf(fid,'%d:%d;\n',k-1,x(k)); end for(j=depth/2+1:depth) fprintf(fid,'%d:%d;\n',j-1,y(j)); end fprintf(fid,'end;');

然后在Quartus中利用IP核生成rom查找表实例。 在这里插入图片描述 一路Next直到下图所示页面,如图所示选中Matlab生成的.mif文件作为查找表。 在这里插入图片描述 最后勾选生成实例文件即可。 在这里插入图片描述

生成正弦波和三角波后,比较生成互补的SPWM波,注意要设置死区!

生成SPWM波代码如下:

always @(posedge clk, negedge rst_n) begin if(!rst_n) begin spwm1_tmp


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3