具有语音功能的水温控制系统设计.docx

上传人:b****4 文档编号:24877419 上传时间:2023-06-02 格式:DOCX 页数:23 大小:577.54KB
下载 相关 举报
具有语音功能的水温控制系统设计.docx_第1页
第1页 / 共23页
具有语音功能的水温控制系统设计.docx_第2页
第2页 / 共23页
具有语音功能的水温控制系统设计.docx_第3页
第3页 / 共23页
具有语音功能的水温控制系统设计.docx_第4页
第4页 / 共23页
具有语音功能的水温控制系统设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

具有语音功能的水温控制系统设计.docx

《具有语音功能的水温控制系统设计.docx》由会员分享,可在线阅读,更多相关《具有语音功能的水温控制系统设计.docx(23页珍藏版)》请在冰豆网上搜索。

具有语音功能的水温控制系统设计.docx

具有语音功能的水温控制系统设计

具有语音功能的水温控制系统设计

摘要:

SPCE061A是一款具有语音处理功能的16位单片机。

本方案利用SPCE061A集成的ADC直接将采集到的模拟信号转化为数字信号;在控制方面采用数字PID可以控制方案;在进行数据处理的同时将当前的温度结果直接通过串口传送至上位PC,直接在PC端口温度的变化曲线,并根据需要进行相应的数据分析和处理。

同时以SPCE061A为控制核心,实现了对当前的温度十进制的数码管LED显示、语音播报温度。

SPCE061A片内集成了一个ICE(在线仿真电路)接口,使得对该芯片的编程、仿真都变得非常方便,而ICE接口不占用芯片上的硬件资源,结合凌阳科技提供的集成开发环境(μ’nSPIDE)用户可以利用它对芯片进行真实的仿真;而程序的下载(烧写)也是通过该接口进行下载。

本设计方案综合使用了SPCE061A的A/D、Timer、TimeBase、UART等众多资源,发挥了SPCE061A的优异性能。

关键词:

SPCE061A温度采集PID控制Pt100

1引言

信号采集在系统控制中起着至关重要的作用,是控制技术的关键环节。

在一个完善的闭环控制系统中,首先要检测被控对象的当前状态,必须对被控对象的状态信息(比如常见的温度,流量,速度,液位等信息)进行采集,并能够将采集到的数据还原为实际的状态信息,并以此作为控制的出发点。

控制结果和目标的一致性也必须通过信号采集来衡量,只有采集当前的状态信息,并和设置的目标进行对比才能了解控制过程的好坏。

本设计以水温控制系统为载体,利用SPCE061A自带的10位A/D转换器,结合Pt100传感器完成对水温的采样,通过数字滤波等技术消除系统的干扰因素还原当前的温度值,并且对采集到的温度值进行PID运算处理,实现对水温的控制。

以及十进制的数码管LED显示、语音播报温度等。

2系统设计分析

2.1设计任务和要求

利用SPCE061A单片机、LED显示和UART模组设计一个数据采集系统(以水温控制系统为载体),基本要求如下:

1.温度的实时采集显示和语音播报;

2.对温度的变化能够做出及时的处理,最好能够使用PID调节;

3.通过UART实现上下位机通信,并在上位机上显示温度的变化曲线。

2.2系统设计组成模块

整个系统以SPCE061A为核心,前向通道包括传感器及其信号放大电路,按键输入电路;后向通道包括:

LED显示电路,语音播报电路,上位机通信电路以及控制加热器的继电器驱动电路。

SPCE061A内部有8路10位精度的A/D转换器,可以直接将传感器信号放大后输入其A/D转换通道。

SPCE061A实时采样温度,通过数码管将当前温度在下位机端口显示出来,并根据采样结果控制加热器,调节平均加热功率大小;同时通过UART接口传送上位PC机。

各模块说明如下:

语音播放:

播报整数温度变化。

键盘设定:

用于温度设定。

共三个按键。

