电子课程设计报告最终修改版444.docx

上传人:牧羊曲112 文档编号:2049025 上传时间:2023-01-04 格式:DOCX 页数:65 大小:1.68MB
返回 下载 相关 举报
电子课程设计报告最终修改版444.docx_第1页
第1页 / 共65页
电子课程设计报告最终修改版444.docx_第2页
第2页 / 共65页
电子课程设计报告最终修改版444.docx_第3页
第3页 / 共65页
电子课程设计报告最终修改版444.docx_第4页
第4页 / 共65页
电子课程设计报告最终修改版444.docx_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《电子课程设计报告最终修改版444.docx》由会员分享,可在线阅读,更多相关《电子课程设计报告最终修改版444.docx(65页珍藏版)》请在三一办公上搜索。

1、电子课程设计报告 设计课题: 水温控制系统 专业班级: 电子1106 班 学生姓名: 王亮亮、张佩佩、杨梅 学 号: 1130060221、1130060265、1130060260 指导教师: 梁斌 设计时间: 2014年3月 水温控制系统设计一、 设计任务与要求:1任务: 设计并制作一个水温自动控制系统,控制对象为200mL净水,容 器为搪瓷器皿。水温可以在一定范围内由人工设定,并能在环境温度 降低时实现自动控制,以保持设定的温度基本不变。2. 要求: 基本要求: (1)温度设定范围为4090,最小区分度为1,标定温度1。 (2)环境温度降低时(例如用电风扇降温)温度控制的静态误差1。 (

2、3)用十进制数码管显示水的实际温度。 发挥部分: (1)采用适当的控制方法,当设定温度突变(由40提高到60)时,减 小系统的调节时间和超调量。 (2)温度控制的静态误差0.2。 3.说明: (1)加热器采用低压24V铝壳恒温PTC陶瓷加热板。 工作电压:24V(裸线接出,不分正负极,接额定电压即可) 外观尺寸:35x21x5mm(核心加热部分) 额定功率:20W (实际耗散功率1030W) 干烧表温:220度左右 (内部PTC加热芯片温度为260度左右) (2)测量水温时只要求在容器内任意位置设置一个测量点。二、 方案设计与论证:1.温度传感器的比较与选择:方案一、AD590是一种半导体集成

3、电路,它是利用晶体管的 b-e 结压降的不饱和值 VBE 与热力学温 度 T 和通过发射极电流 I 的下述关系实现对温度的检测具有线性好,精度适中,灵敏度高,体积小,使用方便等优点。AD590D的输出形式有电流和电压两种形式,要将温度传感器采集的温度值经过AD转换,然后送入单片机进行处理。方案二、采用DS18B20数字温度传感器对水温进行采样,无需进行AD转换。将采集的值直接送入单片机进行处理。DS18B20测温范围 55+125,固有测温分辨率0.5,支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温。在市面上AD590比DS18B20贵几倍,同时AD

4、590的外围电路比DS18B20的复杂,就这价格和电路实现难易的考虑,本系统选择方案二。2.主控MCU选择:方案一、采用最简单的51单片机处理温度数据、键盘的输入和LCD的显示。利用51单片机的优点是价格便宜,使用比较方便,缺点是接口少,使用时需扩展,外围电路比较多,运算处理速度不高,功耗高。方案二、利用MSP430对温度数据等进行处理,处理能力强、运算速度快、超低功耗、片内资源丰富、方便高效的开发环境。对于实现本系统的功能绰绰有余。综合比较以上两个方案,本系统选择方案二。3.加热器的比较与选择:方案一:采用直形加热管。直形加热管的加热效率低,速度慢,且加热不均匀,导致容器内水温的上下温差较大

5、,使温度计测量的温度误差较大,影响实验的准确性。方案二:采用螺旋加热管。可将螺旋加热管固定到容器内部,通电加热时能使水在容器内形成对流,效率相对较高,加热较均匀,使得测量误差较小。综合比较以上两个方案,本系统选择方案二。4.显示器的比较与选择:方案一、采用TFT_LCD作为显示温度值的器件。每个液晶像素点都是由集成在像素点后面的薄膜晶体管来驱动,从而可以做到高速度、高亮度、高对比度显示屏幕信息,是目前最好的LCD彩色显示设备之一。方案二、采用LCD12864作为显示温度值的器件。LCD12864是工业字符型液晶,1602采用标准的16脚接口,其中包括8根数据线,三根控制线,电源、地、就液晶驱动

