技术参数和设计任务:
1、利用单片机AT89C2051实现对温度的控制,实现保持恒温箱在最高温度为110℃。
2、可预置恒温箱温度,烘干过程恒温控制,温度控制误差小于±2℃。
3、预置时显示设定温度,恒温时显示实时温度,采用PID控制算法显示精确到0.1℃。
4、温度超出预置温度±5℃时发出声音报警。
5、对升、降温过程没有线性要求。
6、温度检测部分采用DS18B20数字温度传感器,无需数模拟∕数字转换,可直接与单片机进行数字传输
7、人机对话部分由键盘、显示和报警三部分组成,实现对温度的显示、报警。
需要的话联系用户名扣扣
这是倒立摆系统的PID控制函数的一部分,你看看有没有思路/****************************************************************/
//定义结构体
/****************************************************************/
struct may_PID{
signed long Proportion //比例 ;调节系数
signed long Integral //积分 ;调节系数
signed long Derivative //微分 ;调节系数
signed long SetPoint //设定值 ;定值
signed long SumError //偏差积分
signed long PrevError //之前偏差值
}PID/*此处可放结构体变量名*/
struct may_PID *pp //定义结构体类型指针
//pp=malloc(sizeof(struct may_PID)) //为指针变量分配安全的地址空间;sizeof:其为计算字节长度函数
/*****************************************************************/
/**************************PTD函数**************************************/
signed long PIDCalc(signed long NextPoint/*当前值*/ )
{
signed long dError
Error = pp->SetPoint - NextPoint//当前偏差
pp->SumError+=Error //积分
dError=Error-pp->PrevError//当前微分=当前偏差-之前偏差
pp->PrevError=Error //把当前偏差赋予之前偏差变量,使其充当下次取样的之前偏差
return (long)(pp->Proportion *Error //比例项
+pp->Integral*pp->SumError //积分项
+pp->Derivative*dError)//微分项
}
/*****************************************************************************/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)