按KEY3键,温度值的十位会闪烁,通过KEY1/KEY2键修改十位的值的大小,每按一次KEY2键,十位的值加1,达到9之后自动变为0;每按一次KEY1键,十位的值就减1,达到0之后自动变为9;十位设置完成按KEY3键切换至个位设置,通过KEY1/KEY2键修改个位值的大小;个位设置完成通过KEY3键切换至小数位设置,方法同上。

成功设置十位、个位和小数位后,按KEY3键则系统会进入控制状态。

控制状态下,数码管的显示内容为当前采样温度。

重新设置目标温度:

可以通过KEY3键重新设置目标温度,运行状态下按KEY3键进入设置模式,按照上面介绍的方法重新设定目标温度

水温采样:

将电压信号经AD转换后,换算成温度值,用于播报和显示。

LED显示:

采用三位八段数码管显示,设置温度和测量温度,显示小数点后1位字。

串行口传输:

将采样温度值,上传至PC机,描绘曲线并打印。

继电器/热电炉:

通过三极管控制继电器的开关来完成对热电炉的功率控制

图2.1系统整体框图

2.3系统总体方案介绍

根据水温控制系统的设计分析,了解了水温控制系统的组成。

根据上述的介绍,做出了主体系统整体硬件连接如图2.2所示,

系统采用PID闭环控制方案,如图2.3所示,将预置初值和传感器反馈信号比较得到偏差(e),对偏差(e)进行PID运算处理得到控制量(u),通过此量来控制加热器的加热时间,从而控制加热功率。

由于水本身具有很大的热惯性,所以必须对水温的变化趋势做出预测,并且根据需要及时反方向抑制,以防止出现较大的超调量和波动,在PID控制中,积分环节(I)具有很强的滞后效应,而微分环节(D)则具有预见性,所以该方案最终采用PD算法,能够很好的控制超调,并且稳态误差也很小。

图2.3系统PD控制方案

3系统硬件设计

3.1模块特性简介

本系统采用SPCE061A单片机作为主控制器,采用LED显示单元,同时利用UART模组将采集到的数据通过串口传送给上位机,下面介绍将会用到的主要器件:

3.1.1SPCE061A简介

该芯片拥有8路10位精度的ADC,其中一路为音频转换通道,另外7路可作为普通的AD转换通道。

另外凌阳的十六位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。

在此环境中,支持标准C语言,可以实现C语言和凌阳汇编语言的互相调用,并且,提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音录放,这些都为软件开发提供了方便的条件。

下图为SPCE061A单片机的内部结构框图:

图3.1SPCE061A内部结构图

3.1.2Pt100温度传感器简介

温度传感器采用PT100型的铂电阻。

铂的热电阻是一种稳定的高精度,并具有线性响应和较好的长期稳定性的温度检测器。

只要经过适当的数据处理就可以传输,显示并记录其温度输出。

因为铂的电阻的阻值和温度呈正比关系,所以只需要将已知电流流过该电阻就可以的得到和温度成正比的输出电压。

根据已知的电阻-温度关系,就可以计算出被测的温度值。

Pt100温度传感器为正温度系数热敏电阻传感器,主要技术参数如下:

①测量范围:

-200℃~+850℃;

②允许偏差值△℃:

A级±(0.15+0.002│t│),B级±(0.30+0.005│t│);

③热响应时间30s;

④最小置入深度:

热电阻的最小置入深度≥200mm;

⑤允通电流≤5mA。

另外,Pt100温度传感器还具有抗振动、稳定性好、准确度高、耐高压等优点。

铂热电阻的线性较好,在0至100度之间变化时,最大非线性偏差小于0.5度。

铂热电阻的阻值和温度关系为:

(1)-200℃

(2)0℃≤t≤85℃时,RPt100=100*(1+At+B*t)

式中,A=0.0390802;B=-0.00000580;C=0.2735。

