电导增量法MPPT程序算法实例
温馨提示:算法仅供参考,不作其他用途,否则后果自负,在此只截取 MPPT的算法程序,具体如何操作不再贴出,该算法经过测试老化基本可以追踪太阳能最大功率点, MCU( STM32), MOS 管频率 30KHZ,三路 PWM 错向驱动,注意 :电池充电整个阶段并不都是最大功率最大电流充电,根据电池的状态分最大电流快速充电 -恒流 -恒压,通过控制电流因子可以达到控制不同的电流充电date.c 文件#include “main.h“ #include ADC_struct ADCCollect; unsigned int MAXMPPTDate[10]={0}; unsigned int Channel_Duty=0; // 通道运行占空比unsigned int Channel_DutyBuf=0;// 通道追踪占空比unsigned char MPPTEnable=0,MPPTSTOP=0; unsigned int MPPTSTOPTimeDelay=0; Date.h 文件#ifndef _Date_H_ #define _Date_H_ typedef struct { float BatteryChargeCurrent; // 充电电流unsigned int BatteryChargeCurrentBuf[10]; float BatteryDisChargeCurrent; // 放电电流unsigned int BatteryDisChargeCurrentBuf[10]; float BatteryVoltage; // 电池电压unsigned int BatteryVoltageBuf[10]; //unsigned int BatteryVoltageBuf1[10]; float PVVoltage; //PV 电压unsigned int PVVoltageBuf[10]; float CirTem1; // 温度 1 unsigned int CirTem1Buf[10]; unsigned int PVPower; //float CirTem; //unsigned char BatteryModeBuf; unsigned int BatteryQuantityLimitLOW; // 电池电压欠压保护电压下限值unsigned int BatteryQuantityRecover; // 电池电压欠压保护恢复电压值unsigned int PVStopvoltage; // 停充电压值unsigned int Constantvoltage; // 恒压unsigned int Floatvoltage; // 浮充电压unsigned int Currentlimite; // 限流值unsigned char Language; // 语言unsigned int LoadMode; // 负载工作模式 0 1~23 24 unsigned int HandBatteryMode; // 电池模式//unsigned char AutoMode; // 自动检测unsigned char AutoModeBuf; float AutoModeFactor; // 放电量和充电量unsigned int LoadCapacity; unsigned int PVCapacity; unsigned char BatteryEmpty;// 电池没电标志unsigned char DayNightFlag;// 白天黑夜标志unsigned char CirTemErro; // 温度错误标志unsigned char BatteryMode;// 电池系统unsigned char BatteryVoltageNum; unsigned int LoadModeDelay; // 延时倒计时}ADC_struct; extern ADC_struct ADCCollect; #endif