收藏 分享(赏)

基于STM32的电子计步器的设计与实现.docx

上传人:wo7103235 文档编号:9223951 上传时间:2019-07-30 格式:DOCX 页数:42 大小:2.67MB
下载 相关 举报
基于STM32的电子计步器的设计与实现.docx_第1页
第1页 / 共42页
基于STM32的电子计步器的设计与实现.docx_第2页
第2页 / 共42页
基于STM32的电子计步器的设计与实现.docx_第3页
第3页 / 共42页
基于STM32的电子计步器的设计与实现.docx_第4页
第4页 / 共42页
基于STM32的电子计步器的设计与实现.docx_第5页
第5页 / 共42页
点击查看更多>>
资源描述

1、 毕 业 设 计 ( 论 文 )题目 基于 STM32 的电子计步器的设计与实现 专 业 电气工程及其自动化 I基于 STM32 的电子计步器的设计与实现摘 要随着生活节奏的不断加快,留给人们的锻炼时间越来越少,走路和跑步成为人们日常生活中为数不多的运动之一。计步器携带方便,能很好地完成量化运动量的目标。因此,最近几年各种计步器以及计步软件大量出现。鉴于人们对于步数检测准确度的要求以及使用便利的需求,十分有必要设计一套计步算法并应用于相关的计步器。本设计的研究目的是设计出一款高精度、便携的计步器。本设计的主要难点在于数据滤波算法以及计步检测算法的研究。首先,本设计分析了几种数据滤波的方法,选择

2、了比较适合的卡尔曼滤波算法。接着,分析了现有的几种计步检测算法,包括动态阈值算法和峰值检测算法。发现这些算法都不是很准确,所以本文设计了一种新的计步检测算法,提高了计步检测的精度,为其他研究者在步数检测方面提供了一种较好的解决方案。最后,本设计还采用了 TFT 彩屏的人机交互界面,可以实时显示卡路里、时间以及步数。通过实际调试过程中的不断改进,实现了计步器的准确检测。关键词: 计步器 MEMS 传感器 滤波 步数检测IIDesign and Implementation of Electronic pedometer Based on STM32AbstractWith the acceler

3、ating pace of life, less and less exercise time is left for people. Walking and running become one of the few sports in peoples daily life. The pedometer is easy to carry and can achieve the goal of quantifying the amount of motion well. Therefore, in recent years, a large number of pedometers and p

4、edometer softwares have appeared. In view of the requirement of accuracy and convenience of step detection, it is necessary to design a set of step counting algorithm and apply it to relevant pedometers.The purpose of this design is to design a high precision and portable pedometer. The main difficu

5、lty of this design is the research of data filtering algorithm and step-counting detection algorithm. Firstly, several data filtering methods are analyzed, and a suitable Kalman filtering algorithm is selected. Then, several existing step-by-step detection algorithms are analyzed, including dynamic

6、threshold algorithm and peak detection algorithm. It is found that these algorithms are not very accurate, so this paper designs a new step-counting detection algorithm, which improves the accuracy of step-counting detection, and provides a better solution for other researchers in step-counting dete

7、ction. Finally, the design also uses the human-computer interaction interface of TFT color screen, which can display the number of steps, distance, time and calories in real time.Through continuous improvement in the actual debugging process, the accurate detection of pedometer is realized.IIIKey wo

8、rds: pedometer; MEMS sensor; movement recognition; step detection 目录1 绪论 .11.1 研究背景和意义 11.2 国内外研究现状 11.3 章节安排 22 系统总体设计方案 .32.1 设计目标 32.2 系统架构分析 32.3 系统方案分析 32.3.1 佩戴位置选择 .32.3.2 MEMS 惯性传感器的数据读取 42.3.3 数据融合与滤波 .52.3.4 计步算法 .83 系统硬件设计 93.1 系统硬件电路总体设计 93.2 单片机最小系统设计 93.3 MEMS 传感器 .103.4 其他外围电路 .113.4.

9、1 电源转换 .113.4.2 TFT 彩屏电路 113.4.3 无线串口通信 .124 系统软件设计 134.1 系统软件总体设计 134.2 中断设计 .144.2.1 定时器中断 .144.2.2 串口中断 .15IV4.2.3 中断优先级判断 .164.3 MPU6050 原始数据采集 164.3.1 陀螺仪和加速度计的配置工作 .164.3.2 串行口的配置工作 .174.3.3 IIC 读取姿态传感器数据 174.4 数据处理 184.4.1 数据类型统一 .184.4.2 卡尔曼滤波 .194.5 计步算法 214.6 无线串口通信 225 系统调试 .235.1 系统调试上位机

