随着世界能源危机的到来,太阳能光伏发电在能源结构中正在发挥着越来越大的作用。而太阳能光伏发电系统的核心部件并网逆变器的性能还需要进一步提高。为了迎合市场上对高品质、高性能、智能化并网逆变器的需求,我们将ARM+DSP架构作为并网逆变器的控制系统。本系统集成了ARM和DSP的各自的强大功能,使并网逆变器的性能和智能化水平得到了显著提高。本论文是基于山东大学鲁能实习基地“光伏并网逆变器项目”,目前已经试制出样机。本人主要负责并网逆变器控制系统的软硬件设计工作。本文主要研究内容有: 1.本并网逆变器采用了内高频环逆变技术。文中详细分析了这种逆变器的优缺点,进行了充分的系统分析和论证。 2.采用MATLAB/Simulink软件对并网逆变器的控制算法进行仿真,包括前级DC-DC变换的控制算法以及后级DC-AC逆变的控制算法。通过仿真验证了所设计算法的可行性,对DSP程序开发提供了很好的指导意义。 3.本文将ARM+DSP架构作为逆变器的控制系统,并设计了相应的硬件控制系统。DSP控制板硬件系统包括AD数据采集、硬件电流保护、电源、eCAN总线,SPI总线等硬件电路。ARM板硬件系统包括SPI总线、RS232总线、RS480总线、以太网总线、LCD显示、实时时钟、键盘等硬件电路。 4.本文设计和实现了两种最大功率点跟踪控制算法:功率扰动观察法或增量电导法;孤岛检测方法采用被动式和主动式两种检测方式,被动式所采用的方法是将过/欠电压和电压相位突变检测相结合的方式,主动式采用正反馈频率偏移法;为了实现并网逆变器的输出电流与电网电压同频同相,使用了软件锁相环控制技术。本文分别给出了以上各种算法的控制程序流程图。 5.本文也给出了AD数据采集、eCAN总线、RS232、RS485、以太网、PWM输出等程序流程图,以及DSP和ARM之间的SPI总线通信程序流程图。并且分别给出了ARM管理机控制系统主程序流程图和DSP控制机控制系统主程序流程图。 6.最后对并网逆变器样机进行实验结果分析。结果显示:该样机基本上实现了本文提出的设计方案所应完成的各项功能,样机的性能比较理想。
上传时间: 2013-07-10
上传用户:sz_hjbf
在过去的十几年间,FPGA取得了惊人的发展:集成度已达到1000万等效门、速度可达到400~500MHz。随着FPGA的集成度不断增大,在高密度FPGA中,芯片上时钟的分布质量就变得越来越重要。时钟延时和时钟相位偏移已成为影响系统性能的重要因素。现在,解决时钟延时问题主要使用时钟延时补偿电路。 为了消除FPGA芯片内的时钟延时,减小时钟偏差,本文设计了内置于FPGA芯片中的延迟锁相环,采用一种全数字的电路结构,将传统DLL中的用模拟方式实现的环路滤波器和压控延迟链改进为数字方式实现的时钟延迟测量电路,和延时补偿调整电路,配合特定的控制逻辑电路,完成时钟延时补偿。在输入时钟频率不变的情况下,只需一次调节过程即可完成输入输出时钟的同步,锁定时间较短,噪声不会积累,抗干扰性好。 在Smic0.18um工艺下,设计出的时钟延时补偿电路工作频率范围从25MHz到300MHz,最大抖动时间为35ps,锁定时间为13个输入时钟周期。另外,完成了时钟相移电路的设计,实现可编程相移,为用户提供与输入时钟同频的相位差为90度,180度,270度的相移时钟;时钟占空比调节电路的设计,实现可编程占空比,可以提供占空比为50/50的时钟信号;时钟分频电路的设计,实现频率分频,提供1.5,2,2.5,3,4,5,8,16分频时钟。
上传时间: 2013-07-06
上传用户:LouieWu
SVPWM算法的DSP源码,实现逆变输出与电网电压同频同相,并能跟踪市电幅值变化
上传时间: 2013-07-20
上传用户:yd19890720
VHDL写的LMS算法程序。利用本地正弦信号,根据LMS算法对输入信号进行跟踪。用以产生和输入信号同频同相的本地信号。
上传时间: 2013-09-03
上传用户:chenlong
特点: 精确度0.1%满刻度 可作各式數學演算式功能如:A+B/A-B/AxB/A/B/A&B(Hi or Lo)/|A|/ 16 BIT类比输出功能 输入与输出绝缘耐压2仟伏特/1分钟(input/output/power) 宽范围交直流兩用電源設計 尺寸小,穩定性高
上传时间: 2014-12-23
上传用户:ydd3625
特点(FEATURES) 精确度0.1%满刻度 (Accuracy 0.1%F.S.) 可作各式数学演算式功能如:A+B/A-B/AxB/A/B/A&B(Hi or Lo)/|A| (Math functioA+B/A-B/AxB/A/B/A&B(Hi&Lo)/|A|/etc.....) 16 BIT 类比输出功能(16 bit DAC isolating analog output function) 输入/输出1/输出2绝缘耐压2仟伏特/1分钟(Dielectric strength 2KVac/1min. (input/output1/output2/power)) 宽范围交直流两用电源设计(Wide input range for auxiliary power) 尺寸小,稳定性高(Dimension small and High stability)
上传时间: 2013-11-24
上传用户:541657925
控制策略上采用瞬时电流跟踪控制技术对并网逆变器进行控制,使逆变输出电流能够快速动态跟踪电网电压,逆变电流波形保持正弦波,达到与电网电压同频同相。从而大大减少了对电网的谐波污染,提高了风力发电的并网效率和可靠性。同时,对该方法在Matlab R2008a中利用Simulink仿真电力系统工具箱进行了建模与仿真,仿真结果验证了其正确性和可行性。
上传时间: 2013-12-29
上传用户:z240529971
目前的有源电力滤波器通常是采用基于瞬时无功功率理论的谐波电流检测方法。其中的ip-iq算法需要用到与电网电压同步的正余弦信号,即与电网电压同频同相的标准正余弦信号。该信号的获取可以采用锁相环加正余弦函数发生器的方法,也可采用软件查表的方法。本设计采用全硬件电路完成,即通过锁相环加正弦函数发生器的方法,可自动实时跟踪电网电压的频率和相位,不占用微处理器的软、硬件资源,大大降低了谐波检测算法编程的复杂度。
上传时间: 2013-10-22
上传用户:wxnumen
TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。 TLC2543的特点 (1)12位分辩率A/D转换器; (2)在工作温度范围内10μs转换时间; (3)11个模拟输入通道; (4)3路内置自测试方式; (5)采样率为66kbps; (6)线性误差±1LSBmax; (7)有转换结束输出EOC; (8)具有单、双极性输出; (9)可编程的MSB或LSB前导; (10)可编程输出数据长度。 TLC2543的引脚排列及说明 TLC2543有两种封装形式:DB、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1 TLC2543电路图和程序欣赏 #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit clock=P1^0; sbit d_in=P1^1; sbit d_out=P1^2; sbit _cs=P1^3; uchar a1,b1,c1,d1; float sum,sum1; double sum_final1; double sum_final; uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar wei[]={0xf7,0xfb,0xfd,0xfe}; void delay(unsigned char b) //50us { unsigned char a; for(;b>0;b--) for(a=22;a>0;a--); } void display(uchar a,uchar b,uchar c,uchar d) { P0=duan[a]|0x80; P2=wei[0]; delay(5); P2=0xff; P0=duan[b]; P2=wei[1]; delay(5); P2=0xff; P0=duan[c]; P2=wei[2]; delay(5); P2=0xff; P0=duan[d]; P2=wei[3]; delay(5); P2=0xff; } uint read(uchar port) { uchar i,al=0,ah=0; unsigned long ad; clock=0; _cs=0; port<<=4; for(i=0;i<4;i++) { d_in=port&0x80; clock=1; clock=0; port<<=1; } d_in=0; for(i=0;i<8;i++) { clock=1; clock=0; } _cs=1; delay(5); _cs=0; for(i=0;i<4;i++) { clock=1; ah<<=1; if(d_out)ah|=0x01; clock=0; } for(i=0;i<8;i++) { clock=1; al<<=1; if(d_out) al|=0x01; clock=0; } _cs=1; ad=(uint)ah; ad<<=8; ad|=al; return(ad); } void main() { uchar j; sum=0;sum1=0; sum_final=0; sum_final1=0; while(1) { for(j=0;j<128;j++) { sum1+=read(1); display(a1,b1,c1,d1); } sum=sum1/128; sum1=0; sum_final1=(sum/4095)*5; sum_final=sum_final1*1000; a1=(int)sum_final/1000; b1=(int)sum_final%1000/100; c1=(int)sum_final%1000%100/10; d1=(int)sum_final%10; display(a1,b1,c1,d1); } }
上传时间: 2013-11-19
上传用户:shen1230
#include<iom16v.h> #include<macros.h> #define uint unsigned int #define uchar unsigned char uint a,b,c,d=0; void delay(c) { for for(a=0;a<c;a++) for(b=0;b<12;b++); }; uchar tab[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
上传时间: 2013-10-21
上传用户:13788529953