基于LPC2124的温度模糊控制系统的设计

合集下载

基于模糊控制的温度控制系统设计

基于模糊控制的温度控制系统设计

(1)当0≤∞≤%≤0.1时,则对误差的控制作用的权重非 常小,而对误差变化的控制作用的权重非常大,使得控制效果
万方数据
存在较大的误差,且过渡过程时间长。 (2)当0.1≤al≤ah≤0.5时,对误差的控制作用的权重比
较小,对误差变化的控制作用权重比较大,控制效果仍存在误 差,过渡时间过程稍长。
(3)当0.5≤口.≤a。≤1时,对误差的控制作用的权重较 大,对误差变化的控制作用的权重比较小,控制效果虽然误差 很小,但对误差变化的控制不够,过渡过程的时间过长,甚至引 起振荡现象。
PS
PM PM ZE NS NM NB NB
PM
ZE ZE NS NM NM NB NB
PB
ZE ZE NS NM NM NB NB
设计采用Mamdani方法推理方法进行推理。 由于模糊控制器输出是一个模糊集合,它无法对精确的模 拟或数字系统进行控制。因此,必须进行精确化计算得出此模 糊集中最有代表意义的确定值作为系统的输出控制,主要方法 有:最大隶属度法、取中位数法、加权平均法等,该设计采用重 心法,即加权平均法。 模糊控制器的实现方法就是将上述一系列模糊控制规则 离线化为一个查询表,存储在计算机中供在线控制实时使用。 1.3调整因子的选择 虽然误差以及误差变化率对控制量的权重可以自动调整, 但是%和Ot。的选择对整个控制系统的控制效果仍然存在着较 大的影响。
由此可以得到,除氧器温度模糊控制器的误差量化因子恐
=6/3=2,误差变化率的量化因子k=6/1=6。量化因子使得
输入量实现了从基本论域变换到模糊集论域的作用,即由基本 论域中的任意一点通过量化因子映射到模糊集论域中最相近 的整数点。
此外,经模糊控制算法给出的控制量还不能直接控制对 象,必须将其转换到为控制对象所能接受的基本论域中去。通 常选取一个比例因子K把控制量的模糊集论域变换到基本论 域中。若控制量的基本论域为[墨幽,x。~],量化后的论域为

基于PLC的模糊算法温度控制系统

基于PLC的模糊算法温度控制系统

基于PLC的模糊算法温度控制系统设计摘要:介绍了基于SIEMENS公司S7—200系列可编程序控制器的模糊算法温度控制系统的设计过程.首先简要介绍了PLC可编程控制器的概念,结构和工作原理,其次简单介绍了本系统采用的模糊算法的基本内容,接下来讲解系统的组成和运行流程,最后给出了温度控制系统的硬件组成和软件设计,包括温度控制系统的硬件选择、输入/输出地址分配及外部接线图、内存变量分配表和系统的主控制程序及子控制程序.本系统通过PLC可编程控制器实现了生产一线的实际生产需求,达到了作为工业控制器的目的。

关键词:PLC控制系统;模糊经验算法;温度控制PLC-based fuzzy algorithm for temperature control systemAbstract:the company SIEMENS S7-200 Based Series Programmable Logic Controller Fuzzy algorithm temperature control system design process. First introduces the concept of programmable logic controller PLC, structure and working principle, followed by a brief introduction system adopts the basic Neirong a fuzzy algorithm, the next to explain the composition and operation of the system process, given the temperature control system hardware composition and software design, including temperature control system hardware selection, input / output address assignment and external wiring diagram, the memory allocation table variables and the main control program and sub-control procedures. The PLC programmable controller system through the production line of the actual production needs, to achieve the purpose as industrial controllers.Key words:PLC control system; fuzzy experience algorithm; temperature control目录绪论 (1)1. PLC可编程控制器介绍 (2)1.1 PLC的基本概念 (2)1.2 PLC的基本结构 (2)1.3 PLC的工作原理 (3)1.4 PLC的应用领域 (4)2. 模糊算法控制的简要介绍 (5)2.1 模糊控制理 (5)2.2 经典模糊算法 (5)2.3 模糊算法与PID算法 (6)2.3.1 PID控制的特点 (6)2.3.2 模糊控制的特点 (6)3. 油桶温度控制系统的总体介绍 (7)3.1系统介绍 (7)3.2系统组成 (7)3.2.1 锅炉蒸汽部分 (7)3.2.2 被控对象—油桶 (8)3.2.3 控制部分—PLC (8)4. 基于PLC的模糊算法温度控制系统运行原理 (9)4.1 系统控制算法 (9)4.2 系统运行流程 (9)5. 系统的硬件设计 (11)5.1 硬件选择 (11)5.1.1 CPU224模块 (11)5.1.2 模拟量输入模块EM231 (12)5.1.3 PT100温度传感器 (13)5.1.4 送风电机 (14)5.1.5 电磁阀 (16)5.2 硬件连接 (17)5.3 输入输出点地址分配 (18)5.4 内存变量分配表 (19)6. 系统程序设计 (21)6.1 主控制程序设计. OB1 (21)6.2 一号油桶子程序设计.SBR0 (22)6.3 二号油桶子程序设计.SBR1 (24)7. 系统仿真 (26)结论 (29)致谢 (30)参考文献 (31)绪论论文题目为基于PLC模糊算法的温度控制系统设计。