10、 235.2 标定 MPU6050 零点 235.3 卡尔曼滤波参数调试 235.4 计步测试 246 总结与展望 .256.1 总结 256.2 展望 256.3 课题研究对环境以及社会的影响 26参考文献 27附录 .28附录一 系统硬件原理图和 PCB.28附录二 系统实物图 .29附录三 系统核心 .29致谢 .37毕业设计(论文)11 绪论1.1 研究背景和意义随着社会不断进步以及生活水平不断提高,人们逐渐开始重视自身的健康。据统计,2015 年中国的 60 岁及以上人口已经占总人口的 16.25%,达到 2.32 亿。预计 2020 年老年人口将达到 2.38 亿,老龄化程度将达到

11、 17.27%,其中 80 岁以上老年人口将超过三千万人;除了人口老龄化之外,肥胖问题也日益成为人们所关心的热点问题。根据世界卫计委和国家统计局的调查数据,中国人的肥胖人口正在逐年上升。从 1990 年到 2016 年,肥胖率从 14%上升到 31%,超重率从 4%上升到 15%。这些老龄人口与肥胖人口十分需要一款便携式的运动检测装备,通过监控日常的运动量来确保合理的运动量。实验表明,步行和跑步作为一种方便又十分有效的运动,既不需要占用场地,也不容易受到伤害,受到许多人的欢迎。这使得应用于计步的智能穿戴设备迅速发展。意大利的达芬奇制造了世界上最早的计步器,但现存的最早的计步器是 1775 年日

12、本制造的。这种机械式计步器主要是利用摆钟原理进行工作,摆动计步器时,内部的金属球会来回晃动,机械开关开始检测步伐,计步器内部的计数器数值增加。但这种机械式的计步器由于精确度比较差,早已不被人所使用,取代它的是电子式计步器。1.2 国内外研究现状国内市场上流行的大多是 3D 电子式计步器,通过加速度计来测量加速度变化,根据软件算法判断出步数。比起机械式计步器,电子式计步器的精确度有很大提升。现在市场上比较知名的国产品牌主要有乐心、小米、时刻美、爱希亚等。国内的小米手环 1 代采用 40mAh 的锂电池进行供电,实现了降低功耗的目的,续航时间大大延长;国产的clingband 手环采用光学心率传感

13、器,能够对人体进行心率耗时分析。另外,clingband 手环还可以通过高精度的温度传感器来实现对体表温度变化的监测; 国外计步器发展比较早,计步器除了计步的基础功能之外,还具备许多其他的功能。东京大学设计出一款鞋内嵌入式计步器,通过压电材料将运动所产生的机械能转化为电能,直接给计步器供电;韩国的 SAMSUNG 开发出一款拥有操作系统和预装软件的电子计步器,可以播放音乐、视频聊天和接听电话。毕业设计(论文)2从国内外现状可以看出,计步器设计不仅需要考虑续航能力、舒适度、外观等方面,还需要考虑如何获取更多的健康数据以及如何保证健康数据的准确性。1.3 章节安排第一章:绪论,主要介绍计步器发展的

14、研究背景与意义,并详细叙述下国内外技术上的创新。第二章:系统总体方案设计,简单介绍下计步器的设计目标,根据设计目标对系统的整体框架进行设计,对具体的系统方案进行选择。第三章:系统硬件电路设计,主要介绍了基于 STM32 的单片机最小系统、电源转换、MEMS 惯性传感器、TFT 彩屏显示、无线通信等硬件电路的设计。第四章:系统软件设计,首先介绍整个计步器的软件设计思路,接着介绍 MEMS 惯性传感器的数据获取、卡尔曼滤波、步数检测等具体部分的软件设计思路。第五章:系统调试,首先调试惯性传感器的参数,最后测试计步器的准确度性能。第六章:总结与展望,总结了计步器设计所完成的设计目标,列举了计步器设计

