求MPPT最大功率点跟踪C程序算法!

求MPPT最大功率点跟踪C程序算法!,第1张

#include "16F877h"

#device ADC = 8 // 一个8位寄存器ADC模式

#fuses HS, NOWDT, PUT, NOPROTECT, BROWNOUT, NODEBUG, NOLVP // High-Speed 20MHz, No Watchdog, No Protection, Brownout Protection,

#use delay(clock=20000000) // 20MHz Crystal

//int is defined as 8-bit unsigned integer using CCS compiler

void main (void)

{

signed int direction;

int delta;

int pwm;

int upperbound;

int lowerbound;

float power;

float powerold;

float voltage;

float voltagedrop;

float voltagedifference;

float currentma;

float measuredvoltage;

float measuredvoltagedrop;

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

setup_adc(ADC_CLOCK_DIV_32); // ADC clock

setup_adc_ports(ALL_ANALOG); // Set all inputs to analog

output_low(PIN_C1); // Set CCP1 output low

setup_ccp1(ccp_pwm); // setup pin CCP1 (RC2) to do PWM

setup_timer_2(T2_DIV_BY_1,12,1); // 384615kHz

while (1)

{

//delay_ms(1000) // Wait 1 Second

set_adc_channel(0); // Select RA0

//delay_ms(20); // Wait to Read ADC

measuredvoltage = read_adc(); // Read the voltage input from ADC channel 0

set_adc_channel(1); // Select RA1

//delay_ms(20); // Wait to Read ADC

measuredvoltagedrop = read_adc(); // Read the Voltage dropped across the R from ADC channel 1

voltage = measuredvoltage/51; // Measured Voltage is 51 steps per Volt at a Reference Voltage of 5V

voltagedrop = measuredvoltagedrop/51;

voltagedifference = voltage - voltagedrop;

currentma = voltagedifference; // Calculating Current using 1K Resistance

powerold = power; // Calculate the Power from the inputs

power = voltage currentma;

pwm = pwm + directiondelta; // Adjust Pulse Width Modulation Value by Delta value

if (power < powerold) // If at top of curve, change direction

{

direction = -direction;

continue;

}

if (pwm > upperbound) // If at maximum PWM, Stop here

{

pwm = upperbound;

continue;

}

if (pwm < lowerbound) // If at minimum PWM, Stop here

{

pwm = lowerbound;

continue;

}

set_pwm1_duty(pwm); // Set PWM Mark-Space Radio to approx 50%

}

}

太阳能光伏系统中太阳能控制器是非常重要的,控制器主要是以保护太阳能板和蓄电池的充电以及蓄电池负载的供电有一个保护和智能控制化的作用。下面我来为大家了解使用太阳能控制器和不使用太阳能控制器的好处和后果。

第一:控制器主要功能有过充、过放、过载、防反接、短路等自动保护功能,过充:容易对蓄电池的寿命产生影响,严重还会发生爆炸和永久损坏等;过放:如果蓄电池的放电深度在70%左右,哪么蓄电池循环使用大概在800次左右,以此循环,如果放电深度在10%或以下,蓄电池只能循环使用100次不到,这样会影响使用的寿命严重损伤;过载是对控制器的本身自我保护;反接会对太阳能板、蓄电池、负载会有不好人后果,如果严重还会引起火灾及爆炸;短路是使短路电路中的各元件受到损坏。从以上的种种问题看来,如果使用太阳能控制器以上的问题都不是问题,全部都可以避免。

第二:控制器有PWM和MPPT充电模式,PWM--脉宽调制是指用微处理器的数字输出来对模拟电路进行控制,可以大幅度降低系统的成本和功耗。MPPT是以最大功率点跟踪。

第三:控制器有自动识别白天黑夜功能,天关黑夜开,使用太阳能控制器会省事方便。

第四:控制器内设温度传感器,会对蓄电池进行有效的补差。