基于模糊控制算法的温度控制系统的设计 毕业论文

基于模糊控制算法的温度控制系统的设计  毕业论文
1.模糊命题
模糊命题是清晰命题的推广,清晰命题的真假相当于普通集合中元素的特征函数,而模糊命题的真值在 闭区间取值,相当于隶属函数值。
在普通集合中,可用特征函数来描述集合,而对于模糊性的事物,用特征函数来表示其属性是不恰当的。因为模糊事物根本无法断然确定其属性,可以把特征函数取值0、1的情况改为 取值。这样,特征函数就可以取0~1无穷多个值,即特征函数可以演变成可以无穷取值的边疆逻辑函数。从而得到了描述模糊集合的特征函数-隶属函数,它是模糊数学中最重要和最基本的概念,其定义为:
我国对模糊控制的理论与应用研究起步较晚,但发展较快,诸如在模糊控制、模糊辨识、模糊聚类分析、模糊图像处理、模糊信息论、模糊模式识别等领域取得了不少有实际影响的结果。
2.2模糊控制的基本原理
2.2.1模糊控制的数学基础
1.模糊集合
人们常用一些模糊概念思考问题,比如说“这栋楼房高”、“气候炎热”等,这里“高”和“炎热”没有明确的内涵和外延,但具有量的含义。将这类具有不确定量值的概念范围,或者在不同程度上具有某种特有属性的所有元素的总和称为模糊集合。
(2.8)
与普通集合一样,模糊集满足幂等律、交换律、吸收律、分配律、结合律、摩根定理等。但其不同于普通集合,互补律不成立,即
(2.9)
隶属函数的确定,应该是反映出客观模糊现象的具体特点,要符合客观规律,而不是主观臆想。对于同一个模糊要领总存在不同的人会使用不同的确定方法,建立完全不同的隶属函数,不过所得的处理模糊信息问题的本质结果应该是相同的。
(2.13)
式中元素 ,该矩阵称为模糊矩阵,简记为: 。
为讨论模糊矩阵运算方便,设矩阵 阶矩阵,即 , ,此时模糊矩阵的交、并、补运算为
模糊矩阵交 (2.14)
模糊矩阵并 (2.15)

模糊控制的温度控制系统论文 毕业设计

模糊控制的温度控制系统论文 毕业设计

摘要随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度控制系统的设计与研究有十分重要的意义。

本次设计的目的在于学习与了解单片机系统开发的基本流程。

本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制热敏电阻,把温度信号通过放大电路从数字温度传感器传递到单片机上。

并通过RS485总线和上位机进行数据处理。

上位机数据处理之后,下位机发出控制信息来改变控制执行模块的状态,使温度回到控温范围以内。

由于控制方法多种多样,本设计采用PID控制。

塑料薄膜是一种对温度非常敏感的材料,要求烫封温度误差小于±5℃,为了提高制袋质量,本文设计了模糊PID控制器,并在相应的温度控制系统硬件、软件平台上实现了该控制算法,将烫封温度稳态误差缩小到±0.1℃以内。