可见Pt100在常温0至100度之间变化时线性度非常好,其阻值表达式可近似简化为:

RPt=100(1+At),当温度变化1摄氏度,Pt100阻值近似变化0.39欧姆。

3.2各个模块电路的设计

3.2.1传感器电路

传感器电路包括传感器测量电桥和放大电路两部分,如图3.2所示,AV接IOA4。

PT100铂的热电阻在0℃的额定电阻值是100欧,它是一种标准化的器件。

由PT100热电阻将加热器的现行温度信号转换为相应得电压信号,再经过放大和滤波之后输入到SPCE061A。

图3.2传感器放大电路

R2、R3、R4和Pt100组成传感器测量电桥,为了保证电桥输出电压信号的稳定性,电桥的输入电压通过TL431稳至2.5V。

从电桥获取的差分信号通过两级运放放大后输入单片机。

电桥的一个桥臂是采用可调电阻R3,通过调节R3可以调整输入到运放的差分电压信号大小,通常用于调整零点。

放大电路采用LM358集成运算放大器,为了防止单级放大倍数过高带来的非线性误差,放大电路采用两级放大,如图3.2所示,前一级约为10倍,后一级约为3倍。

温度在0至100度变化,当温度上升时,Pt100阻值变大,输入放大电路的差分信号变大,放大电路的输出电压Av对应升高。

注意:

虽然电桥部分已经经过TL431稳压,但是整个模块的电压VCC一定要稳定,否则随着VCC的波动,运放LM358的工作电压波动,输出电压Av随之波动,最后导致A/D转换的结果波动,测量结果上下跳变。

3.2.2按键和显示电路

按键直接使用61板自带的按键,其电路如下图所示,不需要连接硬件即可使用。

图3.31*3独立按键电路原理图

显示采用LED键盘模组6位数码管的其中3位进行动态显示,电路原理如图3.4所示。

在使用时,将a至dp端接IOA8至IOA15,DIG4至DIG6接IOB3至IOB5。

图3.4显示电路原理图

3.2.3功率驱动电路模块

系统的主要功率器件为一个交流220V~1000W的电加热器,采用继电器来驱动该加热器。

继电器选择OMRONG6B-1174P型继电器,该继电器具有触发电压低(DC5V),可控功率大(AC:

8A250V),以及反应时间短等优点。

采用NPN8050三极管驱动继电器,当其控制端Ctrl加载高电平信号时三极管导通,继电器工作,当其控制端Ctrl为低电平信号时三极管截止,继电器停止工作。

继电器的周围有续流保护电路和工作指示电路。

功率驱动部分电路如图3.5所示。

图3.5功率驱动模块电路原理图

Ctrl为继电器控制信号输入端,通过单片机的IOA7控制。

J2为控制加热器的开关接口。

3.2.4UART转换模块电路

系统上,下位机的数据传输通过UART接口完成,该部分的电路如图3.6所示。

3.6UART转换模块电路原理图

系统设计要求控制系统能同PC联机通信,已利用PC图形处理能力打印显示温度曲线。

由于SPCE061A串行口为TTL电平,PC串行口为RS232电平,使用一片MAX232为电平转换驱动。

UART模组的COM1接口和PC机串口相连接,J1口的VCC、GND、Tx1分别和61板的“+”“-”、IOB10相连接。

3.2.5音频输出电路

SPCE061A内置2路10位精度的DAC,只需要外接功放电路即可完成语音的播放。

通过SPY0030功率放大器,驱动喇叭,完成语音播放。

SPCE061A通过DAC1输出语音电流信号,为了把电流信号转换为电压信号,提高输出功率,推动扬声器,在电路中接了一块SPY0030,这是一块八引脚的专用语音信号放大芯片,其增益为:

G=2*50000/(5000+R1),改变R1(1k)的大小可以改变增益值。

3.7、音频输出电路

SPY0030简介:

工作电压2.4V---6V最高输出功率达到850mW

