基于ARM11的粉体动态定量称重控制器设计

2014-03-26 00:58牛群峰张治功惠延波
仪表技术与传感器 2014年12期
关键词:驱动程序内核粉体

王 莉,牛群峰,张治功,惠延波

(河南工业大学电气工程学院,河南郑州 450001)

0 引言

近年来嵌入式技术得到了迅猛发展,嵌入式微处理器具有体积小、低功耗、软硬件可裁剪、成本低等优点,嵌入式软件系统主要是针对操作系统而言,不同场合和应用领域可以选择不同的操作系统,常见的有嵌入式Linux系统、Widonws CE、实时系统VxWorks和μC/OS-II等。Linux系统属于开源系统,内核可以任意裁剪移植,几乎支持所有的硬件驱动程序和网络协议,有很好的应用性。文中基于嵌入式控制技术,采用ARM11嵌入式控制器,以Linux为软件平台设计了一种粉体动态定量称重控制器,实现油脂加工企业豆粕等粉体物料参数设置、在线动态定量称重和远程称重过程监控管理等功能。

1 系统总体设计

系统采用嵌入式微处理器作为现场称重控制器的控制核心,总体方案结构框图如图1所示。整个系统由称重传感器、智能仪表和执行秤体部件组成。智能仪表包括嵌入式微处理器、触摸屏、信号调理电路、通讯接口等外围扩展模块;执行秤体部件包括气缸、快中慢放料斗、称重斗等部件。

图1 总体方案结构框图

2 控制器硬件结构设计

系统控制器控制核心采用ARM11芯片S3C6410。S3C6410处理器采用ARMv6架构,是一个16/32位RISC微处理器,有丰富的内部资源,采用64/32位内部总线架构,64/32位内部总线结构由AXI、AHB和APB总线组成,存储器系统具有双重外部存储器端口、DRAM和FLASH/ROM/DRAM端口。S3C6410包括很多片上功能外设:Camera接口,TFT24bit真彩色LCD控制器,系统管理单元(电源时钟等),4通道的UART,32通道的DMA,4通道定时器,通用I/O口,I2S总线,I2C总线,USB Host,高速USB OTG,SD Host 和高速MMC卡接口以及内部PLL时钟发生器,处理器方便外部扩展。

(1)处理器主模块:系统电源模块采用LTC3406,ARM Core的供电电压为1.1 V,DDR为1.8 V.复位电路采用IMP811TEUS芯片,它可以提供稳定的触发信号,将机械按键转化为复位信号,为处理器提供复位重启信号。S3C6410内部有3个PLL,分别是APLL、MPLL、EPLL.经过分频可以得到各种相应的时钟源,如Nand时钟发生器、MFC时钟发生器,用于UART和SPI的时钟发生器等。文中采用12 MHz晶振。

(2)内存与外部存储电路:S3C6410内部有DRAM控制器,支持多种内存。可以支持SDR SDRAM,动态SDR SDRAM,DDR SDRAM 和动态DDR SDRAM。文中采用动态DDR SDRAM,型号为K4X51163PG-FGC6。

(3)外部存储Nand电路:相对于Nor Flash来说,Nand Flash的价格更便宜,所以一般都从Nand中启动引导系统,然后在内存上执行主程序代码。S3C6410支持Nand引导,硬件实现了将Nand Flash 中前8 K的内容搬到内存中执行,然后在跳到内存中执行。所以写程序时,前面8 K的程序要写成引导程序。文中选用Nand Flash 为K9F2G08,大小为256 M,能够存储较大的程序与数据。

(4)信号调理模块:粉体动态定量称重控制器采用多个称重传感器分布安装在称重斗上,控制器采用托利多的拉压式S型传感器,信号放大电路设计中AD588BQ芯片产生精准的10.000 V桥激励电压,OP213放大器满足称重传感器的小范围输入,因此减小非线性误差。

(5)A/D转换器:经过调理后的传感器信号送入S3C6410自带的A/D转换模块,进行模数转换。S3C6410采用8通道复用的ADC转换,10位分辨率,最大采样频率1 MHz,最大转换率为可达500 kSPS.

(6)LCD显示与触摸屏:系统采用的LCD液晶显示屏为4.3英寸,分辨率为640×480。S3C6410有专用的LCD控制器,控制器的数据端口和控制信号在GPI管脚和GPJ管脚上复用管脚,将GPICON和GPJCON控制寄存器设为10,驱动接口有4种,采用RGB接口。