15、过程中所遇到的特殊问题。在计步器实现的功能上进行了展望,举出未来可以添加的功能。毕业设计(论文)32 系统总体设计方案2.1 设计目标本设计是一款电子计步器,用来量化用户的运动量。考虑到携带的方便,产品设计一定要紧凑以节省空间,看起来美观大方。同时,要很好地考虑到用户的体验。用户可以随时看到自己行走的步数,以及其他的一些健康数据,比如卡路里、运动时间。另外,计步器的最主要功能是计步,所以设计时一定要保证电子计步器的计步准确性。2.2 系统架构分析电子计步器需要对大量的数据进行处理,所以需要采用一款运算性能较强的单片机作为主处理器。电子计步器主要是对人体位置的移动进行评估,因此需要选择一款合适的

16、姿态传感器。主处理器通过姿态传感器得到加速度信号和角速度信号,对这两种信号进行处理,得到相对准确的角度变化。主处理器再对角度信号进行步数检测,得到准确的步伐。此外,可以添加显示屏、按键以及无线通信,方便数据的显示以及调试。系统的整体框架如图 2.1 所示。图 2.1 系统的整体框架图2.3 系统方案分析2.3.1 佩戴位置选择毕业设计(论文)4要实现步数检测首先需要对人行走和跑步时的姿态有一定的了解。人体在行走时,身体各部分都在运动,都会产生相应的周期性正弦加速度信号。一般来讲,用脚部的加速度信号进行对步数的检测,是比较准确的。但考虑到美观性以及携带方便性,一般不将计步器佩戴在脚部。目前大部分

17、计步器是利用手腕或腰部的运动来检测步数。本设计是一款比较常见的手腕式计步器。图 2.2 手腕式计步器 图 2.3 腰部式计步器2.3.2 MEMS 惯性传感器的数据读取在分析行走的特征参数时,通常选择加速度和角速度作为相关变量。MEMS 惯性传感器中包括加速度三个轴和陀螺仪三个轴,分别与人体运动的三个方向相对应。在表征加速度和角速度时,通常要选择变化最明显的轴。在实际场合时,因为传感器的佩戴位置不同,传感器的的测量值并不直接对应人体运动的三个方向,而对应传感器三个轴上的投影值。因此不应该简单地认为行走时某轴的变化一定最大,而应该通过观察 MEMS 惯性传感器的原始数据来提取合适的加速度和角速度

18、信号。因为本设计的佩戴位置已经确定,所以在行走过程中,会有固定的加速度轴和陀螺仪轴数据波动比较明显。为了接下来数据处理的方便,本设计将加速度计和陀螺仪三个轴的数据通过无线通信发送到电脑上,确定好加速度计和陀螺仪变化比较明显的那个轴,只用那两轴数据来表示加速度和角速度。图 2.4 人体运动模型 图 2.5 MPU6050 的各个轴毕业设计(论文)52.3.3 数据融合与滤波得到的 MEME 传感器原始数据包括角速度值和加速度计值。加速度计长时间测量的精度比较高,短时间测量会因为噪声而产生一定的偏差。陀螺仪则相反,短时间测量比较精确,长时间测量由于温漂会产生误差。因此,本设计将两者进行数据融合,以

19、确保测量数据的准确性。数据融合是对不同来源的数据进行综合分析后,最终得到状态估计。换而言之,就是将不同数据融合成一个新数据,便于接下来的数据处理。在实际的工程中,单个传感器的测量值未必能够真实反映物体的状态。所以实际运用中大多使用多个传感器,通过不同属性的传感器信息来得到准确的状态。这些年来,得益于微机电系统的迅猛发展,工业中开始广泛应用各种形式的传感器技术。对采集到的声音、图像、文字等进行数据融合,可以得到物体的真实状态。有许多数据融合算法可以进行多传感器的数据融合。(1)加权平均法处理的数据必须是同一类型的数据,根据数据来源的不同,对多个数据赋予不同权重,使得融合出来的新数据能够反映物体的

20、真实状态。(2)分组估计法是对采样数据进行分组处理,先计算出每一组数据的均方差,再赋予相应的权重,最后得到相应的数据融合值。(3)卡尔曼滤波法是一种基于时域的滤波方法,对于具有高斯噪声的线性系统,可以得到关于系统状态的最优估计。卡尔曼滤波法是一种进行最优估计的数据处理算法,并且它采用递归计算,在控制、通信以及导航方面应用很广,可以用于传感器数量较少的数据融合。卡尔曼滤波法用在数据融合时,使用一个传感器值作为此刻的测量值,由多个传感器值得到下一个时刻的预估值,最后再由此刻的测量值和上一时刻的预估值计算出此刻的最优估计值。(4)贝叶斯估计法会把数据看作具备某种分布特征的随机变量,允许我们通过观测值

