水温控制实验系统设计
2013-09-04吕淑平
吕淑平, 王 潇
(哈尔滨工程大学自动化学院,黑龙江哈尔滨150001)
0 引言
采用单片机MC9SXS128设计了1种水温控制系统,该系统用于学生实验课里,集成了3种温度传感控制方案,实验时学生可任选1种或几种。这样不仅增加了系统的灵活性,也更好地扩大了学生的知识面[1]。
1 系统总体设计
系统采用MC9SXS128为主控芯片,包含PT100电桥、PT1000阻值-频率变换及DS12B20数字芯片等水温测定方案。经PID算法得到控制量,通过脉宽宽度调制(PWM)、过零触发方法控制加热棒功率从而控制水温。水温控制实验系统结构图如图1所示。
图1 水温控制系统结构图
2 硬件设计及分析
2.1 执行部分
执行部分采用过零触发固态继电器和加热棒。
继电器输入控制端为3~32 VDC,输出端为5 A 380 V,50~60 Hz,加热棒功率为500~1 000 W。固态继电器通过过零控制,在设定时间间隔内,改变固态继电器内部晶闸管导通的周波数实现对加热棒功率控制,配合PWM模块可方便实现。图2是实验测得继电器全导通下加热棒对一定量水加热温度曲线。
2.2 传感部分
2.2.1 PT100 电桥方案
PT100铂电阻测温元件和R4、R5、可调电阻R6组成单臂电桥,TL431为电桥提供2.5 V稳定电压。由于执行部分过零触发工作频率太小(10 Hz),出现低频干扰,系统加入2阶低通滤波电路消除低频干扰,截频率为21 Hz(水温变化正常不会超过这个频率)。2级放大输出直接连接单片机ADC0口,如图3所示。
2.2.2 PT1000铂电阻阻值频率变换方案
图2 继电器全导通下一定量水加热温度曲线
图3 PT100电桥方案电路
方案如图4所示,利用NE555时基电路实现多谐振荡器产生矩形波,频率和矩形波占空比只与相关电阻值有关。输出方波脉冲振荡频率为:
由于PT1 000阻值随温度变化,通过NE555得到1个近似线性的频率变化,利用MC9SXS128内部增强型捕获定时器ECT捕获该频率大小和矩形波高电平脉宽,得到频率与温度之间的关系。
图4 PT1000铂电阻阻值频率变换方案电路
2.2.3 DS18B20 数字芯片方案
电路如图 5所示,采用美国 DALLAS公司DS18B20,单总线接口方式。该方案为数字信号传送,抗干扰能力强,温度不必标定。
图5 PT100铂电阻阻值频率变换方案
3 软件设计
软件部分包括基于MC9SXS128的嵌入式和基于C++Builder 6平台设计的上位机软件编程。
3.1 嵌入式软件设计
软件采用C语言编程、模块化结构,各硬件模块对应相应软件模块。主函数首先对功能寄存器等进行配置初始化,包括CPU倍频、ADT初始化、SCI初始化、ECT初始化、PWM初始化等。流程图如图6所示。
3.1.1 增强型定时器捕获脉冲频率
通过ECT捕获N个矩形波上升沿或下降沿数量,并读出n=0和n=N时ECT定时器寄存器值存于Count[0]和 Count[1]中。因为定时器在自加过程中可能会溢出,这样在相减得到N个脉冲的时间内需要
图6 嵌入式软件流程图
判断是否溢出,同时保证在采集0~N过程中,不会发生定时器2次溢出情况,程序设计如下:
if(Count[1]> Count[0])
{period=Count[1]-Count[0];//N 个周期}
else if(Count[0] > Count[1])//显然是溢出了 16 的定时器计数范围
{period=0xffff-Count[0] +1+Count[1];//处理溢出}
3.1.2 改进增量式PID算法
算法程序如下:
int Pid_cal(int SetTemp){
e=(int)(SetTemp-Temp);
//求出偏差量,其SetTemp为期望温度值
de=e-ePast;//求出微分量
ePast=e;//记录偏差信号
Out=(e+de*Kd)*Kp+ie/Ki;//PID运算
OutPast[1] =OutPast[0];
OutPast[0] =Out;
ie=OutPast[1]+OutPast[0];//求出积分值
if(ie>30000)ie=30000;//限制积分值上限
else if(ie<=0)ie=0;//不做低温积分
if(Out>=16500)Out=16500;//输出值进行限幅
else if(Out<0)Out=0;//小于0的输出不计算
return Out;}
算法参数的确定首先采用阶跃曲线法建立系统数学模型,再通过MATLAB仿真确定控制参数。阶跃曲线如图7,8所示,由曲线得到:y(t1)=0.39y(∞),y(t2)=0.632y(∞)时的 t1和 t2值。
一阶惯性延时数学模型设为
求出:K=y(∞)/x0,T=2(t2-t1),τ=2t1-t2。
经多次计算验证得到系统数学模型为:
图7 阶跃响应曲线
利用Matlab得到PID阶跃曲线,经调试获得控制参数 KP=120,KI=0.2,KD=20。
图8 PID阶跃跟踪结果
3.2 上位机软件编程
上位机采用Borland公司C++Builder 6.0,主要使用YbCommDevice串口控件、TChart图表绘制控件和TTimer控件等。上位机软件主流程图如图9所示。
3.2.1 串口控件YbCommDevice
YbCommDevice控件具有串口自动识别和选择、奇偶校验、数据位控制、停止位设置,并且可以设置调制解调器功能,如数据流控和自动应答等功能。设置界面如图10所示。
读取串口数据代码如下:
unsigned char Buf[8192];//收到的字节数不会超过串口缓存的容量
AnsiString s;//AnsiString数据类型代表一序列的数据字,容量可从4 bytes到2GB
int n=YbCommDevice1->Read(Buf,8192);//收到 n 个字节
写串口数据代码如下:
YbCommDevice1-> Write(Buffer,nBytes);
Buffer表示待发送数据所在数组,nBytes表示所需发送的数据长度。
3.2.2 TTimer 实现多线程操作
使用TTimer控件实现多线程操作或称分时操作。方法是,使用多个TTimer,设置每个TTimer在没有其他任务时的触发时间。图11为2个TTimer同时工作的流程图。
图9 上位机软件主要流程图
图10 YbCommDevice控件设置界面
图11 两个TTimer同时工作流程图
4 结语
研制了基于MC9SXS128水温控制实验系统,与目前实验室现有的基于PLC过程控制实验系统相比,该系统制作简单、成本低。学生在掌握检测传感、过程控制等理论基础上,可进行建模及不同算法研究。
[1] 王再英,刘怀霞,陈毅静.过程控制系统与仪表[M].北京:机械工业出版社,2007.
[2] 王天曦,李鸿儒,杨兴华.坚持改革创新,开创电子实习新局面[J].实验技术与管理,2003,20(4):90-94.
[3] 管凤旭,谭吉来,吕淑萍.基于ARM的液位自动控制实验系统[J].实验室研究与探索,2010,29(3):10-13.
[4] 胡晓波,李 瑛,王艳芳.计算机仿真技术在实验教学中的应用[J].实验室科学,2007(2):121-123.
[5] 冯毅萍,乐嘉华.计算机液位控制系统实验装置的研制[J].实验室研究与探索,2000(2):78-80.
[6] 王正林,郭阳宽.过程控制与Simulink应用[M].北京:电子工业出版社,2006.
[7] 吕淑平,马忠丽,王科俊.高等工程教育的实践与思考[J].实验技术与管理,2010,27(8):123-135.
[8] 吕淑平,韩 健.按键及声控步进电机控制系统开发[J].实验科学与技术,2011,9(3):6-9.
[9] 贾 丽,袁小平,陈 烨,等.常用液位检测方法的研究[J].能源技术与管理,2009(1):120-122.
[10] 洪志刚,杜维玲,周 玲.超声波外测液位检测方法研究[J].电子测量与仪器学报,2007,21(4):46-49.
[11] 管凤旭,杨庆国,吕淑萍.基于ARM的环境检测与控制综合实验系统设计[J].实验技术与管理,2010,27(10):106-109.
[12] 王 毅,白泽生.现代温室环境多参数测控系统设计[J].微计算机信息,2008,24(20):140-141.
[13] 匡迎春,沈 岳,姚帮松,等.简易型温室温湿度控制器设计[J].湖南农业大学学报,2009,35(4):452-456.
[14] 李宏俊,黄 鑫,卢开砚.以单片机为核心的温室智能控制系统[J].电子元器件应用,2007,9(5):20-23.
[15] 王雪文,张志勇.传感器原理及应用[M].北京:北京航空航天大学出版社,2004.