(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
附录二原理图