基础微网站开发公司,绵阳远腾建设网站,云南网站制作公司,wordpress淘宝主题破解MPPT算法选择 目前#xff0c;MPPT算法有开路电压比率(离线)、短路电流比率(离线)、观察调节(在线)、极限追踪控制法(在线)。 在光伏控制系统中#xff0c;因为日照、温度等条件的变化#xff0c;光伏电池的输出功率也是在不断变化的#xff0c;为保证使得光伏电池的输出功… MPPT算法选择 目前MPPT算法有开路电压比率(离线)、短路电流比率(离线)、观察调节(在线)、极限追踪控制法(在线)。 在光伏控制系统中因为日照、温度等条件的变化光伏电池的输出功率也是在不断变化的为保证使得光伏电池的输出功率保持在最大点需要调整光伏电池输出电压(日照强度发生变化时短路电流变化大开路电压受影响小;环境温度发生变化时短路电流受影响小开路电压变化大)。另外光伏电池的输出电压和电流也和负载有很大关系负载大输出电压大输出电流小;负载小输出电压小输出电流大。光伏电池的MPP中的电压是指光伏电池的输出电压。 开路电压比率法——这可以说是非常经典也相当古老的方法了又名“固定电压法”。简单来说算法基于最大功率电压和开路电压的线性关系式 系数 取值由设计师决定一般介于0.71到0.78之间大多数设定为0.76。 MPPT在追踪时首先开路DC端来测量开路电压然后通过算法来计算最大功率电压并且定位最大功率点。MPPT会保持在该功率点一段时间然后重复开路测算并且重新定位。 固定电压法的最大优点就是制作便宜并且应用简单。相反缺点也十分明显精确值和追踪效率较低。尽管固定电压法被称之为“追踪”算法事实上它依然是在整个工作循环中的一个计算设定值而非即时追踪值。 其次此方法完全且单纯依赖于组串的开路电压值而放弃了对于工作电流的追踪。当局部阴影出现在阵列时实际最大功率点和MPPT设定功率点就会出现相当大的偏差偏差范围取决于阴影遮盖程度。最后每次机器进行开路电压测量时太阳能系统是无法输出功率的随着时间和次数累计此算法会造成一定量的能量流失。总体来说差评。 短路电流比率法——和固定电压法的算法相似可以表述为 是一个变量系数通常变化范围在0.78至0.92。 和固定电压法不同的是短路电流比率法要求在转换器内置一个高频开关来测量短路电流。比较推荐的是在组串和DC link的电容之间安装一个FET(field-effect transistor)。由于电流受到光照强度的影响非常大通常机器还需要一个DSP(digital signal processor)来保证IV曲线的全扫描和数据的准确度。这也让短路电流比率法设计更加复杂且难以应用。差评。 观察调节法——站在巨人肩头发展出来的算法你敢不服?目前PO依然应用在世界各大主流的逆变器中也是最广泛的被应用的算法没有之一。 相比于ESCPO可以在更短的时间内追踪时触碰更大的区域扫描更多地数据。这进一步提高了PO的追踪效率和准确率。由于它在短时间内可以处理大量的数据这也一定程度抵制了突变光照强度对于追踪精确度的影响。 缺点的话由于它扫描的范围较大会一定程度的导致输出功率缺乏稳定性但是抖动程度基本都在±4%以内。所以我还要给它32个赞!PO还有一个姐妹版本还是“爬山”逻辑但是并入了“试错”法(trial and error)。处理器会根据下一刻追踪点的移动趋势比较功率的正增量或负增量。如果功率持续增加处理器将会继续同方向移动追踪点不停比较直到功率达到峰值。 极限追踪控制法——该算法第一次提出在19世纪20年代也是目前全球最流行的“观测调节法”(Perturb and Observe)的前身。算法的创新点是引入了向量在P-V曲线中。处理器根据电压的增量或减量来比较对应的功率增减量进而确定追踪功率点的移动方向。具体判定方法请参照图二一目了然。 ESC算法的巨大成功是相比于之前的固定电压法,通过渐进向量引入了“爬山法”的概念进而开启了动态追踪的算法。 ESC极大地拓宽了MPPT对于DC端输入能量的捕捉显著地提高了追踪效率。由于ESC对于后代MPPT算法的影响深远导致它的短板也一并被继承下来并至今“祸害”众多一线品牌的逆变器。ESC对于陡然变化的光照反应强烈举个通俗例子MPPT正专注的比较着功率和电压的变量“嗯正向移动的电压同步伴随着功率的增加明显最大功率点还在正向(右边)那我继续向右移动”。 此时云层挡住了阳光稍稍影响了输入的直流功率使之略微下降“慢着!正向移动的电压竟然导致功率减小了!我肯定错过了最大功率点快掉头!” 于是追踪点就离它的归宿越来越远的地方飘去。。。我在实验室模拟测试时亲眼看到最多达到70%左右的偏差。基于ESC这种一级(first stage)追踪的设计理念这种现象无解。但是欣赏它对后世的正面影响以及理念创新还是好评! 综合考虑MPPT的算法采用极限追踪控制法来进行软件实现即采集PN侧电压、流向PN侧的电流数据计算 和 判断 与 的关系 大于 此时应按 减小PN侧的目标电压;若 小于 此时应按 增加PN侧的目标电压。 MPPT硬件选择 MPPT的实现是通过调节光伏电池输出电压来实现的若光伏电池输出电压直接连接到DC/AC的PN侧那么光伏电池输出电压波动就会直接影响PN侧电压最好是在光伏电池和DC/AC之间加一个中间环节通过这个中间环节来调整输入电压保持输出电压稳定增加或减小输出电流。这个功能一般有BUCK、BOOST、BUCK-BOOST、CUK电路和开关电路可以选择但BUCK电路是连续向负载供电、间接从电源取电;BOOST电路时间接向负载供电、连续从电源取电为保证光伏电池板的发电效率得到较好使用一般选择BOOST电路来实现MPPT。 选择BOOST电路来实现MPPT算法其结构拓扑如下图。 考虑成本问题再加上光伏电池输出的所有最大功率点对应的输出电压差别不是很大MPPT不使用DC/DC电路来实现在现有的DC/AC平台上进行实现。 MPPT程序实现 变流器的工作流程为 启动——预充电——PN侧抬压——接入光伏电池——输出(MPPT)。 可以确定MPPT的作用是在电压环上作用并且是在变流器进入工作状态后开始工作。 采用现有的DC/AC平台来实现MPPT存在两个问题控制步长(时间间隔)问题、扰动步长 问题、判断精度问题。 控制步长问题——PN侧电压在MPPT过程中会产生一定的波动但因为对于光伏电池来说(结合下面两图)其最大功率点对应的电压大致都在一个不大的范围内并且都接近开路电压所以对于在DC/AC上实现MPPT要考虑多长时间对PN侧目标电压进行一次更新。目前State Manage函数是0.1ms进入一次可以考虑MPPT的控制步长为0.2~0.5ms步长暂定为0.3ms。 相同光照、不同温度 相同温度不同光照 扰动步长问题——考虑在变流器进入工作状态后其PN侧电压为较稳定的值即使光照强度、环境温度发生变化光伏电池的最大功率点电压的变动范围不会很大。根据其采集回来的PN侧电压和光伏电池输出电流并计算和前一时刻的功率差值 根据电导增量法进行判断然后在目标跟踪电压上增加或减小一定的步长 。因为在光伏电池开始工作后PN侧电压不是从0开始的而是在光伏电池最大功率点对应电压附近所以 的值会比较小K值的设置通过调试程序获得K暂定为5。 判断精度问题——由导纳法的工作流程图(下图)可以知道在流程中存在 、 与0的关系的判断程序中总是会存在误差并且检测中也会存在如果以0为判断准值考虑实际应用中的误差因素用一个小的阀值来替代0。阀值暂定为0.1V和0.1A。 MPPT算法C程序实现 #include 16F877.h #device ADC 8 // 一个8位寄存器ADC模式 #fuses HS, NOWDT, PUT, NOPROTECT, BROWNOUT, NODEBUG, NOLVP // High-Speed 20MHz, No Watchdog, No Protection, Brownout Protection, #use delay(clock20000000) // 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); // 384.615kHz 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 direction*delta; // 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 mi nimum PWM, Stop here { pwm lowerbound; continue; } set_pwm1_duty(pwm); // Set PWM Mark-Space Radio to approx 50% } } 嵌入式物联网需要学的东西真的非常多千万不要学错了路线和内容导致工资要不上去 无偿分享大家一个资料包差不多150多G。里面学习内容、面经、项目都比较新也比较全某鱼上买估计至少要好几十。点击找小助理领取