软件流程:
软件部分分为两个大部分:
1数据部分
数据部分围绕MPU6050传感器展开。分为数据获取,滤波,数据处理
1.1数据获取
STM32通过I2C和MPU6050进行通讯,其中涉及到基础的I2C通信协议实现,在I2C基础上,涉及到MPU6050各种参数的设置,比如加速度的范围等。不同的设置获取到的数据会不一样并且精度也不一样。
1.2滤波
在获取到原始数据后经过简单转化变为角度,但是这个数据是不准确的,因此需要滤波处理,由于小车比较简单,滤波就用的是互补滤波。这样就能获取比较精确的数据的了。
1.3数据处理
在滤波前需要对获取的原始数据进行处理,这个需要一点点物理知识,还有一个就是角速度的积分操作,这个需要使用定时器来完成。
2控制部分
控制部分主要分为PID算法,电机驱动
2.1PID算法
PID算法就是比例,积分,微分这三个变量相互作用最后输出到控制器上去。刚开始时以为需要P就够了,最后发现效果不好,在加入了D之后,效果就很好了。
2.2电机驱动
电机驱动主要设计的知识就是PWM波的控制,STM32有相关的库操作,只需要按要求设置好就OK了。然后将PID算法产生的结果作为参数输入到这里就可以实现控制了。
软件部分涉及的东西不多,就算是单片机新手,花功夫肯琢磨也不会用多久时间。
七七八八说了那么多,没有视频说个毛线,在这里录了几个小视频,让大家见笑了:
右转弯:
左转弯:
前进后退:
做这个小车还是花了些时间,目的是希望给后来者多填坑,
希望大家能给我多多提出意见,如果有什么疑惑,我也会尽可能帮助解决~
说了这么多,现在跟大家分享一下资料,这个平衡小车的软硬件设计资料全部都是开源的,
git地址:
https://github.com/bigbearishappy/BBear_balance_car
如果觉得还行的话给我点个星星,如果觉得做的不好的话也希望大家能够帮我一起改进~