《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 一种新型嵌入式轮参测量仪设计
一种新型嵌入式轮参测量仪设计
来源:电子技术应用2010年第6期
苏 磊,张登福
空军工程大学 工程学院航空电子工程系,陕西 西安710038
摘要: 针对传统测量仪体积大、成本高、精度难以保证等缺点,基于ARM芯片LPC2214设计了一款手持式的轮参测量仪,具有体积小、精度高、功耗低、容量大等优点。设计中结合实际情况和要求,采用灵活有效的设计方法,在充分利用现有资源的基础上,设计了符合要求的实际电路和相关程序,具有很高的经济价值和参考价值。
中图分类号: TP216
文献标识码: A
A new design of embedded train-wheel metrical instrument
SU Lei,ZHANG Deng Fu
Air Force Engineering University, Engineering College, Avionic Engineering Department, Xi′An 710038,China
Abstract: Traditional metrical instruments always have the disadvantages of large volume, high cost and uncontrollable precision. To overcome these disadvantages, a new kind of hand-hold metrical instrument, based on the ARM chip LPC2214, is designed in this paper, which is used to measure the size of train wheel. In the process of design, according to the reality and requirements, flexible and efficient methords are taken into action, making full use of the resources in existence. And the circuits, as well as the programm, have high economic value and good use for reference.
Key words : embedded system;train-wheel measure;LCD;LPC2214

    安全是一个永恒的话题,在交通运输领域尤其如此。在铁路运输中,火车车轮的磨损是影响其安全运行的一个重要因素。对车轮外形的测量,已经从早期的人工模拟式进入到如今的电子数字式,然而现有的测量仪仍然有体积、功耗以及精度等方面的不足。针对这些不足,本文提出并设计了一种以ARM芯片LPC2214为核心的新型测量仪。
1 总体设计
1.1 性能要求

    本设计的任务是设计一款手持式的火车车轮参数测量仪,用来检测车轮的磨损程度,确定车轮的工作状况,保证车辆的正常和安全运行。设计的基本原理是使用激光传感器测量车轮相应的参数,将其传给测量仪,实现数据的处理、存储和显示等。根据设计要求,需要测量的车型包括货车、客车和动车3种,车轮型号有20种,并有以下具体的要求:
    (1)在存储和显示测量数据时提供时间、地点编号、测量员编号等相关信息;
    (2)测量范围10 mm~100 mm,精度0.01 mm,并存储一定数量的测量数据;
    (3)良好的人机交互界面;
    (4)体积小,重量轻,低功耗。
1.2 电路总体设计
    根据性能指标,本设计采用NXP公司的ARM芯片LPC2214作为核心处理器件,外围器件包括实时时钟PCF8563、FLASH存储器SST25VF016B、RS232/485串口驱动芯片和电源芯片,以及液晶屏和小键盘等,如图1所示。

    LPC2214是一款性能优异的微处理器,其基于一种支持实时仿真和跟踪的32 bit ARM7TDMI-STM CPU,带有256 KB片内FLASH存储器、2个UART串口、SPI接口、外部存储器接口等,具有高达60 MHz的操作频率,完全满足设计需要[1,4]。
    本系统有5个外部传感器,其中3个位移传感器、2个激光传感器,具体参数的获取由这5个传感器实现。在数据测量中,根据车型不同,可以简要归结为如下测量方式:(1)动车型的测量,获取连在RS485线的3个位移传感器值和激光传感器4和激光传感器5值;(2)普通客车和货车的测量,先获取连在RS485线的3个位移传感器值和激光传感器4值,再用继电器闭合电磁线圈,延时2 s,读取激光传感器4值。
2 各部分软硬件设计
2.1 实时时钟设计

    实时时钟的任务流程图如图2所示。

    由于在保存测量数据时,需要同时保存测量时的时间,这样便于日后检查统计,而LPC2214内部自带的实时时钟是掉电易失的,故在设计中采用实时时钟芯片PCF8563设计了外部时钟电路。PCF8563是低功耗的CMOS 实时时钟/日历芯片,具有16个8 bit寄存器,采用I2C接口,通过SDA和SCL 2条线与LPC2214相连,使用非常简便。在其电源端接了一个1 F的电容(也可改用纽扣电池),在测量仪断电时为PCF8563提供电压,从而实现实时计时功能。
    另外,其第10~12个寄存器(09H~0BH)为分钟、小时和日报警寄存器,此处不用报警功能,而将其改为存储测量次数,节省了外部存储空间,也保证了数据的安全性。需要存储的测量次数为16 bit,考虑到3个报警寄存器并非所有位数都是有效的,实际分配为09H取8 bit,0AH和0BH取后4 bit,这样正好16 bit,满足测量数据的存储范围。
2.2 外部存储器设计
    本测量仪是一种手持式设备,对体积要求比较严格。为减小电路板面积和简化布线,外部存储器采用只有8个管脚的小封装SST25VF016B。SST25VF016B是一款16 Mbit(000000H~1FFFFFH,2 MB)SPI接口串行FLASH,其采用的CMOS SuperFlash工艺保证更低的功耗,并具有4 KB、32 KB、64 KB以及Chip-Erase等4种灵活的擦除方式。SST25VF016B的连接如图3所示。

    SST25VF016B的操作包括擦除和读写等,由于对速度的要求不严格,所以在设计中采用GPIO口模拟SPI接口。发送和接收数据的2个子程序如下:
/*******************************************
* 名称:Send_Byte()
* 功能:模拟SPI向SST25发送数据,在SCK的
*         上升沿发送1 bit的数据,共发送8个
*******************************************/
void Send_Byte(uint8 byte_OUT)
{
    uint8 i;
    for(i=0;i<8;i++)
    {
        IO0CLR=SCK;                    //SCK=0
        if((byte_OUT & 0x80)==0x80)        //输出1
        {
        IO0SET=SI;                    //SI=1;
        }
        else
        {
        IO0CLR=SI;                    //SI=0
        }
        byte_OUT=(byte_OUT<<1);        //输出0
        IO0SET=SCK;                    //SCK=1
    }
}

/*******************************************
* 名称:Get_Byte()
* 功能:模拟SPI接收数据,在SCK的下降沿接收
*         1 bit的数据,共接收8个
*******************************************/
uint8  Get_Byte(void)
{
    uint8 i;
    uint16 byte_IN=0;
    for(i=0;i<8;i++)
    {
        IO0CLR=SCK;                    //SCK=0
        if((IO0PIN>>5)&0x01)            //判断是否输入1
        {
        byte_IN++;
        }
        IO0SET=SCK;                    //SCK=1
        byte_IN=(byte_IN<<1);
    }
    byte_IN=(byte_IN>>1);
    return(byte_IN);
}
    在对外部FLASH存储空间的分配中,前80 KB用来存储20组设定的参数,用轮型编号进行索引,每组占4 KB;剩下的空间用来存储测量数据,每组测量数据分配40 B,用存储在实时时钟报警寄存器内的测量次数进行索引,理论可存储50 380组,可满足长时间使用的需要。另外,在设置和测量的数据中,有一部分参数是小数,可将其转化为整数后存储,读取时再转化为小数即可。外部存储器的读写流程如图4所示。

2.3 液晶屏驱动设计
    液晶屏型号为P160128,由于其没有自带的汉字库,故根据需要显示的汉字通过相关的软件来完成制作汉字库[3]。设计成的字库和ASCII字符约有8 KB,存储在LPC2214的内部FLASH中。此液晶屏为160&times;128点阵,而每个汉字占用点阵为16&times;16,故此屏可以显示8行汉字,每行10个,因此对于某些需要显示较多参数的地方,可以考虑分多屏显示。
2.4 键盘扫描程序设计
    根据应用需要,设计中采用4&times;5矩阵键盘,共计20个按键。键盘扫描程序是整个软件的核心程序,通过使用者对键盘的操作调用相应的子程序,完成相应的设置和控制[4]。
3 软硬件调试
    本设计中需要显示设置、测量、查询3个界面,根据屏幕的大小,设置和查询分为2屏显示,测量界面为1屏显示。
    系统开机时默认进入设置界面,设置界面1和界面2可以通过&ldquo;&rarr;&rdquo;&ldquo;&larr;&rdquo;进行切换,其中实时时钟的设定就是在设置界面2进行的。在设置界面可以对20种轮型进行参数的设置和查看,每组轮型参数的有效长度为40 B,实际分配4 KB,这样做的原因,就是在对某种轮型参数进行修改时,需要先对修改区域进行擦除,可通过调用擦除4 KB子程序Block_Erase4k()来实现,而不会影响到其他组。
    测量界面负责显示经处理后的数据信息。在测量前半部分可以设定6个相关的参数。当检测到&ldquo;确认&rdquo;键按下时,系统自动调用子函数save_test_para()来保存测量数据和实时的日期时间,同时测量次数自动加1,为存储下一组测量数据做好准备。
    当需要对之前测量的数据进行查询时,可以切换到&ldquo;查询&rdquo;界面。&ldquo;查询&rdquo;界面默认显示为刚刚保存的一组测量数据,此时可以通过&ldquo;&darr;&rdquo;&ldquo;&uarr;&rdquo;2个按键对序号进行增减,也可以通过数字键输入要查询的测量序号,然后按&ldquo;确认&rdquo;键,通过执行子函数Display_querry()调出测量数据。相对于&ldquo;测量&rdquo;界面,&ldquo;查询&rdquo;界面需要额外显示测量日期和时间,受屏幕限制,同样将其分为2屏,可以通过&ldquo;&rarr;&rdquo;&ldquo;&larr;&rdquo;2个按键进行切换。
    本文以ARM芯片LPC2214为核心,设计了一款手持式测量仪,具有较高的测量精度和非常优越的实用价值。在设计中结合实际要求和器件性能,灵活设计了相应的硬件电路和软件程序,达到了实用目的。作为一款新型的轮参测量仪,本系统最大的意义在于采用合理的器件,以相对很低的成本达到了较高的精度,既可用于测量在线运行列车车轮的磨损,还可以在生产线上对轮型尺寸进行分选,同时,可借鉴该系统的设计思想用于其他对体积、功耗、成本等要求较高的场合。
    此外,在开发过程中,考虑到用户的要求,可采用更高级别标准的器件,以适应各种不同的环境。同时,本系统的操作和显示方式简洁,方便用户使用,可广泛应用于各种相关的场合。
参考文献
[1] 周立功.ARM嵌入式系统基础教程[M].北京:北京航空 航天大学出版社,2005.
[2] 曹准,周文祥,张学川.基于手机的虚拟仪器技术研究[J].电子技术应用,2007(9):91-95.
[3] 张昀超,周明涛,靳世久.液晶显示模块测试系统[J].电子测量技术,2006,29(4):42-43.
[4] PHILIPS公司.LPC2114/2124/2212/2214 User Manual.2004.

此内容为AET网站原创,未经授权禁止转载。