墙布多少钱一平方-重生香江卖产业炒股的小说

车载冰箱温度控制系统
2023年9月28日发(作者:曹丕)

课程大作业设计报告

(2019-- 2020年度第2学期)

课程名称:控制装置与仪表B

目:车载冰箱温度控制系统设计与仿真

系:控制与计算机工程学院

级:自动化1704

号:12

学生姓名:郭云泉

指导教师:张文彪

设计周数:2

绩:

日期:2020519

一、

设计要求

1. 根据以下控制装置的组成设计一个车载冰箱温度控制系统(半导体制热和制冷)

并说明变送器控制器和执行器的选型以及相应装置的特点,同时阐述整个系

统的控制流程。

1 控制装置的组成

e

s

G(s)

s1

,控制系统的采2. 假设车载冰箱温度控制系统被控对象的传递函数为

样周期T0.5s,基于Matlab软件编写控制算法,实现以上系统对阶跃式温度

设定的仿真,完成控制器的参数整定,并分析控制参数对系统性能的影响。

二、设计正文

1.车载冰箱温度控制系统硬件设计及控制流程描述

1.1 温度控制系统总体设计架构

整个温控系统由Arduino单片机、LCD显示电路、供用户设置预期温度的按键、电源、

驱动电路、温度变送装置、半导体制冷片、保温箱体、变压器组成。总体设计框架

如图2所示:

2

各个部分的相应功能:

Arduino单片机:整个温控系统的控制器。

按键:调整预期温度。

LCD显示电路:显示预期温度和实时温度。

温度变送装置:检测箱体内的温度并转化为数字量送给单片机。

驱动电路:将单片机输出的不同占空比的数字PWM脉冲信号转化为模拟的电压,并进

行功率放大,驱动半导体制冷片输出不同的功率。

半导体制冷片:对箱体内进行制冷。

变压器:将汽车电瓶的12V电压转换为5V电压对温控系统供电,其中LCD显示电路、

按键电路、温度变送装置均由单片机供电。

电源:汽车电瓶

1.2 控制器的选择

此温控系统通过控制器输出不同占空比的PWM并经驱动电路放大后来控制制冷

片功率,从而实现温度调节。因此,控制器需要有能输出不同占空比PWMIO接口。

且此温控系统实现的功能比较简单,对控制器运算能力要求比较低,因此选用了

Ardiuno Uno单片机作为控制器。

Arduino UNO是基于ATmega328PArduino开发板。它有14个数字输入/输出引脚

(其中6个可用于PWM输出)6个模拟输入引脚,一个16 MHz的晶体振荡器,一个USB

接口,一个DC接口,一个ICSP接口,一个复位按钮。它包含了微控制器所需的一切,

你只用简单地把它连接到计算机的USB接口,或者使用AC-DC适配器,再或者用电池,

就可以驱动它。实物图与技术参数如图3、图4所示:

3

4

各个引脚功能如下:

Vin:电源输入引脚。当使用外部电源通过DC电源座供电时,这个引脚可以

输出电源电压。

5V5V电源引脚。使用USB供电时,直接输出USB提供的5V电压;使用外部电

源供电时,输出稳压后的5V电压。

3V33.3V 电源引脚。最大输出能力为50 mA

GND接地引脚

IOREFI/O参考电压。其他设备可通过该引脚识别开发板I/O参考电压。

Serial0RX1TX,被用于接收和发送串口数据。这两个引脚通过连

接到ATmega16u2来与计算机进行串口通信。

⑦外部中断:23,可以输入外部中断信号。中断有四种触发模式:低电平触

发、电平改变触发、上升沿触发、下降沿触发。

PWM输出:35691011,可用于输出8-bit PWM波。对应函数

analogWrite()

SPI10SS11MOSI12MISO13SCK,可用于SPI通信。可以

使用官方提供的SPI库操纵。

L-LED1313号引脚连接了一个LED,当引脚输出高电平时打开LED,当引

脚输出低电平时关闭LED

TWIA4SDAA5SCL)和TWI接口,可用于TWI通信,兼容I²C通信。可

以使用官方提供的Wire库操纵。

AREF模拟输入参考电压输入引脚。

Reset复位端口。接低电平会使Arduino复位,复位按键按下时,会使该端

口接到低电平,从而让Arduino复位。

1.3温度变送装置的选择

考虑到车载冰箱实际应用和控制器接口资源有限,温度变送装置应具有体积

小,测量精度高,占用接口资源少的特点,因此,采用DS18B20作为测量变送装置。