关键词:热敏电阻; PID控制; 模糊PID控制ABSTRACTWith the rapid development of modern information technology, temperature measurement and control systems play an increasingly important role in industry, agriculture and people's daily life,which greatly impact the people‵s lives, so the design and research of temperature control system Is greatly significant. This design is aimed at studying and understanding the basic process of SCM system development. The design adopt a microcontroller as data processing and control unit, in order to carry out data processing, SCM controlthermistor and transmit the temperature signal through the bus single from thermistorto the MCU. Through RS485 bus and the host computer for data processing. After processing Computer data, machine-issued under transmit controlling information to change the status of controlling module so that make the temperature return to the scope of the temperature control. As control methods are diversified , we use the method of PID.The material of plastic film is very sensitive to temperature.The thesis designs a Fuzzy-PID controller,experiments prove it’s very effective.And the temperature error reduces to±0.5℃.Key words:thermistor; PID Control;Fuzzy-PID Control目录绪论 (1)1.1 课题来源和背景 (1)1.2 课题研究目的和意义 (1)1.3 国内外研究概况、现状和发展趋势 (2)1.4 课题设计要求及本文主要完成的工作 (2)1.4.1 设计拟达到的主要目标 (2)1.4.2 设计具体任务 (2)1.4.3 设计要求 (2)1.4.4 技术难点 (3)1.5 本文主要完成的工作 (3)1.6 本章小结 (3)2 方案对比 (4)2.1 控制方案 (4)2.2 算法方案 (5)2.3 本章小结 (6)3 模糊控制器的设计 (7)3.1 温度控制 (7)3.1.1 温控原理 (7)3.1.2 温度信号检测 (7)3.1.3 测温电路的工作原理 (8)3.1.4 控温电路工作原理 (10)3.1.5 整个温控系统的工作原理 (10)3.2 模糊控制理论概述 (11)3.2.1 模糊控制概念 (11)3.2.2 模糊控制原理 (12)3.2.3 模糊控制特点 (12)3.3 模糊PID控制器设计 (13)3.3.1 模糊PID控制器结构 (13)3.3.1 模糊控制器的设计 (13)3.3.2 模糊PID控制算法实现 (14)3.4本章小结 (15)4 控制系统硬件实现 (16)4.1 系统硬件组成 (16)4.2 硬件系统总原理框图 (16)4.3 系统硬件设备介绍 (17)4.3.1 74LS373资料 (17)4.3.2 A/D转换 (17)4.3.3 RS485总线资料 (18)4.3.4 单片机AT89C52 (20)4.4 通讯电路设计 (23)4.4.1 通讯标准选择 (23)4.4.2 实际通讯电路 (23)4.5 I2C串行扩展电路 (24)4.6 硬件抗干扰措施 (25)4.6.1 干扰来源分类 (25)4.6.2 抗干扰措施 (25)4.7 系统总电路图(见附录) (26)4.8 本章小结 (26)结论 (27)致谢 (28)参考文献 (29)附录 (31)绪论1.1课题来源和背景随着现代工业的逐步发展,在工业生产中,温度、压力、流量和液位是四种最常见的过程变量。

基于模糊控制算法的温度控制系统的设计自动化专业毕业设计毕业论文

基于模糊控制算法的温度控制系统的设计自动化专业毕业设计毕业论文

基于模糊控制算法的温度控制系统的设计电气自动化专业摘要:以AT89C2051单片机为模糊控制器,结合温度传感变送器、A/D转换器、LED 显示器、固态继电器等,组成一个基于模糊控制算法的温度控制系统。

在此系统中,单片机将给定的温度与测量温度的相比较,得出偏差量。

然后根据模糊控制算法得出控制量。

采用模拟的PWM控制方法,改变同一个周期中固态继电器的导通时间,从而调节电炉温度,达到控制的目的。

从仿真结果可以看出,系统达到了预期目标。

关键词:单片机;模糊控制;测量变送Abstract: Using the AT89C2051 single chip computer as the Fuzzy controller, with temperature measure and adjust-convection instrument, A/D transformer , LED displayer, solid switch and so on, form a temperature control which based on Fuzzy control arithmetic.In such system, the single chip computer educe the control value based on the difference between the initialization and the measure value.Solid switch used as a analog PWM converter executor, change the close time in a decided periods, which aimed at control the temperature.Seen from the emulation result, system has reach the target.Keywords:Single chip microcomputer, Fuzzy control, measure and adjust-convection1引言温度控制在工业自动化控制中占有非常重要的地位。

温度模糊控制系统的设计【毕业作品】

温度模糊控制系统的设计【毕业作品】

B I YE SHE JI(20届)温度模糊控制系统的设计所在学院专业班级自动化学生姓名学号指导教师职称完成日期年月摘要对于温度的模糊控制系统具有真正的智能化和灵活性,越来越多的温度控制系统都基于模糊控制算法而设计。

随着科学的发展,被控制对象变得越来越复杂,应用常规温度控制方法,控制精度和鲁棒性都达不到控制要求。

当控制对象很复杂的情况下,常规温度控制器已经不再适用了,为了提高对复杂系统的控制性能,要使用模糊控制器。

这种方法主要是将PID控制与模糊控制的简便性、灵活性、以及鲁棒性融为一体,构造了一个模糊PID温度控制器。

本文设计了一种基于模糊PID的温度控制系统,以AT89C51单片机为核心,主要做了如下几方面的工作:首先介绍了模糊PID控制理论基础,其次进行系统的硬件设计以及硬件选择,最后进行系统的软件设计以及仿真。

