本站小编为你精心准备了惯性传感器数据采集系统设计参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
摘要:
文章介绍了一种基于STM32的惯性传感器数据采集系统的设计方法。采用STM32作为核心处理器,通过SPI通信协议完成核心处理器对惯性传感器数据的采集,并通过RS232串口实现核心处理器与上位机实时通信。阐述了系统工作原理以及相关硬件和软件设计,核心处理器内部集成功能模块丰富,无需外部扩展芯片,大大简化了系统设计。实际数据采集过程及结果表明,系统具有软硬件设计稳定可靠、采集数据真实准确、数据显示和保存方便等优点。
关键词:
STM32;惯性传感器;数据采集;SPI通信
近年来,随着半导体集成电路微细加工技术的快速发展,微机电系统(MEMS,Micro-Electrical-MechanicalSystem)得到了快速发展,MEMS惯性器件包括MEMS陀螺仪和MEMS加速度计[1]。由于它具有集成化、智能化、微型化、可靠性强、抗冲击能力强等特点[2],并且数据融合框架以及硬件性能的提高[3-4]使得越来越多的国家开始研究这种微型化、低成本的微型惯性导航系统。实时、高效地采集MEMS惯性器件测量的数据对于后续的导航定位、数据分析具有极其重要的意义。目前,针对不同的应用环境,MEMS数据采集系统核心器件有FPGA、DSP、ARM、单片机等,FPGA、DSP多应用于数据采集速率要求较高的环境[1],但是成本较高,而本系统所采集数据将用于对惯性器件数据进行误差分析,考虑数据采集速率与成本两方面要求,本系统采用ARMCortexM3内核的STM32F103VBT6作为核心处理器件对惯性传感器ADIS16488A的陀螺仪和加速度计进行数据采集,既保证了较低的设计成本又保障了一定的数据采集实时性。
1器件性能特点
本数据采集系统的惯性传感器采用战术级10自由度惯性传感器ADIS16488A,核心处理器采用STM32F103VBT6,通过STM32F103VBT6核心处理器控制ADIS16488A完成数据采集并通过串口将数据实时发送到PC机端。以上三者通信示意图如图1所示。
1.1ADIS16488A惯性传感器
1.1.1ADIS16488A性能特点ADIS16488A是一款完整的惯性系统,内置一个三轴陀螺仪以及三轴加速度计、一个三轴磁力计、一个压力传感器和温度传感器。陀螺仪和加速度计用以完成对惯性器件数据的测量,三轴陀螺仪可提供±450°/秒动态范围,三轴加速度计动态范围为±18g,该系统可实现可编程工作与控制,SPI和寄存器结构针对数据收集和配置提供简单的接口[5]。该系统通过单电源供电方式运行,电源工作电压为3.0V至3.6V,可在-55℃至+105℃环境温度下工作。ADIS16488A的工作功能框图如图2所示[5]。
1.1.2ADIS16488A寄存器结构ADIS16488A寄存器结构是连接传感器处理系统与外部主机处理器的桥梁。ADIS16488A寄存器包括输出寄存器和控制寄存器。输出寄存器包括最新传感器数据、实时时钟、错误标志、报警标志和识别数据。控制寄存器寄存内容包括采样速率、滤波、输入输出、报警、校准和诊断配置选项[5]。ADIS16488A与外部处理器之间的所有通信都会读取或写入其中一个用户寄存器。ADIS16488A寄存器结构采用分页寻址方案,包括13个页面,每个页面含有64个寄存器位置。每个寄存器都是16位宽,每个字节在相应页面的存储器映射内都有唯一的地址[5]。ADIS16488A寄存器工作的基本原理如图3所示。
1.1.3ADIS16488A引脚配置ADIS16488A引脚分配图如图4所示[5]。
1.2STM32F103VBT6核心处理器
1.2.1STM32F103VBT6性能特点STM32F103VBT6使用高性能的ARMCortex-M332位的RISC内核,工作频率为72MHz,处理器内置高速存储器分别为128K字节的闪存和20K字节的SRAM,并且系统内置增强的I/O端口以及连接到两条APB总线的外设[7]。器件包含3个16位的定时器、1个PWM定时器、2个12位的ADC以及各类通用的通信接口(2个I2C总线接口、SPI通信接口、3个USART、1个USB和1个CAN)。STM32F103VBT6可工作于-40℃到+105℃的工作范围,外部供电电压范围为2.0V到3.6V,并且器件设计的各类省电模式很好地实现了低功耗的要求[7]。
1.2.2Cortex-M3内核结构Cortex-M3内核是建立在高性能哈佛结构三级流水线基础上,为ARM7架构。为提高各个时钟周期的性能,普遍采用时钟选通相关技术,比如单周期内32位计数乘法和硬件除法,性能得到了较大提高。通过基于堆栈异常模式的设计,大大缩小了器件尺寸[6]。指令接口和数据接口各使用一条总线,与常规的Cortex-M3不同,ARM7系列处理器使用冯•诺依曼架构,数据和指令公用存储器以及信号总线。由于指令以及数据可以同时从存储器中读取,Cortex-M3对多个操作行执行,因此大大加快了系统的执行效率[6]。
2数据采集系统总体硬件设计
2.1总体设计方案数据采集系统硬件设计的总体方案为:以STM32F103VBT6作为系统核心控制器件,STM32F103VBT6与ADIS16488A通过SPI通信协议进行数据传输,SPI通信模式中,STM32F103VBT6为主设备,ADIS16488A为从设备,实时采集惯性器件测量数据并通过RS232串口通过异步通信的方式将数据实时发送到PC机端,实时显示并保存采集数据。系统总体设计方案图如图5所示。
2.2SPI通信模式设计当存在有效电源时,ADIS16488A会自动启动,完成相关初始化功能后,传感器开始采样、处理并将校准后的惯性传感器数据传入输出存储器,通过SPI端口可以访问数据[5]。本数据采集系统SPI端口连接到STM32F103VBT6核心处理器的兼容性端口。STM32F103VBT6核心处理器作为主设备,ADIS16488A作为SPI通信模式的从设备,SPI通信接线如图6所示。主机NSS引脚用于选择从机[7],ADIS16488A的DIO2引脚连接到处理器的中断请求IRQ引脚,当输出数据寄存器中有新数据可用时,该引脚变为低电平,提醒核心处理器进行数据采集。主机通过SCLK引脚向从机提供串行时钟信号,MOSI引脚作为主机输出引脚,MISO作为从机输出引脚。完成相关硬件连接后需要对主机处理器进行相关配置以实现SPI通信,STM32F103VBT6使用内置控制寄存器来配置其串行端口,按照SPI通信协议,主机处理器的初始化程序可以通过固件命令方式将相关配置写入其串行控制寄存器,主机相关配置如表2所示。SPI端口支持全双工通信,主机处理器可以在读取DOUT的同时向从设备写入DIN,有效保证了数据传输的效率以及数据传输的实时性。SPI通信协议时序图如图7所示[5]。SPI使用图示的位分配方式向控制寄存器写入信息,一次一个字节。每个寄存器都有16位,首先写入寄存器的低位字节,然后写入高位字节。单个寄存器读操作需要两个16位SPI周期。在第一个周期中,利用SPI通信时序请求读取一个寄存器的内容。在第二个周期中,寄存器的内容通过DOUT输出,这样在一个16位SPI周期内,同时完成了写入与读取操作[5],并且写入操作是为下一周期读取做准备,因而采用SPI通信方式可以极大提高数据的采集速率,保证数据传输的实时性。
2.3RS-232串口接口电路设计STM32F103VBT6与PC机进行通信时,RS-232C标准规定:-3~-15V表示逻辑“1”,+3~+15V表示逻辑“0”,电压范围与STM32F103VBT6TTL电平不兼容,因而需要在此基础上进行电平转换。本数据采集系统采用MAX232芯片实现电平转换,MAX232低功耗、单电源双RS232发送/接收器特点可以很好满足采集系统需求。MAX232内置的电压变换器可以把输入的+5V电压转换为±10V电压,因而芯片接口的串行通信系统只要单一的+5V的电源即可满足需求[1]。STM32F103VBT6与PC机之间的数据传输采取异步通信的方式,数据的发送和接收采取常规的格式进行。RS232通信电路原理图如图8所示。
3数据采集系统总体软件设计
本数据采集系统软件设计采用英蓓特公司和ARM公司联合推出的高效基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备的完整的开发环境[8]。应用程序包括以下四个部分:①主程序。②数据采集相关程序。③SPI通信程序。④串口通信程序。各程序以主程序为主线按照严格的时序执行,主程序主要完成系统时钟、串口通信、SPI通信的配置以及ADIS16488A复位功能、ADIS16488A自测功能的实现。完成主机与从机的相关初始化以及配置后,STM32F103VBT6通过RS232通信机制与上位机进行通信,传输数据通过串口调试助手可以实时显示并进行存储,方便后续进行数据分析与处理。实现软件工作流程图如图9所示。在SPI通信模块设计中由于SPI时钟频率为9MHz,STM32F103VBT6处理器主频为72MHz,并且STM32F103VBT6的时钟配置模式只有2、8、16、25四种分频模式,兼顾主从设备的时钟频率匹配关系,最后STM32F103VBT6采用72MHz下的8分频作为处理器数据采集频率。
4实验验证
为了验证数据采集系统所采集数据的可靠性,需要对采集得到的数据进行验证。通过串口传输的数据通过串口调试助手在PC机上显示并可转化为txt格式进行存储,读取存放的txt格式文件相关数据进行实验验证。完成实验验证需要的设备包括以下两个:(1)已搭建完善的MEMS惯性传感器数据采集系统。(2)920E型单轴速率位置转台。实验验证思路如下:设定单轴转台以某一固定角速率进行旋转,分三次进行数据采集,分别将ADIS16488A三轴某一轴向与转台轴重合,完成惯性器件数据采集。得到三组惯性器件测量到的数据,将不同轴指向条件下采集到的陀螺仪输出数据与设定的固定旋转角速率值进行比较,另外在静态条件下以相同方式完成加速度计测量数据的采集并与重力加速度进行比较,验证测量数据的正确性。实验验证单轴转台以速率运动模式工作,设定单轴旋转速率为30°/s,实验验证实物图如图10所示。将惯性器件测量到的数据与理想设定值(转台旋转角速率,加速度计理想测量值为重力加速度1000mg)进行比较,得到如下陀螺仪(见图11)和加速度计真实测量数据曲线图(见图12)。实验数据与理想数据存在偏差有以下两个方面的主要原因:①惯性器件本身存在的测量误差。②器件放置导致的三轴指向与理想坐标轴指向存在偏差导致的测量误差。从图12可以看出,实测数据由于以上两方面原因确实存在误差,但都在理想值附近波动,说明数据采集系统所采集的数据是真实的惯性器件实测数据。另外本数据采集系统也完成了磁力计、压力传感器以及温度传感器测量数据的采集,实验验证表明数据采集准确可靠。
5结语
本文介绍的惯性传感器数据采集系统,以ADIS16844A作为惯性传感器,STM32F103VBT6作为核心处理器,通过SPI通信协议完成核心处理器对惯性传感器测量数据的实时采集,通过RS232串口完成处理器与上位机的实时通信。通过SPI通信模式相关配置方式完成数据采集系统处理器与传感器的硬件和相关软件设计,通过RS232串口通信模式以异步通信方式完成处理器与上位机相关硬件和软件设计,保证数据可靠、准确传输至上位机。所设计的数据采集系统稳定可靠,采集数据真实准确,并可通过上位机完整显示和保存。此数据采集系统可为后续数据误差分析及补偿建立基础,为今后以ADIS16488A作为惯性传感器的惯导系统设计创造条件。
[参考文献]
[1]陈宝毅.MEMS惯性器件的数据采集与误差分析技术研究[D].哈尔滨:哈尔滨工程大学,2009.
[2]安仲源,欧阳清.基于MEMS的温度数据采集系统的设计[J].舰船电子工程,2008(11):204-206.
[3]YoshidaJ.Hardware-agnosticsensordataintegration,MEMS'nextfrontier?[J].EETimes,2012(1619):10-12.
[4]LiY,ZhangW,DongH,etal.Microstoragemeasurementunit[J].Microelectronicengineering,2002(61):1039-1047.
[5]TacticalGradeTenDegreesofFreedomInertialSensor[M].AnalogDevices,2014.
[6]马建伟.基于STM32的空气动力学数据采集系统的设计[D].成都:西南交通大学,2010.
[7]STM32F103x8STM32F103xBDatasheet-productiondata[M].STMicroelectronics,2015.
[8]张旭,亓学广,李世光,等等.基于STM32电力数据采集系统的设计[J].电子测量技术,2010(11):90-93.
作者:许兆新 方涛 丁继成 吴谋炎 单位:哈尔滨工程大学自动化学院