网站开发周期是什么意思,西安哪个公司做网站,工业互联网龙头公司排名,qq云wordpress基于单片机的温度控制系统设计
摘要: 最近这些年#xff0c;随着科学技术的不断发展和进步#xff0c;单片机技术通过在各行各业中的应用也日臻完善。而温度测控系统也因单片机所特有的强大处理能力、功耗低以及体积小等优点向着小型化和智能化发展。本设计以STC89C52单片机…基于单片机的温度控制系统设计
摘要: 最近这些年随着科学技术的不断发展和进步单片机技术通过在各行各业中的应用也日臻完善。而温度测控系统也因单片机所特有的强大处理能力、功耗低以及体积小等优点向着小型化和智能化发展。本设计以STC89C52单片机为主控制芯片外接温度传感器DS18B20以及外接加热制冷元件组成温度控制系统。通过该系统人们可以加深对温度控制理论的理解和研究。 本文对比了几种当前比较经常使用的温度控制系统的各自特点决定通过程序设定温度上下限值选择AT240C2芯片保存设置的温度值。并且详细讨论了该温度控制系统的硬件构成软件的设计以及各串口电路设计。其中硬件部分包括电源模块、温度采集模块、串行通信模块、测试模块以及外设控制模块除外设控制模块外其余各模块均进行了原理图设计软件部分主要针对各模块通信协议进行了程序编写。为了充分保证系统的稳定性同时也采取了相应措施。配备了一组继电器来控制执行单元使温度能在一定范围。该系统具有良好的稳定性可行性和鲁棒性可以进行使用和推广。 关键词: 单片机 温度控制系统 DS18B20
Design of Temperature Control System Based on Microcontroller AbstractWith the continuous development and progress of science and technology nearly, SCM technology through all walks of life in the application is also improving. The temperature measurement and control system is also a small and intelligent development because of its unique powerful processing ability, low power consumption and small size. The design of STC89C52 microcontroller based control chip, an external temperature sensor DS18B20 temperature measurement system. Through this system, people can deepen the understanding and research of temperature control theory. In this paper, the characteristics of several current temperature control systems are compared, and the digital PID temperature controller is considered. And discussed the temperature control system’s hardware constitution, the software design and each serial port circuit design in detail. The hardware includes the power supply module, temperature acquisition module, serial communication module, test module and peripheral control module, control module and other peripherals in each module are principle diagram design and PCB production; in the part of software modules of communication protocol and control algorithm for the program. In order to ensure the stability of the system, corresponding measures have been taken. A set of relays is provided to control the execution unit so that the temperature is within a certain range. The system has good stability, feasibility and robustness, and can be used and popularized. Key wordsmicrocontroller temperature control system DS18B20
目录
第1章 绪论 1 1.1 本课题研究的背景与意义 1 1.2 温度控制系统的发展与现状 1 1.2.1 国内发展状况 1 1.2.2 国外发展状况 2 1.3 系统总体设计方案 2 1.3.1 系统性能及特点 2 1.3.2 系统总体架构 3 1.3.3 主要器件的选用 4 1.4 本文主要工作 4 第2章 温度控制系统硬件设计 5 2.1 主控芯片STC89C52简介 5 2.1.1 STC89C52芯片特性 5 2.1.2 时钟模块 5 2.1.3 Digital I/O模块 6 2.1.4 USART模块 6 2.1.5 JTAG模块 7 2.2 系统硬件总体结构 8 2.3 温度数据采集电路设计 8 2.3.1 DS18B20芯片简介 8 2.3.2 温度数据采集电路原理图设计 10 2.3.3 温度数据采集模块PCB设计 10 2.4 串行通信接口电路设计 11 2.4.1 TUSB3410芯片简介 11 2.4.2 串行通信接口电路原理图设计 11 2.4.3 串行通信接口PCB设计 12 2.5 JTAG接口电路设计 12 2.6 外设控制电路设计 13 第3章 温度控制系统软件设计 15 3.1 系统软件总体结构 15 3.2 主程序模块设计 16 3.3 温度数据采集模块设计 17 3.4 串行通信模块设计 20 3.5 控制模块设计 21 第4章 用户操作界面设计 23 4.1 可视化编程工具VB简介 23 4.2 数据接收显示模块设计 23 4.3 控制信息输入模块设计 24 4.4 温度告警模块设计 26 4.5 安装文件制作 27 4.6 使用说明 27 第5章 系统调试 30 5.1 IAR Systems开发环境 30 5.1.1 创建项目 30 5.1.2 导入源程序 30 5.1.3 仿真参数设置 31 5.1.4 下载源程序 31 5.2 调试结果及数据分析 33 结论 37 致谢 38 参考文献 39
第1章 绪论
1.1本课题研究的背景与意义 温度作为一个极为重要的物理常量其反映了物体的冷热程度人们的生产和生活很多情况也会受到温度的影响。温度的测量和控制技术已经广泛应用到了各个领域工农业的生产和其他科研项目很多都需要对温度进行有效的监控。 温度控制系统前提是温度的采集测量根据测量时是否接触被测物体可以分为非接触式和接触式测量法两类。其中非接触式测量就是不和被测物体接触它的特点是测温上限比较高但是误差较大接触式测量与之相反就是接触被测物其特点是直观可靠然而产生的误差不可控。在实际的测量控制中首先需要解决的问题就是怎样快速实时的对温度采样与此同时还要保证数据传输的正确并能对所测温度对象进行较为精确的控制。鉴于当前温度测控系统正朝着智能化发展,嵌入式的温控系统也会越来越重要。 本文将微控制器与温度控制系统相结合,设计一个可用于测量温度并进行温度调节的温度控制系统。可用于室温检测控制、水温控制调节、空调的恒温控制等小型系统的环境温度测控。该系统具有低功耗、转换速度快、操作便捷、效果显著的特点。同时具有良好的稳定性和鲁棒性并且软件部分兼容性较强。 1.2温度控制系统的发展与现状 1.2.1国内发展状况 温度控制系统在我国起步较晚20世纪80年代科学家才开始涉及这一方面研究所以总体来说我们国家在温控方面是落后于西方发达国家的。尤其是在温度控制器方面我国很多主流产品主要以点位控制为主但是这种方式有一定弊端那就是难以对时变和滞后的温度系统加以控制。与此同时我国的温度测控现状远远没有达到工厂化的程度具体体现在没有可靠的自正定软件。并且我国温控系统的装备配套能力也不强致使很多控制参数需要人工现场根据人工经验调试。可喜的是国家也在大力开发创新总体技术也在从简单应用向实用化过度。 1.2.2国外发展状况 国外对温控技术研究较早大概始于20世纪70年代。首先出现的是模拟的组合仪表进行数据信息的记录和控制后来在80年代左右出现了分布式的控制系统而现在绝大多数发达国家已经在自动化的基础上向着无人化发展并且在参数自整定方面也取得很大成果。在温控系统中处于重要低位的温度传感器方面从赛贝发明热电偶传感器到后来西门子发明的铂电阻以及半导体热电偶传感器再到现在的智能温度传感器显然可以发现国外在温度传感器方面也是远远超过中国。目前国外的温控系统具备以下特点一、适用于复杂的温度控制系统的控制二、普遍采用模糊控制适用范围广三、具备参数自整定功能四、控制精度高同时有很强的抗干扰能力以及良好的鲁棒性。 1.3系统总体设计方案 1.3.1系统性能及特点 本文中讨论的是温度测量控制系统的设计与制作。温度测量的速度和精度、系统控制的实时性和准确性、操作部分的功能设置和难易程度以及整个系统工作时的稳定性和功耗是本设计需要权衡的几个重要方面。本次设计的温控系统的性能及特点可以概括为以下几点 (1)能够实现对被测对象实时温度的测量约每秒更新一次并且通过PC端的操作界面显示出当前温度值。 (2)操作人员可以方便、简单地通过PC端操作界面设定控制期望的温度值并可限制在一定的变化范围内。系统能够自动根据设置通过加热或者通风来调节被控对象的温度。 (3)能够实时监测被控对象温度是否正常。如果系统监测到被控对象的温度超过限定值则PC端操作界面将产生报警并且提示温度过高还是温度过低。 (4)上位机和下位机通过USB接口通信易于接口扩展可用于笔记本。 (5)系统功耗低可靠性高不容易出故障。 (6)控制软件安装方便并且对运行环境要求低。
1.3.2系统总体架构 根据系统设计的特点和要求系统的总体框图如图1-1所示。
图1-1系统总体框架图 系统主要分为以下几个模块 主控制芯片模块该模块是温度测量控制系统的核心部分它的主要任务包括存储和处理采集到的温度数据、控制通讯端口的数据传输、调节外设的运行状态和功能扩展等。 温度采集模块该模块是温度测量的重要组成部分其测量范围、测量精度和转换时间是衡量系统测量性能优劣的重要指标它的主要任务是采集温度值并将采集到的温度模拟量经A/D转换成数字量后输出。 通讯接口模块该系统的通讯接口包括串行通信接口、JTAG测试接口和普通I/O口三个部分。串行通信接口用于主控制芯片与主机PC的数据传输。测试接口用于程序设计过程中对系统进行调试和验证。普通I/O口则主要用于主控制芯片启停温度传感器、读入温度数字量以及输出对加热器、散热器或其他扩展外设的控制信息。 外部模拟电路主控制芯片通过I/O口输出对外围设备的控制信息。该模块主要任务是将主控制芯片输出的这些数字信号转换成相应的模拟信号输出实现对外围设备的控制功能。 人机交互模块该模块的主要任务是将温控系统的所有功能融合到主机PC的可视化界面上来方便用户通过计算机进行操作和控制。
1.3.3主要器件的选用 主控芯片选用STC89C52因为其内部资源相当丰富同时体积小、功耗低但是却具备很强大的性能可以在主控模块轻松进行扩展实现其他功能。温度传感器选用达拉斯公司生产的单总线数字式温度传感器DS18B20此传感器可以把温度信号直接转换为9~12位数字量并且温度转换时间控制在1秒。外部需要的加热和制冷装置通过固态继电器执行通断开关。 1.4本文主要工作 本论文主要以低功耗单片机STC89C52和单线数字式温度传感器DS18B20为研究对象对温度控制系统进行探索和设计。主要考虑到便于操作和控制结果直观采用人机操作界面。同时注意实用性和成本因素。具体如下 (1)查阅国内外温度控制的研究成果了解温度控制的发展现状和前景。 (2)均衡现有器件资源和需实现的功能要求制定通用温度控制系统的总体设计方案。 (3)完成系统的硬件设计和制作细节如下 (a)单片机温度采样电路。 (b)USB转UART接口电路。 ©外设控制电路器件为风扇和加热管。 (4)完成系统的软件设计和制作具体如下 (a)主程序及初始化模块。 (b)采集DS18B20温度数据模块。 ©单片机UART发送与接收数据模块。 (d)控制运算模块。 (5)进行系统的整体仿真与调试验证系统运行时的准确性和稳定性。
第2章 温度控制系统硬件设计
2.1主控芯片STC89C52简介 2.1.1 STC89C52芯片特性 STC89C52是宏晶公司推出的内部资源丰富的低功耗8位微控制器结合了传统的51单片机优点因为它具有8位CPU所以可以给嵌入式系统提供各种灵活有效的解决措施。STC89C52各引脚如图2-1所示芯片特性如下 1工作电压可选5.5V3.3V或3.8V2.0V 2可选择节电模式 34个外部中断 43个16位定时器/计数器 5工作频率040MHz 6片上集成512字节的RAM 7通用异步串行口UART还可用定时器如软件实现多个UART 8工作温度在-4085℃
图2-1STC89C52引脚图 本设计中涉及到的内部资源主要包括基础时钟模块、串行通讯接口UARTP2.4、P2.5、I/OP2口和JTAG测试模块。 2.1.2 时钟模块 STC89C52单片机由于输出频率不同可以产生三种时钟分别是主系统时钟子系统时钟和辅助时钟。因为系统整体功耗和系统频率成正比因此不同的时钟模块因为其不同的频率从而不断变换降低了系统功耗。 2.1.3 I/O模块 STC89C52有32位I/O口均可单独编程。本设计中使用P2口其中P2.0和P2.1分别用来控制加热器和散热器、P2.3用来采集温度数据、P2.4和P2.5用来和上位机串行通讯。 2.1.4USART模块 STC89C52的串行通信由硬件直接实现用户只需设置相关寄存器即可实现串行通信的功能。图2-2是USART模块的硬件框图。
图2-2 USART模块硬件框图 此模块可以分为四个部分分别是波特率部分和接收部分以及发送部分、接口部分。发送和接收两个寄存器的移位时钟均由波特率发生器产生。USART有接收和发送两个独立的中断源使用两个独立的中断向量用于接收和发送中断事件。本设计中选择异步串行通信方式。 2.1.5JTAG模块 JTAG即联合数据工作组是一种国际标准测试协议在芯片的内部测试时广泛使用。图2-3为标准JTAG硬件框图。一般来说它都有4线。
图2-3 JTAG模块硬件框图 2.2系统硬件总体结构 本设计中温度控制系统的硬件部分主要由供电单元模块、温度采集模块、串行通信模块、外接执行单元模块和JTAG测试接口构成。 系统采用5V的USB供电模式通过转换芯片输出3.3V供电电压。该温度控制系统以单片机为核心控制器。外部温度则由温度传感器DS18B20测得并将采集到的温度以模拟量转换成数字量温度传感器采用“单线总线式”结构接入单片机单片机通过普通I/O口P2.3读取温度值并进行相应处理。主机PC经TUSB3410虚拟的一个COM口与单片机的USART模块进行串行通信从而向主机发送温度数据。单片机根据最新接收到的用户控制信息和当前温度测量值进行比较根据单片机内预先写入的控制算法得出对外围设备的具体控制方式。这些控制信息通过单片机的I/O口P2.0和P2.1输出对加热器和散热器进行控制。 2.3 温度数据采集电路设计 2.3.1 DS18B20简介 DS18B20是美国的达拉斯公司改进后的新产品它是单总线数字式的温度传感器它的数据采集转换只要1s钟但是却可以反映9~12位的数字量功能十分强大但是原理相当简单同时精度还很高对于温控系统其非易失性的特点十分符合要求。对于DS18B20一般有寄生供电和独立供电两种供电方式。 根据上述特性DS18B20可以广泛使用。 表2-1中列出了引脚的排列和说明。DS28B20与外界通信仅通过DQ这一个单线接口。 表2-1 DS18B20引脚说明 引脚号 符号 说明 1 GND 接地 2 DQ 单线数据输入输出引脚寄生电源模式下的供电端 3 VDD 可选VDD引脚外接电源时必须接地 图2-4所示为DS18B20内部结构图有很多部件构成其中核心的是64位ROM以及温度传感器和警告装置其中存储器由一个高速暂存存储器RAM和一个电可擦除EEPROM组成。
图2-4 DS18B20内部结构图 2.3.2 温度数据采集电路原理图设计 本设计中温控系统的下位机均通过USB的5V电源供电。单片机的标准电压为3.3V故需通过电源转换芯片SP6201将5V电源转换成3.3V电源。SP6201的典型接法如图2-5所示图中输入端IN输入5V电压输出VCC为3.3V。
图2-5 电源部分 5V转3.3V DS18B20采用外接5V电源供电方式可直接接入USB接口线的5V端。VCC引脚通过电容接地进行滤波保证输入电压的稳定。DS18B20数据手册中规定数据线DQ在空闲时为高电平状态故在VCC和DQ间加上4.7K的上拉电阻。整个原理图见图2-6。
图2-6电路原理图
2.3.3 温度数据采集模块PCB设计 PCB的设计流程分为网表输入、规则设置、元器件布局、布线、检查、复查、输出六个步骤。 本设计中首先根据电路的规模和设计要求确定所需制作电路板的物理外形尺寸和电气边界即切换当前的工作层面为Keep Outlayer绘制出电路图边界。规划好电路板后在原理图编辑器中执行Design菜单命令Update PCB装入网络表和元件系统自动将上节中所示原理图设计的数据装入印制电路板的设计系统PCB。Protel提供了元件自动布局工具本设计中采用手工布局元件布局时通常需要考虑到以下几个问题 (1)元件布局应便于用户的操作使用。 (2)尽量按照电路的功能布局。 (3)数字电路部分和模拟电路部分尽可能分开。 (4)特殊元件的布局要根据不同元件的特点进行合理布局。 (5)应留出电路板的安装孔和支架孔以及其他有特殊功能安装要求的元件的安装位置等。 按照上述注意事项将元器件布局完成后根据设计要求设定自动布线的参数采用系统自动布线功能完成布线工作。系统自动布线往往不太合理需要手工进行调整如调整连接线的走向、加宽电源线等。布线完成后可对电路板进行表面覆铜避免干扰。具体pcb版图如图2-7所示。
图2-7 pcb版图 2.4串行通信接口电路设计 2.4.1TUSB3410芯片简介 TUSB3410是一款独特的桥接器它可以通过电源直接供电或者连接USB供电。其传输速率相当之高功能齐全。桥接器模型如图2-8所示。
图2-8 USB-TO-UART模型 2.4.2串行通信接口电路原理图设计 由图2-8 USB-TO-UART模型所示主机PC的数据流通过USB数据线输入TUSB3410后由SOUT输出给单片机单片机的数据流通过SIN输入TUSB3410后由USB数据线输出给主机PC。USB转UART接口硬件原理图如图2-9所示。
图2-79USB转RS-232接口硬件原理图
2.5JTAG接口电路设计 JTAG即联合数据工作组是一种国际标准测试协议在芯片的内部测试时广泛使用。一般标准的情况下是4线。各线的具体作用如下TCK是提供时钟信号来驱动其他的执行单元工作TMS是提供转换工作TDI是数据输入接口输入各种所需要的数据TDO是数据输出线。主要输出所需数据。 TRST可以用来对TAP Controller进行复位初始化。 本设计中采用的JTAG仿真器一端为计算机标准并口连接另一端为双列直插式插针。图2-8所示为JTAG仿真器和单片机JTAG模块引脚的连线图。
图2-8 JTAG接口 2.6 外设控制电路设计 由于器件资源的限制本设计采用了古老的定值开关控温法通过软件判断加热还是通风。具体方法是将I/O口输出的控制信号通过运算放大器放大后驱动继电器来控制电源的通断从而选择加热器和散热器的工作状态。这种方法虽然简单但是忽略了温度可能存在的延时滞后问题致使被控对象温度波动较大控制精度低不适合于高精度的温度控制。不过在环境温度控制中仍可使用。本设计可作出相应的改进将原来的控制信号只有启动和关闭两种信号增加输出温度偏差量通过反馈环节实现恒温保持。
第3章 温度控制系统软件设计
3.1系统软件总体构造 在温控系统中软件也起了很大作用其很大程度上决定了一个系统的性能。温控系统的主要功能都需要软件来实现。本设计采用模块化方法把整个系统所要实现的功能分割成若干子模块子模块内又可分解为若干任务这样逐层细分有利于程序的调试便于理解和维护。另外需要注意的是系统的实时性、稳定性等指标这是衡量系统的优劣的关键。因此在设计过程中对数据采集和控制算法做了相应处理。本设计中应用程序循环程序循环中通过调用子函数实现相应的功能。通过中断服务子程序处理异步事件。图3-1所示为软件总体结构。
图3-1 系统软件总体结构图 由图3-1可以看出围绕主控制芯片单片机的系统软件主要包括以下五个模块主程序模块、温度采集模块、串行接口传输模块、执行控制单元模块、测试模块。各模块分工独立、功能明确采用软件接口进行连接遵循模块内部数据联系紧凑、模块之间数据联系松散的原则。主程序模块主要列出了应用程序的整体框架和对单片机进行硬件初始化。温度数据采集模块主要将温度传感器测得的温度数字量采集并存储到单片机存储器中。串行通讯模块主要实现单片机和主机用户操作界面的数据传输单片机向主机发送温度数据主机向单片机发送控制命令。控制模块主要通过控制算法实现单片机I/O口对外设的控制。在本章下面几节中将对各模块进行具体分析和说明。 3.2主程序模块设计 主程序模块的主要功能是对上电后的单片机和外设进行初始化并构建应用程序执行的顺序、框架。主程序模块流程图如图3-2所示。
图3-2 主程序模块流程图 其中初始化包括单片机硬件初始化、温度传感器初始化和串行通信口初始化三部分。应用程序的主要功能是首先检测温度传感器若总线上存在温度传感器则转入执行数据温度采集模块然后转入串行通信模块发送采集到的温度数据最后单片机通过控制算法对外设做出相应控制。 看门狗定时器的主要功能是当程序发生故障时如软件陷阱或死循环能使受控系统重新启动。本设计中主程序运行时一直处于无限循环状态故将其关闭。在所有的电子系统中时钟的性能和稳定性决定着正个系统的性能本设计选择了XT2高速晶体振荡器作为系统主时钟。单片机执行指令通过系统时钟驱动所以初始化时需要先打开XT2待其工作稳定后再进行其他设置。 3.3温度数据采集模块设计 由于DS18B20特殊的通讯协议因此完成温度转换必须经过三个步骤 1初始化程序。包括接收和发出两部分具体如图3-3。 2发送ROM指令。总线主机接收到存在脉冲表示复位成功然后发送一条ROM指令选择指定的温度传感器每个温度传感器都由一个唯一的64位ROM标识。 3发送功能指令。这些指令允许总线主机读写DS18B20内部暂存寄存器。本设计中通过写入ConvertTemperature[44H]命令启动温度转换1秒后温度转换时间约为1秒通过写入读暂存寄存器命令读取寄存器内的数据。
图3-3 初始化时序
图3-4 读/写时序 总线主机通过时间片来读出和写入DS18B20的数据如图3-4。
图3-5温度数据采集模块流程图
图3-6 写字节、读字节流程图 图3-5所示为温度数据采集模块流程图图3-6为写字节、读字节流程图。 3.4串行通信模块设计 在前面介绍USART模块时已经提出STC89C52的串行通信由硬件直接实现用户只需设置相关寄存器即可实现串行通信的功能。本设计中选用USART模块的UART模式通过UART实现单片机与主机PC的连接。图3-7所示为UART模式下USART模块的相关寄存器。
图3-7 USART模块寄存器UART模式 本设计中UART硬件初始化主要包括以下几个步骤首先通过控制寄存器UCTL选择SWRST使能软件复位并设置消息帧格式为数据长度8位、偶校验然后确定波特率通过发送控制寄存器UTCTL选择发送时钟源为ACLK通过波特率控制寄存器UBR00、UBRO1和调制寄存器UMCTL确定波特率为9600bit/s接着后设置中断寄存器ME1、IE1、IFG1使能TXD和RXD并清除中断标志最后开总中断允许进入串行数据接收和发送中断服务子程序。在接收数据前还需先清空接收缓存器。当待发送的数据送入UART的发送缓存UTXBUF时启动发送本设计中直接通过主程序将待发送数据写入发送缓存中当UART的接收缓存URXBUF接收到数据时启动接收通过中断服务子程序将接收缓存中的数据存入指定寄存器内。图3-8所示为UART初始化流程图。发送和接收部分详见附录A源程序代码。
图3-8 UART初始化流程图 3.5控制模块设计 该模块的已知条件是当前温度测量值和温度允许的变化范围经控制算法处理得出加热或是通风的处理办法。 该设计采用的是定值开关控温通过继电器控制执行单元的开关温度低于下限温度启动加热装置温度高于上限温度启动通风降温设备。若温度出现在临界点时将出现电源不断开启和关闭的现象容易造成器件的损坏。为避免出现这一现象本设计中加入了模糊算法的思想算法设计流程如图3-9所示。
图3-9 控制算法流程图
第4章 用户操作界面设计
4.1可视化编程工具VB简介 Visual Basic简称VB它是一种可以在Windows环境下开发的高级程序设计语言。因为它提供的组件可以快速建立一个应用程序所以简单易学并且提高效率同时VB的功能依然强大。本设计中用户操作界面主要实现PC端实时读取单片机的温度数据和向单片机写入控制信息等功能。VB自带的串行通讯控件MSComm可方便快捷地实现PC端和单片机的串行通信。现在使用的VB版本分为普及版、专业版和企业版三种每一种版本都有对应的族群。由于串行通讯的组建包含在专业版和企业版中本设计中安装了VB6.0企业版。 4.2数据接收显示模块设计 MSComm控件发送和接收数据需要通过串口进行为此提供两种处理通讯的方法一是查询方式二是事件驱动。本设计中需要实时监测温度数据所以采用事件驱动方式其数据接收部分如下: Select Case MSComm1.CommEvent Case comEvReceive 有数据发出 RXD_Buffer MSComm1.Input 接收数据 End Select 使用串口前必须对串口进行初始化设置即端口的属性设置。本设计中仅涉及到部分常用属性设置。具体如下 (1)选择通讯端口号USB接口经usb转RS-232驱动后虚拟成Com3.CommPort3。 (2)设置传输速度等参数。Settings“9600,E,8,1”。 (3)数据传输的类型选择。采用字节传输.InputMode0。 (4)设置每次从接收缓冲区读取字节数。单片机每次发送4个字节.RThreshold4。 (5)开启通讯端口.PortOpenTrue。 (6)每接收完一次数据需清空输入寄存器.InBufferCount0。 (7)使用完MSComm通讯对象后关闭通讯端口.PortOpenFalse。 TextBox控件是程序同用户进行交互的常用方式用来在程序中提供文本框可显示和输入字符串。单片机发出的数据是十六进制表示的温度数值而文本框中显示的是ASCII码对应的字符若要在文本框中十进制形式显示接收到的十六进制数值必须做相应处理。处理如下 For i 1 To Len(RXD_Buffer) Text1.Text Text1.Text Val(“H” Hex(Asc(Mid(RXD_Buffer, i, 1))) “”) Next Text1.Text Text1.Text vbCrLf 调整格式 4.3控制信息输入模块设计 用户通过此模块可完成对温控系统的全部控制可操作项包括打开和关闭实时温度监测、退出系统、设置温度的上下限值。 CommandButton按钮控件用来启动、中断或结束一个进程。开启端口MSComm1.PortOpenTrue。关闭端口MSComm1.PortOpenFalse。由于每次鼠标单击都将产生Click事件关闭或打开通讯端口需采用消息对话框提示当前串口状态。程序如下 Private Sub Command1_Click() On Error Resume Next If MSComm1.PortOpen False Then MSComm1.PortOpen True 打开端口 Else MSComm1.PortOpen False 关闭端口 MsgBox “串口已关闭” End If If Err Then 发生错误事件时将提示警告信息 MsgBox “串口打开失败” End If End Sub 温度传感器的测量范围为55℃125℃用ComboBox组合框向用户提供选择的列表可避免用户自行输入文本信息时格式和范围上的错误。选择项目数过多时在属性窗口中手动添加较为麻烦可在窗体函数中给ComboBox添加选项。实现语句如下 For i -55 To 125 Step 1 Combo1.AddItem i Next 当用户选择列表项时即产生Combo_click事件进程自动将选择的温度上下限值存入事先定义的TL和TH寄存器待用如TL Val(Combo1.Text)。Val是VB自带的将数字字符串转换为数值的数学函数可将Combo1.text的字符转换为带符号的温度数值。 温度上下限设置完以后可点击输入设置值按钮将设置的温度上下限值送入单片机单片机经处理后可对外设进行控制。前面MSComm控件设置的是以字节方式进行数据传输在VB中字节类型的范围是0255若要发送有符号数必须做相应处理可将有符号数分成两个字节发送前一字节存放符号后一自己存放绝对值。处理和发送程序如下 Private Sub Command2_Click() Dim TXD_Buffer(3) As Byte If Val(Combo1.Text) 0 Then TXD_Buffer(0) 1 TXD_Buffer(1) Abs(Val(Combo1.Text)) Else TXD_Buffer(0) 0 TXD_Buffer(1) Val(Combo1.Text) End If If Val(Combo2.Text) 0 Then TXD_Buffer(2) 1 TXD_Buffer(3) Abs(Val(Combo2.Text)) Else TXD_Buffer(2) 0 TXD_Buffer(3) Val(Combo2.Text) End If On Error Resume Next MSComm1.Output TXD_Buffer 发送数据 Do DoEvents Loop Until MSComm1.OutBufferCount 0 等待直到数据发送完毕 MSComm1.OutBufferCount 0 等待数据发送完毕 End Sub 4.4温度告警模块设计 此模块主要对温度测量值和预先设定值进行比较以指示灯的方式直观地体现温度状态。如温度超出范围将产生橙色和红色告警。 单片机每次发出的4个字节表示的温度数值温度比较只精确到1℃因此需提取第一个字节和最后一个字节。处理如下 temp AscB(RXD_Buffer) 温度值的整数部分 Text3.Text RightB(RXD_Buffer, 2) 温度值的符号 预先设定的温度上下限存放在TL和TH中均为有符号数若要直接进行比较需将提取的两个字节温度值转换为单字节有符号数。处理如下 temps Asc(Text3.Text) 温度值的符号43为“”45为“” If temps 45 Then 将温度的绝对值temp转换为有符号数 temp 0 - temp End If 指示灯部分将三张图片叠加同时每次只显示一张图片处理如下 If temp TH Then 温度大于上限值红灯亮 Image4.Visible False Image3.Visible False Image2.Visible True ElseIf temp TL Then 温度小于下限值黄灯亮 Image4.Visible False Image2.Visible False Image3.Visible True Else 温度正常绿灯亮 Image3.Visible False Image2.Visible False Image4.Visible True End If 4.5安装文件制作 VB6.0中自带了packagedeployment向导运行打包向导后按照提示可轻松制作安装程序。但是由于VB自带的打包工具生成的安装程序很不稳定,经常出现问题通常使用其他打包工具。本设计中选用Setup Factory 7.0制作安装文件。 运行Setup Factory 7.0选择创建新工程后工程向导会提示加载工程文件。选择要制作的VB工程文件系统会自动收集你所使用的所有控件包括DLL、OCX文件以及Windows系统文件、VB运行库等。跟系统无关的附加文件需要手工添加比如MP3、BMP、TXT、INI等文件。 为避免自动添加文件不完整本设计采用了VB自带打包向导和Setup Factory 7.0相结合的方法具体操作如下 (1)运行packagedeployment向导选择工程添加此工程的执行文件选择打包方式为标准安装包、压缩文件类型为单个压缩文件向导会自动完成打包。打包完之后会生成三个文件和一个文件夹。 (2)运行Setup Factory 7.0退出工程向导选择添加文件添加Support压缩包中的全部文件设置屏幕外观属性后再通过发布向导构建安装文件。 制作完成的安装程序安装方便、自带卸载程序、对运行环境要求较低可在没有安装Visual Basic的环境下运行。 4.6使用说明 本设计中用户操作界面安装方便使用简单。 双击mperature_control setup.exe文件按照提示点击‘下一步’即可完成软件的安装。安装界面如图4-1所示。
图4-1 温控用户操作软件安装界面 安装完成后运行temperature.exe文件将出现如图4-2所示用户操作界面。功能介绍如下 (1)若下位机已连接点击‘开始监测’左边文本框内将显示被测对象当前温度值每秒更新一次显示格式如图中注释所示。温度报警模块的文本框内将显示当前温度值的符号和整数部分。若下位机未连接点击‘开始监测’将弹出对话框提示“串口打开失败”。 (2)在开始监测模式下分别通过温度下限值和上限值列表选择温度范围可启动温度报警系统报警模块中温度状态指示灯将点亮。 (3)点击‘输入设置值’PC端将把当前温度设定值发送给下位机下位机经处理后控制外设。 (4)在开始监测模式下再次点击‘开始监测’将停止监测并且弹出对话框提示“串口已经关闭”。 (5)点击‘退出’退出用户操作界面。
图4-2用户操作界面
第5章 系统调试
5.1IAR Systems开发环境 5.1.1创建项目 运行IAR Embedded Workbench IDE页面弹出如图5-1所示对话框。点击‘Create new project in current workspace’,进入项目类型选择对话框本设计中采用C进行编程点击‘确定’后选择项目保存路径新项目创建完毕。
图5-1Embedded Workbench启动界面 5.1.2导入源程序 如图5-2所示右击左侧Workspace一栏已经建好的项目选择‘AddAdd File’从源程序存储路径选择源程序‘T_R_DS18B20.C’点击‘打开’后加载。
图5-2导入源程序界面 5.1.3仿真参数设置 如图5.2所示选择‘Options’选项出现对话框可进行仿真器各类参数设置。 首先进行主芯片选择。本设计使用STC89C52为主控制芯片。 其次进行仿真模式选择即图5-3所示。Simulator为软件仿真即虚拟MCU仿真FET Debugger为硬件仿真。本设计需要将源程序拷入单片机进行硬件调试故选择FET Debugger。 再者进行程序下载设置如图5-4。本设计中使用的JTAG仿真器通过并口线连接主机因此Conection一栏选择LPT1。下载模式选择擦除原信息后再写入。 图5-3调试器选择界面
图5-4程序下载设置界面 5.1.4下载源程序 下载程序前需要对源程序进行编译和连接成功后才能下载到单片机内。点击工具栏的编译按钮Compile可编译源文件过程及任何出错信息会显示在IAR Embedded Workbench IDE界面下方的Message消息框内。双击错误信息光标将直接移动到程序错误行根据提示进行修改后再重复上述过程。 点击工具栏的Debugger按钮下载源程序下载成功后即可进行仿真。调试可以采用单步运行或者设置断点运行以及全局运行等若需修改程序必须先退出仿真界面。仿真时可通过菜单栏的视图选项View跟踪单片机内各寄存器和变量存储内容的变化情况。本设计中主要采用‘Watch’选项观察变量GetScratchpad温度传感器DS18B20暂存存存储器、RXDATA_BUF单片机发送缓存、和TXDATA_BUF单片机接收缓存等信息。硬件仿真成功界面如图5-5所示。
图5-5程序下载并仿真成功界面 5.2调试结果及数据分析 本次设计的温控系统包括主控芯片单片机下位机和用户操作界面上位机两部分构成。测试时还需用到JTAG仿真器。 将附录B中所示已经制做好的下位机USB口接入主机第一次接入时PC端将提示“该硬件无法被识别”这时需打开‘TUSB3410_ Driver setup.exe’安装USB转串口驱动程序。安装完成后PC端便可识别USB。然后通过‘开始’菜单的‘所有程序’打开已经安装好的用户操作界面‘Temperature_control.exe’结合图5-5所示界面进行仿真测试即可得到如图5-6所示结果。具体操作如下 1在计算机设备管理器中找到下位机对应的端口号双击后设置波特率为9600停止位为1偶校验。 2在IAR Embedded Workbench IDE硬件仿真界面下单击工具栏里的全局运行按钮让单片机处于工作状态。 3点击用户操作界面的‘开始检测’按钮便可实时检测并显示单片机采集到的温度数据温度报警模块按照上一次设定的温度值进行温度状态提示单片机也将按照上一次的设置控制外设。 4重新选择温度范围后点击‘输入设置值’系统将按照新设定进行温度告警和控制。 5一段时间后在硬件仿真界面下单击工具栏里的暂停按钮让单片机停止工作后再在Watch一栏查看预先设置跟踪的变量的值。 图5-6所示为上述过程执行后得到的结果经验证准确无误当时的室温约为15℃。
图5-6调试结果 (1)用户操作界面说明 左侧文本框内显示的是每一妙更新一次的温度测量值最后一行的显示是“15 43 75 43”其中15为温度值的整数部分、4375为温度值的小数部分、43为温度值的符号ASCII码43表示字符‘’45表示字符‘’含义为上一刻测得的温度值为15.4375℃。 两个选择列表的值分别是“2”和“16”表示已设置了温度范围为216℃。从右边Watch一栏的RXDATA_BUF 两个文本框显示的“”和“15”表示上一刻测得的温度值符号为正整数部分为15。指示灯显示绿色表示温度正常。 (2)Watch一栏说明 GetScratchpad的9个字节存储的是单片机上一刻读出的温度传感器测得的温度值和配置信息。这里不作详解。 经转换后的温度值存入TXDATA_BUF内其中TXDATA_BUF[0]0x0F表示温度值的整数部分为15TXDATA_BUF[1]0x2B和TXDATA_BUF[2]0x4B合起来表示温度值的小数部分为0x2B4B即十进制数4375TXDATA_BUF[3]0x2B表示温度值的符号为‘’。即上一刻测得的温度值为15.4375℃。 接收缓存RXDATA_BUF里存放的是通过PC端用户操作界面设置的温度范围216℃。RXDATA_BUF[0]1表示温度下限值符号为‘’RXDATA_BUF 0x02表示温度下限制绝对值为2RXDATA_BUF[3]0表示温度上限值符号为‘’RXDATA_BUF0x10表示温度上限制绝对值为16。
结 论
本设计的主要任务是设计并制作一个适用于小型系统的温度测试与控制系统。通过了解现阶段温度测量控制系统的设计方案和技术水平对比各种MCU和温度传感器的性能、结构以及根据现有器件资源最终选择了设计和制作基于STC89C52和DS18B20的温度控制告警系统。本次设计过程主要完成了以下工作 (1)硬件设计与制作 以STC公司的STC89C52单片机为核心控制芯片进行系统硬件设计硬件部分包括电源模块、温度数据采集模块、USB-TO-UART接口模块、JTAG测试模块和外设控制模块。 整个系统采用USB的5V电源线供电单片机需要的3.3V电压由电源转换芯片SP6201提供。单片机通过普通I/O口启停DS18B20的温度转换并采集温度数字量。单片机通过UART口和主机PC的USB口进行数据交换其中USB-TO-UART由TUSB3410实现。JTAG测试引脚插针引出仿真器则使用现有仿真器。外设控制模块由于器件资源所限仅使用加热片和风扇实现。 (2)软件设计 使用汇编语言对硬件的各模块进行程序算法编写程序总体结构采用了模块化的设计方法。 (3)用户操作界面的设计与制作 使用VB进行了用户操作界面的设计设计完成后用VB自带的打包工具和专业打包工具SetupFactory相结合的方法制作了安装程序。此安装程序可以使用户操作界面在没有安装Visual Basic的系统环境下安装使用。 目前智能化的温度控制器正向着多功能、高精度、高安全性和高可靠性发展。本设计中需要进一步研究和改善的地方有如下几个方面 1本设计中的温度测控系统上电后开始连续工作直到关闭时才停止在此期间用户不能控制其转换速度。因此可在程序设计中增加工作模式如单次转换模式、连续转换模式、待机模式等。 2可通过DS18B20内部的配置寄存器选择转换精度以调整分辨率和最大转换时间。在对精度要求高的场合可适当牺牲转换时间来获得较高转换精度在实时性要求较高的场合可适当牺牲转换精度来获得较快转换时间。 3增加外部EEPROM由于STC89C52存储空间相对较大也可直接在主控芯片内划出适当一部分ROM空间用来存储用户信息和历史记录以便外设控制模块实现自调整功能。 4外设控制算法可采用现在得以快速发展的以神经网络和模糊数学为理论基础的智能控制算法如模糊控制、神经网络控制和模糊PID控制等。以确保主控芯片能更加实时、准确地对外设器件进行控制。
致谢
本文在我的毕设导师许波老师的精心指导下完成在论文的前期准备与撰写过程中许波老师给了我很多宝贵的意见和建议。由于我在公司实习无法及时查找文献资料她在百忙之中给我找了许多和论题相关的资料并不断地鼓励和支持我要把毕业设计做到更好。她严谨细致的工作态度以及对学生的热情帮助深深地感动了我在此我向她致以最衷心的感谢和最诚挚的敬意 四年充实的大学生活让我自信、独立如今我即将走向社会。十分感谢学校给我一个学习成长的平台同时也感谢所有关心和帮助过我的老师以及同学是你们让我找到了人生的方向。 最后衷心地感谢各位专家教授抽空审阅本文
参考文献
[1]张爱筠等.温度控制系统的设计与市场研究.商业经济. 2008.299(2)57-58. [2]王海宁.基于单片机的温度控制系统的研究.合肥工业大学. 2008. [3]谭伟平胡荣强张响亮.基于RS-485和组态的机房温度远程监控. 2010. [4]边琳.时滞温度控制系统控制方法的研究.吉林大学. 2007. [5]邓兴成.单片机原理与实践指导.机械工业出版社. 2009. [6]孙传友孙晓斌.测控系统原理与设计.北京航空航天大学出版社.2007. [7]瓮嘉民.单片机典型系统设计与制作实例解析.电子工业出版社.2014 [8]陈忠华.基于单片机的温度智能控制系统的设计与实现.大连理工大学.2006 [9]DS18B20 Data Sheet.DALLAS Corporation. 2005. [10]TI TUSB3410 Date Sheet.TEXAS INSTRUMENTS. 2002. [11]SP6201EM5-2.85 Data Sheet.Sipex Corporation. 2004. [12]I2C EEPROM 24LCxx Data Sheet.Microchip Technology Inc. 2005. [13]严晓照张兴国.基于模糊控制算法的温度控制实验系统.机电工程. 2006.23(10)19-20. [14]范逸之.VisualBasic与RS-232串行通信控制.中国青年出版社. 2002. [15]钱培德等.Visual Basic傻瓜书.清华大学出版社.