21、以及之前总结出来的规律对数据进行估计。用在数据融合时,通常适用于传感器数量较多、数据量庞大的场合。本设计要对加速度信号和角速度信号进行数据融合,得到拟合角度值,方便接下来的计步算法。卡尔曼滤波法不仅能够达到实时处理的目标,还可以滤除噪声,十分适合本设计。毕业设计(论文)6为了简化接下来的运算,本设计将采集得到的加速度信号和角速度信号统一成角度信号,再进行卡尔曼滤波。 加速度转化成角度将芯片水平水平放置在平台上, Y 轴与 X 轴方向的重力分量都是 0,而 Z 轴方向的重力分量是 g。垂直向下时,加速度轴各个方向的重力分量如图 2.6 所示。 图 2.6 垂直向下示意图将芯片稍微倾斜一定角度,地

22、面坐标系如图 2.7 所示。Ax 是 X 轴方向的加速度,Ay是 Y 轴方向的加速度,Az 是 Z 轴方向的加速度。 是 X 轴与水平线的夹角, 是 X 轴与1 竖直方向的夹角。 是 Y 轴与水平方向的夹角, 是 Y 轴与竖直方向的夹角。 是 Z 轴1 1与水平方向的夹角, 是 Z 轴与竖直方向的夹角。图 2.7 旋转 地面坐标系示意图从图 2.7 中可以看出各夹角之间的关系(式 2.1) = 90 1, = 90 1 , = 90 1各轴上的重力加速度分量(式 = , = , = 2.2)毕业设计(论文)7结合式 2.1 和式 2.2 可得到(式 =1 , =1 , = 12.3)由 ,则2

23、= (1 )2+ (1)2gcos1 = , gcos1 = ,gcos1 = (式x-gAy-gA2z-gA2.4)倾斜一定角度,载体坐标系如图 2.8 所示。结合立体几何的知识,立方体的对角线就是重力加速度 g,立方体的长宽高就是 Ax、Ay、Az,图中的虚线大小等于 。 2+2根据勾股定理 ,并结合式 2.4,可得:2 + 2 + 2 = 2tan1 = ,tan1 = , tan1 = (式2xAzy2Azxy2yxzA2.5)图 2.8 旋转 载体坐标系示意图那么弧度值可以表示为1 = arctan( ),1= arctan( ),1= arctan( ) (式 2.6)2xAzy2

24、Azxy2yxzA最后得到的各轴的角度值分别为x=arctan( ) (式 2.7)2xzy180y =arctan( ) (式 2.8)2Ax毕业设计(论文)8z = arctan( ) (式 2.9)2yxzA180角速度转换成角度:只要对角速度进行积分就可以得到角度。2.3.4 计步算法本设计需要对卡尔曼滤波处理后的角度变化数据进行计步分析。在步行和跑步两个运动状态中,臂部、手腕、脚和腿部的动作都可以视作钟摆运动,这些身体部位的角度信号呈现出一种正弦变化。根据人体运动的特征,可将计步算法大致分为两类。一是峰值判断法,每走一步角度信号会有一个相对明显的峰谷值,所以可以通过对角度的峰值检测,

25、得到有效的行走步数。正弦信号的峰值处一般就是拐点,此处的斜率为零。但是由于采样频率有限,采样数据呈现离散的状况,所以只能根据相邻两个采样点的斜率是否趋近于零,来判断峰值的出现。只有当峰值两侧的正斜率点和负斜率点数目相等时,才认定为走了有效的一步。二是动态阈值判断法,当角度数值从大到小或从小到大穿越某个设定值时,可认定为走了一步,这个设定值称作阈值。因为周围环境会对人的步伐大小产生影响,阈值最好是根据实时采样数据计算得到的。一般取最小值和最大值的平均数、取一段时间内采样数据的中位数作为动态阈值。只有当相近的采样值连线呈现下降态势且穿过动态阈值,才可以记为有效的一步。对于峰值判断法来讲,一些毛刺噪