6、电压引脚。使用方便,价格适中。由于本系统只需要显示温度值,对分辨率和颜色方面要求不高,所以综合价格和系统需求考虑,本系统选择方案二。三、 单元电路设计与参数计算: 1. 温度传感器电路设计图2 DS18B20采用一总线技术,在使用时需在外部接一个上拉电阻(取经验值 4.7K),在总线闲置时为高电平。信息通过单总线接口将数字温度值送入单片 机进行处理和显示。DS18B20的特性:(1) 电压范围为3.05.5V,在寄生电源方式下可由数据线供电。(2) 温度使用范围为-55C +125C,在-10C +85C时精度为0.5C。(3) 可编程的分辨率为912位,对应的课分辩温度为0.5C、0.25C

7、、0.125C和0.0625C,可实现高精度测量。(4) 具有负电压特性。 2. 键盘电路设计图3 键盘的行列线接入单片机的P1口,当有键按下时就会产生中断信号(P1 口的每一个位都可以产生中断信号),然后进入中断程度,对键盘进行扫描, 确定按键的值。 表一 键盘功能键表行列一二三四I12确定IIIIIIV数字1键来控制温度的十位,数字2键来控制温度的各位,当设定好温度后按确定键即可。 3. 加热器加热电路设计图4 当单片机P5.5脚输出高电平时,三极管8050导通,从而固态继电器打 到NO端,电热杯与220V交流电形成通路,对水进行加热。二级管IN4148固 态继电器起着保护作用。 4. 风

8、扇冷却电路设计图5 当实时温度比设定的温度高出0.7C时,P5.7输出高电平,导通8050, 从而使固态继电器打到NO端是风扇工作,对水降温。风扇由5V直流电源驱 动。 5. 液晶显示电路设计图6 P3.0、P3.1、P3.2接LCD12864的三个控制引脚,P4口作为LCD12864的数据接口。通过对控制引脚的控制,从而实现温度显示的功能。 6. 温度控制与PID算法 下面的叙述以波峰焊及回流焊加热温区的温度控制为实例,简单地结合控制理论,以浅显的方式,将温度控制及PID算法作一个简单的描述。 6.1温度控制的框图 这是一个典型的闭环控制系统,用于控制加热温区的温度(PV)保持在恒定的温度设

9、定值(SV)。系统通过温度采集单元反馈回来的实时温度信号(PV)获取偏差值(EV),偏差值经过PID调节器运算输出,控制发热管的发热功率,以克服偏差,促使偏差趋近于零。例如,当某一时刻炉内过PCB板较多,带走的热量较多时,即导致温区温度下降,这时,通过反馈的调节作用,将使温度迅速回升。其调节过程如下: 温度控制的功率输出采用脉宽调制的方法。固态继电器SSR的输出端为脉宽可调的电压UOUT 。 当SSR的触发角触发时,电源电压UAN通过SSR的输出端加到发热管的两端;当SSR的触发角没有触发信号时,SSR关断。因此,发热管两端的平均电压为 Ud(t/T)* UAN=K* UAN 其中K= t/T

10、,为一个周期T中,SSR触发导通的比率,称为负载电压系数或是占空比,K的变化率在01之间。一般是周期T固定不便,调节t, 当t在0T的范围内变化时,发热管的电压即在0UAN之间变化,这种调节方法称为定频调宽法。下面将要描述的PID调节器的算式在这里的实质即是运算求出一个实时变化的,能够保证加热温区在外界干扰的情况下仍能保持温度在一个较小的范围内变化的合理的负载电压系数K。 6.2温度控制的两个阶段 温度控制系统是一个惯性较大的系统,也就是说,当给温区开始加热之后,并不能立即观察得到温区温度的明显上升;同样的,当关闭加热之后,温区的温度仍然有一定程度的上升。另外,热电偶对温度的检测,与实际的温区

11、温度相比较,也存在一定的滞后效应。 这给温度的控制带来了困难。因此,如果在温度检测值(PV)到达设定值时才关断输出,可能因温度的滞后效应而长时间超出设定值,需要较长时间才能回到设定值;如果在温度检测值(PV)未到设定值时即关断输出,则可能因关断较早而导致温度难以达到设定值。为了合理地处理系统响应速度(即加热速度)与系统稳定性之间地矛盾,我们把温度控制分为两个阶段。 (1) PID调节前阶段 在这个阶段,因为温区的温度距离设定值还很远,为了加快加热速度,SSR与发热管处于满负荷输出状态,只有当温度上升速度超过控制参数“加速速率”,SSR才关闭输出。“加速速率”描述的是温度在单位时间的跨度,反映的