关键词:模糊控制理论;模糊PID;温度控制;仿真IAbstractFuzzy temperature control system with real intelligence and flexibility, more and more temperature control systems are designed based on fuzzy PID control system .With the control object becomes complicated, using conventional temperature control accuracy and the lower robustness .When the control object is a complex situation, conventional controller is no longer applied, in order to improve the control performance of complex systems,we have to use the fuzzy PID temperature controller.A way to PID control and fuzzy control of simplicity, flexibility, and robustness of the integration, we constructed a fuzzy PID temperature controller.This design presents a fuzzy-based PID temperature control system to AT89C51 SCM,made the following main areas of work:first introduce the theory of fuzzy PID control,second for the hardware design and hardware design,and finally to the system software design and simulation.Key words:Fuzzy PID;Fuzzy control theory;Temperature control;SimulationII目录摘要 (Ⅰ)ABSTRACT (Ⅱ)目录 (III)第一章引言 (1)1.1课题的背景和意义 (1)1.2模糊控制的发展与现状 (3)1.3温度测控技术概论 (3)第二章模糊控制理论 (5)2.1模糊控制理论的数学基础 (5)2.1.1模糊集合 (5)2.1.2隶属函数 (6)2.1.3 模糊关系、模糊矩阵及模糊变换 (8)2.1.4 模糊命题与模糊逻辑 (9)2.2模糊控制理论 (10)2.2.1 模糊控制系统以及工作原理 (10)2.2.2 一般模糊控制器的基本结构原理 (11)2.2.3 模糊控制器的基本类型 (13)第三章温度的模糊控制器的设计 (19)3.1模糊控制系统的设计概论 (19)3.1.1 概论 (19)3.1.2模糊控制器的设计步骤及应注意的事项 (19)3.2模糊控制系统的基本硬件组成 (24)3.3模糊控制系统的软件设计 (25)3.3.1 系统的主程序框图 (25)第四章系统的仿真 (26)III4.1仿真工具 (26)4.2MATLAB以及它的模糊逻辑工具箱及其仿真环境 (26)4.2.1 MATLAB的简介 (26)4.2.2 模糊逻辑工具箱 (26)4.3模糊控制系统的仿真 (28)4.3.1 控制对象模型 (28)4.3.2 MATLAB仿真 (29)4.4仿真结果与分析 (31)结论 (33)参考文献 (34)致谢 (35)IV第一章引言1.1课题的背景和意义温度在我们的工业生产过程和科学实验中扮演者非常普遍而又十分重要的角色,在日常生活中,我们也无时无刻不在与温度密切的打着交道。

基于LabVIEW的模糊温度控制系统设计

基于LabVIEW的模糊温度控制系统设计

基于LabVIEW的模糊控制系统设计摘要本文以LabVIEW为开发环境进行设计模糊控制器,将设计出的模糊控制器应用到温度控制系统中,实现了在有干扰作用的情况下对烤箱温度的控制,取得较好的控制效果。

关键词:虚拟仪器模糊控制热电偶AbstractThis paper is design issue is the use of LabVIEW fuzzy control, through the design of fuzzy control procedures to control the plant (oven) temperature. Finally, it comes ture control the temperature of oven even if there has disturb.Keywords:1引言虚拟仪器〔LabVIEW〕,就是在以通用计算机为核心的硬件平台上,由用户设计定义虚拟面板,测控功能由软件实现的一种计算机仪器系统。

虚拟仪器的本色是操纵计算机显示器的显示功能来模拟传统的控制面板,以多种形式表达输出成果,操纵计算机强大的软件功能实现数据的运算、阐发、处置和保留,操纵I /O接口设备完成信号采集、测量与控制。

模糊控制的底子思想是操纵计算机来实现人的控制经验,而这些经验多是用语言表达的具有相当模糊性的控制规那么。

因为引入了人类的逻辑思维方式,使得模糊控制器具有必然的自适应控制能力,有很强的鲁棒性和不变性,因而出格适用于没有精确数学模型的实际系统。

本文将模糊控制的底子思想应用到基于虚拟仪器的温度控制系统中。

通过热电偶测量烤箱实际温度,与给定值比较。

当测量温度与设定温度之间存在较大的偏差(e≥6℃)时,按时器发生占空比较大的脉冲序列,全力加热。

当系统温度与设定温度之间偏差小于6摄氏度,采用模糊控制算法。

模糊控制器按照误差和误差变化率,颠末模糊推理输出脉冲序列的占空比的大小,颠末固态继电器控制烤箱电源得通断,从而实现对烤箱温度的控制。

基于PLC的模糊PID温度控制系统的应用研究【开题报告】

基于PLC的模糊PID温度控制系统的应用研究【开题报告】

毕业设计开题报告电气工程与自动化基于PLC的模糊PID温度控制系统的应用研究一、选题的背景与意义随着我国国民经济的快速发展,锅炉的使用范围越来越广泛。

而锅炉温度控制是工业生产过程中经常遇到的过程控制,有些工艺过程对其温度的控制效果直接影响着产品的质量和产量。

现代锅炉的生产过程可以实现高度的机械化,这就为锅炉的自动化提供了有利条件。

锅炉自动化是提高锅炉安全性和经济性的重要措施。