26、声会被误判为峰值,从而影响步伐检测的精度。对于动态阈值判断法来讲,当人体步伐大小发生改变时,会漏掉一些步伐。所以本设计将峰值检测和动态阈值结合起来,并且将时间窗加入其中,可以滤除一些无效振动并且可以更准确地判断出峰值。查阅资料可知,快跑的最快频率约为每秒 5 步,慢走的最慢频率约为每秒 0.5 步,所以将峰值附近 0.2S2S 之间的数据作为有效数据,超过这个范围的数据均看作无效数据。之后将峰值相邻的有效数据再进行一次比较,确保找到真实的峰值以及比较合适的阈值,保证步伐检测的精准度。毕业设计(论文)93 系统硬件设计3.1 系统硬件电路总体设计本文第 2 章对整个系统进行了方案分析,本章也将对

27、设计中的硬件部分进行分析。以基于 STM32F103 系列单片机的最小系统作为主控核心,其他的外围电路包括电源转换、TFT 彩屏显示、MPU6050 姿态传感器等。硬件方面的整体框架如图 3.1 所示。图 3.1 系统整体硬件框架图3.2 单片机最小系统设计本设计考虑到计步算法的运算过程相当复杂,选用了目前市场上性价比相对较高、运算性能较好的 STM32F103 系列单片机。STM32F103 系列使用高性能的 ARM_M3 内核,工作频率高达 70MHz,内置高速缓存以及静态 RAM。其 I/O 口资源比较丰富,可以同时与多个外设相连。该型号单片机同时具备 ADC 采集、定时器以及输入捕获功

28、能,支持 IIC 协议、SPI 协议和 CAN 协议,拥有USART 接口和 USB 接口。单片机最小系统包含了主控芯片、时钟电路、BOOT 自举电路、复位电路等,它关系着整个硬件系统能否良好运转,所以单片机的设计必须要十分细致,尽可能考虑到各种突发状况对单片机运行造成的影响。毕业设计(论文)10图 3.2 STM32F103C8T6 最小系统板整个系统需要的所有时钟都是时钟电路提供的。而复位电路的作用在于,当整个系统由于某个原因出现程序跑飞现象时,可以通过复位按钮使单片机重启。STM32 一般带有 BOOT 自举电路,用来选择单片机的工作模式,本设计将 BOOT1 和 BOOT2 两个引脚同

29、时接地,使单片机处于正常工作的状态。 3.3 MEMS 传感器MEMS 惯性传感器通过测量惯性敏感元件在载体坐标系中的线运动和角运动,计算得到载体的角速度和加速度。它一般集成了磁力计、陀螺仪以及加速度计,可以用在自主定位以及自主导航中。MPU6050 姿态传感器就是一款低成本 MEMS 惯性传感模块。为了实现对步数的实时检测,本设计使用了 MPU6050 姿态传感器中的加速度计和陀螺仪。下面简单的对该姿态传感器进行讲解。MPU6050 姿态传感器工作电压为 2.4V-5V,具备功耗低以及体积小的优势。该装置拥有 II2C 和 SPI 的通信接口,可以输出欧拉角、加速度计、温度、陀螺仪等信息。M

30、PU6050 加速度参数的测量范围分别为 ,角速度的测2g、 4g、 8g、 16g量范围分别为250/s、500/s、1000/s 和2000/s。 本设计通过 II2C 进行读取 MPU6050 的数据,SCL 接单片机的 PB6,SDA 接单片机的 PB7。本设计中 MPU6050 姿态传感器的原理图如图 3.6 所示。毕业设计(论文)11图 3.6 MPU6050 姿态传感器3.4 其他外围电路3.4.1 电源转换电源转换出来的电压是否达到要求,这关系到系统能不能正常运行,因此需要谨慎进行电源部分的电压转换。本设计所采用的芯片都是使用 3.3V 电源供电,因此只需要一个 3.3V 的稳

31、压电路。在保证压降以及纹波较小的情况下,本设计采用 AMS1117-3.3 输出3.3V 的电源。AMS1117-3.3 是一种正向低压降稳压器,适用于稳压器电池、线性开关电源以及充电器等。它的成本较低,转换效率高,外部电路设计起来十分简单。AMS1117-3.3 稳压电路原理图如图 3.7 所示。图 3.7 AMS1117-3.3 稳 压 电 路3.4.2 TFT 彩屏电路本设计需要将计算所得的步数实时显示出来,本设计选用了性价比高的 TFT 彩屏进行显示,下面对该 TFT 彩屏进行简单描述。该款显示屏的分辨率为 125*125,尺寸为 1.45 寸,采用 SPI 协议进行通信,工作电压范围

