MMA7361L的高精度角度检测平台设计
扫描二维码
随时随地手机看文章
摘要:倾角是许多控制系统中需要测量的一个重要参数。针对倾角测量,设计了一种基于ARM微控制器和加速度传感器的角度测量平台。该平台采用基于ARM Cortex-M3内核的STM32F103VE为数据处理的核心,利用高精度加速度传感器MMA7361L为测角传感器,同时配置液晶屏和小型键盘实现了人机交互。该平台具有测量精度高、灵敏度高、价格低的特点,应用前景广阔。
关键词:STM32F103VE;三轴加速度传感器;MMA7361L;角度测量平台
引言
在很多控制系统中,角度值是一个十分重要的物理参数。例如起重机和升降机上都要有角度测控机构来控制起降高度;飞行器自动驾驶系统中都有大量的角度传感器,实时检测飞机偏转角度,以便对飞行姿态进行调整。目前已有利用加速度传感器实现高精度角度测量的设计研究,但主要侧重于单轴的测量,同时进行三轴测量的研究设计鲜有报道。本文将重点讨论采用三轴加速度传感器MMA7361L实现高精度角度检测的软硬件方法。
1 角度检测仪硬件平台设计
采用了高精度三轴加速度传感器MMA7361L作为角度检测模块,数据处理采用最新的带A/D转换功能的STM32F103VE芯片,采用I2C接口的AT24C02A芯片进行周期性数据存储,采用1602液晶模块对角度值进行实时显示,为了扩展系统功能,采用4×4键盘对系统模式进行设置。同时采用声光报警电路,当角度超过设定上限时,进行声光报警提示。角度检测仪硬件平台结构框图如图1所示。
1.1 STM32F103VE控制器
本系统采用新一代低功耗高速工业级芯片STM32F103VE作为控制器核心,芯片采用更优化的32位ARM Cortex-M3内核,时钟频率达到72 MHz。该芯片系统资源和外围接口丰富,内部集成专用时钟、复位以及电源管理模块,支持多种工作模式,内含2个12位高速ADC、80个快速I/O口、7个定时器和多达9个通信接口。
1.2 MMA7361L角度检测模块设计
MMA7361L是一种超低功耗、小型电容式的微机械加速度传感器。该传感器可以采用1.5g或6g灵敏度重力选择模式,具有信号调理、一阶低通滤波、温度补偿、自检、带有线性自由落体检测和零重力检测等功能。工作电压为2.2~3.6V,工作电流为400μA,设置为睡眠模式时工作电路仅为3μA。从灵敏度、功耗角度考虑,采用MMA7361L作为角度检测模块的核心芯片。MMA7361L角度检测模块电路如图2所示。
2 角度检测仪软件平台设计
2.1 软件平台整体结构
几乎所有的嵌入式产品中都需要嵌入式软件来提供灵活多样而且可为应用定制的功能。为了便于今后产品功能扩展,采用精简的μC/ OS-II操作系统作为软件平台的支撑。角度检测仪软件体系结构如图3所示。其中最底层为设备驱动程序层,主要是进行处理器初始化和驱动各外设电路模块;第2层为嵌入式μC/OS-II操作系统,主要是管理系统的软硬件资源,以及上层应用和操作底层驱动接口;第3层为应用程序,主要是系统调用和实现OS级别功能。
2.2 MMA7361L角度测试驱动实现
MMA7361L是一款高精度的模拟三轴加速度传感器,其精度模式可以选择1.5g或6g两种。从工程需要的角度选择1.5g模式,其精度为800 mV/g,将g-Select引脚置为低电平。在正常工作状态,Sleep引脚需要置为高电平。同时启动Self Test模式,芯片在工作之前先完成内部自检。
MMA7361L三轴加速度传感器实现角度测试,其核心算法是建立输出电压和角度之间的函数映射关系。零倾斜角度的选择对于测量仪的精度影响比较大,本文先以MMA7361L传感器X轴方向的倾角计算为例加以说明,Y轴、Z轴的角度测量方法类似。在本文中取传感方向x轴与重力加速度g垂直时的状态为零倾斜角度,当倾角为θ时,x轴方向倾角测量图示如图4所示。
传感方向x轴方向的重力加速度分量是g1(θ)=gsinθ,当θ→0时有:
可以看到,当倾斜角θ为一个小角度时,其角度的变化率(即导数)越大并趋向于g,这样有助于提高小角度测量的分辨率,因此该零倾斜角度的选择方式有助于小角度的精确测量。由于传感器的加速度分量与其电压成正比,且精度是800mV/g,因此倾角。
在算法分析的基础上,该加速度传感器的角度测试的驱动程序得以实现。其核心部分可以用如下代码实现:
Y轴、Z轴的角度也可以用类似的方法得到。另外为了便于系统管理,软件部分采用实时精简的嵌入式操作系统μC/OS-II,可以将角度测量、键盘、显示作为若干个任务进行管理。
结语
本文论述了一种基于MMA7361L的高精度智能角度测量仪的设计与实现方法,构建了角度测量仪的软硬件平台,同时对MMA7361L角度检测算法进行了详细的介绍,并给出了实现代码。实验测试证明,该测量仪具有高精度和良好的可靠性,且成本低,应用前景非常广阔。