实物图和封装图如图5、图6所示:

5 6

相关技术特性如下:

①、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处

理器与DS18B20的双向通讯。

、测温范围 55℃~+125℃,固有测温误差1℃。

③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,

实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。

④、工作电源: 3.0~5.5V/DC (可以数据线寄生电源)

、在使用中不需要任何外围元件

⑥、 测量结果以9~12位数字量方式串行传送

接线原理图如图7所示:

7

1.4 半导体制冷片的选择

选取TEC1-12706型半导体制冷片。实物图如图8所示:

8

关特性参数如下:

外部尺寸:40*40*3.75

mm

内部阻值:2.1~2.4Ω(环境温度23±1,1kHZ Ac测试)

最大温差:△Tmax(Qc=0) 67℃以上。

工作电流:Imax=4.3-4.6A(额定12V时)

额定电压:12VVmax15V启动电流5.8A

致冷功率:Qcmax 60-72W

工作环境:温度范围 -55℃~80℃(过高的环境温度降直接影响制冷效率)

1.5 驱动电路的设计

根据帕尔贴效应,半导体制冷片的吸热量的大小与电压值成正比,通过改变制冷片两端的

电压值便可以改变制冷片的功率。温控系统是通过输出不同占空比的PWM脉冲信号来改变制冷

片两端电压值,从而实现改变制冷片功率的目的。虽然选用的控制器具备输出 PWM 的功能,

但是仅靠 Arduino Uno 单片机的输出无法驱动制冷片工作,所以选用 AQMH2407ND 作为外

部驱动电路的驱动芯片,驱动制冷片工作。AQMH2407ND相关电气参数和接线原理图如图9

10所示:

9

10

1.6 变压器的选择

车载冰箱由汽车自带的12V电源供电,但单片机需要5V电源供电,且LCD显示电路、

按键电路、温度变送装置均由单片机供电。因此需要使用DC-DC转换器调节电源输出

的电压值,为单片机提供稳定的电能。选用LM2596电压转化模块,它是用LM2596

片配合外部电路组成的具有稳定降压功能的变换器。接线原理图如图11所示:

11

1.7 LCD显示电路和按键的设计

1.7.1 LCD显示电路

温控系统需要显示预期温度和实时温度,选用LCD1602液晶显示器作为显示模

块。LCD1602能显示16*2行字符,可以显示字母、数字、汉字、符号等。

LCD1602

采用标准的14脚(无背光)或16脚(带背光)接口,本系统采用14脚无背光即可,各引脚接口

说明见表1

1

由于此次选择的控制器Arduino Uno单片机的IO口有限,所以引入一种Inter-Integrated

Circuit总线结构,仅需要时钟信号SCL和数据信号SDA两条总线就能实现设备之间的通信。按照

12接线原理图接线。

12

1.7.2 按键模块

按键模块主要实现对预期温度的加减,因此需要一加一减两个独立按键。接线原理

图如图12所示:

12

1.8 散热模块

半导体制冷是基于帕尔贴效应,热端的散热情况关系到冷端的制冷效率。为保

证冷端制冷效果,在热端需加装散热板和散热风扇。散热板可选择铜制或铝制金属

板。散热风扇选取任意由12V电源供电的即可。

1.9 系统控制流程

系统开始工作后通过按键输入预期的温度并在LCD1602上显示,DS18B20测量冰

箱内的温度,将温度信号转化为数字量返送给单片机并显示在LCD1602显示装置上。

单片机根据实时温度与预设温度的偏差,对TEC1-12706半导体制冷片输出功率进行

调整,直至冰箱内温度到达预设温度,控制过程结束。在调节过程中,测量变送器

测量的温度始终实时显示在显示器上。

1.10 关于控制系统存在的干扰及抗干扰措施

.不同功能的模块均有接地,但由于各个模块接地点不同,可能产生共模干扰。

需要将各个芯片的接地点接在一起进行共地处理即可。

.由汽车电瓶驱动整个温度控制系统,电瓶可能由于老化造成输出电压减小,但通

LM2596转换即可得到稳定的电源。

.为避免冰箱内温度变化造成系统频繁启停,应在控制器中加入惰性区,当实时温

度与预设温度的偏差超过一定限度后再启动系统进行制冷。

2.车载冰箱温度控制系统软件仿真

PID算法的实现分析:此次仿真采用理想的位置型算式,控制器输出规律如下图。

将被控对象传递函数离散化:

因此求得输出相应与控制器输出之间的关系:

MATLAB中实现以上两条核心算式即可。