(7)通讯模块:S3C6410提供有4个独立的串行UART端口。每个端口可以通过中断或DMA的方式与CPU进行数据交换。串行通信接口标准是RS-232C,通过串行通信能够使仪表实现通信同时完成组网。通过MAX232和SP3232都能够实现电平转换。对于带有以太网接口的智能仪表可以在工业现场组网成Ethernet总线,也可以接入Internet网络。S3C6410内部没有集成以太网控制器,系统采用DM9000以太网控制器。

3 软件设计

控制器整体软件设计包括Linux系统搭建、嵌入式驱动程序设计、触摸屏图形界面设计、应用程序设计和算法研究实现等[3]。

3.1 Linux系统搭建

u-boot移植:BootLoader就是启动加载程序,因为CPU上电启动以后要进行一部分硬件的初始化等操作,再来引导Linux操作系统启动。u-boot是BootLoader的一种,它可以支持多种处理器、多种操作系统。u-boot要完成的主要功能有:初始化SDRAM(DDR),从Flash上读出内核,初始化时钟,关看门狗,硬件相关的初始化(如网卡和串口)等。控制器用到的开发环境与工具有Ubuntu10.10、交叉编译器arm-linux-gcc-4.3.2、u-boot1.1.6源码。在Linux服务器上安装交叉编译工具链arm-linux-gcc-4.3.2,用解压缩命令将其解压到/usr/local/arm目录下,然后就可以使用arm-linux-gcc命令来编译程序。编译u-boot时,首先要下载u-boot1.1.6源码,然后放到Ubuntu10.10服务器上解压缩,最后配置之后用arm-linux-gcc命令编译。编译之后会生成system.map、u-boot elf/u-boot.bin、和u-boot.srec4个文件,此时将生成的u-boot.bin二进制文件下载到Nand中。u-boot启动之后可以通过串口观察到启动信息如图2所示。

图2 u-boot移植后启动界面

Linux内核的移植与裁剪:u-boot启动之后会加载内核镜像,加载之后就将控制权交给内核。但是对于启动的过程来说内核最终要挂接根文件系统,内核也需要对源码进行修改配置、编译之后才能使用。移植前下载Linux内核,文中采用的版本是2.6.36.2。将下载好的内核源码Linux2.6.36.2.tar.gz放到Linux服务器Ubuntu10.10上,解压缩。然后完成修改顶层的Makefile文件,配置内核,生成内核镜像文件,启动内核等工作。启动界面见图3。

图3 u-boot移植后启动界面

制作根文件系统:Linux的根文件系统存放系统启动所必须的文件,如内核的镜像文件、内核启动后要运行的第一个程序init、给用户提供界面的shell、以及应用程序所依赖的库,这些集合统称为根文件系统。Linux文件系统的选择与硬件相关,因为仪表中需要大量的数据存储,所以使用Nand Flash存储器,而YAFFS格式的文件系统最合适Nand Flash。确定制作1个YAFFS文件系统作为根文件系统。制作并移植根文件系统的步骤包括创建目录、创建节点、安装glibc库、制作镜像文件等,最后烧写到nand相应的分区。根文件系统移植后界面如图4所示。

图4 根文件系统移植后界面

3.2 嵌入式驱动程序设计

S3C6410的A/D转换器AIN0-AIN3为模数转换正常通道,AIN4-AIN7为触摸屏通道。A/D转换的驱动程序是该控制器的核心驱动,关系到仪表采集数据的精度。该控制器A/D驱动是字符设备驱动,包括cdev结构体创建设备号、定义file_operations结构体、填充file_operations结构中的成员函数、填写注册和卸载驱动模块函数、模块声明加载与卸载等步骤,驱动程序编写完成之后用make module命令编译成模块生成1个.KO文件,然后将这个.KO文件放到服务器上下载到文件系统中,最后用insmod命令加载驱动,之后应用程序就能够调用驱动读取AD转换的数据。

触摸屏的驱动与A/D转换驱动的结构相同,只要将A/D转换的模式设置成自动X|Y位置转换模式即可。需要注意的是触摸屏与A/D共用一个中断,同时使用时,在A/D转化时会导致触摸屏不能使用,解决的方法是在ADC驱动里,开始A/D转换前屏蔽触摸屏中断,转换完后再开中断。