32、在 2.4V-3.3V 之间。要实现彩屏显示字符、汉字以及字符串的目的,首先要编写彩屏毕业设计(论文)12的驱动程序,然后再根据自己所要实现的功能编写应用程序。驱动程序相当于一个字符库,应用程序调用其中的字符,字符就会在彩屏上显示出来。本设计中用 3.3V 对 TFT 彩屏进行供电,3.3V 电源通过上拉电阻接TFT_LED,TFT_SCK 接单片机的 PA5,TFT_SDA 接单片机的 PA7,TFT_AO 接单片机的 PA4,TFT_RST 接单片机的 PA3,TFT_CS 接单片机的 PA2。TFT 彩屏的接口图如图3.8 所示。图 3.8 TFT 彩屏接口图3.4.3 无线串口通信在进

33、行调试时需要将姿态传感器 MPU6050 得到的原始数据发送到电脑上,这时可以选择无线串口模式、蓝牙模式或 WIFI 模式。本设计采用的是无线串口模式,选择透传模式就不需要进行配置,十分方便简单。无线串口进行主从机配对之后,就可以将数据通过无线发送到电脑上。本设计采用 HJ-WUS1 无线模块,输入电压范围为 2.40V-3.50V,最大工作电流不能超过 50mA。该模块传输距离达到 34 米以上,并且它支持无线透传模式。在本设计的原理图中,TX1 接单片机 PB10/USART3_TX,RX1 接单片机 PB11/USART3_RX。毕业设计(论文)134 系统软件设计4.1 系统软件总体设

34、计第二章和第三章重点讲述了计步器的总体系统方案以及硬件电路设计,本章主要进行述计步器的软件部分设计。软件也是系统整体设计的一个重点,软件部分关系到设计的功能能否正常实现。本设计的软件部分主要包括系统初始化、MPU6050 原始数据采集、卡尔曼滤波、无线串口通信和 TFT 彩屏界面设计等。本设计整体软件框架如图 4.1 所示。图 4.1 软件框架图整个系统软件执行后,首先进行的是系统初始化,其中包括了定时器的初始化、TFT彩屏初始化、IO 口的初始化、MPU6050 初始化、串口初始化等。然后再进行 MPU6050原始数据(加速度信号和角速度信号)的读取,如果没有读取到数据则等待。当读取到加速度

35、信号和角速度信号之后,将它们转化成角度信号,进行卡尔曼滤波。接着对经过毕业设计(论文)14滤波、融合的角度数据进行步数检测。检测得到的步数可以通过无线通信发送给电脑进行调试,也可以发送给 TFT 彩屏显示。4.2 中断设计4.2.1 定时器中断本设计在采集 MPU6050 原始数据时,需要用到定时器来确定采样频率。定时时间到,通过两个 IIC 口采集 50 个数据。定时器中断初始化流程图如图 4.2 所示。图 4.2 定时器初始化流程图使能定时器 TIM 时钟。本设计使用的是定时器 3,由图 4. 3(STM32 的时钟树)可以看出,定时器 3 的时钟是挂在总线 APB1 上面,所以打开定时器

36、 3 需要使能总线APB1。这时定时器的时钟来源于总线 APB1 的一个倍频器,大小为 236Mhz=72Mhz。TIM3 的计数模式分为向上向下双向计数、向下计数以及向上计数。本设计采用向上计数模式,计数器从 0 计数到 TIM3_ARR 中的自动重装值,再进入中断服务程序,最后还会返回重新从 0 开始计数。毕业设计(论文)15图 4.3 定时器的时钟树定时器的定时时间计算公式:TIME=(TIM3_PSC +1)(TIM3_ARR +1)/72Mhz;本设计的定时器寄存器配置为 TIM3_ARR=71、TIM3_PSC=4999,所以定时时间为(71+1 )(4999+1)/72Mhz=5

