3 数据采集系统模块化设计
3.1 HMC5883L数据采集模块设计
场景数据模块是整个测量系统的基础部分,也是整个电路工作的必不可少的一个模块.其中包括了测量方位角用的HMC5883L磁阻传感器芯片以及测量倾斜角 的三轴重力加速度传感器ADXL345?HMC5883L是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领 域.
HMC5883L的时钟是一系列的I2 C驱动时钟周期.本模块的设计目标在于将三维磁阻传感器芯片HMC5883L良好的驱动并确定时序中数据的传输顺序.目前采用FPGA引脚对相对应的时序进行控制.
HMC5883L传感器固定的时序中完成对数据的采集,采集到的数据是具有特定格式的数字量,需要经过一定算法分析和数据整理才能送往上位机进行操作. FPGA 与HMC5883L的通信采用了I2 C的通信手段,在代码编写的过程中采用了标准速率模式100kHz,在总线规定中,总线的位格式是一个8位数据/地址传送和1位应答位.如图3所示的格式 的时序情况.
HMC5883L的工作流程:首先要芯片的初始化进行数据等待,之后使用I2C的传输方式对数据进行控制.一个测试前的过程需要对应有的测量寄存器进行对 应的配置.首先发送配置寄存器A的配置量,为写操作,寄存器指令为默认值;第二步发送配置寄存器B的配置量,同样也为默认值;第三步发送模式寄存器的配置 量,即发送数据0X00(即连续测量模式).此时配置的寄存器的流程已经走完.之后进入读操作模式,此时根据时钟的采样速度,循环对传感器内部寄存器 03-08进行操作,得到X?Y?Z 三个方向上的数据,读入到代码设定的寄存器中.具体操作流程如图4所示.
3.2 ADXL345数据采集模块设计
ADXL345在虚拟场景系统中用于测量倾斜角,它的时钟驱动也是一系列的I2 C驱动时钟周期.本模块的设计也是针对于ADXL345的时钟驱动和对应的数据读取所进行的.倾斜角的寄存器内容的获取是整个模块的主要内容.
在实际的场景系统中主要用到了X?Y?Z 三个方向上的偏移寄存器,用于测量中修正原始位置的测量误差.对于数据采集速率则是由寄存器OX2C即寄存器BW_RATE的CH0-CH3所控制.对于 三维重力加速度传感器而言,主要的初始化也是通过常见的I2 C总线与FPGA 进行通信,在数据获取方面集中在X?Y?Z 三个重力方向上的寄存器数据.其时序图如图5 所示,代码编写过程中与HMC5883L共用总线同时都受FPGA的控制,属于系统控制的从端.同样的,三维重力加速度传感器也需要根据测量需求去输入初 始化寄存器的配置.然后对需要读取的寄存器数据位进行总线读取,并存入到配置好的8bit寄存器保存好打包传往上位机进行数据分析.
3.3 场景数据分析
在地磁的测量过程中需要对数据进行必要分析才能得到对应的方位角度.
由HMC5883L 和ADX345传感器我们可以得到地磁场在空间三个轴上的分量磁场大小分别为Hx?Hy?Hz以及加速度传感器测量俯仰角φ 和横滚角θ.
式中Ax?Ay?Az是重力加速度传感器三个方向上测量得到的加速度值.在特定的公式计算下可以大致得到目前物体所处的顺时针方位角a为
以上是初步估计出来得到方位角参数,计算中不可忽略的还有HMC5800L还受到外部磁性干扰,其中较为突出的是硬磁效应和软磁效应[8~9]?一般而言 对于硬磁效应,我们采取的方法是将物体至于场景中旋转360°,然后经过多次的采样得到X?Y?Z 坐标的最大值Xmax?Ymax?Zmax和最小值Xmin?Ymin?Zmin?然后对于硬磁效应来说就是偏移量为
硬磁效应只需要使用测试的数据值加上off 的偏移值便可,而对于软磁效应,补偿的方法比较复杂,一般可以使用公式进行适当的估算,项目中初步使用式(12)进行补偿.其中Xr为真实的无干扰的坐标 值,a为其干扰系数,一般软磁干扰就需要大量的数据去得到a 的值.一般情况下可以采取特定的角度进行数据采样,然后根据数据的
实际值Xr和对应无干扰的值Xc进行运算,求出a的这个系数的值便可.
3.4 以太网通讯模块设计
LAN8700是SMSC公司的一款以太网物理层芯片.
LAN8700由编码器/解码器.扰码器/解扰器.波形整形器.输出驱动器.自适应均衡双绞线接收器.时钟数据恢复功能模块组成.
FPGA模块编程中定义了UDP_User_int模块来实现数据打包的详细过程,另外MAC的物理层通信由MAC_top模块来实现,包括PHY的初始 化.时钟的控制.发生数据的控制.MII接口的控制.接收数据控制,寄存器的控制等,都定义了UDP_TOP顶层模块来实现FPGA与它们的接口顺利传输 数据.以太网驱动模块实现的RTL门级结构图如图7所示.
其中ip_local和mac_local是本地IP和MAC地址;每组E_RXD和E_TXD都是4个32位数据,E_RXD是接收MAC层的数 据,E_TXD是发送给MAC层的数据;每组send_zb_value都是64个32位数据,打包成了UDP包,send_zb_value是发送至以 太网的UDP包,同时定义了send_en来作为发送数据的使能信号;E_COL和E_CRS分别是冲突检测和载波侦听信号,他们的作用是用来控制着 UDP包的正确发送.
4 结语
设计中使用了HMC5883L芯片对物体的方位角进行测定,使用辅助芯片ADXL345来判定倾斜角和物体翻滚姿态,使得物体在虚拟场景中的实际情况更为 精准.利用FPGA对数据的高速处理能力将采集到的场景定位内容迅速分析处理并且通过以太网控制芯片发往局域网中的上位机中,最终在上位机实现虚拟场景的 变动.整套硬件系统能够稳定的工作在研发的项目之中,工作性能良好.能耗低,精度可达1°以内的范围.