第五:控制器有五种负载工作模式:纯光控模式、光时控模式、手动模式、调试模式、常开模式,太阳能控制器还有双时段功能、系统电压自动识别、三段式充电算法及防雷等等优势,太阳能控制器在不同的地区可以使用不同模式是非常方便的。

太阳能控制器是太阳能离网发电系统的重要组成部分,您以微小的代价换来安全、稳定、放心、省心,这就是太阳能光伏离网发电系统需要用到太阳能控制器的重要原因。

如果你还想了解更多相关信息,请百度搜索:奥林斯科技

推荐阅读:奥林斯科技为什么要选择MPPT太阳能控制器

可否把您的光伏电池的配置,蓄电池的规格及电池充电的控制曲线(各个阶段的电压和电流控制值)发给我们,这样便于定位问题

第二,我们可以从失效的现象逆推

即可能产生电池温度过高并出现鼓包的情况

恒流充电的时候,电流控制出现问题(及恒流充电控制是否可靠),导致一段时间内充电电流过大(这个也和你的MPPT或充电控制程序有关系)

浮充电压设置是否合适,或者浮充电压控制是否可靠

是否有温度检测保护

系统工作环境是否有些恶劣

etc

MPPT。。。。。。同样光照温度下,用个可变电源(推荐变频器功率自己定)负载不变电池板和变频器之间串个功率表,调变频器的输出电压就OK了,快点给分!!!当你的输出电压慢慢往上调时,会到达此时电池板的最大功率点,你再继续往上调功率会下降,在上升和下降之间的那个点就是MPPT最大功率点跟踪,然后每个光照的点都测试一片记录下来,让软件员写程序采样电流控制电压自己跟踪就可以了。但是后面的事情还多,比如国家的检测标准等!先告诉你这个方法,快点给分!!

系统组成及工作原理

1.1 光伏水泵系统的结构图

由图1可知,系统利用太阳电池阵列将太阳能直接转变成电能。经过DC/DC升压,和具有TMPPT功能的变频器后输出三相交流电压驱动交流异步电机和水泵负载,完成向水塔储水功能。其中主要包括4部分:太阳电池阵列;具有TMPPT功能的变频器;水泵负载;储水装置。

1.2 变频器主电路及硬件构成

本系统所采用的主电路及硬件控制框图如图2所示。主电路DC/DC部分采用性能优越的推挽正激式电路进行升压;DC/AC部分采用三相桥式逆变电路。主功率器件采用ASIPM(一体化智能功率模块)PS12036,系统控制核心由16位数字信号控制器dsPIC30F2010构成。外围控制电路包括阵列母线电压检测和水位打干检测电路。系统首先通过初始设置的工作方式和PI参数工作,然后由MPPT子程序实时搜索出的电压值作为内环CVT的给定,通过PI调节得到工作频率值,计算出PWM信号的占空比,实现光伏阵列的真正最大功率跟踪(TMPPT),并保持异步电机的V/f比为恒值。系统将MPPT和逆变器相结合,利用ASIPM模块自带的故障检测功能进行检测和保护,结构简单,控制方便。

1.2.1 DC/DC升压电路简述

1.2.1.1主电路选择

对于中小功率的光伏水泵来说,光伏阵列电压大都是低压(24v、36v、48V),对于升压主电路的选择,人们一般选择推挽电路,因为推挽电路变压器原边工作电压就是直流侧输入电压,同时驱动不需隔离,因此比较适合输入电压较低的场合。但是偏磁问题是制约其应用的一大不利因素,功率管的参数差异和变压器的绕制工艺都有可能使推挽电路工作在一种不稳定状态。基于诸多因素的考虑,本系统采用了结构新颖的推挽正激电路,此电路拓扑不仅克服了偏磁问题,而且闭环控制也比较容易(二阶系统)。

1.2l2推挽正激电路简单分析