目前,锅炉的自动化主要包括自动检测、自动调节、程序控制、自动保护和控制计算五个方面。

实现锅炉自动化能够提高锅炉运行的安全性、经济性和劳动生产率,改善劳动条件,减少运行人员。

锅炉是工业企业重要的动力设备,其任务是供给合格稳定的蒸汽或热水,以满足负荷的需要。

锅炉设备是一个复杂的控制对象,燃气燃油锅炉主要输入变量包括负荷、给水、燃料量、送风和引风量等,主要调节变量包括水位、温度及压力、烟气氧量和炉膛负压等;电加热锅炉主要输入变量包括负荷、锅炉给水和电阻丝电压等,主要调节变量包括水位和温度等。

锅炉生产过程的各个主要参数都必须严格控制。

锅炉系统是一个具有时变和时滞的比较复杂的系统,因此,对锅炉温度进行控制是工业过程控制中一个重要而且困难的问题。

在生产过程控制中,一些复杂环节,往往需要进行串级控制。

即把两个控制器串联起来,第一个控制器的设定值是控制目标,它的输出传给第二个控制器,作为它的设定值,第二个控制器的输出作为串级控制系统的输出,送到被控系统,作为它的控制“动作”。

控制系统的这种串级形式对于复杂对象的控制往往比单回路控制的效果更好。

串级控制对克服被控系统的时滞之所以能收到好的效果,是因为当用两个控制器进行串级控制时,每个控制器克服时滞的负担相对减小,这就使得整个控制系统克服时滞的能力得到加强。

在锅炉自动控制系统中,除了应用基于反馈控制原理而设计的各种调节器系统以外,计算机技术的应用也越来越普及。

由于PLC具有高可靠性、易于实现等优点,在工业控制领域中得到了广泛的应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

物理与电子信息学院嵌入式系统课程设计成绩评定表2014年1月15日嵌入式系统课程设计报告设计课题:基于LPC2124的温度模糊控制系统的设计专业班级:电信本一班学生姓名:学号:指导教师:设计时间:2014年6月基于LPC2124的温度模糊控制系统的设计一、设计任务级要求1.设计要求➢采用Pt100温度传感器,测温范围0~100℃➢系统可设定温度值➢设定温度值与测量温度值可实时显示➢控温精度:±0.5℃2.设计任务➢拟定电路➢编制软件流程图及给出系统软件主要部分的源程序二、方案设计与论证方案一:基于FPGA的模糊温度控制系统设计,采用以温度偏差及温度偏差变化率作为输入,以500Hz调制信号的占空比为输出量的二维模糊控制器结构,温度偏差的模糊化温度偏差error=设定温度T0-测量温度Tt,因为设定温度的范围在40~45℃,而测量温度的范围在25~45℃,那么温度偏差error 的基本论域E为[-5℃,+20℃],将其划分为10个模糊子集。

其方宽图如下:方案二:基于LPC2124的温度模糊控制系统的设计,在本温度测量控制系统中,实际温度值由铂热电阻恒流工作调理电路进行测量。

为了克服热电阻的非线性特点,在信号调理电路中加入了负反馈的非线性校正网络,调理电路的输出电压由片内10位A/D转换后送入LPC2124,在LCD显示测量的温度值。

输入的设定值由两位的独立式键盘电路进行调整,可对设定值进行加1/减1操作,送入LPC2124,仍在LCD上显示。

本系统的模糊控制算法由LPC2124和程序来实现。

先由温度采样与设定值一家之言差求出温度误差,进一步求出误差变化率,经量化及限幅子程度处理,得到误差语言变量E和误差变化率语言变量EC,直接查询模糊控制表就可获得控制量U,然后由定时子程序处理,发出控制信号,从而控制输出功率。

若温度偏高,则控制风扇使其降温,达到控制温度的目的。

三、硬件设计1)铂热电阻测温调理电路恒流源驱动电路本系统采用恒流工作调理电路,铂热电阻选用标称值为100Ω的Pt100作为温度传感器,其物理、化学性能在高温和氧化性的介质中非常稳定,在-259.34~630.74℃温域内,可作为温度标准。

A1、A2和A3采用低漂移运放OP07A,由于有电流流经铂热电阻传感器,所以当温度为0℃时,在铂热电阻传感器上有电压降,这个电压为铂热电阻传感器的集团电压,是运放A1输出电压的一部分,使恒流工作调理电路的输出实际不为0。

2)时钟电路如图所示,LPC2124芯片内部设有一个反相放大器所构成的振荡器,XRAL1和XRAL2分别为振荡电路的输入端和输出端,时钟可以由内部或外部产生,在XRAL1和XRAL2引脚上外接定时器件,内部振荡电路就会产生自激振荡。

本系统采用的定时器件为石英晶体和电容组成和关联谐振回路。

晶振回路。

