stm32f1 平衡小车 (准备章节一)

本人小白一个,利用课外时间学习32,最近想利用手头资源做一辆平衡小车,但是这个新东西感觉还是有难度的。本篇博客就是对自己最近搜集的相关的资料进行一个梳理,明确思路。同时督促自己学习,不能再散漫下去了。本片博客纯属自己做项目中的心得,鸡毛蒜皮可能都会被记录到,大牛不喜勿喷。

想要做平衡小车,我觉得一定要跨过”三座大山“,他们分别是“MU6050模块的运用”、“算法代码以及理解”、“平衡原理以及实际调试”。

最近几天,从网上搜集了很多资料,由于手头就有一个MPU6050模块,所以今天晚上想要实现该模块数据的读取以及知道这些数据如何用。我会在接下来的过程中记录我所遇到的每一个问题以及解决的方法。

第一个问题:如何连接stm32f103mini 和mpu6050

我查阅了正点原子自带的产品手册,得知VCC连接3.3V或者5V,GND连接GND,SDA连接PC11,SCL连接PC12.(注意,这里不管是用的正点原子的MPU6050还是市面上的普通MPU6050都是这么连接的,亲测可行)

至于为什么要这么连接,我查了一下。

在此奉上正点原子的MPU6050的原理图。为什么只有四根线连接呢?

首先电源和地我不做解释,连接SCL和SDA是因为MPU6050在采用的IIC通信方式,而IIC通信的特点就是只有两根线进行通信。

第二步:读取模块回传的数据:(有些小伙伴可能会疑惑,这样是不是太快了,我们不是程序员吗?为什么不先写代码呢?

我在此的理解是:先理解原理,然后看懂代码,会对照数据手册修改代码就可以。不必纠结于这种模块的代码编写,网上随手一抓一大把。不用在此浪费时间。)

我将正点原子的代码下载后,我得到了四个数据,分别是Temp、Pitch、Roll、Yaw。我查阅了一下,代码中,它们分别代表温度、俯仰角、翻滚角、偏航角,合称:欧拉角。pitch():俯仰,将物体绕X轴旋转     yaw():航向,将物体绕Y轴旋转    roll():横滚,将物体绕Z轴旋转。

这里必须提到DMP,什么是DMP,他的全称是数字运动处理器。通过IvenSense公司提供的运动处理资料库,非常方便地实现姿态解算(就不需要通过单片机进行姿态解算),最原始的数据通过DMP处理计算之后得到的是四元数,然后经过计算得出欧拉角,其中的过程我在这里不多描述,一切都有现成的公式,对这部分有兴趣的话可以去看正点原子的教学视频。我在这里有点纠结为什么有的代码中单独列出DMP,而有的混合在了一起写,有点不好理解,以后在做平衡车代码时到底应当仿照哪个呢?暂时在这里还不定,以后再回答吧。

这时我产生了一个疑问:如何通过这些数据使小车实现平衡效果呢?

刚才在网上浏览博客时,又发现了一个问题,为什么平衡电机要接两根12V的线呢?

这两个问题下篇再解决。

猜你喜欢

转载自blog.csdn.net/qq_41821562/article/details/86754473