金乾坤,郭佑民,刘 娟,朱 鹏
(兰州交通大学机电技术研究所, 兰州730070)
基于ARM9的蓄电池在线监测系统,采用S3C2410芯片作为主处理器,在机车行驶的过程中对各节蓄电池电压和温度数据不停顿地采集、汇总、分析和存储。同时通过外接LCD实时显示电压和温度数据。最后SD卡转存到PC机,通过地面分析软件绘制出电池电压,温度曲线。监测系统能快速找出端电压上升或下降较快的一只或几只电池,将其确认为需要更换的电池,同时所采集数据也可进一步用于建立蓄电池质量模型。
系统由上位机和下位机2部分组成。上位机采用S3C2410作为处理芯片,完成数据的收集,比较和分析,实时显示和存储。下位机采用AVR单片机ATmega16作为核心,主要用于对蓄电池电压温度的采集和上传。上位机与下位机通过485总线通信,蓄电池4节为一组,由一个下位机控制。上位机采取对每个下位机轮询的方式实现蓄电池数据的收集。上位机所需电源由所有蓄电池提供,通过DM05-110s05电压转换芯片实现110 V~5 V的转换,再经ASM1117转换为3.3 V供系统使用。下位机电源由它监测的4节蓄电池提供,经ASM1117转换供下位机使用。系统结构如图1。
图1 系统结构图
2.1.1 S3C2410芯片
S3C2410芯片是基于ARM920T内核的16/32 bitRISC嵌入式微处理器,同时增加了丰富的外围资源,有利于系统开发。ARM920T由ARM9TDMI、存储管理单元(MMU)和高速缓存3部分组成。其中MMU可管理虚拟内存,高速缓存由独立的16 kbit地址和16 kbit数据高速Cached组成。
该芯片集成了1个LCD控制器,NAND FLASH控制器、SDRAM控制器、3个通道的UART等丰富的外部接口;在时钟方面也有突出的特点,该芯片集成了一个具有日历功能的RTC(实时控制)和具有PLL(MPLL和UPLL)的芯片时钟发生器。MPLL产生主时钟,使处理器工作频率最高达到203 MHz在。
时钟电路分为系统主时钟和实时时钟(RTC)。系统主时钟用于向CPU及其接口电路提供工作时钟,RTC为系统提供确切的时间,用于记录电池的电压,温度数据的时间及定期存储电池参数。系统主时钟通过设置时钟模式位OM[3:2] =00,采用外接晶振,由内部时钟电路产生时钟的方式,CPU原有的外部时钟直接输入功能被禁止。外接晶振的频率是12 MHz,系统时钟频率可由软件设置,提高了系统灵活性。
2.1.2 存储器接口
由于本系统采用了嵌入式Linux操作系统,且微处理器S3C2410没有足够的片内存储空间,需要对片外RAM和ROM进行相应的扩展。本系统采用市场上运用较多的K9F1208U0M,是64 M的8 bitNAND FLASH。其与处理器连接的电路如图2。采用2片HY57V561620并联构建32 bit的SDRAM存储器系统,共64 Mbit的SDRAM存储空间,可满足嵌入式操作系统及各种较复杂算法的运行。
图2 NAND Flash 电路图
2.1.3 LCD和SD卡接口
S3C2410集成了LCD控制器,LCD控制器相当于嵌入式系统的显卡,负责把显存中的数据传输到LCD驱动器,并产生必须的LCD控制器信号。设计中采集的电压和温度数据定时导入显示缓冲区,刷新显示。S3C2410内置有SD/MMC控制器,可以支持SD卡。系统采集的数据被保存在数据文件中,当保存一定量的数据时,挂载SD卡,把数据转存到SD卡中。
下位机由ATMEGA16,温度传感器DS18B20,蓄电池电压信号和485通信接口组成。主要功能是测量蓄电池电压和温度,并传送给上位机。ATmega16自带10 bitA/D转换器,只需把电压信号直接接入A/D口。DS18B20是1-Wire总线数字温度传感器,温度测量范围为-55℃~125℃,9 bit-12 bit可编程的转换精度。温度测量电路如图3。
图3 温度测量电路
软件结构由3个层次组成,如图4。设备驱动层依赖于底层硬件,中间层Linux操作系统和文件系统是连接设备驱动层和应用程序层的纽带。应用程序层主要有蓄电池监测软件和GUI。整个Linux系统共有4个部分:引导Linux 的Bootloader,系统选用u-boot1.3.2,Linux内核2.6.18,Cramfs文件系统,用户空间。它们位于NAND Flash中不同的分区内,系统空间分配结构如图5。
图4 软件结构图
图5 系统空间分配图
监测软件采用C语言编写,系统启动后自动运行。主要完成对下位机的查询,接收下位机传送的数据,对数据进行处理和显示,并保存在数据文件中。软件流程如图6。
图6 软件流程图
基于ARM9的机车蓄电池状态监测系统依据功能的不同,具体实现分成两部分。上位机采用ARM9内核的S3C2410芯片作为主处理芯片,同时采用ATmega16作为下位机芯片,完成对机车蓄电池状态(电池电压,温度)的采集、收集和存储的过程。同时上位机使用Linux作为操作系统,增加了系统的容错性和扩展性。目前系统的设计已经完成,并完成各模块的功能试验。运行情况表明:系统稳定性好,测量精度较高。
[1] 卢锋,吴永杰,康斌. 机车蓄电池检测技术探讨与应用[J] . 铁道机车车辆,2007(10).
[2] 韦东山. 嵌入式Linux应用开发完全手册[M] . 北京:人民邮电出版社,2008.
[3] 王宇行. ARM程序分析与设计[M] . 北京:北京航空航天大学出版社,2008.
[4] 张兴波. 基于CC2420的机车蓄电池在线检测系统设计[J] .仪表技术,2008(6).