晶振频率选择11.0592MHz,C1、C2的电容值取30pF ,电容的大小可起频率微调的作用。

626123577176359584351495)温度控制电路本系统中控制核心电路(控制加热丝加热电路)采用由过零检测晶闸管触发器件MOC3061组成的触发电路,此器件专门用于设计双向晶闸管触发器。

当LED 导通发射红外线且过零电路检测输出端的交流电压过零时,光控双向晶闸管被触发导通,否则关断。

MOC3061组成的角发电路图中MOC3061的输出端的最大额定电压是600V,最大重复浪涌电流为1A,电压上升率(dU/dt)约为600V/μs,最大可达1500V/μs,输入和输出间隔电压大于7500V,输出控制电流为15mA 。

(1)输入限流电阻RIN 。

一般来说,当LED中的下身电流IF大于或等于IFT (MOC3061)的IFT=15mA)时,光控双向晶闸管保证触发。

在实际设计中,运行时的IF取IFT与最大IF(60mA)之间的值。

图中当P3.4端为低电平时,MOC3061输入电流约为17mA,在4和6输出端之间电压过零时,内部光控双向晶闸管导通,触发外部双向晶闸管KS导通;当P3.4为高电平时,双向晶闸管KS关断。

设LED导通压降为1.3V,7407低电平为 0.3V,则有RIN=(5V-1.3V-0.3V)/17mA=200Ω(2)输出限流电阻R。

R是MOC3061的限流电阻,用于限制流经MOC3061的输出端的电流最大值不超过1A。

MOC3061的过零检测电压为20V,所以对于电阻性负载,R即会稍大于20Ω。

如果是电感性负载,由于电感的影响,触发外部双向晶闸管KS的时间会延长,流经MOC3061输出端的电流会增加,故增大R值,R 的取值由下式计算R=Up/Ip=(220*1.414)/1A=311Ω取值称值300Ω。

由于R的加入,使触发电路有一个最小触发电压,低于该电压,外部晶闸管不导通,直到高于该电压才导通。

R增大时,最小触发电压增大。

(3)功率晶闸管的门极电阻RG,电阻RG可防止误触发,提高搞干扰能力,一般取300~500Ω。

(4)吸收回路RS和CS。

RS和CS吸收回路接在双向晶闸管的阳极和阴极之间,用业防止电源的尖峰电压,以及浪涌电流对晶闸的冲击和干扰。

一般CS取值为0.01~0.1μF ,RS的聚会为几Ω到几十Ω。

在本系统中,CS取值为39Ω。

铂热电阻测温系统的完整电路图如图所示6)模糊控制查询表系统的模糊控制查询表见表四、软件设计1.软件调试(1)系统所需完成的功能编写流程图;(2)对各功能模块进行逐一编写及调试;(3)各功能模块调试正常后,进行联编;(一定要注意地址的分配、程序的连贯及各功能的相互搭配)(4)对总程序进行调试,调试完成后,要对总程序进行精简,在完成各功能的前提下删除多余程序。

测控系统的主程序流程图如图所示。

主程序流程图显示数字子程序流程如图所示。

显示数字子程序流程图A/D转换子程序流程图如图所示。