Linux为显示设备专门提供了一类驱动程序,叫帧缓冲(FrameBuffer)设备驱动。实际操作中用户只要在显示缓冲中填写要显示的数据,帧缓冲驱动所做的工作主要是:编写初始化函数初始化LCD控制器,然后分配一片缓冲区空间将起始地址给LCD控制器,最后注册fb_info结构体。填充fb_info结构体中函数指针fb_ops的结构成员。

3.3 嵌入式应用程序设计

系统整个工作流程:秤体模式、空中量等参数设置后,控制快中慢放料斗实现快、中、慢三级给料,将称重传感器的实时信号经信号调理之后送给微处理器,微处理器根据传感器数据,当物料达到设定值时关闭上面的放料斗,称重斗卸料,如是包装秤,控制夹住包装袋,包装完成后松袋,完成称量工作。参数设置、称量结果等数据在触摸屏显示,工作过程参数和数据可以通过通讯接口传给上位机,也可以通过打印口输出。整个工作过程根据控制程序和算法,实现粉体物料参数设置、在线动态定量称重和远程称重过程监控管理等功能,在保证称重精度的前提下,提高了称重速度。控制器软件流程图如图5所示。

图5 控制器软件流程图

3.4 数据滤波和空中量自动修正算法

该控制器的信号波动具有周期性,且在拐角地方具有突变性,经过分析各种滤波算法的优缺点后,采用滑动平均滤波算法对干扰有良好的抑制。

控制器采用三级给料装置,以大幅减少落料冲击力和空中落料误差引起的计量误差。仪表最后显示的称重数值为停慢进、关进料门后,停慢进时刻实测数值加上空中落料之和。此外,设计了一种空中量自动修正算法,使控制器进行几次称重计量后,误差精确地控制在要求范围之内。

算法每进行一组称重计量,实时迭代称重误差,修正空中量,使误差快速收敛到系统满足的最小误差值,迭代结束。空中量初始值、修正次数、修正幅度进行初始化设置。

算法的具体实现:根据用户设定的修正次数CORRECT_NU,如CORRECT_NU=4,那么每当称量4次为一组,将其每次误差值(实际的重量减去设定值,有正有负)加和平均。然后根据设定的修正幅度(小于修正的次数)SCOPE_NU得出修正后的误差值AF_COR= XSCOPE_NU/CORRECT_NU。最后将此误差值作为下一组称重计量的空中量修正值,作为新的空中量,进行下一组称量,误差达到设定值结束迭代。

空中量自动修正算法子程序:

#define CORRECT_NU 4

#define SCOPE_NU 2

double modif_aerialvalue(double set_value,double Aerial_value,double real_value)

{

static double error[CORRECT_NU];

static double temp,

double AF_CORR;

static i=1;

error[i-1] = real_value- set_value;

temp += error[i-1];

if (i== CORRECT_NU)

{

AF_CORR= temp*SCOPE_NU/CORRECT_NU;

Aerial_value += AF_CORR;

return Aerial_value;

break;

}

}

4 结束语

文中设计了一种基于ARM11的粉体动态定量称重控制器。详细介绍了该仪器的硬件组成和软件设计。该仪器采用ARM11嵌入式控制器,以Linux为软件平台完成了A/D转换,触摸屏等驱动程序及应用程序的编写,研究数据滤波和称重误差修正算法以提高称重精度,实现油脂加工企业豆粕等粉体物料参数设置、在线动态定量称重和远程称重过程监控管理等功能。该仪器具有体积小、精度高、功能可扩展等优点,为粉体物料动态计量手段提供一种有效途径。该仪器可根据不同行业需求,在软件上稍作更改即可进行功能扩充或修改,应用于加工过程中需要动态定量称重的许多行业,应用前景广泛。

参考文献:

[1] 牛群峰,王莉.基于ARM9的粮食在线计量智能控制系统.仪表技术与传感器.2011 (12):70-72.

[2] 赵广平,孙雯萍,孙建军.电子称重技术现状及发展趋势.仪表技术与传感器,2007 (7):76-77.

[3] 张治功.嵌入式粉体计量管理控制技术研究:[学位论文].郑州:河南工业大学,2013.

猜你喜欢
驱动程序内核粉体
《中国粉体技术》期刊入选WJCI
多内核操作系统综述①
《中国粉体技术》期刊入选WJCI
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
包裹型SiO2/Al复合粉体的制备及烧结性能研究
超细钼铜复合粉体及细晶钼铜合金的制备
阻止Windows Update更新驱动程序
Linux内核mmap保护机制研究
计算机硬件设备驱动程序分析