37、ms (式 4.1)4.2.2 串口中断本设计在进行调试时,需要将数据通过无线串口发送到电脑上。本设计使用的STM32F103 系列单片机拥有 4 路串口,串口支持同步通信以及异步通信。串口中断初始化流程图如图 4.4 所示。图 4.4 串口中断初始化流程图STM32F103 系列单片机中串口是挂载在 APB2 下面的外设,所以串口使能也需要使能总线 APB2。串口参数主要包括:字长,停止位,波特率,奇偶校验位等。本设计主要毕业设计(论文)16使用串口 3,将波特率配置为 115200,字长设置成 8 位数据,停止位为 1 位,没有奇偶校验。4.2.3 中断优先级判断本设计中同时使用了串口 3

38、 中断和定时器 3 中断,所以需要合理配置好中断优先级。每个中断都对应着一个外设,每个外设都包含许多个中断源或中断事件,这些中断可以通过特定的中断通道向主处理器请求中断。软件设计中一般会通过配置中断控制器完成中断优先级的选择。ARM_M3 内核芯片可以配置 256 个中断优先级,STM32 的 NVIC 是ARM_M3 内核芯片的 NVIC 的子集。表 4.1 就是 STM32 的 NVIC 中断优先级配置表。表 4.1 NVIC 中断优先级配置表NVIC 优先级组 NVIC_IRQ 抢占优先级 NVIC_IRQ 次优先级 描述NVIC_优先组 0 0 0-15 1 位抢占优先级3 位次优先级

39、NVIC_优先组 1 0-1 0-7 0 位抢占优先级4 位次优先级NVIC_优先组 2 0-3 0-3 2 位抢占优先级2 位次优先级NVIC_优先组 3 0-7 0-1 3 位抢占优先级1 位次优先级NVIC_优先组 4 0-15 0 0 位抢占优先级4 位次优先级经过实际调试,本系统的中断优先组别选择 NVIC_PriorityGroup_2,中断优先级为:USART3 优先级大于 TIM3。4.3 MPU6050 原始数据采集本设计只用到 9 轴 MPU6050 姿态传感器中的加速度计和陀螺仪,主要用来测量加速度和角速度。具体数据采集程序的整体设计思路是,首先做好陀螺仪和加速度计的配置

40、工作,并且确定好串行控制口。接着,因为该惯性传感器内包含 AD 转换器,可以将采集到的模拟量转换成数字量,所以只要再将数字量通过 I2C 接口传输到主处理器中,就可以完成对 MPU6050 姿态传感器原始数据的采集。MPU6050 原始数据采集的流程图如图 4.5所示。4.3.1 陀螺仪和加速度计的配置工作毕业设计(论文)17因为人体行走频率不是很高,所以加速度计和陀螺仪的采样频率也不需要配置得过高,本设计采用 500Hz 的频率,配置角速度量程为2000/S, 配置加速度量程为8g。4.3.2 串行口的配置工作配置完加速度计和陀螺仪之后,需要通过 I2C 接口对 6 个轴的原始数据进行实时读

41、取。由于 STM32 的硬件 IIC 设计得十分复杂,所以本设计采用软件模拟 IIC 的办法。定义时钟总线接口为 PB6,定义数据总线接口为 PB7。#define IIC0_SCL PBout(6) /SCL#define IIC0_SDA PBout(7) /SDA 图 4.5 MPU6050 原始数据采集软件设计4.3.3 IIC 读取姿态传感器数据MPU6050 姿态传感器通过 IIC 发送的一个数据帧中依次为加速度 3 轴数据、陀螺仪3 轴数据、欧拉角数据以及温度数据,由于本设计中只需要陀螺仪数据和加速度数据,所以只读取前面的数据即可。但是因为加速度计信息和陀螺仪数据都是 16 位的

42、,而这些数据分别存放在两个 8 位寄存器中,所以要将两个 8 位数据转换成一个 16 位数据。本设计先将高 8 位数据左移 8 位,再加上低 8 位寄存器中的数据,形成需要的 16 位加速度计信息和陀螺仪数据。void Data_get_6050(int* AX, int* AY, int* AZ,int* GX, int*GY, int* GZ)iicDevRead(MPU6050_ADDR,MPU6050_ Accelerometer, 12, Registers);毕业设计(论文)18*AX=(s16) Registers0) 8)| Registers 1;*AY= (s16) Reg