4系统软件设计

4.1软件总体设计

程序的控制思想:

设置目标温度后,系统采样水温,且将当前温度语音播报,并通过预设温度,当前温度,历史偏差等进行PID运算产生结果fout0,通过该参数控制加热时间,从而调节加热器的平均功率,实现系统的PID控制。

整体功能通过主程序和中断服务程序配合实现。

主程序流程:

系统首先初始化I/O,Timer,UART等部件,之后进入主循环,进行温度采样和相关处理。

在系统运行过程中通过按KEY3键重新设置目标温度。

图4.1系统主程序

图4.2PID算法的流程图

中断服务程序:

中断服务包括IRQ5_2Hz中断,IRQ5_4Hz中断,IRQ2_TimerB中断,IRQ6_TMB2(1024Hz)中断,及语音播放中断FIQ-TMA中断。

其中IRQ5_2Hz用以提供1s时间以确定AD采样的时间间隔;IRQ5_4Hz中断控制数码管的闪烁,用于配合设置目标温度;IRQ2_TimerB提供溢出频率为64Hz的中断信号,配合主程序的PID运算结果fout0确定加热时间,实现加热器功率调节;IRQ6_TMB2为1KHz时基,在此中断中完成LED的动态刷新;FIQ-TMA中断为当键盘扫描时,调用语音播报函数,实时播报当前温度。

WatchDog是用来监视系统的正常运作。

当系统正常运行时,每隔一定的周期就必须清除WatchDog计数器。

如果在限定的时间内,WatchDog计数器没有被清除,CPU就会认为系统已经无法正常工作,将会进行系统复位(reset)。

SPCE061A的WatchDog的清除时间周期为0.75秒。

4.2子程序设计

4.2.1温度转换实现A/D转换:

每间隔1s执行一次温度采样操作,每次采样执行18次A/D转换;在IRQ5_2Hz中断服务程序中完成。

A/D处理:

A/D处理包括两方面内容,一是A/D值的滤波处理,二是A/D值向实际温度转换。

由于干扰或者电路噪声的存在,在采样过程当中会出现采样信号和实际信号存在偏差的现象,甚至会出现信号的高低波动,为了减小这方面原因造成的测量误差,在实际采样时采样18个点,然后再除去其中偏差较大的两个点,即一个最大值和一个最小值,再对剩余的16个点取均值,这样得到的A/D转换结果比较接近实际值。

在对数值进行滤波操作之后,还要将A/D值转换为温度,

温度转换的C语言实现过程为:

fT=(adc_data*K)–B;//换算成温度值

本方案中取K=0.1166,B=32.4;虽然Pt100的线性很好,但是当测量范围比较大时,非线性误差就会变大。

这时可以采取分段取K值的方法来实现非线性校正。

4.2.2PID控制的实现

PID工作基理:

如图4.9所示,其实PID的实质就是对偏差(e值)进行比例、积分、微分运算,根据运算结果控制执行部件的过程。

数字PID的实现:

由于计算机基于采样控制理论,计算方法也不能沿袭传统的模拟PID控制算法,所以必须将控制模型离散化,离散化的方法:

以T为采样周期,k为采样序号,用求和的形式代替积分,用增量的形式(求差)代替微分,这样可以将连续的PID计算公式离散:

这样就可以让计算机或者单片机通过采样的方式实现PID控制。

具体的PID控制又分为位置式PID控制和增量式PID控制,若公式给出了控制量的全部大小,所以称之为全量式的或者是位置式控制;如果计算机只对相邻的两次作计算,只考虑在前一次基础上,计算机输出量的大小变化,而不是全部输出信息的计算,这种控制叫做增量式PID控制算法,其实质就是求Δμ的大小。

4.2.3温度控制PID算法设计

本设计利用了上面所介绍的位置式PID算法,将温度传感器采样输入作为当前输入,然后和设定值进行相减得偏差,然后再对之进行PID运算产生输出结果f0ut,然后让f0ut控制定时器的时间进而控制加热器。

为了方便PID运算,首先建立一个PID的结构体数据类型,该数据类型用于保存PID运算所需要的P、I、D系数,以及设定值,历史误差的累加和等信息。

然后是PID运算的算法程序,通过PID运算返回f0ut,f0ut的值决定是否加热,加热时间是多少。

在实际运算时,由于水具有很大的热惯性,而且PID运算中的I(积分项)具有非常明显的延迟效应所以不能保留,我们必须把积分项去掉,相反D(微分项)则有很强的预见性,能够加快反应速度,抑制超调量,所以积分作用应该适当加强才能达到较佳的控制效果,系统最终选择PD控制方案。

4.2.4温度控制实现

通过温度的PID运算,产生结果f0ut,该参数决定是否加热,加热时间是多长。

加热时间由主函数计算,由TimerB中断控制。

主程序中通过PIDCalc函数得到f0ut参数,如果该参数大于“0”,则开启加热器。

IRQ2_TMB中断一直处于允许状态,每进入一次IRQ2_TMB中断,f0ut参数减1,直到f0ut=0,停止加热。

如果PIDCalc计算结果比较大说明离目标温度相差较大,则加热时间比较长,如果计算结果比较小,说明离目标温度相差较小,加热时间相对较短。

4.2.5上下位机的通信程序设计

下位机程序设计:

通信采用UART接口实现,下位机的UART通信代码包含UART初始化和UART发送两部分。

UART发送每隔1s执行一次,以数据包格式发送:

桢头(0xaa)、桢尾(0x55),中间两个字节为温度部分,前一个字节为温度的整数部分,后一个字节为温度的小数部分。

上位机程序设计:

上位机接收采用VC可视化编程设计,上位机接收部分程序分为初始化和接收两部分。

对于数据接收部分:

接收完数据首先判断桢头和桢尾是否正确,如果桢头和桢尾是正确的,则将接收到的中间数据还原为温度值并传送给绘图程序,如果接收到的桢头和桢尾数据是错误的,则不进行处理

绘图界面设计:

绘图界面包括串行口设置、功能按钮、曲线输出窗口三部分,如图4.10所示,在使用时选择正确的端口,上下位机的波特率,数据格式要一致。

完成以上操作,点击连接即可。

图4.10绘图部分界面

PID参数的整定:

由PID控制原理知:

比例(P)控制能迅速反应误差,减小稳态误差;比例作用的加大,会引起系统的不稳定。

积分(I)控制的作用,只要系统有偏差存在,积分作用不断地积累,输出控制量以消除误差;积分作用太强会使系统超调加大,甚至使系统出现振荡。

微分(D)控制可以减小超调量,克服振荡,使系统的稳定性提高,同时加快系统的动态响应速度,减小调整时间,从而改善系统的动态性能。

我们想要达到的目标就是:

反应速度尽可能快,超调量尽可能的小,稳态误差趋近于0。

通过测量曲线分析,最终选择KP=1.3、KD=2.0

注意:

PID参数的整定和加热器的功率,水的容积有很大关系,所以在一个系统下整定的参数在另外一个系统下可能不适用。

4.2.6语音播放的实现

凌阳SPCE061A是16位DSP特色单片机,有很强的信息处理能力,最高时钟频率可达49.152MHz,具备运算速度高等优势。

这为语音的播放、录放、合成及辨识提供了条件。

语音处理大致可分为存储、解码处理及D/A等,见下图4.11

图4.11凌阳SPCE061A单片机对语音处理过程

放音的编解码是靠调用库函数完成,凌阳公司提供了丰富的库函数,我们只要了解库函数的使用,就能轻松完成语音录放,不需要我们设计硬件电路。

凌阳公司提供了多种音频编解码算法及其API函数库,即SACM-LIB。

