自动控制原理水温控制系统实验报告_第1页
自动控制原理水温控制系统实验报告_第2页
自动控制原理水温控制系统实验报告_第3页
自动控制原理水温控制系统实验报告_第4页
自动控制原理水温控制系统实验报告_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、恒温控制系统设计报告 学 院:电子信息学院 班 级:12级电子信息工程 指导老师:xxx 姓 名:zzz 学 号: 前言水温控制无论是在工业生产中,还是在日常生活中都起着非常重要的作用,过低的温度或过高的温度都会使水资源失去应有的作用,从而造成水资源的巨大浪费。为了保证生产过程正常安全地进行,提高产品的质量和数量,以及减轻工人的劳动强度、节约能源,要求对水温进监测、显示、控制,使之达到工艺标准,满足需要。由于电子行业的迅猛发展,计算机技术和传感器技术的不断改进,而且计算机和传感器的价格也日益降低,可靠性逐步提高,用信息技术来实现水温控制并提高控制的精确度不仅是可以达到的而且是容易实现的。其发展

2、必将带来新一轮的工业化的革命和社会发展的飞跃。在计算机没有发明之前,这些控制都是我们难以想象的。而当今,随着电子行业的迅猛发展,计算机技术和传感器技术的不断改进,而且计算机和传感器的价格也日益降低,可靠性逐步提高,用信息技术来实现水温控制并提高控制的精确度不仅是可以达到的而且是容易实现的。用高新技术来解决工业生产问题,排除生活用水问题实施对水温的控制已成为我们电子行业的任务,以此来加强工业化建设,提高人民的生活水平。采用PID算法进行温度控制,它具有控制精度高,能够克服容量滞后的特点,特别适用于负荷变化大、容量滞后较大、控制品质要求又很高的控制系统。因此,我们在此基础上运用PID控制器方案制作

3、温度控制器。 目录前言目录摘要3第1章 设计方案论证.31.1主控芯片的选择2 1.2温度控制模块.3 1.3温度采集模块.4 1.4温度显示模块.4第2章 系统设计.5 2.1总体方案设计.52.2硬件电路设计.52.2.1 stc89c52最小系统模块.52.2.2温度控制模块.6 2.2.3温度采集模块.7 2.2.4温度显示模块.8 2.2.5键盘输入模块.9 2.3软件设计.10 2.3.1 程序流程图.10 2.3.2 PWM输出程序设计112.3.3 PID程序设计.112.3.4 DS18B20温度采集程序设计.12 2.3.5 数码管显示程序设计.13 2.3.6 独立按键扫

4、描程序设计.15第3章 系统测试.17 3.1测试数据记录.17 3.2数据分析与结论.18第4章 总结.18参考文献.19附录.19附录1 主要元器件明细表 附录2 仪器设备清单附录3 程序设计摘要:本设计基于STC89C52RC单片机水温测量及控制系统的设计。系统硬件部分由单片机电路、温度采集电路、键盘电路、LED显示电路、MOS管控制电路等组成。本系统采用数字式温度传感器DS18B20作为温度传感器,简易实用,方便拓展。软件设计中由两个定时器产生一个PWM波,并通过PID控制PWM波的占空比从而控制MOS管的通断时间以控制加热功率。本系统可实现水温的动态平衡,稳态温差0.1摄氏度。关键词

5、: STC89C52 占空比 PID第1章 设计方案论证 1.1主控芯片的选择 方案一:STC89C52RCSTC89C52RC 单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单 片机,指令代码完全兼容传统 8051 单片机,STC89C52为8 位通用微处理器,采用工业标准的C51内核。内部含有两个16位定时器模块,两个外部中断,8k字节flash闪速存储器,256字节RAM,支持位操作指令方案二:MSP430F149Msp430f149是TI公司推出的超低功耗处理器,工作电压3.6V1.8V ,正常工作模式280A1MHz,2.2V,待机模式1.6A,RAM数据保存的掉电模式下0.

6、1A。五级节电模式。内部含有2个16位计数器,16个外部中断,60k字节flash闪速存储器,2k字节RAM。由于温度具有很强的滞后性,所以对处理器的速度要求不高;又因为单片机功耗与加热功耗相比非常小,所以我们选择操作简单,价格便宜的STC89C52RC单片机作为主控芯片。1.2温度控制模块方案一:采用可控硅来控制加热器有效功率。可控硅是一种半控器件,应用于交流电的功率控制有两种形式:控制导通的交流周期数达到控制功率的目的;控制导通角的控制交流功率。由交流过零检测电路输出方波经适当延时控制双向可控硅的导通角,延时时间即移相偏移量由温度误差计算得到。可以实现对交流电单个周期有效值周期性控制,保证

