文献标识码:A
安全是一个永恒的话题,在交通运输领域尤其如此。在铁路运输中,火车车轮的磨损是影响其安全运行的一个重要因素。对车轮外形的测量,已经从早期的人工模拟式进入到如今的电子数字式,然而现有的测量仪仍然有体积、功耗以及精度等方面的不足。针对这些不足,本文提出并设计了一种以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 bitARM7TDMI-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×128点阵,而每个汉字占用点阵为16×16,故此屏可以显示8行汉字,每行10个,因此对于某些需要显示较多参数的地方,可以考虑分多屏显示。
2.4 键盘扫描程序设计
根据应用需要,设计中采用4×5矩阵键盘,共计20个按键。键盘扫描程序是整个软件的核心程序,通过使用者对键盘的操作调用相应的子程序,完成相应的设置和控制[4]。
3 软硬件调试
本设计中需要显示设置、测量、查询3个界面,根据屏幕的大小,设置和查询分为2屏显示,测量界面为1屏显示。
系统开机时默认进入设置界面,设置界面1和界面2可以通过“→”“←”进行切换,其中实时时钟的设定就是在设置界面2进行的。在设置界面可以对20种轮型进行参数的设置和查看,每组轮型参数的有效长度为40 B,实际分配4 KB,这样做的原因,就是在对某种轮型参数进行修改时,需要先对修改区域进行擦除,可通过调用擦除4 KB子程序Block_Erase4k()来实现,而不会影响到其他组。
测量界面负责显示经处理后的数据信息。在测量前半部分可以设定6个相关的参数。当检测到“确认”键按下时,系统自动调用子函数save_test_para()来保存测量数据和实时的日期时间,同时测量次数自动加1,为存储下一组测量数据做好准备。
当需要对之前测量的数据进行查询时,可以切换到“查询”界面。“查询”界面默认显示为刚刚保存的一组测量数据,此时可以通过“↓”“↑”2个按键对序号进行增减,也可以通过数字键输入要查询的测量序号,然后按“确认”键,通过执行子函数Display_querry()调出测量数据。相对于“测量”界面,“查询”界面需要额外显示测量日期和时间,受屏幕限制,同样将其分为2屏,可以通过“→”“←”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.