英语原文共 4 页,剩余内容已隐藏,支付完成后下载完整资料
基于 STM32 的姿态传感器采集系统设计
刘伟华 天津科技与教育大学工程培训中心, 中国 E-mail:etc@139.com
戴建雄 天津科技与教育大学工程培训中心, 中国 E-mail:djx04001@163.com
摘要:将主控制器 STM32 应用于姿态传感器数据采集系统, 从而降低了成本和开发周期。首先, 根据设计要求, 描述了姿态传感器采集系统的框架。其次, 给出了硬件电路的设计。描述了关键电路, 包括 MPU6050 电路和 STM32 接口电路。然后, 利用 keil 软件设计 STM32 驱动程序, 利用 LabWindows/CVI虚拟平台编写主机程序。最后, 在 LabWindows/CVI 虚拟平台上对 MPU6050 传感器进行了测试和分析;通过大量实验发现, 卡尔曼滤波器更有效地减少了传感器的误差。
关键字:组件;STM32;陀螺仪;卡尔曼滤波
一.介绍
随着姿态传感器采集系统的改进, 研究陀螺仪的误差是非常重要的。系统误差包括系统误差和随机误差, 随机误差是系统的主要误差源。建立了姿态传感器采集系统模型, 采用卡尔曼滤波算法消除了陀螺误差中的随机噪声, 提高了测量精度。该过程的对象是随机信号, 实时性能突出。基于 STM32 的姿态数据采集平台设计, 讨论了卡尔曼滤波在采集系统中的应用 并基于数字信号处理技术实现了卡尔曼滤波算法。
二.系统设计
- 系统框架
姿态采集数据包括加速度数据和陀螺仪数据。加速度传感器检测姿态倾角, 可通过3轴加速度计获得。陀螺仪检测角速度。目前 ADI 公司、FREESCALE 公司、ST 公司和英文森公司均生产类似的姿态传感器芯片。该系统使用 MPU-6050 (吸入感知公司) 来测试陀螺仪和加速度数据。该系统采用 STM32 微控制器 (ARM Cortex-m3 内核) 作为主控制处理器, 完成姿态传感器数据采集和处理, 然后利用 RS232 串行通信将姿态传感器数据发送到主机计算机。最后, 由主机对姿态数据进行处理和过滤, 分析了姿态传感器采样和数据处理方法。通过 RS232 通信软件平台向 STM32 微控制器发送命令, 并对其姿态数据进行分析。
- 硬件设计
该系统是基于 STM32 微控制器 (ARm Cortex-m3 内核) 和 MPU6050 设计的。微控制器可在高达 72 MHz 的频率下工作, 片上集成高速内存 (256 KB 内存和48KB 的 SRAM), 丰富的增强的清醒ito接口, 大大简化了工程设计的难度。姿态传感器 (MPU6050) 将3轴陀螺仪和3轴加速度计结合在同一芯片上, 工作电压为 2.4 v 至 3.5 v。这些部件具有用户可编程陀螺全范围范围plusmn;250至plusmn;2000°sec (dps), 以及用户可编程加速度计全尺寸范围为plusmn;2g 至plusmn;16 g。该设备可以通过辅助主 isup2;c 总线访问外部磁强计或其他传感器, 使设备能够收集完整的传感器数据集, 而无需系统处理器的干预。姿态传感器 MPU-6050 通过 I2C 接口连接控制处理器 STM32F103RC。图2给出了电路的关键部分。
三.卡尔曼算法
很多读者对卡尔曼滤波有一定的了解, 这里没有对卡尔曼滤波算法进行详细的推导, 并结合 应用的简要描述。
状态方程式:
测量方程式:
在上面的方程 A 和 H 是矩阵中, k 是时间指数;X 称为系统的状态; x 称为系统的状态。Z 是测量的输出;和 w 和 v 是噪音。变量 w 称为过程噪声, v 称为测量噪声。
针对这个问题, 卡尔曼滤波器的这五个方程给出了如下。
以前对输入的状态和当前值的估计:
计算先验协方差:
卡尔曼滤波增量:
这个增量被用来细化 (纠正) 一个原始的估计, 给我们一个后验的估计:
计算后验协方差:
四.MCU 软件设计
STM32 采用整个系统的控制部分, 编程采用 C 语言对 KEIL 编译器进行编程。该过程如下: STM32 完成每个模块的初始化, 包括串行模块、IIC 模块、定时器、MUP05050 和 PORTA 模块。然后, MCU 程序微控制器程序进入循环结构。其主要功能是通过 RS232 接收 PC 机指令, 并设置工作参数判别指令。例如: 波特率、MPU6050、中断、启动停止采样等。启动中断后, STM32 依靠操作计时器中断执行采样并通过 RS232 发送数据, 采样时间默认为10ms。图3显示了程序的流程图。图3。STM32 程序的流程图为 ARM 32 STM32F103x 系列 MCU 提供了一个固件库。此固件库包含例程、数据结构和宏 c 的集合。
A. MPU-6050
MPU-6050 始终充当 STM32 的从动装置, SDA 和 SCL 引脚连接到 iic 总线。Iic 总线初始化完成后, 可以配置和控制 mpu-6050。MPU-6050 主要控制步骤包括唤醒 mpu-6050、设置采样率、配置加速度计和陀螺仪的全刻度范围。这里是配置 MPU-6050 过程。I2C_ByteWrite(PWR_MGMT_1,0x00);
I2C_ByteWrite(SMPLRT_DIV,0x07);
I2C_ByteWrite(GYRO_CONFIG,0x18);
I2C_ByteWrite(ACCEL_CONFIG,0x00);
B. RS232系列
此设计使用 STM32 串行端口。参照 STM32F103xxx 参考手册和 STM32 固件库的使用, 这里给出了在使用手册的情况下配置串行端口的方法。流动是配置 RS232 过程。
配置USART1 时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, amp;GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode =
GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, amp;GPIO_InitStructure);
USART1模式配置
USART_InitStructure.USART_BaudRate = 19200;
USART_InitStructure.USART_WordLength =USART_WordLength_8b;
USART_InitStructure.USART_StopBits =USART_StopBits_1;
USART_InitStructure.USART_Parity =USART_Parity_No ;
USART_InitStructure.USART_HardwareFlowControl =USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode =USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, amp;USART_InitStructure);
USART_Cmd(USART1, ENABLE);
C.继电器
本文采用了 STM32定时继电器。定时继电器的操作有这样的步骤: 首先配置继电器中断优先级, 然后设置继电器中断参数。默认中断时间为10毫秒。代码的部分如下所示:
TIM2_NVIC_Configuration();
TIM2_Configuration(Period);
主控制程序包括循环程序的一个分支和一个中断服务函数。分支环路程序的主要功能是等待主机指令, 如设置定时器中断参数、启动停止采样、设置波特率等。中断服务例程功能是将数据发送到主机。
五.主机软件设计
Labwwowscvi 是一个面向 C 程序员的软件开发环境。Labwowscvi 提供了强大的功能库和一套全面的软件工具, 用于数据采集、分析和演示, 您可以使用这些工具以交互方式开发数据采集和仪器控制应用程序。本文在 labwowscvi 库的基础上, 建立了界面库、格式库和 i o 库、RS232 库和分析库的交互界面。
图4软件模型框架
用户内界面库
它的功能用于创建和控制图形用户界面。显示面板和 Runuser界面的功能用于显示主面板和运行 UI。和功能注销面板和 CloseCVIRTE 用于释放资源和返回。函数 Plot样图可以在条形图控件中绘制采样数据。
RS-232 库的功能用于使用中断驱动的ito控制多个 RS-232 端口. 使用此功能 Openconfig 是打开 COM 端口并设置端口参数。经常使用波特率参数。串行端口的波特率设置为19200bps。如果指定的端口已打开, 并希望关闭该端口。此信息的闭环函数描述。它可以通过 ComRd函数将 com 输入队列中的数据读取到缓冲区中。使用 ComWrt函数将输出队列中的字节发送到中断控制下的串行设备, 而无需程序干预。
分析库
它的功能被用来在阵列上操作, 快速有效地模拟和分析大量的数值数据。完成数据分析功能是 FFT 和编写的主要功能。这种设计主要有四个按钮在主面板。按下按钮时, 相应的函数是相应的。当在面板上按下 '重新发送系统' 按钮时, 将启动 '重新发送系统' 功能。而姿态数据采集系统将重置硬件和软件, 系统参数将重新启动。如果要修改参数, 请按此 '设置参数' 按钮。回调函数 Set-Parameters bior 将响应设置参数包括波特率、采样率、MPU-6050 等参数。此 '开始' 按钮完成启动和停止采样的功能。此启动-停止函数第一个响应启动采样, 再次响应停止采样。此 '打印' 按钮调用 Char 功能函数。采样数据将波形绘制到gra上。
六.测试和分析
状态由水平状态变为垂直状态, 由 stm32 处理器采样并将姿态数据发送到主机。通过LabWindows/CVI软件程序, 我们可以看到它的结果。
在图5中, 数字1的波形图显示 MPU-6050 没有处理过的数据。从图表中看数据不稳定, 并对噪声产生影响。数字2波形图表明, 采用滑动均值滤波的结果。该方法利用连续采样数据 (Nnxy8) 实现滤波, 有效地抑制了小噪声。Num.3 波形数字卡尔曼滤波, 融合加速度计和陀螺仪数据允许姿态计算。试验结果表明, 卡尔曼滤波器能有效地消除传感器的漂移, 降低传感器的噪声, 从而获得更有价值的数据。本文简要设计了基于 STM32 处理器的姿态数据采集系统, 描述了该系统的关键电路, 编写了 STM32 和LabWindows/CVI程序。最后对 MPU6050 传感器进行了测试和分析, 并与数据进行了比较。通过实验结果可以看出, 卡尔曼滤波器更有效地消除了传感器的漂移, 降低了噪声, 取得了较好的效果。
致谢
这项工作是献给所有教了我很多东西的老师, 特别是我的上司李杰, 他帮助我制定了大纲, 在整个过程中给了我启发性的建议。对他, 我欠他深深的感激之情。
参考文献
[1] h. rehbinder, x. hu, '加速度计刚体无漂移姿态估计', 2001年 IEEE int. conf. 关于机器人和自动化, 韩国首尔, 2001年5月24日至26日, 4244-4249 页。
[2] mo不如 s. grewal, Angus p. andrews, 'kalman 过滤: 使用 MATLAB 的理论和实践,' Englewood 悬崖, NJ: pr价-hall, 1993年。
[3] 国家仪器公司, LabWindows/CVI 程序员参考手册, 2003。
[4] 朱荣, 周兆英, '基于 mems 的态度参考系统', 测量与控制技术, 2002 (10):6-8.doi: 10.3969/j.issn.1000-8829.2002.10.002。
[5] 吴松玲, '基于的串行通信软件设计', 测量与控制技术, 2012,10.3969/j.issn.1000-8829.2012.09.022。
[6]STM32F103RC数据表
[7] MPU-6050 的数据表, http://www.invensense.com。[8] R.E.KALMAN, '线性滤波和预测的一种新方法。
[8] R.E.KALMAN, '线性过滤和预测问题的新方法', 《基本工程杂志》, ASME,1960,(03 的交易), 35-45 页。
[9] C.g.Zhou, Y.g.Li, J.h.Wu, H.j.Zha, '基于LabWindows/CVI 的多通道高速数据采集系统的设计', 中国电子测量技术杂志, 2007年12月。
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[21113],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。