




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录摘 要IAbstractII1绪论11.1设计目的及意义11.2研究内容21.3设计方案21.4方案论证32硬件电路52.1单片机及最小系统52.2显示电路设计62.3键盘检测电路82.4温度检测电路92.5输出电路152.6串行通信电路172.7 总电路图193程序设计203.1总程序203.2 温度设定和显示程序213.3温度获取程序233.4基于PID的温控程序设计263.5串行通信304系统调试及仿真324.1仿真环境324.2系统电路仿真334.3 Simulink仿真375.总结与展望435.1主要工作内容435.2工作小结435.3 待解决的问题及未来研究方向44致 谢46
2、56摘 要温度控制是工业生产和日常生活中的一个很重要的环节,能够实现自动检测和控制是智能化温度控制系统的基本要求。但是,温度本身的惯性特性导致被控制对象的滞后性大,这是我们的在控制过程中面的难题。传统的温度控制系统已经不能满足我们的需求,所以我们必须要找出解决的方案。 本文设计选取恒温箱为研究对象,并运用数字传感技术 单片机技术和PID控制算法结合起来,来实现对温度的高精度的控制,本系统以C51单片机为核心,采用DS18B20数字温度传感器采集环境温度,将采集的温度数据显示在数码管上,采集到环境温度的同时使用单片机内部的PID算法程序对加热电路实施控制,这是因为PID控制应用广泛,功能易实现,
3、能够根据温度误差的反馈来调整系统的输出。并且在Protues和matlab对硬件电路和PID控制进行了仿真。这次设计的恒温控制系统具有操作简单、适用范围广、成本小的特点,能够根据需要实现度的温度对环境进行自动调节与控制。所以这设计在实现温度的智能控制方面具有非常重要现实意义。关键词: 51单片机,温度控制 PID控制 AbstractTemperature control is a very important aspect in industrial production and daily life and that achieving automatically detect and c
4、ontrol is the basic requirement for intelligent temperature control system. However, the temperature itself is controlled inertial characteristics lead lag large objects, this is what we faces in the control process problems. The traditional temperature control system can not meet our needs, so we h
5、ave to find solutions. In this design incubator is the selected object for the study, and we combined digital technology , sensor technology of SCM and PID controlling algorithm to achieve high-precision control of temperature, the system C51 microcontroller as the core, Then the system use th
6、e digital temperature sensor DS18B20 to achieve the acquisition the temperature of environment , the collected temperature data displayed on the digitron, collecting the ambient temperature while using a PID algorithm microcontroller circuit embodiment of the heating control, which is widely used be
7、cause the PID control, the function is easy to realize, according to the temperature error feedback adjusting the system output. And in the Protues and matlab hardware circuit and PID control simulation. The design of the temperature control system is simple, wide application, the cost of small feat
8、ures, according to the degree necessary to achieve the environmental temperature automatically adjust and control. So this design in the realization of intelligent temperature control has a very important practical significance. Keywords: 51 MCU, temperature control, PID control1绪论1.1设计目的及意义在工业生产及我们
9、平常的生活中对于温度高度自动化控制的需求越来越大。许多传统的制造、农业生产以及当前的一些生活中对温度需求的场合都要求实现温度数据的测量与控制。随着工业技术的高速发展,有更多的工作生产环节和日常生活场合对温度控制的精确度,稳定性以及可靠性等提出了了更高的需求。传统的温度控制器控制精度和可靠性已经不能满足对温度要求更为精确的现代化社会。 温度的控制控制中,温度被控对象特性(惯性、滞后、非线性)影响着温度控制系统的效果,使得控制性能难以提高,尤其在工业和农业生产过程其温度控制的好坏直接关系到产品的质量的好坏,在此情况下设计出一种能达到符合理想结果的温度控制系统是非常有重要性的。我们这次的温度控制系统
10、的设计正是基于此情况而设计,针对一些对温度精度需求较高的场合,为达到对其温度的良好控制,从实用的角度以C51为核心设计一套温度智能控制系统。本系统将以C51单片机为核心部件,构建一个集温度的采集、处理、显示、控制为一体化的闭环控制系统。利用单片机的外围扩展电路采集环境温度值,以数字量的形式存储和显示,它既能单独作为一种控制设备对温室温度进行高精度的控制,对控制对象发出各种控制命令,并能实时的显示当前温度值,自由设定目标控制的温度值。同时,也可以作为数据采集装置,为上位机进行记录和运算提供数据来源。 该智能温度控制系统功耗低较,系统简单运行结果可靠并且经济实用。能利用最少的资源对环境温度进行高精
11、度的测量,性能可靠、操作简便,它能自动减小误差。这种算法通过软件编程来完成,同时可以的获的准确可靠的结果,在实际的使用中能达到理想的效果。1.2研究内容本论文叙述了基于51单片机的智能温度控制系统的设计过程,当中运用数字传感技术、基于单片机的自动控制。我们以C51为cpu,设计出了一套能实现封闭环境内的温度实时检测与控制的恒温控制系统。该系统运用数字温度传感器获取环境温度,并通过程序设计来设定温度与设定的值有偏差时采取必要措施控制输出设备(加热器或冷凝器)调节环境温度,使环境内的温度维持在预设的温度的偏差内,其中要能满足生产或者日用需求,该系统在硬件设计上主要是通过传感器对温度进行检测。单片机
12、接收信息后进行运算处理,通过与预设值的比较输出高低电平来控制加热电路的工作与停止。温度采集电路核心部件是DS18B20温度传感器。它是美国DALLAS半导体公司推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。其硬件设计中最为核心的器件是单片机C51,它通过外部键盘实现对所需温度参数大小设定的输入,另一方面,将DS18B20采集到的数字温度数据经单片机程序的运算得到相应的温度值,送到LED显示器,以数字直观形式显示测量的温度,并且单片机通过I/O口对加热电路发出控制指令。整个系统的软件编程就是通过
13、C语言对单片机C51实现其控制功能1.3设计方案 本次设计的对象为一个小型的恒温箱温度控制系统结构,温度显示误差不超过0.5在能够自由设定温度参数温度显示范围为0-99程序部分用PID算法实现温度的自动控制系统的温度抖动尽可能小为了满足设计的需求,本次设计方案使用了C51单片机作为控制处理器,数字温度传感器DS18B20为温度测量元件,采用多个温度传感器对各点温度进行检测,通过键盘模块对预定温度进行设置,显示电路采用LCD模块,使用继电器 三极管为中心组成的控制电路。 DS18B20温度传感器数码管/液晶显示电路C51单片机继电器键盘电路加热电路串口通信图1-1温度控制系统方案框图 系统开始工
14、作时,通过DS18B20获取当前环境内的温度并且在屏幕上显示,当温度设定定好后,单片机便开始执行温度控制程序命令将当前温度信息和设定好的温度进行比较和处理,单片机根据处理的结果通过I/O输出来控制继电器的动作来达到对外部加热电路的控制,主要根据温度差控来制电路工作时间的占空比从而来调节环境内内部的温度。当温度达到预设值时I/O口便输出低电平,使得外部电路停止工作。这就是本系统的主要设计方案和工作原理。 1.4方案论证如果采用模拟温度传感器,转换得到的温度结果需要经过运算放大器和A/D转换器传送给单片机。模拟原件的控制原理虽然简单,但电路复杂,不容易实现对多点温度进行测量和监控。由于采用了多个分
15、立元件和模数转换器,容易出现误差,测量的准确性难达标,所以用数字温度传感器DS18B20进行替换,它直接输出的是数字信号,高精度,电路结构非常简单,只需要模拟DS18B20的读写时序,编写程序匹配DS18B20的协议读取转换的温度。这次我使用的方案硬件电路非常简单,但是程序设计的复杂度高了点,同时课外对DS18B20、数码管或液晶显示、键盘控制的程序有所了解,之前在网上和书上看到过此类程序程序设计,并且我曾经使用过开发工具Keil 4 ,在keil中用C语言进行过单片机的程序设计,并且用仿真软件对系统进行了仿真,达到了预期的结果。由此可见,该方案完成具有可行性,体现了技术的先进性,经济上也没有
16、任何问题。综上所述,本课题的系统进行设计是可行的。在实际研究过程中,我做一点点的修改,主要以单点测温为主研究,因为其测温原理基本一样,我们只有研究通单点测温即可。其次是液晶显示我们也做了进一步修给,为了达到减少成本的要求,我们选择用LED数码显示管代替液晶显示器。2硬件电路2.1单片机及最小系统本次设计题目是基于C51的温度控制系统,我在这里使用的是与C51同一系列的STC89C52。 STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。 STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备
17、的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。其基本功能与C51差不相同。 图 2-1 C52单片机STC89C52有8KB片上可编程速闪存储器,根据设计要求基本能够满足,因此不在外扩EPROM作为程序存储器,同样STC89C52内部已集成
18、了256B的RAM,而系统运行中需要存放的中间变量只有给定的温度、实测温度等中间变量,因而STC89C52的片内RAM已经满足存放要求,可以不必再扩充外部RAM。单片机最小系统包括最小系统包括一片STC89C52RC , 晶振电路与复位电路,其原理图如下 图 2-2 最小系统2.2显示电路设计显示电路的显示信号由P0口输出。由六个数码管轮流点亮来显示当前系统所获得的数据。显示电路包括六个八段共阴极数码,用于显示温度 及占空比 因为数码管进行动态扫描显示,需要通过位选与段选来进行时分控制 ,所以还有两片74HC573八位锁存器,用来锁存段选与位选信号要使显示电路能正常工作还需要给P0口加上10K
19、的上拉电阻。图中U1为段选锁存,U2为位选锁存。显示电路: 图2-3 八段显示数码管图2-4 74HC573锁存器图2-5上拉电阻2.3键盘检测电路最常见的键盘布局如图2-6所示。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,4*4矩阵键盘的内部电路如图所示。图2-6 矩阵键盘内部电路图当 无按键闭合时,P3.0-P3.3与P3.4-P3.7之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。判断有无按键按下的方法 是:第一步,置列线P3.4-P3.7为输入状态,从行线P3.0-P3.3输出低电平,读入列线数据,若某一列线为低
20、电平,则该列线上有键闭合。第二步,行线轮 流输出低电平,从列线P3.4-P3.7读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行 一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。从矩阵键盘中分离出独立按键,将RD管脚用软件置低,然后依次检测“P3.0,P3.1,INT1,INT1”这时就不需要再做矩阵键盘的检测了,这四个按键分别用作,设置键,温度增大,温度减小 暂停工作 等功能键。2.4温度检测电路温度采集的核心器件是DS18B20芯片数字温度传感器DS18B20温度传感器是美
21、国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。电路图如下: 图2-7 DS18B20连接图DS18B20的主要特性 :适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数 据线供电 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温 DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在
22、形如一只三极管的集成电路内 温范围55+125,在-10+85时精度为±0.5 可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温 在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 测量结果直接输出数字温度信号,以"一 线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力 负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。 DS18B20的外形和内部结构 DS18B20内部结构主要由四部分组成:64位
23、光刻ROM 、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。 DS18B20的外形及管脚排列如下图 DS18B201 2 3 GND I/O UDD 图2-8 PR-35 DS18B20封装DS18B20引脚定义: (1)DQ为数字信号输入/输出端; (2)GND为电源地; DS18B20内部结构主要由四部分组成:64位光刻ROM 、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。2 DS18B2的内部结构DS18B20内部的结构图如图 2-9所示,主要由64位ROM、温度传感器、高速缓存器及配置寄存器等部分组成。DQ温度传感器高速缓存器64位ROM和单线接口内部电源VD
24、D高温触发器TH低温触发器TL电源检测配置寄存器VDD8位CRC发生器存储与控制逻辑 图2-9 DS18B20的内部结构DS18B20的相关部分进行简单的描述。(1)64位ROM。64位ROM是厂家用激光刻录一个64位二进制ROM代码,该芯片的标志号,如图2-10所示。 图2-10 64位ROM的结构 8位分类编号表示产品分类编号,DS18B20的分类号为10H;48号序列号是一个大于281×10的十进数编码,作为该芯片的唯一标志代码;8位循环冗余检验为56位的CRC循环冗余校验码。由于每个芯片的64位ROMD代码不同,因此在单总线上能够并挂多个DS18B20进行多点温度实时检测。
25、(2)温度传感器。温度传感器是DS18B20的核心部分,该功能部件可完成对温度的测量。通过软件编程可将-55+125范围内的温度值按9位、10位、11位、12位的转换精度进行量化,以上的转换精度都包括一个符号位,因此对应的温度量化值分别是0.5、0.25、0.125、0.0625,即最高转换精度为0.0625。芯片出厂默认为12位的转换精度。当接收到温度转换命令(44H)后,开始转换,转换完成后的温度以16位带符号扩展的二进制补码形式表示,存储在高速缓存器RAM的第0、1字节中,二进制数的前5位是符号位。如果测得的温度大于0,这5位为0,只要讲测得的数值乘上0.0625即可得到实际温度;如果温
26、度小于0这5位为1,测得的数值取反加1再乘上0.0625即可得到实际温度。(3)高速缓存区。高速缓存区包括一个高速暂存器RAM和一个非易失性可电擦除E2PROM. 非易失性可电擦除E2PROM用于存放高温触发TH、低温触发TL和配置寄存器中的信息。高速暂存器RAM是一个连续的8字节存储器如表2-1,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是配置寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。表2-1 DS18B20暂存寄存器
27、分布寄存器内容字节地址温度值低位 (LS Byte)温度值高位 (MS Byte)高温限值(TH)01234低温限值(TL)配置寄存器保留5保留6保留7CRC校验值8(4)配置寄存器。配置寄存器的内容用于确定温度值的数值转换分辨率。DS18B20工作时按此寄存器的分辨率将温度转换为相应精度的数值,它是高速缓存器的第五个字节,该字节定义如下:TMR0R111111图2-11 寄存器示意图TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时,该位被置0,用户不必改动;R1和R0用来设置分辨率;其余5位均固定为1。DS18B20的分辨率设置如表2-2所示。DS18
28、B20主要由斜率累加器、温度系数振荡器、减法计数器、温度寄存器等部分组成。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的欲置值。温度系数振荡器用于产生减法计数脉冲信号,其中低温度系数振荡器受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数振荡器随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入.减法计数器对脉冲信号进行减法计数。温度寄存器暂存温度数值。表2-2 DS18B20的分辨率设置R1R0分辨率最大转换时间(ms )009位93750110位18751011位3751112位750 DS18B20工作原理 :DS18B20的
29、读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同 而不同,且温度转换时的延时时间由2s 减为750ms。 DS18B20测温原理如图2.11所示。低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0
30、时,停止温度寄存器值的累加,此时温度寄存器中的数值即 为所测温度。图2.11中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。其工作原理如下图所示比较斜率累加器预 置低温度系数晶振预置LSB置位/清除计数器1温度寄存器=0加1计数器2高温度系数晶振停止=0图 2-12 DS18B20工作原理图2.5输出电路控制加热电路的方法是通过单片机的一个I/O口来控制继电器的吸合与断开从而达到对加热电路的工作与停止的,输出周期方波的基本原理是利用 单片机内部间的T0工作在方式一产生中断隔为0.5ms的定时中断,每产生一次中断,CPU把记录秒的变量count(计数器)自动加1,
31、100次中断为一个工作周期 当count的值在占空比的工作时间内时 输出口P2.5输出高电平,使继电器吸合, 加热电路工作。当count大于占空比数值时输出低电平 继电器断开,加热电路停止工作。 由于单片机的I/O口的输出的功率太小 电流达不到继电器线圈的要求 所以在输出口还要外接一个功率放大电路 ,将P2.5接在三极管8050的基极,再串联一个3.3k的电阻,三极管的集电极与继电器线圈串联在Vcc,发射极接地通常为了保护三极管,还要在继电器的两端反并联一个二极管。控制端得电路图如下所示 图 2-13 继电器与I/O口的连接控制脉冲是由单片机的内部来产生的,加1计数器输入的计数脉冲有两个来源,
32、一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。 80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。工作方式寄存器TMOD 工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下: 图2
33、-14 TMOD寄存器T0定时方式1 方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器 。 图2-15 定时/计数器方式1工作原理 选择合适的初值便能得到我们想要的中断周期,就能控制脉冲的频率和占空比。2.6串行通信电路51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平 的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但 是还是用专用芯片更简单可靠。MAX232芯片是美信(
34、MAXIM)公司专为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。图 2-16 232芯片引脚图MAX232有以下技术特点 1、符合所有RS-232技术标准2、只需要单一 +5V电源供电3、片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压4、功耗低,典型供电电流5mA5、内部集成2个RS-232C驱动器6、高集成度,片外最低只需4个电容即可工作。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的 TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚
35、和单片机的11脚连接,第9脚和单片机的10脚连 接,第15脚和单片机的20脚连接。 串口通讯的硬件电路如图2.16所示。 图 2-17 串口硬件连接2.7 总电路图 图 2-18 总电路3程序设计3.1总程序本系统的主要功能是实现对环境内部温度的采集,根据采集温度来调整加热电路工作占空比,使得环境内部温度达到设定的温度值。在温度控制算法上采用的是是PID(比例-积分-微分)算法,它是一种闭环输出控制模型,在后面会具介绍。总程序的主要有几个部分组成,显示程序,键盘扫描程序,温度读取程序,pid计算程序,中断程序。程序框图如下开始初始化串口传输温度采集显示键盘检测设定温度PID温度控制输出图 3-
36、1 总程序流程图3.2 温度设定和显示程序设定温度的调节用的是同时从矩阵键盘中分离出来3个独立按键分别实现 功能键,增大,减小从矩阵键盘中分离出独立按键,将RD管脚用软件置低,然后依次检测“T0,T1,RD,WR”这时就不需要再做矩阵键盘的检测了,通过判断功能键按下的次数来确定调节设定温度的高低。只要当P3.4-P3.7中任意一管脚的电平检测为低电平,就可以立即判断是哪个键被按下只有当功能键被检测到按下时,关闭中断,TR0=0然后再根据其他按键实现相应增大或减小的功能。当检测到温度设定键(SET键)被按下时,单片机关闭所有中断,进入温度设定子程序,把设定的温度显示到数码管上,在当检测到SET键
37、松开时,打开中断,跳出设定子程序,设定结束并返回到实时的温度显示。数码管是通过位选语段选信号共同控制显示,首先打开U1锁存 P0口送出段选信号,关闭U1锁存,再打开U2锁存 P0口送出数码管1的位选信号,关闭锁存。重复上述步骤可以轮流点亮1-6位数码管。由于显示单个数码管只要2-3ms加上人眼的视觉暂留,是数码管看起来是持续发亮。增大 PLUS减小 MINUS设置 SET 图3-2独立键盘程序流程图开始初始化显示实时温度检测SET按下否检测SET键松开PLUS键按下否否关闭中断,显示设定温度是增大设定温度 并显示否是减小设定温度并显示 MINUS键按下否否否是图 3-3键盘输入作流程图3.3温
38、度获取程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等。主程序; 主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。温度测量每1S进行一次。主流程图如下:图 3-4 主程序流程图出温度子程序; 读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不进行温度数据的改写。流程图如图3.5:发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNYY图 3-5 读温度子程序流程图温度转换命令子程序 ; 温度转换命令子程序主要是发温度
39、转换开始命令。当采用12位分辨率时,转换时间约为750ms。在本程序设计中,采用1s显示程序延时法等待转换的完成。流程图如下:发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束图3-6 温度转换命令子程序流程图计算温度子程序 ; 计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。开始N温度零下?Y温度值取补码置“-”标志置“+”标志计算小数位温度BCD值 计算整数位温度BCD值 结束图3-7 计算温度子程序流程图显示数据刷新子程序; 显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。温度数据移入
40、显示寄存器十位数0? 百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号)结束 图3-8 显示子程序流程图3.4基于PID的温控程序设计系统的主要功能是实现对环境内部温度的控制。温度控制程序的算法直接影响着系统的工作效果,为了得到理想的,最优的结果我在温度控制算法上采用的是是PID(比例-积分-微分)算法,它是一种最经典也是最常用的闭环输出的自动控制模型,他可以根据当前的温度差来调整输纠正误差。PID是Proportional Integral Derivativel控制是比例、积分、微分控制的 简称,PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。PID控制器就
41、是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。在模拟控制系统中,控制器中最常用的控制规律是PID控制。PID控制器是一种线性控制器,它根据给定值与实际输出值构成控制偏差。PID控制规律写成传递函数的形式为 (3-1)式中,为比例系数;为积分系数;为微分系数;为积分时间常数;为微分时间常数;简单来说,PID控制各校正环节的作用如下:Kp+输入对象积分Ki输出-+微分Kd 图3-9 PID系统框图 比例控制比例控制是PID中最简单的控制方式。比例部分数学表达式为: (3-2)其控制器的输出与输入误差信号成比例关系。比例控制作用强弱取决于比例系数Kp,Kp越大,控制过程消耗的时间越短
42、,最终结果的稳态误差也越小;但Kp变大,超调量也越大,系统控制过程易产生振荡,这会使动态性能变差,很可能导致闭环系统不稳定。积分控制在积分控制中,控制器的输出与输入误差信号的积分成正比关系。积分部分数学表达式为: (3-3)对于一个自动控制系统,在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的简称有差系统。为了最大程度减小稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积 分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳
43、 态误差。微分控制如果控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系,那么就叫做微分控制。微分部分数学表达式为: (3-4)一般自动控制系统在消除误差、自动调节过程中,系统可能会出现振荡甚至失稳。其原因系统是存在有较大惯性环节或有滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是让抑制误差的作用超前工作,就是在系统误差快要接近于零时,抑制误差就应该是零。这就是说,在控制器中仅光入 “比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能 够提前使抑制误差的控制作用等于零,甚
44、至为负值,从而避免了被控量的严重超调。微分控制得出偏差的变化趋势,微分控制作用可加快系统响应,减小超调量,减小振荡,系统更稳定性,但使系统抗干扰的能力变差。微分部分的作用强弱由微分时间Td决定。Td的值大,则它抑制e(t)变化的能力强,Td的值小,e(t)则它阻止变化的能力弱。PID离散化PID的数学公式是对一个连续系统的控制,在实际编程中我们不可能用单片机来实现对温度的连续采样,也不可能实现连续,所以要将算法离散化,那么我们对算式 进行离散化变换。 我们假设单片的对温度的采集的周期为Ts,那么我们的采集温度也就是PID算法输入就变为R(T0-k*Ts),k=1,2,3。设目的温度为G(k)那
45、么从T0时刻起,系统的输入误差U(k)U(k)=G(k)-R(T0-k*Ts) (3-5)kn=0对于离散的U(k)误差积分项变为; Ki * U(k) (3-6)而微分项变为; Kd *U(k)=Kd*U(k) -U(k-1)(3-7)= Kd*RT0-(k+1)*Ts-Kd* R(T0-k*Ts)所以最终的算式如式所示离散变换得 E(k)=Kp*U(k)+Ki*U(k)+Kd*U(k)-U(k-1)(3-8)pid c语言实现:对于已经离散化的pid公式,就可以程序来进行编写和实现,我们编写程序的思想是,构造一个循环函数,来实现pid的迭代运算。首先我们将当前设定的温度定义为终点Set_P
46、oint,然后将单片机的定时中断装入合适的初值 这样每隔一个周期T单片机便将获取的环境温度送去与设定温度(Set_Point)进行比较,计算出温度误差U(k),将U(K)的值赋给Error,这时可以计算出比例项,Kp*Error又过一个周期将计算出的U(k-1)的值赋给Next_Error,由Error- Next_Error=dError,我们就可以得到微分项;Kd*dError。至于积分项,每当PID的循环算法执行一次,累积误差SumError变加上当前误差Error,SumError在不停的做一个累加运算,所以积分项为;Ki*SumError。每一个周期的PID计算程序执行完后,将当前的
47、Next_Error的值赋给Error,这样在下一个周期时Next_Error装入新的误差值,以便计算下一个dError的值,得出微分项,整个pid计算程序的流程图如下图所示。开始PID结构体初始化Error=0读取当前温度计算 Next_Error复制个、Sumerror+=Error计算dError=Error-Next_Error将Next-Error的值传递给Error等待中断返回结果 图 3-10 pid流程图部分c语言语句如下定义PID结构体,由于节省编写量 将unsigned int 变量define为 uintstruct PID uint SetPoint; / 设定目标 D
48、esired Valueuint Proportion; / 比例常数uint Integral; / 积分常数uint Derivative; / 微分常数uint PrevError; / Erroruint LastError; / Erroruint SumError; / Sums of Errors;struct PID spid; / PID Control Structure下面是PID的计算函数uint PIDCalc( struct PID *pp, uint NextPoint )uint dError,Error;pp->SetPoint=set_temper;E
49、rror = pp->SetPoint - NextPoint; / 偏差pp->SumError += Error; / 积分dError = pp->LastError - pp->PrevError; / 当前微分pp->PrevError = pp->LastError;pp->LastError = Error;return (pp->Proportion * Error / 比例项+ pp->Integral * pp->SumError / 积分项+ pp->Derivative * dError); / 微分项3
50、.5串行通信 串行通信的传输方向1、单工单工是指数据传输仅能沿一个方向,不能实现反向传输。2、半双工半双工是指数据传输可以沿两个方向,但需要分时进行。3、全双工全双工是指数据可以同时进行双向传输。当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。这时溢出率取决于TH1中的计数值。 T1 溢出率 = fosc /12×256 (TH1)串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:确定T1的工作方式(编程TMOD寄存器);计算T1的初值,装载TH1、TL1;启动T1(编程TCON中的TR1位);确定串行口控制(编程SCON寄存器);串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。串行通行的部分程序主机发送程序:void init_com(void) TMOD = 0x20; PCON = 0x00; SCON = 0x50; TH1 = 0xFd; TL1 = 0xFd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上半年合肥市肥西县事业单位公开招聘工作人员笔试总笔试历年典型考题及考点剖析附带答案详解
- 医学科普教学课件
- 仓储设施设备教学课件
- 第三章酸碱反应和沉淀反应3.4沉淀反应55课件
- 第六章食品的物理特性分析第一节相对密度法第二节折光法第三节
- Brand KPIs for milk:Müller in the United Kingdom-英文培训课件2025
- 2025年农业物联网精准种植中的智能农业物联网设备研发报告
- 医疗器械临床试验质量管理与规范化操作手册应用指南解读报告
- 人才补助经费管理办法
- 数字艺术作品版权保护法律风险防范:2025年市场案例分析报告
- 党建能力测试题及答案
- DB11T 2442-2025 学校食堂异物管控规范
- 企业防汛培训课件模板
- 2025年武汉市汉阳区社区干事岗位招聘考试笔试试题(含答案)
- 接警调度培训课件
- GB/T 24610.1-2019滚动轴承振动测量方法第1部分:基础
- GA/T 1469-2018光纤振动入侵探测系统工程技术规范
- 未闻花名钢琴谱乐谱
- DL∕T 5622-2021 太阳能热发电厂储热系统设计规范
- 领军人才选拔试题答案
- CNC数控车床操作指导书
评论
0/150
提交评论