推挽正激电路如图2所示,由功率管S1及S2,电容C8和变压器T组成,变压器T原边绕组N1及N2具有相同的匝数,同名端如图2所示。当S1及S2同时关断的时候,电容C8两端电压下正上负,且等于阵列电压,当S1开通,S1、N2和光伏阵列构成回路,N2上正下负,同时C8、N1和S1构成回路,C8放电,N1下正上负,此时的工作相当于两个正激变换器的并联。同理,当S2开通S1关断时,也相当于两个正激变换器的并联。经过理论分析,推挽正激电路是一个二阶系统,因此闭环控制简单,同时输出滤波电感和电容大大减小。

122 dsPIC30F2010简单介绍

Microchip公司通过在16位单片机内巧妙地添加DSP功能,使Microchip的dsPIC30F数字信号控制器(DSC)同时具有单片机(MCU)的控制功能以及数字信号处理器(DSP)的计算能力和数据吞吐能力。因为它具有的DSP功能,同时具有单片机的体积和价格,所以本系统采用此芯片作为控制器。此芯片主要适用于电机控制,如直流无刷电机、单相和三相感应电机及开关磁阻电机;同时也适用于不间断电源(UPS)、逆变器、开关电源和功率因数校正等。dsPIC30F2010管脚示意如图3所示。

1.22.1 主要结构

12KB程序存储器;

512字节SRAM:

1024字节EEPROM;

3个16位定时器;

4个输入捕捉通道;

2个输出比较/标准PWM通道;

6个电机控制PWM通道;

6个10位500kspsSA/D转换器通道。

l 2.2.2 主要特点

A/D采样速度快且多通道可以同时采样;

6个独立/互补/中心对齐/边沿对齐的PWM:

2个可编程的死区;

在噪声环境下5V电源可正常工作;

最低工作电压3V;

A/D采样和PWM同期同步。

2 光伏水泵最大功率点跟踪(MPPT)设计

2.1 常规恒定电压跟踪(CVT)方式的特点与不足

CVT方式可以近似获得太阳电池的最大功率输出,软件上处理比较简单。但实际上日照强度和温度是时刻变化的,尤其是在西部地区,同一天中的不同时段,温度和日照强度变化都相当大,这些都会引起太阳电池阵列最大功率点电压的偏移,其中尤以温度的变化影响最大。在这种情况下,采用CVT方式就不能很好地跟踪最大点。

2.2 TMPPT的原理与实现

为克服CVT方式弊端,提出了TMPPT(TrueMaximum Power Point

Tracking)概念,其意思是“真正的最大功率跟踪”控制,即保证系统不论在何种日照及温度条件下,始终使太阳电池工作在最大功率点处。由于逆变器采用恒V/f控制,故水泵电机的转速与其输入电压成正比,因此,调节逆变器的输出电压,就等于调节了负载电机的输出功率。故本系统采用TMPPT方式使太阳电池尽可能工作在最大功率点处,为负载提供最大的能量。

由太阳电池阵列的特性曲线(见图4)可知,

在最大功率点处,dP/dv=O,在最大功率点的左侧,当dP/dV>O时,P呈增加趋势,dP/dV<O时,P呈减少趋势;但在最大功率点的右侧,当dP/dv>O时,P呈减少趋势,dP/d

v<O时,P呈增加趋势。据此可在实际运行时根据P-V的变化关系确定最大功率点。

图5为TMPPT型最大功率点跟踪控制框图。系统的输入指令值为0,反馈值为dP/dV,假定Z3状态为+1,则Usp指令电压增加,经CVT环节调整,系统的输出电压V跟踪Usp增加,采样输出电流I,经功率运算环节和功率微分环节,获得dP/dV值,如dP/dV>0,则Z1为+1,Z2为+1,Z3为+l,Usp指令电压继续增加。如dP/dV<O,则Z1为-l,Z2为-1,Z3为-1,Usp指令电压开始减小。稳定工作时,系统在最大功率点附近摆动,如果摆动幅度越小,则精度越高。在具体工作时,为了防止搜索方向的误判断,软件中设置了搜索限幅值,使系统的工作可靠性进一步提高。由于本系统中采用的ASIPM模块带有电流检测功能,故在硬件设计上可以省去电流检测电路,节约了成本,并进一步优化了外围电路。