43、isters2) 8)|Registers 3;*AZ=(s16)Registers4) 8) | Registers5;*GX=(s16) Registers6)8) | Registers7;*GY=(s16)Registers 8)8) | Registers9;*GZ=(s16)Registers10)8)|Registers11;4.4 数据处理由 2.3.3、4.2.3 可知,得到的加速度信号和角速度信号都是 16 位的,本设计要采用卡尔曼滤波进行数据融合处理。为了方便接下来的计算,先将加速度信号和角速度信号都统一为角度信号。再采用卡尔曼滤波,从而滤除噪声,得到较为理想的角度变化波

44、形。数据处理的具体流程如图 4.6 所示。图 4.6 数据处理流程图4.4.1 数据类型统一因为采集值都是 16 位 2 进制的加速度计值和角速度值,十分不利于运算,所以要先将两者统一为为角度信号。由 2.3.3 可知,加速度信号和角速度信号是如何转化成角度信号。数据归一化的具体代码实现如下,Accelerometer _X=Get Accelerometer _X( ); /IIC 读取 X 轴加速度计Accelerometer _Ax = (Accelerometer _Z - 1100) /16384; /去除加速度计的零点偏移Accelerometer _Ax = Angle_Ax*1

45、.2*180/3.14; /将加速度的弧度转换为度毕业设计(论文)19Gyroscope _y = GetAngle_Z(); /IIC 读取 Z 轴陀螺仪 Gyroscope _y = (Gyroscope _y + 30)/16.4; /去除陀螺仪的零点偏移,计算角速度值Gyroscope _y= Gyroscope _y+ Gyroscope _y*0.01; /角速度积分得到角度 4.4.2 卡尔曼滤波卡尔曼滤波以最小均方根作为估计的最佳准则,采用噪声、输入信号的状态空间模型,利用前一刻的状态估计值和现在的测量值来更新对状态变量的估计,求得此刻的状态估计值。因为卡尔曼滤波采用不断递归的

46、思想,只会保留上一刻的协方差,因此十分适用于数据实时处理。本设计采用简单的卡尔曼滤波算法,首先通过陀螺仪计算得到此刻的角度测量值。接着由加速度计算得到的角度与陀螺仪计算得到的角度,得到下一时刻的角度预估值。最后通过上一时刻的角度预估值和此刻的角度测量值,得到此刻的最优角度估计。卡尔曼滤波的具体流程图如图 4.7 所示。图 4.7 卡尔曼滤波流程图保持计步器水平放置,快速改变计步器角度,之后再快速恢复到水平位置,观察滤波前后角度变化的波形。图 4.8 即为滤波前的原始数据,可以看到数据数值较大,不太利于计算,而且曲线上升缓慢,快速跟随性比较差,输出中也存在较大的噪声。图 4.9 为经毕业设计(论

47、文)20过卡尔曼滤波后的融合角度值。从图中可以看出,经过卡尔曼滤波后,角度曲线的跟随性和快速性都得到显著的提升,同时噪声干扰也少了好多,曲线变得更加平滑。图 4.8 滤波前原始数据图 4.9 滤波后的数据图 4.8、图 4.9 中,X 轴为时间,Y 轴为角度值。从图中可以看出,卡尔曼滤波后的图像出现了过冲现象,由于过冲不是很明显且不影响接下来的计步,所以可以不改动相关参数。卡尔曼滤波具体代码实现如下DoubleFilter_Kalman(doubleAccelerometer_num,double Gyroscope_num) static double angle=0; /最优角度的初值 s

48、tatic double p=0.000001;/预测噪声方差矩阵static double q=0.000001;/协方差最优估计矩阵static double k=0; /卡尔曼增益 angle = angle + Gyroscope_num *0.001f; /最优角度估计值 p=p+q; k=p/(p+ Gyroscope_num); 毕业设计(论文)21/ 计算卡尔曼增益 angle = angle +k*(Accelerometer_num- angle); /卡尔曼增益修正角度 p=(1-k)*p; /更新协方差最优估计矩阵return angle; 4.5 计步算法本设计中,核心部分就是计步算法。根据之前得到的角度变化信息,通过合适的计步算法以确定运动步数。由 2.3.4 可知,本设计打算将峰值检测和动态阈值结合起来,形成一种融合的计步算法。因为人快跑的速度最多达到每秒 5 步,这种频率不是很快,所以本设计先采用了一个低通滤波算法。计步算法中设定两个移位寄存器 D

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报