A/D转换子程序流程图2.程序源代码温度测控系统程序源代码如下:/******************************************************************** ********* File: main.c* 功能:向LCD输出计数值********************************************************************* *******/#include "config.h"#define rs (1<<9)#define rw (1<<10)#define en (1<<11)#define busy (1<<7)#define ke 2#define kec 2.5uint8 e,ec;fp32 ectemp,prelevel,etemp;uint8 temp=0;uint8 fuzzycode[21][11]={{5,5,5,5,5,5,4,3,2,1,1},{5,5,5,5,5,5,4,2,2,1,1},{5,5,5,5,5,5,4,2,2,1,1},{5,5,5,5,5,5,4,2,1,1,1},{5,5,5,5,5,5,4,2,1,1,1},{5,5,5,5,5,5,4,2,1,1,1},{5,5,5,4,4,4,3,2,1,1,1},{5,5,5,4,4,4,3,2,1,1,1},{5,5,4,4,4,3,2,2,1,0,0},{5,5,4,4,3,2,1,1,1,0,0},{4,4,3,3,2,1,1,1,0,0,0},{3,3,2,2,1,1,1,0,0,0,0},{2,2,2,2,1,1,1,0,0,0,0},{2,2,2,1,1,0,0,0,0,0,0},{2,2,2,1,1,0,0,0,0,0,0},{1,1,1,1,1,0,0,0,0,0,0},{1,1,1,1,1,0,0,0,0,0,0},{1,1,1,1,1,0,0,0,0,0,0},{1,1,1,1,1,0,0,0,0,0,0},{1,1,1,1,1,0,0,0,0,0,0},{1,1,1,1,1,0,0,0,0,0,0}};uint8 BCD[7]; //十位二进制的显示码分别是千百十个位的显示uint32 ADC_Data;void ShowInt(uint8 addr,uint16 num);void ShowByte(uint8 addr,uint16 num);uint32 AD_Convert(void) ;void fuzzy(void);void PWM0(void);void PWM1(void);void PWM2(void);void PWM3(void);void PWM4(void);void PWM5(void);/******************************************************************** ********* File: main()* 功能:显示计数值********************************************************************* *******/int main(void){PINSEL0=0x00020000;PINSEL1=0x00000000;IO0DIR=0x00cfffff; //设置为输出IO0CLR=0xeff;TargetInit();ShowByte(0x80,0);ShowByte(0xc0,0);fuzzy();return(0);}/******************************************************************** ********* File:delay()* 功能:延时********************************************************************* *******/void delay(uint32 dly){ uint32 i;for(; dly>0; dly--)for(i=0; i<500; i++);}/******************************************************************** ********* File:timer0_init* 功能:定时器0初始化********************************************************************* *******/void timer0_init(void){//定时器计数器0设置,晶振为12M,1秒要运行1000000个周期, T0PR=0; //预分频寄存器T0MR0=Fpclk/20; //匹配值T0MCR=0x00000003; //开放匹配0中断T0TCR=0x00000003; //T0PC和T0TC复位T0TCR=0x00000001; //T0PC和T0TC复位}void timer1_init(void){//定时器计数器0设置,晶振为12M,1秒要运行1000000个周期, T1PR=0; //预分频寄存器T1MR0=Fpclk/20; //匹配值T1MCR=0x00000003; //开放匹配0中断T1TCR=0x00000003; //T0PC和T0TC复位T1TCR=0x00000001; //T0PC和T0TC复位}/******************************************************************** ********* File:timerInt* 功能:中断处理程序********************************************************************* *******/void __irq timer0Int(void){ uint32 d;d=AD_Convert();ShowInt(0x86,d);VICVectAddr=0;T0IR=0x00000001;}void __irq timer1Int(void){fuzzy();VICVectAddr=0;T0IR=0x00000001;}/******************************************************************** ********* File:int_init()* 功能:中断初始化********************************************************************* *******/void int_init(void){VICIntSelect=0x00000000;VICIntEnable=0x00000030;VICVectCntl0=0x00000024;VICVectAddr0=(int)timer0Int;VICVectCntl1=0x00000025;VICVectAddr1=(int)timer1Int;}/******************************************************************** ********* 名称:ChkBusy()* 功能:检查总线是否忙********************************************************************* *******/void ChkBusy(){IO0DIR=0xe00;while(1){IO0CLR=rs;IO0SET=rw;IO0SET=en;if(!(IO0PIN & busy))break;IO0CLR=en;}IO0DIR=0xeff;}/******************************************************************** ********* 名称:WrOp()* 功能:写函数********************************************************************* *******/void WrOp(uint8 dat){ChkBusy();IO0CLR=rs; //全部清零IO0CLR=rw;IO0CLR=0xff; //先清零IO0SET=dat; //再送数IO0SET=en;IO0CLR=en;}/******************************************************************** ********* 名称:WrDat()* 功能:写数据函数********************************************************************* *******/void WrDat(uint8 dat){ChkBusy();IO0SET=rs;IO0CLR=rw;IO0CLR=0xff; //先清零IO0SET=dat; //再送数IO0SET=en;IO0CLR=en;}/******************************************************************** ********* 名称:lcd_init()* 功能:lcd初始化函数********************************************************************* *******/void lcd_init(void){WrOp(0x38);WrOp(0x06); //光标加1WrOp(0x0c); //开显示}/******************************************************************** ********* 名称:DisText()* 功能:显示文本函数********************************************************************* *******/void DisText(uint8 addr,uint8 *p){WrOp(addr);while(*p !='\0')WrDat(*(p++));}/******************************************************************** ********* 名称:DisInt()* 功能:显示文本函数********************************************************************* *******/void ShowInt(uint8 addr,uint16 num) //在addr处显示数字num{//将num转化成五个BCD码存放在全局数组BCD[5]中uint8 i;for(i=5;i>0;i--) //将NUM数据转化成ASCII码,如521会转化为00521{BCD[i-1]=(uint8)(num%10+0x30); //取出最低位num/=10; //去掉最低位}i=0;while(BCD[i] ==0x30 && i<4) BCD[i++]=' '; //NUM转换成数组存放,没有加上小数点BCD[5]='\0';DisText(addr,BCD);}void ShowByte(uint8 addr,uint16 num) //在addr处显示数字num {//将num转化成五个BCD码存放在全局数组BCD[5]中uint8 str1[]="MeasT:";uint8 str2[]="SetT:";if (addr==0x80){DisText(addr,str1);}if (addr==0xc0){DisText(addr,str2);}}uint32 AD_Convert(void){uint32 data;// 进行ADC模块设置,其中x<<n表示第n位设置为x(若x超过一位,则向高位顺延)ADCR = (1 << 0)| // SEL = 1 ,选择通道0((Fpclk / 1000000 - 1) << 8) | // CLKDIV = Fpclk / 1000000 -1 ,即转换时钟为1MHz(0 << 16) | // BURST = 0 ,软件控制转换操作(0 << 17) | // CLKS = 0 ,使用11clock转换(1 << 21) | // PDN = 1 ,正常工作模式(非掉电转换模式)(0 << 22) | // TEST1:0 = 00 ,正常工作模式(非测试模式)(1 << 24) | // START = 1 ,直接启动ADC转换(0 << 27); // EDGE = 0 (CAP/MAT引脚下降沿触发ADC转换)delay(10);ADC_Data = ADDR; // 读取ADC结果,并清除DONE 标志位while(1){ADCR = (ADCR&0x00FFFF00)|0x01|(1 << 24); // 设置通道1,并进行第一次转换while( (ADDR&0x80000000)==0 ); // 等待转换结束ADCR = ADCR | (1 << 24); // 再次启运转换while( (ADDR&0x80000000)==0 ); // 等待转换结束ADC_Data = ADDR; // 读取ADC结果ADC_Data = (ADC_Data>>6) & 0x3FF; // 提取AD转换值 ADC_Data = ADC_Data * 100/1024; // 数值转换data=ADC_Data;return(data);}}void PWM0(void){ IO0DIR=1<<23|1<<8;IO0SET=1<<23;PWMMR0=Fpclk/2.5; //设置PWM周期 PWMMR4=0; //设置PWM占空比PWMLER=0x11;}void PWM1(void){ IO0DIR=1<<23|1<<8;IO0CLR=1<<23;PWMMR0=Fpclk/2.5; //设置PWM周期 PWMMR4=Fpclk/50; //设置PWM占空比 PWMLER=0x11;}void PWM2(void){ IO0DIR=1<<23|1<<8;IO0CLR=1<<23;PWMMR0=Fpclk/2.5; //设置PWM周期 PWMMR4=Fpclk/10; //设置PWM占空比 PWMLER=0x11;}void PWM3(void){ IO0DIR=1<<23|1<<8;IO0CLR=1<<23;PWMMR0=Fpclk/2.5; //设置PWM周期 PWMMR4=Fpclk/5; //设置PWM占空比 PWMLER=0x11;}void PWM4(void){ IO0DIR=1<<23|1<<8;IO0CLR=1<<23;PWMMR0=Fpclk/2.5; //设置PWM周期 PWMMR4=Fpclk/3.3; //设置PWM占空比 PWMLER=0x11;}void PWM5(void){ IO0DIR=1<<23|1<<8;IO0CLR=1<<23;PWMMR0=Fpclk/2.5; //设置PWM周期PWMMR4=Fpclk/2.49; //设置PWM占空比 PWMLER=0x11;}void fuzzy(void){uint8 U;uint8 setlevel;fp32 nowlevelc;IO0DIR=1<<23;while(1){ if((IO0PIN&0x00300000)!=0x00300000)delay(10);if((IO0PIN&0x00300000)!=0x00300000){if((IO0PIN&0x00300000)==0x00200000)temp++;if((IO0PIN&0x00300000)==0x00100000)temp--;while((IO0PIN&0x00300000)!=0x00300000);ShowInt(0xc6,temp);}setlevel=temp;nowlevelc=AD_Convert();etemp=nowlevelc-setlevel;ectemp=10*(nowlevelc-prelevel);prelevel=nowlevelc;if(etemp>=5){e=5*ke+10; }else if(etemp<=-5){e=-5*ke+10;}else {e=etemp*ke+10;}if(ectemp>=2) {ec=2*kec+5;}else if(ectemp<=-2) {ec=-2*kec+5;}else{if(ectemp<=-1.5){ec=-2*kec+5;}else if(ectemp>-1.5 && ectemp<=-0.5) {ec=-1*kec+5;}else if(ectemp>-0.5 && ectemp<=0.5){ec=5;}else if(ectemp>0.5 && ectemp<1.5) {ec=kec+5;}else {ec=2*kec+5;}}U=fuzzycode[e][ec];if (U==0){PWM0();}if (U==1){PWM1();}if (U==2){PWM2();}if (U==3){PWM3();}if (U==4){PWM4();}if (U==5){PWM5();}}}五、系统仿真将上述程序进行编译链接后,打开LPC2124的属性对话窗口,在“Program File”中,单击下拉式按钮,选择fuzzy.hex文件后,即可对系统进行仿真。

相关文档
最新文档