




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
水温恒温控制嵌入式系统设计1概述1.1发展历史温度控制电路广泛应用于社会生活的各个领域,如家用电器、汽车、材料、电力电子等,同时在很多工业应用场合都需要温度的恒定控制,比如电加热炉,烟叶初烤炕房,某些传感器的工作环境温度等。同时,在实际工作和科研中,许多实验均需要用加热器来加热实验对象,使其达到并保持在某一设定温度,而且在实验过程中,对象的温度有时要求稳定性很高,有时需要不断地调节。正因为如此,恒温的控制在工业和科研中占有非同一般的地位。水温恒温控制就是其中的一种。水的恒温控制是利用对加热系统(热源)的控制,使之在不同的温度输出不同的功率,使得在水温我们预设的温度附近作为小的变动,而不会超出太大的范围,从而达到我们使用的要求。在预设温度的附近时,温度与加热器、散热器之间的关系是很微妙的,我们没办法控制任意时刻的准确的水温,但是我们可以通过测量来判断其变化的趋势,和变化的幅度,从而来使之朝着我们预想的方向进行。1.2发展现状与发展方向常用的水温恒温控制系统根据应用场合和所要求的性能指标有所不同,主要分为继电器恒温控制系统,PID恒温控制系统以及电子式(多用可控硅)恒温控制系统等几种。传统的继电器恒温控制系统简单实用,但由于继电器动作频繁,可能会因触点不良而影响正常工作。PID控制即比例、积分、微分控制。自19世纪40年代开始以来,广泛应用在工业生产中,长期以来,由于其结构简单、实用、价格低,在广泛的过程领域内可以实现满意的控制。PID算法根据比例、积分、微分系数计算出合适的输出控制参数,利用修改控制变量误差的方法实现闭环控制,其缺点是现场PID参数整定麻烦,被控对象模型参数难以确定。可控硅恒温控制系统的特点是体积小、无噪声、调节方便、控制精度高,但会对电网产生一定影响,适用于科研实验等小功率加热器。1.3 本系统设计说明本文设计的水温恒温控制嵌入式系统采用以凌阳系列单片机的SPCE061单片机作为控制核心,来实现对温度的恒定控制,除了单片机控制模块,还包括温度传感器采样模块、A/D转换模块、温度显示模块、设置/存储预定温度模块、加热电路模块、散热电路模块,本系统的设计电路比较简单,控制效果好。设计可以显示0到100范围内的温度,显示精度可以包括小数位。系统的静态误差不大于0.2,超调量较小。本系统的单片机程序代码放在上交的电子版的设计内容的附录中,且程序在unsp开发环境(IDE)下经过调试通过可以正常的使用。2系统原理介绍2.1系统工作原理介绍本系统的结构框图如下图1所示:温度传感器采样A/D转换单片机控制水加热/散热电路温度显示设置/存储预定温度图1.系统框图从图中易可知,本设计系统主要包括如下几部分:单片机控制模块、温度传感器采样模块、A/D转换模块、温度显示模块、设置/存储预定温度模块、加热/散热电路模块。系统的工作流程是这样的:首先用户要先使用设置/存储预定温度模块设置和存储预定的温度;温度传感器采样模块对水温进行采样,将采集到的温度传给A/D转换模块,A/D转换模块将此温度对应的数值传给单片机控制模块,单片机控制模块会判断此温度是否在用户预定的温度+/-0.5的范围内,如果两个温度不等就会调用加热/散热电路模块,即如果此温度高于用户设定温度0.5以上,则散热电路就会开启以将当前的水温降到预定的温度+/-0.5的范围内,反正则会启动加热电路以加热当前的水。同时如果用户想显示当前的水温或者预定的水温,都可以通过温度显示模块显示,而如果用户要改变当前的预定水温,可以通过设置/存储预定温度模块进行设置。2.2系统设计依据与方法介绍1.单片机控制模块:它的设计采用凌阳系列单片机的SPCE061单片机作为控制核心,来实现对温度的恒定控制。之所以选择这款单片机,是因为原来在本科阶段学习时接触过这款单片机,对它有一定的了解,SPCE061拥有普通十六位单片机所不具备的各种功能,配合它的开发工具非常简单可靠,它的开发环境(unSP IDE)非常经典易用,它还拥有高档微处理器的端口特性,功能强大,而且功耗低,性价比高,是嵌入式应用中较好选择,值得一提的是,这款芯片的IOB口的IOB1和IOB2分别可以用于SCK和SDA以支持I2C总线,在下一节将专门对I2C总线进行一些介绍。2.温度传感器采样模块:它的设计对于系统的成功与否是非常关键的,对于它的测量部分,参考温度测量方面的相关资料,提出了两个方案:方案一:采用热敏电阻,可满足4090的测量范围,但热敏电阻精度、重复性、可靠性都很差,对于检测小于1的温度信号是不适用的。方案二:采用温度传感器AD590K。AD590K具有较高的精度和重复性(其良好的非线性可以保证优于0.1的测量精度),利用其重复性较好的特点,通过非线性补偿,可以达到0.1的测量精度。对比这两个方案,第二种明显优于第一种,所以选择集成温度传感器AD590K作为温度传感器件。3. A/D转换模块:采用常用的A/D转换器MAX153对由温度传感器AD590K及温度/电压转换电路采集提供的温度信号进行A/D转换得到数字信号,然后输入到单片机,系统即可获取所要采集的温度数值。4. 温度显示模块:采用支持I2C总线的MAX7219驱动8个数码管来实现显示功能,可以显示0到100范围内的温度,显示精度可以包括小数位,其实4块数码管就已经足够使用了,但是因为MAX7219最多支持驱动8个数码管,考虑到以后功能扩充方面的问题,就选用了8块数码管。5. 设置/存储预定温度模块:此模块设计包括键盘设计部分和EEPROM设计部分,其中设置四个按键分别对应完成显示预定温度、显示当前温度、对预定温度加一、对预定温度减一功能,采用支持I2C总线的DS1307芯片作为系统的扩展EEPROM存储器,它用于存储预定的温度。6.加热/散热电路模块:此模块采用较简单的加热/散热电路,加热电路由一个电热器和一个光电隔离开关(包括一个光电二级管和一个三端双向可控硅)来组成,其中光电隔离开关来接收单片机模块的控制信号来控制电热器的开关状态,散热电路由一个电风扇和一个场效应管组成,也是由场效应管接收单片机模块的控制信号来控制电风扇的开关状态。2.3 I2C总线介绍I2C (Inter Integrated Circuit)总线是1980年由Philips公司推出的。I2C总线用两条线(SDA和SCL)在总线和装置之间传递信息,在微控制器和外部设备之间进行串行通信或在主设备和从设备之间进行双向数据传送。两条通信线通过上拉电阻被拉升至+5 V。在控制系统中的每个集成电路可以通过一个CMOS缓冲器来读每一条线路,也可以通过一个栅极开路的FET管将每一条线的电平下拉。因此,对每个芯片来说,每条线既是输入线,又是输出线。I2C总线遵从同步串行传输协议,即各位串行(一位接一位)发送,由时钟(clock)线指示读数据(data)线的时刻。每个数据包前有一个地址,以指示由哪个器件来接收该数据。I2C总线最主要的优点是其简单性和有效性,且支持多主控,它只需两线(一串行数据线SDA及一串行时钟线SCL),每个连线到总线的器件以单一不同的地址,用软件来存取。由于接口直接在组件之上,因此I2C总线占用的空间非常小,从而减少了电路板的空间和芯片管脚的数量,降低了互联成本。同时由于我们的单片机的IOB口的IOB1和IOB2分别可以用于SCK和SDA以支持I2C总线,再加上I2C总线的这一系列的优点,使得我们在扩展外围存储器和温度显示模块的芯片选型时专门选取了支持I2C总线的DS1307和 MAX7219芯片。它的数据传输过程如下图2所示,每一个放上SDA线的字节为8位长,每一次传送的字节数量没有限制,每字节必须有一确认位跟随。数据传送以最高有效位为先。在开始条件之后,一个从属地址被送出,这个地址是7位长,然后是第8位,它是一个数据方向位(读写),其中0代表发送(写入),1代表需求数据(读入),数据传送通常以主控器所发出的停止条件(P)结束。图2. I2C总线的数据传输过程3硬件系统设计介绍3.1嵌入式处理器选型设计介绍本系统采用凌阳系列单片机的SPCE061单片机作为系统的嵌入式处理器,它的CPU内核采用凌阳的unsp(Microcontroller and Signal Processor)16位微处理器芯片,它采用的是模块式集成结构,以unsp内核为中心集成不同规模的ROM、RAM和功能丰富的各种外设接口部件。它的结构示意图如下图3所示。图3. SPCE061单片机结构示意图 SPCE061A共有84个引脚,封装形式为PLCC84,它的管脚示意图如下图4所示。图4. SPCE061单片机管脚示意图它的各个管脚的功能描述如下表1所示表1. SPCE061单片机管脚功能描述3.2温度传感器采样模块设计介绍系统的温度传感器采样模块由温度传感器AD590K及温度/电压转换电路组成,利用AD590温度传感器将温度信号转换为电压信号,温度的变化会引起AD590的电阻的变化,从而引起OP07的2端口电压的变化,通过运放从6端口输出电压V0给A/D转换模块.电路原理图如下图5所示:图5. 温度采集电路3.3 A/D转换模块设计介绍图6. A/D转换电路从上图6可知,从温度传感器采样模块标记采集温度值的电压V0输入到A/D转换器MAX153的VIN端,单片机控制模块通过给出MAX153的RD、WR、MAX153_CS控制信号来控制它的工作,同时从MAX153的D0-D7获取转换出来的标记实时温度值的数值。3.4温度显示模块设计介绍 本模块采用MAX7219驱动8个数码管来实现显示功能,LD端接收单片机的控制信号以实现显示功能,由于它支持I2C总线,直接通过与后面会讲到的系统的扩充存储器EEPROM、单片机的IOB口的IOB1和IOB2端相连来实现对 (预定及当前实际)温度数据的获取,可以显示0到100范围内的温度,显示精度可以包括小数位。其具体电路图如下图7所示。图7. 温度显示电路3.5外扩存储器设计介绍选用支持I2C的DS1307芯片作为系统的扩展EEPROM存储器,它用于存储预定的温度,它的SCL、SDA端要与MAX7219的SCL、SDA端相连,并同时连上单片机的IOB口的IOB1和IOB2端,以将用户设定的预定温度存储起来,还可以提供给显示模块进行显示,其设计电路如下图8所示。图8. 外扩存储器电路3.6加热器/散热器设计介绍本系统采用较简单的加热/散热电路,加热电路如下图9所示,主要由电热器完成对水的加热,散热电路如下图10所示,主要由电风扇完成对水的散热。同时对电热器和电风扇的控制就会涉及到两个问题:对弱电和强电的隔离。对强电的隔离我们采用图9所示电路,其中OPTOTRIAC是具有双向晶闸管输出的光电隔离器,TRIAC是功率双向可控硅。OPTOTRIAC内部不仅有发光二极管,而且还有过零检测电路和一个小功率双向可控硅。当单片机的IOA0输出为高电平时,发光二极管发光,由于过零检测电路的同步作用,内部的双向可控硅在过零后马上导通,从而使功率双向可控硅TRIAC导通,电热器开始加热。当单片机的IOA0输出为低电平时,发光二极管不发光,内部双向可控硅不导通,所以TRIAC截止,电路中没有电流流过。而对弱电的隔离我们采用图10所示的电路,我们采用场效应管接收单片机的控制信号来控制电风扇的开关状态,且可实现弱电的隔离作用。图9. 加热器电路图10. 散热器电路3.7稳压电源设计介绍 稳压电源有很多种,一般的要求不高的,可以采用稳压二级管,较高的就采用集成三端稳压电路,但是对于像这种温度传感等对电压变化很敏感的电路来讲,以上的稳压源就达不到要求了,所以我们采用基准电压源,该电路是精度比较高的电压源,系统供电电路如下图11所示:图11. 稳压电源电路3.8键盘设计介绍图12. 键盘电路键盘电路如上图12所示,此系统的键盘采用四个键,一个显示预定温度,一个显示当前温度,另两个作为预定温度增减的控制键,这样键盘可以实现实际温度和预定温度的切换和预定温度的设定,使得该系统使用起来很方便很灵活。4硬件系统电路原理图介绍在本系统的硬件系统设计部分已经对本系统绝大多数的模块电路图进行了详细的介绍,整个系统的电路图使用Protel99绘制,取名为tiger.sch文件,放在上交的电子版的设计内容的附录之中。(另外在上交的答题本的最后一页有一份打印的整体图)5软件系统设计介绍5.1系统软件总流程图介绍根据系统的工作原理,对本系统的软件总流程要进行比较严格的设计,其流程图如下图13所示。比较温度值与预定值开始初始化A/D温度采集数码管显示温度高等低关电扇关电热器关电扇开电热器开电扇关电热器扫描键盘按键情况加(减)1键按下调整预定温度值显示当前温度键按下显示预定温度键按下图13. 系统软件总流程图5.2系统软件实现介绍由于本系统采用凌阳系列单片机的SPCE061单片机作为控制核心来实现对温度的恒定控制。因为原来在本科阶段学习时接触过这款单片机,对它有一定的了解,配合它的开发工具非常简单可靠,它的开发环境(unSP IDE)非常经典易用,但是要想将这个系统完整的调试成功,还是很要下一些苦功夫的!它的软件编程采用C语言实现系统主要的工作流程,另外还要带一些汇编方面的程序以实现某些芯片底层驱动及I2C协议,所以本系统的软件实现的数据结构和软件算法相对非常简单,在此就不加以详细讲述了,下面将主要对本系统的软件实现全过程加以较详细的讲解。首先安装unSP IDE开发环境,它的界面比较类似于微软的Visual Studio开发环境,操作方式也比较的类似。在里面新建一个SP IDE Project,它就会自动的为我们创建一个Source File文件夹和一个Header File文件夹,为了实现我们的系统功能,首先我们创建一个I2C.asm(注:参考过网上的一些资料写出来的),它主要的功能是完成对I2C协议的支持;然后我们创建一个MAX7219.asm文件,它主要的功能是完成对MAX7219、单片机IOA/B口等芯片底层驱动的实现;然后我们创建一个Main.c文件,它功能是完成我们的主要系统流程。下面列出Main.c文件中的main()函数,它的执行流程基本上就是按照上面图示13的软件总流程图来实现的。main()float tmp_measure,tmp_setting;/初始化相应器件Init_IOA(0xFFFF,0xFFFF,0xFFFF);Init_IOB(0xFFFF,0xFFFF,0xFFFF);Init_7219();status = show_measure_tmp;/初始化设定温度为50if(readTmp() 100) writeTmp(50); while(1)delay();/通过A/D转换器采集当前的实际温度值tmp_measure = GetADC()*(maxtmp-mintmp)/256;tmp_setting = readTmp();/判断实测的温度值是否在预定的温度范围内(+-0.5)/根据判断的结果控制加热器和电风扇的开关if(tmp_measure tmp_setting+0.5)themOFF();fanON();elsefanOFF();themOFF(); /扫描键盘按键情况switch(keyScan()case 1: status = show_measure_tmp; break;case 2:status = show_setting_tmp; break;case 3:tmp_setting = readTmp();tmp_setting +;writeTmp(tmp_setting); break;case 4:tmp_setting = readTmp();tmp_setting -;writeTmp(tmp_setting); break; /判断显示系统当前的温度或者是用户预定的温度if(status = show_measure_tmp)ShowResult(tmp_measure);elseShowResult(tmp_setting);其中的初始化函数包括Init_IOA,Init_IOB, Init_7219(),前面两个函数的引用来自MAX7219.asm文件,而后者的实现如下,其中的Send_7219函数也来之MAX7219.asm文件。void Init_7219() /max7219初始化Send_7219(0x0C01);Send_7219(0x0F00);Send_7219(0x09FF);Send_7219(0x0A02);Send_7219(0x0B07);Main()函数中引用的其他函数包括系统延迟函数delay(),显示温度函数ShowResult(float Count),读测量温度函数GetADC(),写设定的温度writeTmp(float tmp),读设定的温度函数readTmp(),扫描键盘函数keyScan(),开加热器函数themON(),关加热器函数themOFF(),开风扇函数fanON(),关风扇函数fanOFF(),它们均在Main.c文件中实现了,具体代码请查看上交的电子版的设计内容的附录。6系统实现与体会虽然老师没有要求我们将软件编程完全实现出来,但是由于上次课堂讨论的时候大家做出来的东西都只是在理论上进行了设计,而离实际的实现还是有很大的差距的,所以我特别想在本次的课程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年2月养老护理员初级模考试题+答案
- 2025年全国叉车操作A证考试题库(含答案)
- 蒲江保洁服务知识培训班课件
- 蒲城县医院急救知识培训课件
- 葡萄酒知识培训课程课件
- 常用日语考试招生简章及答案
- 常德社工考试真题试卷及答案
- 叉车培训理论考试题库及答案
- 线性运算题目及答案
- 2025年餐厅食品供应商合同标准版模板
- 学校安全隐患自查报告及整改措施
- 酒店客房验收工程项目检查表
- 个人健康个性化营养搭配与服务提供系统建设
- 加强教学常规管理提高教学质量
- 房地产估价四假设开发法的应用案例
- 产品包装设计与印刷流程手册
- 随机动态规划与强化学习-洞察分析
- 肾占位性变病
- 大型运输车辆交通安全教育
- 《国有资产管理》课件
- 沐足行业严禁黄赌毒承诺书
评论
0/150
提交评论