12、是温度升降的快慢,如上图所示。用“加速速率”限制温升过快,是为了降低温度进入PID调节区的惯性,避免首次到达温度设定值(SV)时超调过大。在这个阶段,要么占空比K=0, SSR关闭;要么占空比K=100, SSR全速输出。PID调节器不起作用,仅由“加速速率”控制温升快慢。(2) PID调节阶段在这个阶段,PID调节器调节输出,根据偏差值计算占空比(0100),保证偏差(EV)趋近于零,即使系统受到外部干扰时,也能使系统回到平衡状态。 6.3 PID算法 PID控制的原理是基于下面的算式:输出M(t)是比例项,积分项和微分项的函数。 其中: M(t) PID回路的输出,是时间的函数 Kc PI

13、D回路的比例增益 e PID回路的偏差(设定值(SV)与过程变量(PV)之差) Minitial PID回路的静态输出值 为了能让数字计算机处理这个算式,连续算式必须离散化为周期采样偏差算式,才能用来计算输出值。数字计算机处理的算式如下: 从这个公式可以看出,积分项是从第一个采样周期到当前采样周期所有误差 项的函数,微分项是当前采样和前一次采样的函数,比例项仅是当前采样的函数。在数字计算机中,不保存所有的误差项,其实也不必要。由于计算机从第一次采样开始,每有一个过程采样值必须计算一次输出值,只需要保存前一次过程值(PVn-1)和积分项前值。利用计算机处理的重复性,可以将以上算式变换为: 其中:

14、 Mn 在第n 采样时刻,PID回路的输出计算值 SV PID 回路设定值 PVn 在第n 采样时刻的过程变量值 PVn-1 在第n1 采样时刻的过程变量值 MX 积分前项值 Mintial PID回路的静态输出值Kc PID回路的比例增益KI 积分项的比例常数 KI=Kc * Ts / Ti Ts是离散化时的采样时间间隔 Ti是积分时间参数;KD 微分项的比例常数 KD=Kc * Td / Ts Ts是离散化时的采样时间间隔 Td是微分时间参数;从上面PID的算式,可以分析三个基本参数Kc, KI, KD在实际控制中的作用:(1) 比例调节作用:比例项按比例反应系统的偏差,系统一旦出现了偏差

15、,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少偏差。但是过大的比例调节,使系统的稳定性下降,甚至造成系统的不稳定。(2) 积分调节作用:积分项消除系统的稳态误差,提高无差度。只要有偏差,积分就进行,直到无偏差时,积分运算才停止,积分调节项输出一常数值。积分作用的强弱取决于积分时间常数Ti,Ti越小,积分作用越强。积分控制可提高系统的无差度,但积分项输出响应缓慢,使得系统调节时间增长。(3) 微分调节作用:微分项反映系统过程变量的变化率(PVn-1-PVn)/ Ts),具有预见性,能预见变化的趋势,因此,能产生超前的调节作用,在偏差还没有形成之前,已被微分调节作用消除。因

16、此,可以改善系统的动态性能。在微分时间参数Td选择合适的情况下,可以减少超调,减少调节时间。微分调节对干扰有放大效果,过强的微分调节,对系统抗干扰不利。此外,微分项反映的是过程变量的变化率,而当过程变量没有变化时,微分调节输出为零。微分调节不能单独使用,需要与另外两种调节规律相结合,组成PD或PID调节器。四、 总原理图及元器件清单 1.总体框图: 该系统控制核心采用MSP430F5438单片机,采用4x4矩阵键盘作为设定温度的输入,采用LCD12864显示数据,采用DS18B20单线温度传感器,单片机通过控制两个继电器,达到分别控制风扇和电热杯的目的。 2.总原理图: 3. 程序流程图:总程

17、序一共包含5个c文件,程序结构框图如图3所示:3.1 主函数: 主函数流程图如图4所示开始系统初始化键盘初始化LCD初始化I/O端口初始化温度获取函数图4 主函数流程图YN传感器初始化发送skip命令初始化成功否开始发 送温度转换命令延 时发送skip命令发 送读ScratchPad命令读 取温度转换结果将二进制温度转换为可显示的十进制数逐位显示温度确定键按下否温度比较函数返回YN3.2 温度获取函数温度获取函数流程图如图9所示图9 温度获取函数流程图3.3 端口1中断函数3.4键盘扫描函数键盘扫描函数流程图如图11所示 3.5液晶显示函数液晶显示函数流程图如图12所示图12 液晶显示函数流程

18、图3.6信号控制函数五、 安装与调试 静态调试: 1.电源电路:在电源电路的输入端送入+5V直流电,测其输出端的输出电压,测试是否符合三端稳压芯片的标准输出电压。 2.温度检测电路:当温度传感器读出温度数据时,data口输出的高电平在3.3v,低电平在0.7v左右,可以同过示波器检测有没有数据输出。 3.加热冷却电路:通过继电器的开关来控制加热与冷却,通过数据检测,当继电器的两端电压超过3.5v左右时,继电器的开关就与常开端连接在一起,当电压低于0.7v左右,继电器的开关就与常闭端连接在一起。动态调试: 将所有外围电路与核心板对应引脚进行连接,电路系统中对应的VCC连接供电,所有GND连接在一

19、起共地。安装完成后,按照题目要求实际测试。六、 性能测试与分析 1.数据记录 次数峰值时间(min)稳定时间(min)超调量(%)14114.525135.134106.44595.354156.265104.773135.484185.094206.110495.4平均4.212.85.41 2.误差分析: 由于冷却装置是用小型风扇代替的,其冷却效果不是很好,而且没法掌握风扇的冷却效果和自然冷却效果一样以至于当温度超过设定温度时,风扇冷却时比自然冷却快,使的温度很快就低于预设值,这样反复加热冷却,没法在短时间内达到稳定的范围内;同时,加热器的选择不是很好,当温度快接近时通过pid开始微调,但

20、加热器的余热过多以至于温度的超调量不能低于5%,同时还导致了还需要更多时间达到一个稳定的动态平衡;继电器的开关断有一定的延迟,导致加热的时间不能按照理论值计算,导致加热量不一样,据分析加热量超过预设值。七、 七结论与心得 通过本次设计,深深的感受到了理论与实践之间的差距,在实验过程中,我们不断的查阅文献网上搜索,不断地修改方案与电路实验板,在软件调试中也出现一些问题,但通过我们的努力下得到解决。做一件事情心态是非常重要的;通过这次实验既锻炼了我们的在试验中各方面的能力也提高了我们的合作精神,共同面对任务,一同解决困难,各抒己见,相互讨论。 最后,感谢梁老师在制作过程中给了我们精心的指导,帮助我

21、们解决了很多问题,使我们学到了很多知识,也感谢学院创新实验室给我们硬件上的支持。八、 参考文献【1】谭浩强.C语言程序设计【M】.北京清华大学出版社2005.14-34. 【2】童诗白.模拟电子线路基础【M】.北京高等教育出版社2006.432-433.【3】洪利.MSP430单片机原理与应用实例详解【M】.北京 北京航空航天大 学出版社 2010.【4】杨邦文新型继电器实用手册人民邮电出版社,2004.6【5】阎石数字电子技术基础高等教育出版社,2009.12实验成果展示: 附加程序:/* 本例程使用凌阳液晶 在屏幕上显示汉字注意:液晶初始化中,电量寄存器设置模式是为了调整显示屏亮度(设置不

22、好汉字显示不出来) WLL.2014.03.24 */ 1. main.c #include msp430x54x.h#include math.h#include LCD.h#include delay.h#include keypad.h#include DS18B20.h#define uint unsigned int#define uchar unsigned char#define KP 3.3 /pid算法比例系数#define KI 0.002 /pid算法积分系数#define KD 0.3 /pid算法微分系数float fzf=0; /pid返回值做控制用float u2

23、=0;float e3=0;unsigned char j=0;unsigned char flag=0,sure=0; /定时器计数标志位unsigned int key2;float temp_set_f,temp_now_f;void Init_UCS(void) /钟初始化 uint i; P5SEL |= 0x0C; /选择XT2 UCSCTL6 &= XT2OFF; / 外部XT2启动 UCSCTL3 |= SELREF_2; /参考时钟REFOCLK UCSCTL4 |= SELA_2; /ACLK=REFOCLK=32.768kHz do / 直到 XT1,XT2 &,DCO

24、震荡频率稳定 UCSCTL7 &= (XT2OFFG + XT1LFOFFG + DCOFFG+ XT1HFOFFG);/ 清楚 XT2,XT1,DCO 错误标志 SFRIFG1 &= OFIFG; /清除异常错误标志 for(i=0; itemp_now_f) P5OUT |= BIT5; P5OUT &= BIT7; else if(temp_set_f+0.7temp_now_f) P5OUT &= BIT7; fzf = pid(temp_set_f,temp_now_f); else P5OUT &= BIT5; P5OUT |= BIT7; void main(void) /主函数

