pid温度控制实验报告_第1页
pid温度控制实验报告_第2页
pid温度控制实验报告_第3页
pid温度控制实验报告_第4页
pid温度控制实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

pid温度控制实验报告本实验旨在设计和实现PID温度控制系统,通过控制电热水壶水温,检验PID控制系统在温度控制方面的效果。

一、设计和建立PID温度控制系统

本实验采用Arduino开发板作为控制器,其中温度传感器采用DS18B20数字温度传感器,用于感知电热水壶内部的温度。为了控制电热水壶的加热和停止加热,我们采用继电器模块,通过控制继电器的开关状态来实现电热水壶的加热和停止加热。本实验还采用了LCD1602液晶显示屏,显示实时温度数据和PID控制结果。

PID控制器由三个部分组成,分别是P(proportional)、I(integral)、D(derivative),它能够根据被控对象的反馈信号及预设值,计算出控制量,实现控制目标。

在本实验中,我们需要控制电热水壶加热时的水温,设定的目标温度为40℃。

二、实验步骤

1、硬件连接

连接Arduino开发板和其他硬件模块,电热水壶的加热和停止加热分别由继电器的开关状态来实现。

2、编程实现

编写程序,包括温度检测、PID控制计算、控制电热水壶加热和停止加热、LCD显示等功能模块。具体的程序实现细节见下文。

3、调试

进行调试,测试温度控制系统的效果。

三、实验结果

电热水壶温度控制的PID算法具体实现如下:

```c++

//定义PID控制器

structPID

{

floatKp;//P参数

floatKi;//I参数

floatKd;//D参数

floatpre_error;//上次误差

floatintegral;//积分值

}pid;

pid.Kp=5;//由系统特性等确定

pid.Ki=0.1;

pid.Kd=1;

constintrelayPin=2;//继电器控制引脚2

constintledPin=13;//LED控制引脚13

voidsetup()

{

Serial.begin(9600);

lcd.begin(16,2);

pinMode(relayPin,OUTPUT);

lcd.display();

lcd.clear();

//变量初始化

pid.pre_error=0;

egral=0;

}

voidloop()

{

//读取温度

floattemp=getTemperature();

//计算PID

floaterror=setpoint-temp;

egral+=error*sampleTime;

floatderivative=(error-pid.pre_error)/sampleTime;

floatoutput=pid.Kp*error+pid.Ki*egral+pid.Kd*derivative;

//控制电热水壶

if(output>0)

{

digitalWrite(relayPin,HIGH);

digitalWrite(ledPin,HIGH);

}

else

{

digitalWrite(relayPin,LOW);

digitalWrite(ledPin,LOW);

}

//保存本次误差

pid.pre_error=error;

//显示温度和PID值

lcd.setCursor(0,0);

lcd.print("Temp:");

lcd.print(temp,1);

lcd.setCursor(0,1);

lcd.print("PID:");

lcd.print(output,1);

//延时一段时间

delay(sampleTime);

}

//读取温度

floatgetTemperature()

{

bytedata[12];

byteaddr[8];

if(!ds.search(addr))

{

ds.reset_search();

delay(250);

return-1000;

}

if(OneWire::crc8(addr,7)!=addr[7])

{

Serial.println("CRCisnotvalid!");

return-1000;

}

if(addr[0]!=0x28)

{

Serial.println("DeviceisnotaDS18B20familydevice.");

return-1000;

}

ds.reset();

ds.select(addr);

ds.write(0x44,1);

bytepresent=ds.reset();

ds.select(addr);

ds.write(0xBE);

for(inti=0;i<9;i++)

{

data[i]=ds.read();

}

int16_traw=(data[1]<<8)|data[0];

if(type_s)

{

raw=raw<<3;

if(data[7]==0x10)

{

raw=(raw&0xFFF0)+12-data[6];

}

}

else

{

bytecfg=(data[4]&0x60);

if(cfg==0x00)raw=raw&~7;//9bitresolution,93.75ms

elseif(cfg==0x20)raw=raw&~3;//10bitres,187.5ms

elseif(cfg==0x40)raw=raw&~1;//11bitres,375ms

//defaultis12bitresolution,750msconversiontime

}

floatcelsius=(float)raw/16.0;

returncelsius;

}

```

实验通过控制器成功将水温控制在设定值40℃左右,且温度波动很小,表明PID控制器具有很好的控制效果。实验结果表明本PID温度控制系统具有较好的控制精度和控制响应速度,能够稳定地将水温维持在指定的温度范围内,能够满足实际应用的要求。

四、实验心得

本实验基于Arduino开发板,设计和实现了PID温度控制系统,通过加热和停止加热的控制,将电热水壶水温控制在指定的温度范围内,并通过LCD显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论