生物培养液微机温度控制(5)

2019-03-10 19:59

武汉理工大学《计算机控制技术》课程设计说明书

if (k==1&&DINcon==1){DIN=1;} //小数点显示 discan=scan_con[k]; //位选 delay(250); }

/--------温度数据处理--------/ work_temp(uint tem) { uchar n=0;

if(tem>6348) // 温度值正负判断

{tem=65536-tem;n=1;} // 负温度求补码,标志位置1 display[4]=tem&0x0f; // 取小数部分的值 display[0]=ditab[display[4]]; // 存入小数部分显示值

display[4]=tem>>4; // 取中间八位,即整数部分的值 display[3]=display[4]/100; // 取百位数据暂存 display[1]=display[4]0; // 取后两位数据暂存 display[2]=display[1]/10; // 取十位数据暂存 display[1]=display[1];

nowtp=display[3]*100+display[2]*10+display[1]; //计算当前温度 send_Da[0]=nowtp; //把当前温度储存到发送缓存区 /--------PID运算函数---------------/ voidpid()

{ static int diff[19]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; staticintsum_diff=0; //Σ(diff) staticuintcurr_=0;

21

武汉理工大学《计算机控制技术》课程设计说明书

floatp_out,i_out,d_out,temp_pid; float pwm_0; temp_pid=diff[curr_]; if(curr_+1>=19)curr_=0; elsecurr_+=1; sum_diff-=diff[curr_]; diff[curr_]=settp-nowtp; sum_diff+=diff[curr_];

p_out=KP*diff[curr_]; //比例项输出 i_out=KI*sum_diff; //积分项输出

d_out=KD*(diff[curr_]-temp_pid); //微分项输出 pwm_0=KC*settp; //维持功率项 if(i_out>100)i_out=100; //积分分离 if(i_out<-100)i_out=-100;

PWM=p_out+i_out+d_out+pwm_0; //总输出量 if(PWM<0)PWM=0;

积分改进PID控制

else if(PWM>=100)PWM=100; }

// 输出函数

void PWM_OUT(float PWM) {

static uchar t=1; //t=(1--100)周期为4秒 uchar limit; //pid_value输出百分比 limit=(uchar)PWM;

22

武汉理工大学《计算机控制技术》课程设计说明书

if(t<=limit)HEAT=0; //加热 else HEAT=1; //停止加热 t++; if(t>100)t=1; }

23


生物培养液微机温度控制(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电子产品创作设计技术报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: