⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.i

📁 基于AVR的智能充电器设计程序
💻 I
字号:
/*电池充电电流大小设置函数
current_value------电流大小
pwm_initial_value----PWM控制占空比中ORC的初始值
电流由PID控制器控制PWM的占空比实现*/
unsigned int giADC_DataSave[10];
unsigned char time_20ms_ok;
unsigned char LCD_I_value[3]={0,0,0};
void current_adc(unsigned char adc_flag);
int adc_data_cmp();

typedef struct PID {

        int    SetPoint;           //  设定目标 Desired Value
        float  Proportion;         //  比例常数 Proportional Const
        float  Integral;           //  积分常数 Integral Const
        float  Derivative;         //  微分常数 Derivative Const
        int    LastError;          //  Error[1]
        int    PrevError;          //  Error[2]
        int    SumError;           //  误差累计值

} stPID;
  

void controlled_current (unsigned char current_value,unsigned char pwm_intial_value){
         float fi;
         int current_data;
         int fout;
if (time_20ms_ok){
        current_adc(0);           //参数为0代表对电流采样
        current_data=adc_data_cmp();
        fi=current_data*rr4/rr5/rrs;    //把ADC值转换成对应的真实电流值
        LCD_I_value[0]=fi/100;
        LCD_I_value[1]=fi%100/10;
        LCD_I_value[2]=fi%10;
        stPID.Proportion=1;
        stPID.Integral=0.5;
        stPID.Derivative=0.0;
        fout=PIDCalc(&stPID,fi); 
        active();
        }
}


//============================================================================================
//函数:float PIDCalc( PID *pp, int NextPoint )
//语法:float PIDCalc( PID *pp, int NextPoint )
//描述:PID计算
//参数:1、PID数值2、采样当前电流或电池电压值
//返回:PID输出值
//============================================================================================

float PIDCalc( PID *pp, unsigned long NextPoint )    //nextpoint为当前温度

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -