摘 要:以ATmega128单片机在钢水液位监控系统的信号处理子系统为例,详细介绍了系统对模拟量、数字量以及开关量的采集与处理过程,用LCD显示模块显示数据和状态的方法说明了一些为节省单片机引脚资源而采取的设计技巧,通过软件与硬件的结合,使信号的处理效果达到设计要求。
关键词:ATmega128;单片机;信号处理
在钢铁冶金的连铸生产过程中,维持结晶器中钢水液位的基本稳定对产品质量有着举足轻重的作用。钢水液位高度的波动太大会使结晶器中的保护渣等夹杂物带入钢水中,不仅影响铸坯的质量,严重时甚至会导致钢水溢出等重大生产事故的发生。为了提高钢坯的产品质量,避免生产事故,降低操作工人的劳动强度,提高生产自动化水平,就必须有一套高精度的钢水液位控制系统,使结晶器中钢水液位高度波动范围控制在5 mm以内。
结晶器的钢水液位控制系统由三个子系统构成:(1)信号检测与放大子系统;(2)信号处理子系统;(3)PLC及执行机构控制子系统。其中(1)、(3)两个子系统的功能相对单一。信号检测与放大子系统的主要功能是通过电涡流传感器及其高精度放大器把钢水液位高度转换成相应的电压信号,通过温度传感器将温度转换成相应的电流信号;PLC及执行机构控制子系统的主要功能是与信号处理子系统通信,发出开浇命令,接收其应答信号,在开浇过程中根据信号处理子系统的输出电流大小,通过PLC和执行机构控制中间包的塞棒开启度,从而控制注入结晶器的钢水流量,使结晶器的液位高度波动范围小于5 mm。
系统的核心部分是信号处理子系统,其结构框图如图1所示。
1 信号处理子系统的硬件设计
信号处理子系统是以ATmega128单片机为核心的嵌入式系统。系统中的输入/输出信号包括:用来实现开浇联络的1对开关量——开浇与应答;2路通过A/D转换实现的模拟量输入——液位电压和温度电流;3路通过D/A转换实现的模拟量(图1中只画出2路)输出——液位电流、温度电流及mV补偿。输入/输出设备包括:1个带触摸屏、分辨率为320×240的LCD显示模块;4个按键的键盘;4个用来指示状态的发光二级管;还有1个用来发音报警的蜂鸣器。其主要模块设计方案介绍如下。
1.1 单片机
单片机采用Atmel公司生产的8 bit、增强型AVR单片机ATmega128L,其引脚数为64个,I/O端口有53个,片内有128 KB的Flash、4 KB的SRAM和4 KB的E2PROM,还有两个8 bit的定时器和两个16 bit的计时器;具有8路10 bit A/D转换器。片内资源比较丰富,性能可满足本子系统使用要求。
1.2 键盘
为了节省引脚资源,本系统没有采用独立按键方式,而是利用一路片内A/D转换来实现4个按键的识别。通过不同按键按下后串联接到+5 V的使分压电阻输出电压的不同来识别不同的按键。4个按键的操作分别对应为运行(Run)、调整(Adj)、线性化(Line)、设置(Set)4个功能。其中,“运行”是指系统的正常运行;“调整”是指在开浇之前,把系统调整到一个初始状态,具体操作是在液位高度为150 mm时,通过对前级放大子系统及信号处理子系统的mV补偿,使液位电压值为4.96 V;“线性化”是在0~150 mm的范围内,通过传感器配合设定16组不同液位与电压的数据;“设置”是对线性化数据输入的确认。
1.3 模数转换(A/D)
虽然单片机片内有10 bit的A/D转换器,但由于现场对模块量的采集精度要求较高,所以本系统采用了12 bit A/D转换器LTC1291来实现液位模拟量的采集[1]。这是一种具有两个通道的12 bit串位ADC芯片,由于输入的液位电压范围是0~6 V,所以供电电压设为6 V。转换后的数值量以串行方式提供给单片机,作为毫伏补偿输入和相应液位电流输出的依据。
1.4 数模转换(D/A)
本系统的D/A有3路,一路是为了调整初值而对前级放大输出的毫伏补偿,另两路是为了输出与液位高度(0~150 mm)、传感器温度(0~100 ℃)对应的电流4 mA~20 mA。
(1)毫伏补偿
输出毫伏补偿电路如图2所示,其目的是在开浇前,通过补偿将液位高度与对应的输出电压调整到一个确定的对应值,比如在液位高度为150 mm时,使前级放大板的输出电压为4.96 V,若高于此值,则进行负补偿,低于此值,则进行正补偿,所以补偿的毫伏值是可正可负的,D/A转换器采用双12 bit分辨率的LTC1446[2],输出运算放大器LT1077的供电电压为±5 V。补偿是有限制的,其输入数值范围为0~±150,每个数值对应的输出模拟量大小可通过电位器RS1调整。
(2)液位电流输出
实现将液位高度转换成4 mA~20 mA电流输出的电路先由12 bit D/A转换器LTC1451[3]将液位高度的数值量转换成模拟量电压,然后由AD694输出相应的电流。LTC1451是一种12 bit分辨率串行D/A转换器,从Din输入的数字量是A/D转换器采集的液位电压,从Vout端输出的是相应的模拟电压,通过电流输出模块AD694转换成模拟量电流4 mA~20 mA,从其Iout端输出。
1.5 LCD显示屏
LCD显示屏采用的是分辨率为320×240、带触摸屏的LCD模块,显示的主要内容为系统运行界面、工作调整界面、补偿界面和线性化界面及相关参数。
(1)系统运行界面
系统起动或按“Run”按键进入系统运行界面,如图3所示。显示内容包括3个部分:其一是输入量、输出量和状态量的显示;其中输入量有:液位、电压和温度;输出量有:液位电流、温度电流和补偿值;状态值有:超温(没有超温不显示)、开浇/停浇、正常/异常。其二是以20像素/s的速度动态绘制反映液位波动情况的实时曲线。其三是通过触摸屏实现6个按键,其功能如下:
①缩放:分别用放大倍数为1、2、4的比例,对液位高度的坐标进行缩放。放大倍数为1时,液位高度全程范围是0~125 mm;放大倍数为2时,液位高度全程范围是0~150 mm;放大倍数为4时,液位高度全程范围是0~200 mm。
②下移:下移液位曲线窗口至适当的坐标范围。
③上移:上移液位曲线窗口至适当的坐标范围。
④翻页:在显示历史曲线状态时,可翻看滚动储存的五个页面之一的液位曲线。
⑤实时:从显示历史曲线切换到显示实时曲线的状态。
⑥历史:从显示实时曲线切换到显示历史曲线的状态。
(2)工作调整界面
工作调整界面通过面板上的“Adj”按键进入,其主要作用是在开浇前对前级放大板进行调整,调整过程中显示液位高度和对应的电压值。
(3)自动补偿界面
自动补偿界面可以在工作调整结束返回系统运行界面时,由系统执行自动补偿时显示,也可以在开浇指令下达后执行自动补偿时显示,目的是为了避免工作调整时,因人工调整的精度不够准确而造成的误差。
若补偿成功,则返回系统运行界面,并在其中显示相应的补偿值;补偿失败,则显示异常,并用蜂鸣器报警。
(4)线性化界面
线性化界面示意图如图4所示,目的是为了设置不同液位高度所对应的液位电压。由于传感器参数不一定完全相同,所以一旦更换了前级信号检测子系统中的传感器,就必须做一次线性化处理。具体操作是在0~150 mm范围内设置16组数据,通过人工调整检测钢板和传感器之间的距离来模拟液位高度,设置每个点的液位高度和相应的电压。其中,序号值分别为0~15,高度为液位高度的毫米值,原值为本次修改前该液位高度对应的电压值,现值是对当前液位高度设置的液位电压值。设置好的数据保存在单片机片内的E2PROM中。
线性化界面可通过面板上的“Line”按键进入,显示线性化界面后,再按“Line”按键可在16个柱形图中循环切换具体位置(柱形图由空芯变为实芯显示),再通过调整钢板与传感器的间距,在需要设定时按下面板上的“Set”按键即可确认设置,设置确认后即在线性化界面上显示出参数及相应的矩形图。
2 信号处理子系统的软件设计
软件设计是用C语言编程实现的,通过ICCAVR编译生成目标代码,再通过软件AVR Studio 4和仿真器JTAG下载到ATmega128单片机中。
整个程序在主控模块的大循环控制下运行,在运行过程中,根据系统的当前运行状态以及面板按键和LCD触摸屏按键的监控结果调用相应的子程序完成具体功能。
2.1 主控模块结构
主控模块在完成对系统进行的初始化工作后,即显示系统运行界面,然后进入主循环。在主循环中根据运行状态和采集到的用户对面板按键和系统运行界面中的触摸屏按键的操作,对当前流程和状态进行相应的显示和处理,其结构框图如图5所示。
2.2 模数转换(A/D)子程序
A/D转换采用的转换器是LTC1291,这是一种串行接口的12 bit ADC,其操作步骤描述如下:
(1)发送低电平的片选信号到ADC的CS引脚;
(2)发送正脉冲到ADC的DIN引脚;
(3)发送4 bit的控制信号,明确通道号和数据格式;
(4)采用串行方式逐位将转换的结果从DOUT引脚读出;
(5)转换结束,片选信号上升为高电平。
需要注意的是:串行数据每个bit的I/O都是在CLK引脚的脉冲配合下完成的。
2.3 数摸转换(D/A)子程序
D/A转换用来实现根据当前液位高度输出相应电流给PLC及执行机构,D/A转换芯片用的是LTC1451,这是一种串行接口12 bit的DAC,其DIN数据输入将12 bit二进制数据通过CLK时钟脉冲逐位地输入到LTC1451的寄存器中[3],供LTC1451进行D/A转换,并将转换后的模拟信号,由DOUT引脚输出给AD694芯片,再经AD694将此模拟信号转换成4 mA~20 mA的直流电流信号给PLC控制子系统。
2.4 LCD显示子程序
系统根据需要组织了24×24和16×16两种汉字库,还组织了8×16和8×13两种字符点库,所有点阵库存放在ATmega128单片机的程序存储器中,在显示界面时,通过相应子程序来实现。实现显示功能的子程序是通过分区方式直接写入显示存储器的不同区域来完成的,主要子程序按功能可分三类:
(1)基本操作子程序。主要包括写命令、写数据、在指定坐标处读/写入数据等。
(2)字符及图形显示子程序。主要包括汉字和图形的绘制子程序。
(3)触摸屏处理子程序。主要包括SPI读/写数据及响应触摸、确定键位等子程序。
3 实际系统运行情况
本系统已投入实际,稳定运行后,液位波动范围可控制在3 mm以内,完全达到了设计要求。
本系统成功地解决了冶金企业连铸生产过程中对钢水液位监控的信号处理问题,其设计思想与实现方法可推广应用到其他系统中。
参考文献
[1] Linear Technology Inc.LTC1291 single chip 12-bit data acquisition system[EB/OL].[2011-03-02].http://cds.linear.com/docs/Datasheet/1291fa.pdf.
[2] Linear Technology Inc.LTC1446/LTC1446L dual 12-bit rail-to-rail micropower DACs in SO-8[EB/OL].[2011-03-02].http://cds.linear.com/docs/Datasheet/1446fa.pdf.
[3] Linear Technology Inc.LTC1451/LTC1452/LTC1453 12-bit rail-to-rail micropower DACs in SO-8[EB/OL].[2011-03-02].http://cds.linear.com/docs/Datasheet/145123fs.pdf.