3 系统的保护功能设计

1)过流和短路保护功能

由于ASIPM的下臂IGBT母线上串有采样电阻,所以通过检测母线电流可以实现保护功能。当检测电流值超过给定值时,被认为过流或短路,此时下桥臂IGBT门电路被关断,同时输出故障信号,dsPIC检测到此信号时封锁PWM脉冲进一步保护后级电路。

2)欠压保护功能

ASIPM检测下桥臂的控制电源电压,如果电源电压连续低于给定电压1OMs,则下桥臂各相IGBT均被关断,同时输出故障信号,在故障期间,下桥臂三相IGBT的门极均不接受外来信号。

3)过热保护功能 ASIPM内置检测基板温度的热敏电阻,热敏电阻的阻值被直接输出,dsPIC通过检测其阻值可以完成过热保护功能。

以上保护是利用了ASIPM自身带有的功能,无须外加电路,进一步简化了硬件电路设计。系统除了具有上述保护功能外,还具有光伏水泵系统特有的低频、日照低、打干(自动和手动打干)等保护功能。对于泵类负载,当转速低于下限值时,光伏阵列所提供的能量绝大部分都转化为损耗,长期低速运行,会引起发热并影响水泵使用寿命,因此,本系统设计了低频保护,对水泵来说,当液面低于水泵进水口时,水泵处于空载状态,若不采取措施,长时间运行则会损坏润滑轴承,而本系统为户外无人值守工作方式,故系统为了增加检测可靠性,采用了自动打干和手动打干两种识别方式,其中,自动打干是根据系统输出功率和电机工作频率来进行判别;手动打干则是通过水位传感器识别当前水位高低来实现的。由于低频、日照低、打干等功能都是由软件来完成,不须增加硬件电路,故系统结构简单

3)分层存储节点:普罗米修斯[ 25 ]是使用TelosB平台[43]捡破烂太阳能一doublestorage能量采集系统, [ 45 ] 。它使用两个22F超级电容器串联作为主存储和一个200毫安锂聚合物电池作为二级存储。一种太阳能电池面板测量323英寸チ具有功率输出130mW功率的态145In ,用于对超级电容器充电。在过量充电的时候,超级电容器充电的锂电池。为普罗米修斯的框图如图5所示。

普罗米修斯系统架构(见图5)是,太阳能电池板,一次能源缓冲器(超级电容器) ,二次能源的缓冲区(锂聚合物电池)的基本组成部分,充电控制器和接口与在Telos传感器节点的电源开关。相比单存储架构,普罗米修斯使用一个额外的阶段,存储和基于软件的充电控制机制。

因为所有的可再充电电池技术有很深的充电周期有限数量的,优选的是,将电池进行更浅的充电周期,而不是深的。这是确保了使用第一阶段的超级电容器,它可以经受从理论上无限深充电周期。使用超级电容器作为主要能量源可以最大限度地减少接触到电池。因此,电池不放电,完全与浅充值发生。此外,普罗米修斯使用锂聚合物电池作为第二阶段的存储。锂基电池的选择,而不是镍氢电池,是避免记忆效应的状态,由于浅充电周期。

