《2022年水温控制系统.doc .pdf》由会员分享,可在线阅读,更多相关《2022年水温控制系统.doc .pdf(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、水温控制系统1 水 温 控 制 系 统文摘为了实现高精度的水温控制,本文介绍了一种以SPCE061A 单片机为控制核心、以PID 算法控制以及PID 参数整定相结合的控制方法来实现的水温控制系统。文章着重介绍核心器件的选择、控制算法的确定、各部份电路及软件的设计。SPCE061A单片机完善的内部结构、优良的性能和强大的中断处理能力,决定了该控制系统的特点:电路结构简单、程序简短、系统可靠性高等。 本次设计还充分利用了SPCE061A 单片机成熟的语音处理技术和PC机的图形处理功能, 来实现了语音播报温度和打印温度变化曲线的要求。关键词 SPCE061A单片机; Pt1000;PID 自 70
2、年代以来,由于工业过程控制的需要,特别是在电子技术的迅猛发展,以及自动控制理论和设计方法发展的推动下,国外温度控制系统发展迅速,并在智能化自适应参数自整定等方面取得成果。在这方面以日本、美国、德国、瑞典等国技术领先,并且都生产出了一批商品化的性能优异的温度控制器及仪器仪表,在各行业广泛应用。目前,国外温度控制系统及仪表正朝着高精度智能化、小型化等方面快速发展。温度控制系统在国内各行各业的应用虽然已经十分广泛,但从国内生产的温度控制器来讲,总体发展水平仍然不高,同国外的日本、美国、德国等先进国家相比,仍然有着较大的差距。目前,我国在这方面总体技术水平处于20世纪 80 年代中后期水平。成熟产品主
3、要以“点位”控制及常规的PID 控制器为主,它只能适应一般温度系统控制,难于控制滞后复杂时变温度系统控制,而且适应于较高控制场合的智能化、自适应控制仪表国内技术还不十分成熟,形成商品化并广泛应用的控制仪表较少。现在,我国在温度等控制仪表业与国外还有着一定的差距。温度、压力,流量和液位是四种最常见的过程变量,其中温度是一个非常重要的过程变量,因为它直接影响燃烧、化学反应、发酵、烘烤、煅烧、蒸馏、浓度、挤压成形,结晶以及空气流动等物理和化学过程。温度控制在工业领域应用非常广泛,由于其具有工况复杂、参数多变、 运行惯性大、 控制滞后等特点,它对控制调节器要求较高。温度控制不好就可能引起生产安全,产品
4、质量和产量等一系列问题。尽管温度控制很重要,但是要控制好温度常常会遇到意想不到的困难。随着嵌入式系统开发技术的快速发展及其在各个领域的广泛应用,人们对电子产品的小型化和智能化要求越来越高,作为高新技术之一的单片机以其体积小、价格低、可靠性高、适用范围大以及本身的指令系统等诸多优势,在各个领域、各个行业都得到了广泛应用。本文主要介绍单片机温度控制系统的软件设计过程,其中涉及系统结构设计、元器件的选取和控制算法的选择、 程序的调试和系统参数的整定。在系统构建时选取了凌阳科技公司提供的一款新产品SPCE061A芯片作为该控制系统的核心。温度信号由PT1000 和电压放大电路提供。通过PID 算法实现
5、对电炉功率和名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 37 页 - - - - - - - - - 水温控制系统2 水温控制。使用SSR固态继电器作执行部件。同时,具有温度数字语音播报和显示啊功能。系统控制对象为 1 升净水,容器为搪瓷器皿。水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变, 具有较好的快速性与较小的超调。该系统为一实验系统,要求系统有控制能力,实现对主要可变参数的实时监控。因此系统控制部分程序设计在nSPT
6、M 集成开发环境中编辑、编译、链接、调试以及仿真的。使用软件编程既减少了系统设计的工作量,又提高了系统开发的速度,使用软件还可以提高所设计系统的稳定性,避免了因个人设计经验不足而产生过多的系统缺陷。1系统方案1.1水温控制系统设计任务和要求该系统为一实验系统,系统设计任务:设计一个水温自动控制系统,控制对象为1 升净水,容器为搪瓷器皿。水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动调整,以保持设定的温度基本不变。系统设计具体要求: 温度设定范围为4090。 环境温度降低时(例如用电风扇降温)温度控制的静态误差1。采用适当的控制方法,当设定温度突变(由40提高到 60)时,减小系统
7、的调节时间和超调量。用十进制数码管显示水的实际温度。 在设定温度发生突变(由40提高到 60)时,自动打印水温随时间变化的曲线。1.2水温控制系统关键部分确定水温控制系统是一个过程控制系统,在设计的过程中,必须明确它的组成部分。过程控制系统的组成部分有:控制器、执行器、被控对象和测量变送单元,其框图如图1 所示。图 1 过程控制组成框图由图可知,在这个系统的设计中,主要设计如图几个部分。除此之外,根据题目要求,还要选取合适的控制算法来达到系统参数的要求。对于执行器件、测量变送元件将在部分电路设计中有说明。在这个部分我主要是对控制器的确定和控制算法的选择作一个详细的介绍。因为这两部分是实现本系统
8、控制目的的关键。它们选取的好坏将直接影响着整个系统实现效果的优劣,所以这是一项不容怱视的工作。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 37 页 - - - - - - - - - 水温控制系统3 1.2.1CPU (Computer processing Unit)中央处理器 方案一:此方案采用SPCE061A 单片机实现。 SPCE061A 单片机除具有体积小,集成度高、易扩展、可靠性高、功耗低、结构简单、中断处理能力强等特点外,内置8 路 ADC ,2 路 D
9、AC 。在实现控制系统中,采用 SPCE061A 为前端采集单元,具有较好的同步性和实时性。且内嵌32K字闪存 FLASH ,处理速度高,集成开发环境中,配有很多语音播报函数,实现语音播报极为方便。另外,比较方便的是该芯片内置在线仿真、编程接口,可以方便实现在线调试,这大大加快了系统的开发与调试。 方案二:此方案采用89C51 单片机实现,此单片机软件编程自由度大,可用编程实现各种控制算法和逻辑控制。但在数据采集时必须使用A/D(数 / 模转换),且在选择A/D 时需考虑 3 个方面的内容:一是如何针对系统的需求,选择合适的A/D 器件;二是如何根据所选的A/D 器件设计外围电路与单片机的接口
10、电路;三是编写控制A/D 器件进行数据采集的单片机程序,这些大大加大了工作量。若要增加语音播报功能,还需要外接语音芯片及接口,加繁了外围电路设备,大大增加了软件实现难度。此外51 单片机内部无在线仿真、编程接口,就需要用仿真器来实现软硬件调试,较为繁琐。将两个方案一比较便可得出一个结论,采用凌阳单片机来实现本题目,不管是从结构上,还是从工作量上都占有很大的优势,所以最后决定用SPCE061A 作为该控制系统的核心。1.2.2常用温度控制系统分析温度是一个普通而又重要的物理量,在许多领域里人们需对温度进行测量和控制。长期以来国内外科技工作者对温度控制器进行了广泛深入的研究,产生了大批温度控制器,
11、如性能成熟应用广泛的PID 调节器、智能控制PID 调节器、自适应控制等。此处主要对一些控制器特性进行分析以便选择适合的控制方法应用于改造。 常规 PID PID 在温度控制中已使用数十年,是一种成熟的技术,它具有结构简单、易于理解和实现,且一些高级控制都是以PID 为基础改进的。在工业过程控制中90% 以上的控制系统回路具有PID 结构,在目前的温度控制领域应用十分广泛,即使在科技发达的日本,PID 在其温度控制应用中仍然占80% 的比例。其主要构成如图2 所。由图可知PID 调节器是一种线性调节器,这种调节器是将设定值w与实际输出值y 进行比较构成偏差图 2 模拟 PID 控制名师资料总结
12、 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 37 页 - - - - - - - - - 水温控制系统4 ywe并将其比例、积分、微分通过线性组合构成控制量。其动态方程为:dttdeKdtteKteKtudip)()()()((1)其中pK- 为调节器的比例放大系数iK- 为积分时间常数dK- 为微分时间常数PID 调节器的离散化表达式为)1()()()()(kekeTKkTeKkeKkudip其增量表达形式为:)1()()(kukuku)2()1(2)()()1()(kekek
13、eTKkTeKkekeKdip其中 T为采样周期。可见温度PID 调节器有三个可设定参数,即比例放大系数pK、积分时间常数iK、微分时间常数dK。比例调节的作用是使调节过程趋于稳定,但会产生稳态误差; 积分作用可消除被调量的稳态误差,但可能会使系统振荡甚至使系统不稳定;微分作用能有效的减小动态偏差。在实际使用中 , 在满足生产过程需要的前提下, 应尽量选择简单的调节器, 这样 ,既节省投资 , 又便于维护. 常规 PID 控制调节器是一种应用广泛技术成熟的控制方法,它能满足一般工业控制的要求,其优点是原理简单、使用方便、适应性广。采用PID 控制,控制效果的好坏很大程度上取决于PID 三个控制
14、参数的确定。对一个控制系统而言,只要参数选择适当, 都能取得较好的控制效果。 自动控制方式为了实现温度的自动控制,必须要组成一定的系统结构。如图3,该控制系统是把输出量检测出来,经过物理量的转换,再反馈到输入端去与给定量进行比较(综合),并利用控制器形成的控制信号通过执行机构 SSR对控制对象进行控制,抑制内部或外部扰动对输出量的影响,减小输出量的误差,达到控制目的。在此控制系统中单片机就相当于常规控制系统中的运算器控制器,它对过程变量的实测值和设定位之间的误差信号进行运算然后给出控制信息。单片机的运算规则称为控制法则或控制算法。名师资料总结 - - -精品资料欢迎下载 - - - - - -
15、 - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 37 页 - - - - - - - - - 水温控制系统5 图 3 自动控制框图常用的控制算法有以下几种 经典的比例积分微分控制算法。 根据动态系统的优化理论得到的自适应控制和最优控制方法。 根据模糊集合理论得到模糊控制算法。自适应控制、 最优控制方法以及模糊控制算法是建立在精确的数学模型基础上的,在实时过程控制中,由于控制对象的精确数学模型难于建立,系统参数经常发生变化,运用控制理论进行综合分析要花很大代价,主要是时间。同时由于所得到的数学模型过于复杂难于实现。在实时控制系统中要求信
16、号的控制信号的给出要及时,所以在目前的过程控制系统中较少采用自适应控制、最优控制方法和模糊控制算法。目前在过程控制中应用较多的还是PI 控制算法、 PD控制算法和PID 控制算法。2系统硬件设计2.1总体设计框图及说明本系统是一个简单的单回路控制系统。为了实现温度的自动测量和控制,本系统采用了SPCE061A单片机作为系统的控制中心,由数据采集模块检测到的温度信号传入单片机,并根据接收到的数据进行处理和控制运算, 同时将数据保存, 以便与下一次采样值进行比较,通过软件对所测电压进行数字非线性校正,同时由显示器进行实时显示。根据系统程序控制,进行PID 运算以及输出控制,最终由CPU控制加热回路
17、SSR的通断,达到调功的目的。系统还提供了键盘设定模块及打印机接口,便于用户与系统之间的对话。系统的硬件结构较简单,由若干个功能模块组成。具体结构图及说明如下,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 37 页 - - - - - - - - - 水温控制系统6 图 4 系统结构框图键盘设定:用于温度设定,共三个按键。数据采样:将由传感器及相关电路采集到的温度转为电压信号,送入SPCE061A 相应接口中,经AD转换后,换算成温度值,用于播报和显示。数据显示:采用了
18、共阴极数码管LED5641A进行显示设置温度与测量温度。串行口传输:将采样温度值,上传至PC机,以利用PC的图形处理功能来描绘曲线并打印。继电器 / 热电炉:通过三极管控制继电器的开关来完成对热电炉的功率控制。语音播放:语音播放水温设置温度,并播报整数温度变化。2.2部分外部电路设计由总体框图可以看到,整个系统的设计都离不开SPCE061A的输入 / 输出接口。在单片机中,I/O 口就是单片机与外设交换信息的主要通道。输入端口从外界接收检测的输入信号、键盘信号等各种开关量信号;输出端口向外部输出处理结果、显示信息、控制命令、驱动信号等。SPCE061A 内部有并行和串行两种方式的 I/O 口。
19、两个 16 位通用的并行I/O 端口即 A口和 B 口,这两个口的每一位都可通过编程单独定义为输入或输出口, 通常对某一位的设定包括三个基本项:数据向量Data、属性向量 Attribution和方向控制向量 Direction,三个向量的每个对应位组合在一起形成一个控制字,用来定义相应I/O 口位的输入、输出状态和工作方式。A口的 IOA0IOA7 用作输入口时具有唤醒功能,常用于键盘输入。B口除常规的输入输出功能外,还具有特殊功能。比如后面串行通信用到的IOB7 口和 IOB10 口,它们在此电路中就充当的是串行数据的接收和发送端口。具体的用法将在后面的电路设计中用到。2.2.1键盘设置电
20、路IOA0 接 KEY1,IOA1 接 KEY2,IOA2 接 KEY3 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 37 页 - - - - - - - - - 水温控制系统7 KEY1: 设置温度的十位数;0 9 KEY2: 设置温度的个位数;09 KEY3: 工作模式选择键,共有三种工作模式:正常工作状态、温度重新设置、语音播报设置。图 5 键盘电路系统上电后,数码管全部显示为零,根据按KEY1次数 , 十位的数码管顺序增加。同样KEY2,也如此。按 KEY3
21、 后,系统开始测温,并与采集的温度进行比较,通过软件来控制电炉的开关。同时语音播报变化的整数值温度。2.2.2测温部分电路如图 6 所示,运放采用HT9274集成芯片,温度传感器使用Pt 电阻。HT9274是微功率运算放大器,利用标准 CMOS 制成,提供与 LM324 、TL274 及 WT274 等相似产品完全兼容的接脚。其低操作电压及稳定的品质特性,提供了完美的输出驱动能力。HT9274 适用于低功率操作的应用,如电话局线界面、传感器放大器及一些电池操作的携带式电子产品。采用温度传感器铂电阻Pt1000,是因为铂电阻的物理和化学性能在高温和氧化介质中很稳定、价格又便宜,常用作工业测量元件
22、,以铂电阻温度计作基准器。此元件线性较好,在0100 摄氏度时,最大非线性偏差小于0.5 摄氏度。铂热电阻与温度关系式)1(20BtAtRRt,其中:tR温度为t 摄氏度时的电阻;0R温度为0 摄氏度时的电阻;A、B温度系数 A=3.94*102/ B=-5.84*10-7/T任意温度因为 Pt 电阻在 0 摄氏度时,阻值为1 千欧姆,在100 摄氏度时,阻值为1380 欧姆,则表示阻值变换从 0380 欧姆,电压从0V-3.3V 。 采用差动运放,通过可调分压电阻可以满足零点调节。因为Pt 电阻中电流基本为12mA,则 Pt 电阻电压就在0380mV波动。因此采用10 倍电压放大。基本满足S
23、PCE061A数模转换。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 37 页 - - - - - - - - - 水温控制系统8 图 6 测温电路2.2.3控制电路此部份用于在闭环控制系统中对被控对象实施控制,此处被控对象为电炉丝,采用对加在电炉丝两端的电压进行通断的方法进行控制,以实现对水加热功率的调整,从而达到对水温控制的目的。对电炉丝通断的控制采用SSR固态继电器, SSR是半导体继电器,所以较小的驱动功率即可使SSR工作。它的使用非常简单,只要在控制台端加上一
24、TTL、CMOS 电平或一晶体管,即可实现对继电器的开关。图 7 热电炉控制电路名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 37 页 - - - - - - - - - 水温控制系统9 图 8 过零控制方式SSR工作波形图 7 为通过三极管NPN8050来控制继电器的开关的,继电器采用的是带光电隔离的过零型双向可控硅AC-SSR常开式(常闭式)固态继电器,为使其实现过零控制,就是要实现工频电压的过零检测,并给出脉冲信号, 由单片机控制双向可控硅过零脉冲数目。当在其输入
25、端加入(撤离) 控制信号时, 输出端接通 (断开) ,从而控制电炉与电源的通断,来达到加热或冷却炉丝的目的,最终实现使碗中水温度稳定在设定值上。2.2.4音频输出电路SPCE061A提供了双通道音频输出方式。数字量分别写入P_DAC1和 P_DAC2 单元。 DAC1 、DAC2转换输出的模拟量为电流信号,分别通过DAC1和 DAC2管脚输出。图 9 音频输出电路SPCE061A 内置两路 10 位 DAC ,只需要外接功放电路即可完成语音的播放. 音频部分的原理图9 所示,在图中可以看到两个跳线,其作用在于可以测量DAC的输出波形;另外拔掉跳线,可以断开DAC到喇叭放大的通路,使得DAC通道
26、处于开路状态。这样便于用DAC做其他用途,用户可以用过这个跳线来加入自己的外围电路。SPY0030是凌阳的芯片,相当于LM386,但是比386 音质好,它可以工作在2.4 6.0V 范围内,最大名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 37 页 - - - - - - - - - 水温控制系统10 输出功率可达700mW (386 必须工作在4V以上,而且功率只有100mW ) 。用凌阳 Compress Tool 事先把所需要的语音信号录制好,本系统共包括十多个语
27、音资源,整个语音信号经凌阳SACM_S480 压缩算法压缩只占有13.2K 存储空间,SPCE061A 单片机具有32k 闪存, 使用内部 flash即可满足要求。凌阳SPCE061A 单片机自带双通道DAC音频输出, DAC1、DAC2转换输出的模拟量电流信号分别通过AUD1和 AUD2管脚输出, DAC输出为电流型输出,所以 DAC输出经过 SPY0030音频放大, 以驱动喇叭放音,放大电路如图所示,可以接喇叭,也可以接耳机,这为单片机的音频设计提供了极大方便。音频的具体功能主要通过程序来实现。2.2.5数码显示电路图 10 显示电路本图采用了共阴极数码管LED5641A进行显示, LED
28、5641A具有四位数码管, 这四个数码管的段选a、b、c、d、e、f、 g 分别接在一起,每一个都拥有一个共阴的位选端。IOB0IOB2 口分别接三极管的p 端,通过三极管来控制LED的片选。 IOA8IOA15 口传输要显示的数据,利用其串 / 并转换功能, 送入数码管显示。在此外接了两个电阻R-PACK4来保护 LED 。数据线也可直接接凌阳SPCE061A 单片机的 I/O 口,因为 I/O 口输出电流很小,一般不会对LED造成很大的损坏,而它的电压值却足以驱动LED ,这不像别的单片机还要名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -
29、- - - - 名师精心整理 - - - - - - - 第 10 页,共 37 页 - - - - - - - - - 水温控制系统11 外接驱动电路和电阻。采用凌阳SPCE061A 单片机,将大大减化了设计过程和硬件电路. 2.2.6串行通讯部分电路系统设计要求控制系统能同PC 联机通信,以利用PC 图形处理能力打印显示温度曲线,故使用了SPCE061A 的异步串行端口UART实现与 PC通信。由于 SPCE061A 串行口电平和PC不一致, (SPCE061A 的 I/O为 TTL电平, PC串行口为 RS232电平) ,使用一片MAX232 为进行电平转换驱动。通信速率为9600 波特
30、率。数据 5 秒传输一次。电路图如图11 所示, MAX232 的 RXD1和 TXD1分别接 SPXEO61A 的 IOB10(TX)和 IOB7(RX ) 。图 11 串行通讯电路UART模块提供了一个全双工标准通信口,用于完成 SPCE061A 与外设之间的串行通信。根据 RS-232 的标准, SPCE061A单片机也是按照字节传输数据的。利用IOB 口的特殊功能和UART IRQ中断,可以同时完成 UART接口数据的接收和发送。此外,UART还可以带缓冲接收数据,即可以在读取缓存器数据之前接收新的数据。但是,如果新的数据被接收到缓存器之前一直未从中读取,先前的数据会发生数据丢失。P_
31、UART_Data (7023H)单元用于接收和发送数据的缓存,向该单元写入数据,将发送的数据送入缓存器;读该单元取数据, 可以从缓存器读出接收到的单字节数据。UART模块的接收管脚Rx 和发送管脚Tx 分别与IOB7 和 IOB10 共用。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 37 页 - - - - - - - - - 水温控制系统12 3系统软件设计3.1程序结构说明任何一个系统的软件设计都离不开硬件电路的连接,所以本课题硬件设计的高度模块化决定了软件设
32、计的模块化。硬件接口连接如下:IOA0-IOA2-KEY1-KEY3 IOA3-ADC IOA4-Relay IOA8-15-LEDa-dp. IOB0-IOB2-LEDcs1-cs3 IOB7 IOB10-UART 由此可知其程序结构应包括:主控程序模块、键盘扫描及处理子程序、采样数据处理子程序、PID 算法子程序、语音播报及显示等子程序几个部分。结构框图如图12。图 12 程序结构图主控程序模块在整个结构中充当管理者,管理所有子程序的调用,就相当于个人计算机的操作系统。它主要负责初始化各个I/O 口,等待键盘事件的发生,并作出相应的处理。并在适当的时候调用数据采样程序,并将采样到的数据与键
33、盘设定值比较。再通过PID 计算后用以控制继电器的开断,从而控制电炉的输出功率,来达到水温的调整,并调用语音播报程序,播放水的温度。3.2 程序流程图及部分程序3.2.1主程序程序按照模块化设计,所有功能都可通过调用子程序完成,主程序较简单,流程图如图13 所示。SPCE061A单片机 A 口的 IOA0IOA7 用作输入口时具有唤醒功能,即具有输入电平变化中断功能(当输入名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 37 页 - - - - - - - - - 水温
34、控制系统13 的电平发生变化,电平由高变低或由低变高时),唤醒处于睡眠状态的CPU 。对于用电池供电的追求低能耗的应用场合,可以通过软件设置应用CPU的睡眠模式以降低功耗,需要时用按键来唤醒CPU使其进入工作状态。图 13 主程序流程图在程序编写过程中,首先还有一系列的准备工作。在这个程序中涉及到了许多的库和组成文件,主要有: main.c 、isr.asm 、 key.asm 、hardware.asm 、 led.asm、system.asm 、sacm_user_a2000.h 。由于篇幅原因,在这篇文章中只给出了部分程序。/= / 函数 : 主程序/ 语法: int main(void
35、) / 描述:语音播报、键盘扫描、温度控制/ 参数:无/ 返回:无/= int main(void) int iKeyValue; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 37 页 - - - - - - - - - 水温控制系统14 status = system_temperature_set; guifgSpeechPlay = 0; System_Initial(); PIDinit(); while(1) System_ServiceLoop(); /
36、键盘扫描、去抖动处理 iKeyValue = SP_GetCh(); /取键值 key_value_process(iKeyValue); /键值处理 if(guifgSpeechPlay) temperature_speech_play( ); /语音播放 if(status = system_temperature_control) display_speech_ADC_temperature(); /测量温度显示、温度播报、PID 计算 Clear_WatchDog(); /清看门狗 System_ServiceLoop(); /键盘扫描 if(fOut0 x0255) K = 0.07
37、9; /确定温度系数 else K = 0.076; fT = adc_data * K; /换算成温度值/ 将温度值转换成十进制用于LED显示guiLED_Value0 = (int)fT/10; guiLED_Value1 = (int)fT%10; guiLED_Value2 = (int)(fT*10)%10; if(int)fT != siTlast) /判断温度的整数值是否变化temperature_speech_index(guiLED_Value); /温度整数值语音播放排序SACM_A2000_Initial(0); /非自动方式播放的初始化名师资料总结 - - -精品资料欢
38、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 37 页 - - - - - - - - - 水温控制系统20 SACM_A2000_InitDecoder(DAC2); /开始对 A2000的语音数据以非自动方式解码SP_INT_IRQ6(); iAddrSpeech = speech_start_address(iaSpeech_index0);/语音播放始地址guifgSpeechPlay = 1; /设置语音为播放状态siTlast = (int)fT; stPID.Proportion = 1
39、; / 设置 PID 比例值 stPID.Integral = 0.5; / 设置 PID 积分值 stPID.Derivative = 0.0; / 设置 PID 微分值 fOut = 100*PIDCalc ( &stPID,(int)(fT*10) ); / PID计算 active(); 下图是数据采样的中断服务程序,此中断程序采用的是2Hz 中断定时 0.5 秒钟采样一次。图 18 数据采样的中断程序/= / 函数: int adc_data_cmp() / 语法: int adc_data_cmp() / 描述: ADC采样数据的均值处理,抗干扰作用/ 参数:无/ 返回:无名师资料
40、总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 37 页 - - - - - - - - - 水温控制系统21 /= int adc_data_cmp() int max; int min; int Sum; int i; max = giADC_DataSave0; for(i=0;imax) max = giADC_DataSavei; /取出最大值 min = giADC_DataSavei; for(i=0;i10;i+) if(giADC_DataSaveimin)
41、min = giADC_DataSavei; /取出最小值 for(i=0;iSetPoint*10 - NextPoint; / 偏差 pp-SumError += Error; / 积分名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 37 页 - - - - - - - - - 水温控制系统23 dError = pp-LastError - pp-PrevError; / 当前微分 pp-PrevError = pp-LastError; pp-LastError
42、 = Error; return (pp-Proportion * Error / 比例项 + pp-Integral * pp-SumError / 积分项 + pp-Derivative * dError / 微分项 ); 3.2.6继电器控制继电器是和SPCEO61A 单片机的IOA4 口相连的,它的开断完全取决于IOA4 口的输出,即PID 计算的结果。当输出小于零说明设定值小于实际输出值,这是就要关闭电炉,同时关闭定时器B的计时。否则如果输出值大于设定值2 摄氏度时就可以开电炉对水开始加热。如果设定值与实际输出值差值在2 摄氏度以内时,我们就调用中断程序定时加热。/= / 函数 :
43、void active() / 语法: void active() / 描述: PID 输出值的处理/ 参数:无/ 返回:无/= void active() if(fOut30*stPID.Proportion) /温度低于设定值2 摄氏度turn_on_relay(); /开电炉加热 else turn_on_relay();SP_INT_TIMEB() ;/初始化定时器,开始定时加热 图 19 是控制程序的中断服务程序,用来对继电器定时加热。它利用中断定时器10ms确定加热时间,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
44、 名师精心整理 - - - - - - - 第 23 页,共 37 页 - - - - - - - - - 水温控制系统24 当加热时间未到时,继续时间累积,若加热时间到时,就调用关定时器子程序,停止计时。图 19 控制程序中断程序3.2.7语音播放凌阳音频简介A 音频信号我们所说的音频是指频率在20Hz 20KHz的声音信号, 分为波形声音信号、语音信号和音乐信号三种。其中波形声音就是自然界是的声音,是声音数字化的基础。语音也可以表示为波形声音,但波形声音表示不出语言语音学的内涵,语音是对讲话声音的一种抽象,是语言的载体,是人类社会特有的一种信息交流系统,是社会交际工具的符号。音乐与语音相比
45、更规范一些,是符号化了的声音。但音乐不能对所的声音进行符号化,乐谱是符号化声音的符号组,表示比单个符号更复杂的声音信息。B 音频信号的抽样和量化要将音频模拟信号进行数字化处理,就必须将模拟信号转换为数字信号。模拟信号数字化有多种方法,目前采用最多的是信号波形的A/D 变换法(波形编码) 。它直接将时域信号波形变换为数字序列,接收恢复的信号质量高。 此外,还 参量编码等。 常用的波形编码方法有脉冲编码调制( PCM 调制)和增量调制(DM ) .数字音频信号的质量取决于采样频率和量化位数这两个重要参数。此外,声道的数目、相应的音频设备质量也会影响音频质量。C 凌阳音频压缩算法的编码标准下表是不同
46、音频质量等级的编码技术标准响应频率。凌阳音频压缩算法处理的语音信号的范围是200Hz3.4KHz 的电话话音。表 2 编码技术标准频响名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 37 页 - - - - - - - - - 水温控制系统25 信号类型频率范围( Hz)采样率( kHz)量化精度(位)电话话音2003400 8 8 宽带音频(AM质量)507000 16 16 调频广播(FM质量)2015k 37.8 16 高质量音频(CD质量)2020k 44.1
47、16 D 压缩分类压缩分无损压缩和有损压缩。无损压缩一般指:磁盘文件, 压缩比低: 2:1 4:1 。而有损压缩则是指:音视频文件,压缩比可高达100:1 。凌阳音频压缩算法根据不同的压缩比分为以下几种 ( 具体可参见语音压缩工具一节内容) :SACM-A2000 :压缩比为8: , 8:1.25 ,8:1.5 SACM-S480 : 压缩比为 80:3 ,80:4.5 SACM-S240 : 压缩比为 80:1.5 按音质排序: A2000S480S240 E 常用的应用程序接口API 的功能介绍及应用表 3 SACM-lib库中模块及其算法类型模块名称(Model-Index )语音压缩编
48、码率类型资料采样率SACM_A2000 16Kbit/s, 20 Kbit/s,24 Kbit/s 16KHz SACM_S480/S720 4.8 Kbit/s,7.2 Kbit/s 16KHz SACM_S240 2.4 Kbit/s 24KHz SACM_MS01 音乐合成( 16Kbits/s,20 Kbits/s,24 Kbits/s)16KHz SACM_DVR(A2000)16Kbit/s的资料率, 8 K的采样率,用于ADC通道录音功能16KHz 我们知道对于语音处理大致可以分为A/D、编码处理、 存储、解码处理以及D/A 等见图 20 所示。 然而,通过前面介绍我们知道麦克风
49、输入所生成的WAVE 文件,其占用的存储空间很大,对于单片机来说想要存储大量的信息显然是不可能的,而凌阳的SPCE061A 提出了解决的方法,即SACM-LIB,该库将 A/D、编码、解码、存储及D/A 作成相应的模块,对于每个模块都有其应用程序接口API,所以您只需了解每个模块所要实现的功能及其参数的内容,然后调用该API 函数即可实现该功能。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 37 页 - - - - - - - - - 水温控制系统26 图 20 单片
50、机对语音处理过程本文主要用到的是SACM_A2000,下面对此作一简单介绍。F SACM_A2000 该压缩算法压缩比较小(8:1) 所以具有高质量、高码率的特点适用于高保真音乐和语音。其相关 API 函数如下所示:void SACM_A2000_Initial(int Init_Index) /初始化void SACM_A2000_ServiceLoop(void) /获取语音资料,填入译码队列void SACM_A2000_Play(int Speech_Index, int Channel, int Ramp_Set) /播放void SACM_A2000_Stop(void) /停止播