25、 WDTCTL = WDTHOLD+WDTPW; /关闭看门狗 /uint t0,t1,com,stem; unsigned char i; /_DINT(); IO_Init(); /端口初始化 Init_UCS(); /时钟初始化 Init_LCD(); /液晶初始化 LCD_qingping (); /液晶清屏 Init_Keypad(); /按键初始化 _EINT(); /打开全局中断控制,若不需要打开,可以屏蔽本句 while(1) disp_18b20(); if(sure=1) compare(); if(temp_set_f+0.05=temp_now_f) j=1; if(t

26、emp_set_f-0.05=temp_now_f) j=2; if(temp_set_f-0.15=temp_now_f) j=3; if(temp_set_f-0.50=temp_now_f) j=4; if(temp_set_f-6.00=temp_now_f) j=1000; i=(unsigned char)(fzf+j); flag+; if(flag=i) P5OUT &= BIT5;/关闭加热器 if(flag=5) flag=0; j=0; else P5OUT |= BIT5; /*端口1(键盘)中断函数*/#pragma vector=PORT1_VECTOR_inter

27、rupt void Port1() Key_Event(); /判断按键并获取键值 if(key_val=1) if(key0=9) key0=4; else key0=key0+1; else if(key_val=2) if(key0=9) key1=0; else if(key1=9) key1=0; else key1=key1+1; else if(key_val=3) sure=1; LCD_shuzi(32,40, key0); delay_us(5); LCD_shuzi(32,32, key1); delay_us(5); Init_Keypad(); /键盘初始化 2. L

28、CD.c/*硬件连接* GND CS1 - GND RES - P3.0 AO - P3.1 R/W - P3.2 EP - P3.3 + - 连接到实验板3.3V电源上 DB07- P4.0P4.7 - - GND*/void LCD_Command_Send ();void LCD_Data_Send ();void LCD_Power_Set ();void Init_LCD(void);void LCD_hanzi(unsigned char a, unsigned char b, unsigned int m);void LCD_qingping ();void LCD_zidong

29、();/void LCD_INIT();/* 液晶初始化以及相关寄存器设置 */#include msp430x54x.h#include delay.h/#include LCD.h#define uint unsigned int#define uchar unsigned char#define SET_RES P3OUT |= BIT0#define CLR_RES P3OUT &=BIT0#define SET_A0 P3OUT |= BIT1#define CLR_A0 P3OUT &=BIT1#define SET_RW P3OUT |= BIT2#define CLR_RW P

30、3OUT &=BIT2#define SET_EP P3OUT |=BIT3#define CLR_EP P3OUT &=BIT3/* 命 令 发 送 子 程 序 */void LCD_Command_Send () CLR_RW ;CLR_A0 ;SET_EP ;delay_us(1);SET_RES ;/EP命令1/RWP命令0/AOP命令0/RES命令1 CLR_EP ;delay_us(1);CLR_RW ;CLR_A0 ;SET_RES ;/EP命令0/RWP命令0/AOP命令0/RES命令1/* 数 据 发 送 子 程 序 */void LCD_Data_Send () CLR_R

31、W ;SET_A0 ;SET_EP ;delay_us(1);SET_RES ;/EP命令1/RWP命令0/AOP命令1/RES命令1 CLR_EP ;delay_us(1);CLR_RW ;SET_A0 ;SET_RES ;/EP命令0/RWP命令0/AOP命令0/RES命令1/* 电 压 设 置 子 程 序 */void LCD_Power_Set () P4OUT = 0xA2; /LCD偏压设置 LCD_Command_Send (); P4OUT = 0x24; /V5电压内部电组调整设置 LCD_Command_Send (); P4OUT = 0x81; /电量设置模式 LCD_

32、Command_Send (); P4OUT = 0x10; /电量寄存器设置模式调整显示屏亮度 LCD_Command_Send (); P4OUT = 0xD2; /驱动模式设置 LCD_Command_Send (); P4OUT = 0x05; /驱动模式寄存器设置模式2 LCD_Command_Send (); P4OUT = 0x2C; /上电控制升压电路打开(Booster circuit ON) LCD_Command_Send (); P4OUT = 0x2E; /上电控制电压调整电路打开(Voltage regulator circuit ON) LCD_Command_Send (); P4OUT = 0x2F; /上电控制电压跟随电路打开(Voltage follower circuit ON) LCD_Command_Send ();void Init_LCD(void) P3DIR=0X1F; /P3.0P3.3 输出 P3OUT=0X0F; P4DIR=0xFF; / P4.0P4.7 输出 P4OUT=0x00; P4OUT=0xE2; /复位 LCD_Command_Send (); P4OUT= 0xE3;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号