普罗米修斯有一个软件驱动器来控制所述能量存储缓冲器和选择动力源的节点的充电。在图5所示的开关组被用来在两个电源,超级电容器和锂离子电池之间切换。图6示出了由驱动程序执行到功率源之间进行切换的逻辑。如图所示,在状态图中,只要超级电容充电是大于高阈值,它被用来在节点供电。如果超级电容器充电以上的高门槛和锂离子电池电量低于一个很高的门槛,然后将电池从超级电容充电。如果超级电容低于低阈值和充电机会可用,那么超级电容充电。当电容器充电的机会不可用,则该节点从锂聚合物电池供电,直到它低于低阈值或直到超级电容器随后被充电。只要能再次可用时,超级电容器被充电,在达到一个很高的门槛,锂聚合物电池的电量会从超级电容充电。这种逻辑是使用的TinyOS [55]普罗米修斯节点上实现。

AmbiMax [28]是另一种双级存储能量收集系统。类似普罗米修斯, AmbiMax具有主存储器( 22F的超级电容器阵列) ,一个辅助存储( 70MAH的锂聚合物电池) 。它是使用与开关调节器[28]构建的。该Econode [56]平台(消耗22毫安在接收模式和小于10mA ,发射模式下),并收获太阳能和风能。然而,它的设计是模块化的,足以容纳其它来源如水流和振动。

不同于普罗米修斯, AmbiMax的充电控制是通过硬件而不是软件来完成的。 AmbiMax 400mW的收成从太阳能电池板测量375英寸チ25英寸每个收割子系统,涉及到每一个能量源,有它自己的超级电容器。 AmbiMax进行MPPT (最大功率点跟踪)自主,无软件或单片机控制。代替测量太阳能电池板的电压, AmbiMax使用的光强度来控制的PWM(脉宽调制)调节MPP跟踪。该太阳能收集AmbiMax子系统包括太阳能电池板,一个PWM开关稳压器和MPPT电路。图7示出了最大功率点跟踪的使用比较器和PWM开关稳压器的工作。当太阳能电压低于下限的MPP滞后带,该稳压器被关闭。它再次接通后,只有当太阳的电压上升并越过上限在MPP滞后带。因此,将电力从太阳能电池板只在最大功率点绘制。使用太阳能电池板和超级电容器之间的PWM开关稳压器,确保从他们的孤立对方,都不会对太阳能电池板的电压下降到超级电容电压也不会有反向电流流从超级电容的来源。这有助于在超级电容器的充电效率。一个比较器电路,用于打开一个电池充电器,当电容器的电压低于一个阈值时,电池没有完全充电。

4 )讨论太阳能收集传感器节点:表三列出了被称为迄今为止的各种太阳能采集节点。下表显示了沿太阳能电池板的额定功率,存储类型和存储容量的轴的比较。如可以从表中可以看出,能量/有可收获由每个节点的数量是不同的。 Heliomote和Fleck1有太阳能电池板,可以收获的日子(分别1140mWh和2100mWh )超过一千兆瓦时;所以他们使用一对高容量的镍氢电池。然而,普罗米修斯和Ambimax使用更小容量的锂聚合物电池,由于其显着更好的充放电效率相比,镍氢电池。 HydroWatch [26]表明,对于120mWh/day低能量收集要求,镍氢电池具有电压调节是不够的,更喜欢在锂离子电池的复合脉冲充电的逻辑。硬件充电是首选,因为它保证了一个完全放电的电池,当放在阳光下一个节点,最终将成为活跃。但锂电池需要脉冲charging6和硬件电路的脉冲充电是昂贵的。因此, [26]采用镍氢电池,可在涓流充电的硬件。

普罗米修斯的设计有利于锂离子电池的第二阶段,因为浅充电周期可以确保更长的使用寿命。低漏电,高充放电效率和无记忆效应,锂基电池更适合比镍氢电池与浅充电周期 *** 作。普罗米修斯通过软件控制处理锂离子电池的充电复杂的逻辑。具有软件控制提供了灵活性re-program/change收获逻辑和参数,而无需重新部署。

以上就是关于求MPPT最大功率点跟踪C程序算法!全部的内容,包括:求MPPT最大功率点跟踪C程序算法!、太阳能系统为什么一定要太阳能控制器、光伏控制器充电控制失灵等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9873435.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存