该库将A/D、编码、解码、存储及D/A做成相应的模块,对于每个模块都有其使用程序接口API,设计人员只须了解每个模块所要实现的功能及其参数的内容,然后调用该API函数即可实现相应功能。

其中凌阳压缩算法中SACM_A2000、SACM_S480和SACM_S240主要是用来放音,可用于语音提示,SPCE061A为音频输出提供两个DAC通道:

DAC1和DAC2,分别由经由DAC1和DAC2引脚输出。

DAC的输出范围从0x0000到0xFFFF。

如果DAC的输出数据被处理成PCM数据,必须让DAC输出数据的直流电位保持为0x8000,且仅有高10位的数据有作用。

DAC1和DAC2的输出数据应写入P_DAC1(写)($7017)和P_DAC2(写)($7016)单元。

本设计采用DAC1输出。

5系统调试

61板上配有凌阳的自行研发设计的16位单片机开发环境IDE。

此工具在Windows环境下操作,支持标准C语言和汇编语言,集编译、编程、链接、调试和仿真于一体,使用方便简单易学。

同时还提供大量的编程函数库,大大加快了软件开发的进程。

集成开发环境IDE具有友好的交互界面、下拉菜单、快捷键和快速访问命令列表等,使编程、调试工作方便且高效。

此外,它的软件仿真功能可以在不连接仿真板的情况下模拟硬件的各项功能来调试程序。

SPCE061A片内集成了一个ICE(在线仿真电路)接口,使得对该芯片的编程、仿真都变得非常方便,而ICE接口不占用芯片上的硬件资源,结合凌阳科技提供的集成开发环境(μ’nSPIDE)用户可以利用它对芯片进行真实的仿真;而程序的下载(烧写)也是通过该接口进行下载。

步骤一:

根据电路连接示意图连接硬件,并连接下载线(Probe)。

步骤二:

打开电源。

步骤三:

启动u’nSPIDE。

打开语音控制系统使用程序,编译、链接确认没有错误

步骤四:

下载程序代码到61板上。

步骤五:

运行程序。

结语

基于SPCE061A的16位特性、DSP功能以及快速的处理能力,使得该系统的数据采集和运算处理十分的方便简单,另外由于IDE支持标准的C语言函数库,使得复杂的数学运算变得轻而易举,大大减小了编程的难度。

另外采用VC实现上下位机相互通信,在上位机可以直接显示温度的变化曲线,直接观察控制的性能,并根据曲线适当的修改系统的PID参数,使控制达到最优化,同时也因为开发环境友好,易用,方便同时配有语音播放函数,这些大大加快系统开发设计。

本设计充分利用了SPCE061A的资源,发挥了芯片的性能,是SPCE061A在数据采集方面的典型使用作品。

本系统核心是控制算法的设计和实现,各方面指标基本达到题目要求。

方案的扩展:

本方案的可扩展性比较强,整个程序的程序框架已经搭建好,可以继续编写程序完成其他功能。

例如:

添加超高温报警功能;

进一步优化系统的算法,使控制曲线更加完美。

参考文献

[1]罗亚非,凌阳16位单片机使用基础。

[M]。

北京:

北京航空航天大学出版社

[2]侯媛彬,等编著.凌阳单片机原理及其毕业设计精选[M].北京:

科学出版社.2006,1

[3]张培仁,等编著.十六位单片微处理器原理及使用(凌阳SPCE061A)[M].北京:

清华大学出版社.2005,5

[4]管晓春,杨勇,基于SPCE061A的数码语音录音及播放统的设计:

[学术论文],浙江温州:

温州大学物理和电子信息学院。

2007

[5].ATMEL.8-bitMicrocontrollerwith20KBytesFlashAT89C55WD,1998

[6].JacbMillman,ArvinGrabel:

Microeletronics,2ndEdition,McGraw-Hill,I-nc.,1988

[7].AT89C51DATASHEEPPhilipsSemiconductors1999

附录二原理图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1