7、系统的动态性能指标。该方案电路稍复杂,需使用光耦合驱动芯片以及变压器等器件。但该方案可以实现功率的连续调节,因此反应速度快,控制精度高。方案二:采用继电器控制。使用继电器可以很容易地实现通过较高的电压和电流,在正常条件下,工作十分可靠。继电器无需外加光耦,自身即可实现电气隔离。这种电路无法精确实现电热丝功率控制,电热丝只能工作在最大功率或零功率,对控制精度将造成影响。但可以由多路加热丝组成功率控制,由单片机对温差的处理实现分级功率控制提高系统动态性能。方案三:采用MOS管控制MOS管(Field Effect Transistor缩写(FET)简称场效应管。由多数载流子参与导电,也称为单极型晶

8、体管。它属于电压控制型半导体器件。具有输入电阻高(108109)、噪声小、功耗低、动态范围大、易于集成、没有二次击穿现象、安全工作区域宽等优点,场效应管能在很小电流和很低电压的条件下工作,而且它的制造工艺可以很方便地把很多场效应管集成在一块硅片上,因此场效应管在大规模集成电路中得到了广泛的应用。可控硅电路过载能力小,尤其是短路时必须要由快速熔短器来保护,安全性能差;继电器无法精确实现电热丝功率控制;所以我们选择方案三 1.3温度采集模块方案一:选用Harris公司生产的采用激光修正的精密集成温度传感器AD590。AD590的岑温范围是-55+150,最大非线性误差为0.3,响应时间为20us,

9、重复性误差低至0.05,功耗低,仅为2mW。方案二:采用热敏电阻。选用此类元件的优点价格便宜,但由于热敏电阻的非线性特性会带来较大的误差。方案三:使用带有A/D(模数转换)单片集成的DS18B20传感器。DS18B20数字温度计是DALLAS公司生产的即单总线器件,无需其他外加电路,直接输出数字量。可直接与单片机通信,读取测温数据。具有线路简单,性能稳定体积小的特点。比较以上方案,结合设计精度要求最小区分度为1,所以选择方案三。 1.4温度显示模块方案一:采用8个LED八段数码管分别显示温度的十位、个位和小数位。数码管具有低能耗,低损耗,寿命长,耐老化,对外界环境要求低。但LED八度数码管引脚

10、排列不规则,动态显示时要加驱动电路,硬件电路复杂。方案二:采用带有字库的12864液晶显示屏。12864液晶显示屏(LCD)具有功耗低、轻薄短小无辐射危险,平面显示及影像稳定,不闪烁,可视面积大,画面效果好,抗干扰能力强。同时,12864带有字库,编程容易,且具有多种功能:光标显示、画面移位、睡眠模式,增加可读性,降低功耗。由于要显示只有设定和测量的两个温度值,8位数码管足够使用,所以我们选择方案一。 第2章 系统设计 2.1总体方案设计 2.2硬件电路设计 2.2.1 stc89c52最小系统模块STC89C52RC 单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全

11、兼容传统 8051 单片机,12 时钟/机器周期和 6 时钟/机器周 期可以任意选择。主要特性如下: 1、兼容MCS51指令系统;2、8kB可反复擦写(大于1000次)Flash ROM;3、32个双向I/O口;4、256x8bit内部RAM;5、3个16位可编程定时/计数器中断;6、时钟频率0-24MHz;7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。AT89C52为8 位通用微处理器,采用工业

12、标准的C51内核。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0端口(第39-32脚):双向信号,多功能端口。它是八位漏极开路的双向I/O端口;在拓展外部总线时,分时作为低八位总线和八位双向数据总线。P0端口可驱动八个LSTTL负载。P0口漏极开路,即高阻状态,适用于输入/输出,可独立输入/输出低电平和高阻状态,若需要输出高电平,则需使用外部上拉电阻。P1端口(第1-8脚):双向信号,具有内部

13、上拉电阻的8位准双向I/O端口,可驱动四个LSTTL负载。P2端口(第21-28脚):双向信号,多功能端口,具有内部上拉电路的8位准双向I/O端口;在拓展外部总线时,用作高八位地址总线,可驱动四个LSTTL负载。P3端口(第10-17脚):双向信号,多功能端口,具有内部上拉电路的8位准双向I/O端口,可驱动四个LSTTL负载;该端口的每一位都可以作为其他功能模块的输入/输出及控制引脚使用。 图2.2.1STC89C52RC最小系统2.2.2温度控制模块 此部分电路主要由MOS管控制。MOS管源极接地;漏极接一个50W,10欧姆的加热电阻接15V直流电;栅极接单片机PWM波输出端口。单片机通过输

14、出PWM波的占空比控制MOS管的闭合时间来控制加热功率;控制部分电路图如图2.2.2所示:图2.2.2 温度控制电路 2.2.3温度采集模块 温度采集模块选用高度集成芯片DS18B20。DS18B20为单总线结构,总共有三个引脚VCC、GND和信号线。电路连接简单方便,只需格外接少量的电阻电容。硬件电路图如图2.2.3所示:图2.2.3 DS18B20硬件连接图2.2.4温度显示模块 温度显示模块采用8个八位共阴极数码管,通过8位锁存器MC74HC573完成段选和位选,节省IO口的使用。硬件连接电路图如图2.2.4所示: 图2.2.4 数码管显示电路2.2.5键盘输入模块按键输入模块选用四个独

15、立按键,通过独立按键扫描方式输入设定值。硬件电路图如图2.2.5所示:图2.2.5 独立按键硬件连接图 2.3软件设计 2.3.1 程序流程图开始定时器0、1初始化测量水的温度全速加热VsetVtest+3 Yes NoPID算法调节占空比图2.3.1 程序流程图 2.3.2 PWM输出程序设计 本模块通过STC89C52RC两个定时器协调工作输出一个频率为50Hz,占空比可调的PWM波形,并通过P2.0口输出以控制MOS管。其中定时器1初始值恒定为0xb800,精确定时0.02ms。通过改变定时器0的初始值改变占空比的大小,程序每执行一个循环重新装载一次定时器0的初始值。程序如下:void

16、init_time(void) TMOD |=0X01; TMOD |=0X10; TH1=0Xb8; TL1=0X00; ET0=1; ET1=1; EA=1; PT1=0; PT0=0;TR1=1; /定时器0中断服务函数void time0(void)interrupt 1/PWM_OUT=0;TR0=0;/定时器1中断服务函数 void time1()interrupt 3TH1=0Xb8;TL1=0X00; PWM_OUT=1; TH0=th0;TL0=tl0; TR0=1;2.3.3 PID程序设计PID是比例(P)、积分(I)、微分(D)控制算法,计算公式为dout=kp*e+k

17、i*se+kd*de; 比例(P)、积分(I)、微分(D)控制算法各有作用:比例,反应系统的基本(当前)偏差e(t),系数大,可以加快调节,减小误差,但过大的比例使系统稳定性下降,甚至造成系统不稳定;积分,反应系统的累计偏差,使系统消除稳态误差,提高无差度,因为有误差,积分调节就进行,直至无误差; 微分,反映系统偏差信号的变化率e(t)-e(t-1),具有预见性,能预见偏差变化的趋势,产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除,因此可以改善系统的动态性能。但是微分对噪声干扰有放大作用,加强微分对系统抗干扰不利。 积分和微分都不能单独起作用,必须与比例控制配合。PID算法程序

18、如下:void pid(void) float t0,zkb; uint t0_value; float e=0,de=0,dout=0; e=set_value-test_value; se=se+e; de=e-le; dout=kp*e+ki*se+kd*de; le=e; zkb=15+dout; if(zkb80)zkb=80; t0=184.31*zkb; t0=65535-t0;t0_value=(uint)t0;th0=(t0_value & 0xff00)8;tl0=(t0_value & 0x00ff);2.3.4 DS18B20温度采集程序设计DS18B20是单总线结构,

19、最高精度0.0625摄氏度。要读取温度时首先通过单总线向DS18B20发送跳过ROM指令,然后发送温度转换命令,等待温度转换完成后向DS18B20发送读取温度命令,然后就可以读取DS18B20的12位采样值。程序如下:/18b20温度转换与读温度操作函数 void read_18b20() short wendu;short a;short b;uint wd;init_18b20();display_value();keyscan();write_bites(0xcc);write_bites(0x44);delay_750ms();init_18b20();display_value();

20、keyscan();write_bites(0xcc);write_bites(0xbe);display_value();a=read_bites();b=read_bites();wendu=b*256+a; test_value=wendu*0.0625;wd=wendu*0.625;value3=wd/100;value4=wd/10%10;value5=wd%10;display_value(); 2.3.5数码管显示程序设计 数码管显示程序采用8个共阴极数码管动态刷新模式进行,通过8位锁存器MC74HC573完成段选和位选,节省IO口的使用。程序如下:void display_va

21、lue(void) P0=sz12;DU=1;DU=0;P0=0x7f;WE=1;WE=0; delay_ms(1);P0=szvalue5;DU=1;DU=0;P0=0xbf;WE=1;WE=0;delay_ms(1);P0=szvalue4+0x80;DU=1;DU=0;P0=0xdf;WE=1;WE=0;delay_ms(1);P0=szvalue3;DU=1;DU=0;P0=0xef;WE=1;WE=0;delay_ms(1);P0=sz12;DU=1;DU=0;P0=0xf7;WE=1;WE=0;delay_ms(1);P0=szvalue2;DU=1;DU=0;P0=0xfb;WE

22、=1;WE=0;delay_ms(1);P0=szvalue1+0x80;DU=1;DU=0;P0=0xfd;WE=1;WE=0;delay_ms(1);P0=szvalue0;DU=1;DU=0;P0=0xfe;WE=1;WE=0;delay_ms(1);2.3.6独立按键扫描程序设计独立按键扫描程序采用4个独立按键不间断扫描方式进行,当独立按键按下后,对应IO口会变成低电平,消抖后通过判断对应IO口是否为低电平来判断按键是否按下。四个按键中,key1的功能为设定温度整数部分-1,key2功能为设定温度整数部分+1,key3的功能为设定温度小数部分-1,key4功能为设定温度小数部分+1,程

23、序设计如下:void keyscan(void)if(key4=0) display_value();if(key4=0)while(!key4) /等待按键松开 display_value(); if(value1=0)value1=9; value0-; elsevalue1-; set_value=value0*10+value1+value2*0.1;if(key3=0)display_value();if(key3=0)while(!key3)display_value(); if(value1=9)value1=0; value0+; elsevalue1+; set_value=

24、value0*10+value1+value2*0.1;if(key2=0) display_value();if(key2=0)while(!key2)display_value(); if(value2=0)value2=9; if(value1=0)value0-; value1=9; elsevalue1-; elsevalue2-; set_value=value0*10+value1+value2*0.1; if(key1=0) display_value();if(key1=0)while(!key1)display_value(); if(value2=9)value2=0;

25、if(value1=9)value0+; value1=0; elsevalue1+; elsevalue2+; set_value=value0*10+value1+value2*0.1; 第3章 系统测试 3.1测试数据记录 初始温度 :38.5 设定温度 :44.7 加热电压 :15V 加热电阻 :10欧姆 全速加热功率:19W实验所测数据表格如表3.1所示:时间t/分钟012345678910测量温度/摄氏度38.540.841.94343.644.144.544.644.644.644.6时间t/分钟1112131415161718192021测量温度/摄氏度44.644.644.6

26、44.644.644.644.644.644.644.644.6表3.1 时间、温度记录表3.2数据分析与结论 由实验所测数据表格绘制如图3.2所示温度测量曲线图:图3.2 温度测量曲线图由温度测量曲线图可以看出系统从设定温度38.5逐渐靠近设定温度44.7,并最终稳定在44.6不变。当系统稳定在44.6时,输出占空比为40.5%,加热功率为9.6W。另实验时观察输出占空比发现占空比在缓慢增加,当占空比缓慢增加到一定程度,系统将稳定在44.7。在程序中可适当的增加PID中的积分参数I的大小以使温度更快的稳定在设定温度。由温度测量曲线图可以看出本水温控制系统稳态误差为0.1,系统上升时间7分钟。

27、因此该水温控制系统很好的完成了设计要求。第4章 总结本系统稳态误差小,超调量小,整体性能良好。另外,系统还可以通过按键设置设定温度大小,设定温度和控制温度可精确到一位小数;通过数码管动态实时显示设定温度和当前测量温度,人机交互界面良好。但设计也有些不足的地方:系统要用开关电源供电;加热功率最大20W,系统上升时间较长;系统所处环境改变或所烧水量发生改变后,系统响应曲线会发生变化,可能会出现超调现象,但在PID作用下最终会稳定在设定温度上。参考文献1胡寿松. 自动控制原理.北京:科学出版社,2014.122 陈蕾,等.单片机原理与接口技术.苏州:机械工业出版社,2012.8附录附录1 主要元器件

28、明细表STC89C52RC、10欧姆,50W功率电阻、IRF530、DS18B20 附录2 仪器设备清单(1)数字示波器(2)直流稳压电源附录3 程序主函数#include#define uchar unsigned char#define uint unsigned int#define kp_value 20#define ki_value 0.3#define kd_value 5sbit ds=P22; sbit DU=P26;sbit WE=P27;sbit PWM_OUT=P20;/*独立按键位定义*/sbit key1=P37; /设定温度整数部分-1sbit key2=P36;

29、 /设定温度整数部分+1sbit key3=P35; /设定温度小数部分-1sbit key4=P34; /设定温度小数部分+1uchar code sz17=0x3f , 0x06 , 0x5b ,0x4f , 0x66 , 0x6d ,0x7d , 0x07 , 0x7f , 0x6f ,0x77 , 0x7c , 0x39 , 0x5e , 0x79 , 0x71 , 0x00; /0-9&A-F&“不显示” 字型码float set_value=45.0,test_value=0;uint th0=0xc3,tl0=0x50;uchar value6=4,5,0,0,0,0;float

30、 kp=kp_value,ki=ki_value,kd=kd_value;float le=0,se=0;void display_value(void);void keyscan(void);void pid(void);void delay_ms(uint xms) /xms等于几就延迟几毫秒 uint i,j;for(i=xms;i0;i-) for(j=112;j0;j-);void delay_750ms(void) /xms等于几就延迟几毫秒 uint i; for(i=0;i500;i+)display_value(); keyscan();/ 18b20写入1个字节 void

31、write_bites(uchar date)uchar i,temp,j;for(i=0;i=1;if(temp) /写1ds=0;j+;ds=1;j=8; /延时60-120uswhile(j-);elseds=0;j=8; /延时60-120uswhile(j-);ds=1;j+;j+;/18b20读1个字节 uchar read_bites(void)uchar i,j,temp,date;for(i=0; i8; i+)ds=0;j+;ds=1;j+;j+;temp=ds;temp=1;date=date | temp;j=8; /延时60-120uswhile(j-);return

32、 date;/ 18b20初始化函数 void init_18b20(void) uint i; ds=0; i=103; /将总线拉低480us960us while(i0)i-; ds=1; /然后拉高总线,若DS18B20做出反应会将在15us60us后将总线拉低 i=4; /15us60us等待 while(i0)i-;void init_time(void) TMOD |=0X01; /T0工作在16位计数模式 TMOD |=0X10; /T1工作在16位计数模式 TH1=0Xb8;TL1=0X00; /计时器1初值:50Hz ET0=1; /开启T0中断 ET1=1; /开启T1中

33、断 EA=1; /开启总中断 PT1=0;/T0优先级高 PT0=0;TR1=1; /定时器0开始计时 void display_value(void) P0=sz12;DU=1;DU=0;P0=0x7f;WE=1;WE=0; delay_ms(1);P0=szvalue5;DU=1;DU=0;P0=0xbf;WE=1;WE=0;delay_ms(1);P0=szvalue4+0x80;DU=1;DU=0;P0=0xdf;WE=1;WE=0;delay_ms(1);P0=szvalue3;DU=1;DU=0;P0=0xef;WE=1;WE=0;delay_ms(1);P0=sz12;DU=1;

34、DU=0;P0=0xf7;WE=1;WE=0;delay_ms(1);P0=szvalue2;DU=1;DU=0;P0=0xfb;WE=1;WE=0;delay_ms(1);P0=szvalue1+0x80;DU=1;DU=0;P0=0xfd;WE=1;WE=0;delay_ms(1);P0=szvalue0;DU=1;DU=0;P0=0xfe;WE=1;WE=0;delay_ms(1);/数据转换与显示函数 /18b20温度转换与读温度操作函数 void read_18b20() short wendu;short a;short b;uint wd;init_18b20();display

35、_value();keyscan();write_bites(0xcc);write_bites(0x44);delay_750ms();init_18b20();display_value();keyscan();write_bites(0xcc);write_bites(0xbe);display_value();a=read_bites();b=read_bites();wendu=b*256+a; test_value=wendu*0.0625;wd=wendu*0.625;value3=wd/100;value4=wd/10%10;value5=wd%10;display_value();void keyscan(void)if(key4=0)/年月日时分秒星期选择 display_value();if(key4=0)while(!key4) /等待按键松开 display_value(); if(value1=0)value1=9; value0-; elsevalue1-; set_value=value0*10+value1+value2*0.1;if(key3

温馨提示

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

评论

0/150

提交评论