2.1 被控对象在无控制器时的阶跃响应

2.1.1 程序:

G=tf([1],[1,1],'iodelay',1);%建立被控对象传递函数

sys=feedback(G,1);

step(sys) %绘制阶跃响应曲线

2.1.2 运行结果:

调节时间ts=6.6s;超调量overshoot=38.4%;上升时间:tr=0.546s;峰值时tp=2.36s

2.2 加入位置型PID控制(参数均设置为1)后的阶跃响应:

2.2.1 程序:

ts=0.5; %采样时间为0.5s

G=tf(1,[1,1],'iodelay',1); %建立被控对象传递函数

dsys=c2d(G,ts,'z'); %z变换离散化

[num,den]=tfdata(dsys,'v'); %以向量的格式输出numden

el=0; %上一时刻的偏差

ul=0; %上一时刻输出的控制量

u2=0; %上上时刻输出的控制量

u3=0; %上上上时刻的输出的控制量

yl=0; %上一时刻输出的响应值

sum_e=0; %偏差累计量

kp=1; %比例系数

ki=1; %积分系数(ki=kp*ts/ti)

kd=1; %微分系数(kd=kp*td/ts

u=zeros(1,1000); %设置一行1000列的零向量,将控制量预设为0

time=zeros(1,1000); %设置1000个时间点

for k=1:1:1000 %设置1000次循环,每次步进值为1

time(k)=k*ts; %每个计算点对应的时间

r(k)=1; %设置期望值

y(k)=-1*den(2)*yl+num(2)*u3;%系统响应输出序列

e(k)=r(k)-y(k); %计算误差值

u(k)=kp*e(k)+ki*sum_e+kd*(e(k)-el); %PID控制器输出

sum_e=sum_e+e(k); %更新偏差累计量

u3=u2; %更新上上上一时刻输出的控制量

u2=ul; %更新上上一时刻输出的控制量

ul=u(k); %更新上一时刻输出的控制量

yl=y(k); %更新上一时刻输出的响应值

el=e(k); %更新上一时刻的偏差

end %循环结束

plot(time,y);xlim([0,10]);

hold on;

2.3 衰减曲线法对PID调节器的整定及整定后的阶跃响应

2.3.1 在纯比例作用下,逐步改变比例带大小,直至响应曲线衰减率为0.75。经多

次试凑,得在kp=1.041,即比例带δs=0.9606,衰减率为0.75

2.3.1.1 程序:

ts=0.5; %采样时间为0.5s

G=tf(1,[1,1],'iodelay',1); %建立被控对象传递函数

dsys=c2d(G,ts,'z'); %z变换离散化

[num,den]=tfdata(dsys,'v'); %以向量的格式输出numden

el=0; %上一时刻的偏差

ul=0; %上一时刻输出的控制量

u2=0; %上上时刻输出的控制量

u3=0; %上上上时刻的输出的控制量

yl=0; %上一时刻输出的响应值

sum_e=0; %偏差累计量

kp=1.041; %比例系数

ki=0; %积分系数(ki=kp*ts/ti,ti=无穷)

kd=0; %微分系数(kd=kp*td/ts,令td=0

u=zeros(1,1000); %设置一行1000列的零向量,将控制量预设为0

time=zeros(1,1000); %设置1000个时间点

for k=1:1:1000 %设置1000次循环,每次步进值为1

time(k)=k*ts; %每个计算点对应的时间

r(k)=1; %设置期望值

y(k)=-1*den(2)*yl+num(2)*u3;%系统响应输出序列

e(k)=r(k)-y(k); %计算误差值

u(k)=kp*e(k)+ki*sum_e+kd*(e(k)-el); %PID控制器输出

sum_e=sum_e+e(k); %更新偏差累计量

u3=u2; %更新上上上一时刻输出的控制量

u2=ul; %更新上上一时刻输出的控制量

ul=u(k); %更新上一时刻输出的控制量

yl=y(k); %更新上一时刻输出的响应值

el=e(k); %更新上一时刻的偏差

end %循环结束

plot(time,y);xlim([0,20]);

hold on;

2.3.1.2 运行结果:

临界振荡周期ts=4s

2.3.2 整定参数

2.3.2.1 根据此表,整定PID控制器参数,

程序如下

ts=0.5; %采样时间为0.5s

G=tf(1,[1,1],'iodelay',1); %建立被控对象传递函数

dsys=c2d(G,ts,'z'); %z变换离散化

[num,den]=tfdata(dsys,'v'); %以向量的格式输出numden

el=0; %上一时刻的偏差

ul=0; %上一时刻输出的控制量

u2=0; %上上时刻输出的控制量

u3=0; %上上上时刻的输出的控制量

yl=0; %上一时刻输出的响应值

sum_e=0; %偏差累计量

dets=0.9606; %δs赋值

det=0.8*dets; %δ赋值

kp=1/det; %比例系数

tk=4; %振荡周期为4s

ti=0.3*tk; %积分时间

ki=kp*0.5/ti; %积分系数(ki=kp*ts/ti)

td=0.1*tk; %微分时间

kd=kp*td/0.5; %微分系数(kd=kp*td/ts

u=zeros(1,1000); %设置一行1000列的零向量,将控制量预设为0

time=zeros(1,1000); %设置1000个时间点

for k=1:1:1000 %设置1000次循环,每次步进值为1

time(k)=k*ts; %每个计算点对应的时间

r(k)=1; %设置期望值

y(k)=-1*den(2)*yl+num(2)*u3;%系统响应输出序列

e(k)=r(k)-y(k); %计算误差值

u(k)=kp*e(k)+ki*sum_e+kd*(e(k)-el); %PID控制器输出

sum_e=sum_e+e(k); %更新偏差累计量

u3=u2; %更新上上上一时刻输出的控制量

u2=ul; %更新上上一时刻输出的控制量

ul=u(k); %更新上一时刻输出的控制量

yl=y(k); %更新上一时刻输出的响应值

el=e(k); %更新上一时刻的偏差

end %循环结束

plot(time,y);xlim([0,20]);

hold on;

2.3.2.2 运行结果:

整定结果仍然不够理想,根据经验对参数进行再次整定。

2.3.3 二次整定

2.3.3.1 根据经验法对参数进行整定,kpkikd分别调整至0.80.30.3

ts=0.5; %采样时间为0.5s

G=tf(1,[1,1],'iodelay',1); %建立被控对象传递函数

dsys=c2d(G,ts,'z'); %z变换离散化

[num,den]=tfdata(dsys,'v'); %离散化后提取分子分母

el=0; %上一时刻的偏差

ul=0.0; %上一时刻输出的控制量

u2=0; %上上时刻输出的控制量

u3=0; %上上上时刻的输出的控制量

yl=0; %上一时刻输出的响应值

sum_e=0; %偏差累计量

kp=0.8 %比例系数

ki=0.3 %积分系数(ki=kp*ts/ti)

kd=0.3 %微分系数(kd=kp*td/ts

u=zeros(1,1000); %设置一行1000列的零向量,将控制量预设为0

time=zeros(1,1000); %设置1000个时间点

for k=1:1:1000 %设置1000次循环,每次步进值为1

time(k)=k*ts; %每个计算点对应的时间

r(k)=1; %设置期望值

y(k)=-1*den(2)*yl+num(2)*u3;%系统响应输出序列

e(k)=r(k)-y(k); %计算误差值

u(k)=kp*e(k)+ki*sum_e+kd*(e(k)-el); %PID控制器输出

sum_e=sum_e+e(k); %更新偏差累计量

u3=u2; %更新上上上一时刻输出的控制量

u2=ul; %更新上上一时刻输出的控制量

ul=u(k); %更新上一时刻输出的控制量

yl=y(k); %更新上一时刻输出的响应值

el=e(k); %更新上一时刻的偏差

end %循环结束

plot(time,y);xlim([0,50]);

hold on;

2.3.3.2 运行结果如下

与未加pid控制器时的阶跃响应相比较,超调量overshot=13.6%明显降低,

节时间明显减少,响应速度加快。

2.4 控制参数对系统性能的影响

设置不同的控制参数,分别作出相应的响应曲线,比较各个参数或控制环节对系统

性能的影响。

2.4.1 程序:

PID=[2.4,0,0;

2.4,0.88,0;

3.4,0.88,0;

2.4,1.8,0;

2.4,1.8,0.25;

2.4,1.8,1]; %初始化6PID参数

for pid=1:1:6; %设置大循环,pid参数分别取不同的值

ts=0.5; %采样时间为0.5s

G=tf(1,[1,1],'iodelay',1); %建立被控对象传递函数

dsys=c2d(G,ts,'z'); %z变换离散化

[num,den]=tfdata(dsys,'v'); %以向量的格式输出numden

el=0; %上一时刻的偏差

ul=0.0; %上一时刻输出的控制量

yl=0; %上一时刻输出的响应值

sum_e=0; %偏差累计量

kp=PID(pid,1); %比例系数

ki=PID(pid,2); %积分系数

kd=PID(pid,3); %微分系数

u=zeros(1,1000); %设置一行1000列的零向量,将控制量预设为0

time=zeros(1,1000); %设置1000个时间点

for k=1:1:1000 %设置1000次循环,每次步进值为1

time(k)=k*ts; %每个计算点对应的时间

r(k)=1; %设置期望值

y(k)=-1*den(2)*yl+num(2)*ul+num(1)*u(k);%系统响应输出序列

e(k)=r(k)-y(k); %计算误差值

u(k)=kp*e(k)+ki*sum_e+kd*(e(k)-el); %PID控制器输出

sum_e=sum_e+e(k); %更新偏差累计量

ul=u(k); %更新上一时刻输出的控制量

yl=y(k); %更新上一时刻输出的响应值

el=e(k); %更新上一时刻的偏差

end %循环结束

subplot(2,3,pid);

plot(time,y);xlim([0,10]);

title(['Kp=',num2str(kp),'Ki=',num2str(ki),'Kd=',num2str(kd)])

hold on; %在同一幅图中以23列同时输出6pid参数作

用下的在0-10s内的响应曲线,标题分别为对应的pid参数值

end %循环结束

2.4.2 运行结果:

2.4.3 运行结果分析:

①理论上,增大比例系数kp会使系统上升时间缩短,即响应速度加快,但由于本系

统采样周期T=0.5s过大,在图中难以比较。但比较图二图三可知,比例系数kp增大

时,系统振荡次数增多,调节时间变长。在系统稳定的前提下,适当增大kp可以减

小稳态误差,但并不能彻底消除稳态误差。

②比较图一图二图三可知,当引入积分环节,能够减少系统振荡次数,缩短调节时

间。但当积分系数ki增大,即积分时间偏小时,系统重新出现振荡,调节时间也相

应增大,若继续增大积分作用,系统可能不稳定。积分作用有助于消除系统误差,

提高系统控制精度。

③比较图四五六可知,当引入微分作用,能够减少超调量,缩短调节时间。但微分

作用过强,即微分时间偏大,都会适得其反,且系统振荡次数增多,甚至不稳定。

适当的微分作用有助于增加系统稳定性。

三、大作业收获和建议

1.PID控制理解加深,在实现PID控制之前,回顾了增量型和位置型PID算式,从实

质上认识了PID控制。虽然位置型算式涉及误差累积,但借助MATLAB能够轻松实现,

所以选取了算法容易实现的位置型算式。

2.PID整定方法的认识由抽象到具象,也是首次实际操作进行PID参数整定。此次

参数整定采取了较为简单的临界比例带法,相关参数求取参考了李遵基老师《热工

自动控制系统》一书中相关内容。此外,参数整定也参考了流传较广的PID参数整定

口诀。上课过程中,始终疑惑PID整定的最终预期曲线该如何判断,实际操作后,

理解“理想曲线两个波,前高后低四比一”。

3.2.4内容中,通过直观地比较不同PID参数下的系统响应曲线,重新系统、直观

的感受到PID控制各个环节和参数对系统性能的影响。

4.由于对MATLAB相关知识,尤其编程语言的不熟悉,此次大作业进展缓慢,在逐步

的摸索中,MATLAB的使用和编程语言更加熟悉(系统构建、PID实现、figure图像

的相关调整)。

5.了解到课程之外一些硬件特性参数、工作原理,也是第一次深切地体会到自动控

制既简单又复杂,简单到一个小小的单片机芯片就能实现,但要想真正能应用到实

际操作,又需要调教各项参数,设计各种算法规避干扰带来的影响。

6.建议在PID控制部分的课程讲解,尤其是参数整定部分,结合MATLAB绘图讲授,

自身来说,在课上这部分内容十分抽象,实际上手一次之后,理解和记忆都很深刻。

同时,也希望MATLAB课程能纳入专业必修,专业课学习的越深入,越感受到MATLAB

的实用性,相比于其他编程语言,MATLAB语言更通俗易懂,simulink建模也非常直

观实用。但这方面我们的确少有涉及,用处大但不会用的硬伤真的很伤。

参考文献

[M]李遵基.热工自动控制系统.北京:中国电力出版社,1997

[M]田涛.过程计算机控制及先进控制策略的实现.北京:机械工业出版

社,2006

[M]陆会明.控制装置与仪表.北京:机械工业出版社,2007

布料知识-500块钱能玩股票吗

车载冰箱温度控制系统

更多推荐

usb冰箱