图3 码盘光耦信号收集电路
以上的硬件电路再加上传动装置等,就构成了采集系统的硬件基础设备。
2.2 程序设计
本文设计的采集系统,所采集的数据是纸币上等距离点上的数据,采集到的数据作为RBF神经网络分类器的输入,并用它来判断纸币的真假,从而使纸币识别系统决定是否接受被检测的纸币。可见,能正确的取得纸币的数据对这些算法来说是非常重要的。当纸币的一端进入纸币通道时,位置传感器提示系统,纸币进入预定的开始进入位置,而后通过马达和传动装置,纸币就被卷入纸币器中。马达转过相同的角度,纸币也就移动相同的距离,而码盘光耦电路每产生一个反馈信号,马达转过的角度是一个固定值,纸币移动距离也就是一个固定值,那么根据这个反馈信号就能实现固定等距离点的采集, 所以硬件的设计是能保证,当纸币上的定点到达纸币识别系统特殊光发光部件和接收部件中间时,通知采集程序此时数据有效。马达转过多少角度码盘光耦产生反馈信号,是由码盘光耦的规格决定。
数据采集系统的程序部分要解决的问题,就是能够及时根据码盘光耦电路的反馈信号,实时的将特殊光传感器中的数据读出,而后保存。由于uClinux操作系统本身的限制,纸币识别系统中只有一个实时任务即采集,所以考虑采用中断的方式解决这个问题 。
在本系统中,根据采样原理,每6毫秒采集一次数据,选用了适合本采集系统规格的马达和码盘光耦。为了使基于S3C4510B和uClinux的纸币识别系统充分发挥同时采集和处理数据的能力,可以从S3C4510B的内存中开辟一个独立的区域,该区域是用来提供给非实时程序和采集系统共享的内存,专门用来存储采集数据,这样非实时程序就不需要调用系统调用或者驱动程序去访问采集到的数据,从而大大提高了将采集数据送给非实时程序的速度,提高了处理速度。
3 纸币识别
3.1 纸币识别硬件设计
根据前面讨论的要求,采用S3C4510B芯片设计的纸币识别器硬件结构如图4所示,它包含的主要功能模块有:S3C4510B中央处理器、系统时钟和复位模块、外扩存储单元、板载电源模块、串口通信模块、网络通信模块、电机驱动模块、纸币检测模块以及相关的信号采集模块。
图4 纸币器硬件结构图
为了支持日常工作和智能升级的需要,外存存储单元采用两片FLASH存储芯片和一片SDRAM, 串口通信模块的设计时使用MDB和RS232,采用S3C4510B UART单元提供的两个异步串行I/O端口分别给MDB和RS232各一个。在网络接口设计时,由于S3C4510B内嵌一个以太网控制器,这里采用一个PHY芯片RTL8201BL与其搭配实现一个10M/100M以太网接口,对外接头使用RJ45接头。
3.2 纸币识别软件设计
3.2.1 软件流程
整个系统的软件设计采用模块化结构,其主体框架是通信和识别分时共享。主程序主要以通信模块为主,通过设置各种标志位,然后把相应模块作为子程序嵌入其中。当纸币未到时,程序工作在通信模块中,通过检测各个标志位执行相应操作,保持与上位机的通信。 当上位机允许识别器识别的标志位有效,并且纸币到的标志位有效时,程序转入识别模块,这时识别器与上位机的通信断开,当识别处理完成后,唤醒通信模块继续通信。这样整个系统分时共享,程序流程简单明了,可读性和可扩展性好。主程序流程为:
(1) 初始化部分 包括通信的初始化和识别的初始化。