本人最近做了一个平衡小车,过程中遇到不少问题,在这里总结一下,可能也会帮助到大家
前言
我的平衡车只是起平衡作用,那些循迹呀、遥控呀都没弄
提示:以下是本篇文章正文内容,下面案例可供参考
一、嫖资料、找教程
平衡小车要学习PID算法、编码器、oled、mpu6050、tb6612当然最主要的时mpu6050和pid算法。我在微信上看到这样一篇文章非常非常有帮助,可以说我就是按着这篇文章做的平衡车。(大家可以微信关注公众号“果果小师弟”搜索“零基础一周完成平衡小车项目”查看这篇文章真的是满满的干货)pid算法的视频在腾讯视频app搜索“pid经典”可以搜到,特别经典,画质一般但是讲的特别好,我称之为最强(当然作者才疏学浅,没见过啥世面,嘿嘿)
b站平衡小车的up主“天下行走ㅍ_ㅍ”讲的非常完美,保姆级教程,大家可以参考下。关于mpu6050的是,我是先看的正点原子的又看的野火的最后看的小马哥的(小马哥在“摩尔吧”这个网站里面)我觉得小马哥关于mpu6050的视频讲的较好一些,还有一些编码器、tb6612的知识在csdn上读的文章,不难,很好理解。
二、小车结构
板子是作者自己焊的(要照着b站Up主的原理图焊,否则会出很大的麻烦,我就是随心所欲的焊的,结果改了很长时间),用了三个18650的3.7v电池来给tb6612和stm32供电(千万注意给stm32供电要接一个降压模块,我开始的时候直接用的一个电池给单片机3.3v供电,然后板子炸了,后来才知道电池充满电的电压是4点几伏,要是用电池给5v供电,怕供电不足,干脆一个降压模块下去全都解决了,降为5v之后给单片机和两个编码器供电,然后用单片机的3.3v给其他元件供电)三个电池大概是10v-11v左右,我给这个线接tb6612的时候加了个开关,可能是供电问题,如果不加开关,打开总开关后oled屏总是不亮,我怀疑是初始化总是不成功电池直接给两个器件供电,有点困难。我等oled屏亮了之后再打开接vm的开关,就十分完美。
大家注意小车的结构重心要低,控制起来效果才好,我的小车开始时中心太高了总是调不好pid 后来我给他加了块石头,铜柱的距离也缩短了,调起参数来就好一点了。
三、电子元件的组装
组装没啥好说的,如果自己焊的板子,焊的时候一定要仔细仔细再仔细,一个飞线飞错板子可能就会炸裂,建议焊板时给蓝牙留出一个位置来,可能以后突发奇想做个蓝牙遥控呢(本来在这已经弄完了,结果一个Ctrl+z,把我编辑的都取消了,害,再来一遍把,)
四、写程序时(改嫖到的程序)遇到的问题
1、注意mpu6050的摆放位置不要太奇葩,我的就是和up主(天下行走ㅍ_ㅍ)的不一样,结果调参调了好久才发现,摆放位置不同,需要更改函数,对于我的程序,是把这个
Vertical_out=Vertical(Med_Angle,Pitch,gyroy); //直立环
改为了
Vertical_out=Vertical(Med_Angle,Roll,gyrox); //直立环
起初时只是改了角度,没有改角速度(也就是把gyroy改为gyrox)调参调了好久都不行
2、还遇到了,把程序下载到stm32里程序不能执行,但是软件调试一会后就可以正常运行了,原来是这个Use MicroLIB不小心给去了,这个一定要勾上,好像是和汇编语言转c语言有关,野火的初级篇视频有讲,我也没注意,反正一定要勾。
3、还有就是up主的mpu6050的触发方式是外部中断,我也不知道怎么回事,我的外部中断总是不能触发(程序一模一样),我就给改成定时器3的定时器中断,5ms一次(因为dmp计算最少时间是5ms,小马哥视频里有讲,不过有的大神1ms一次,咱也无法解释)
4、看的有的视频教程讲,dmp初始化一次可能不成功于是我加了个循环
while(mpu_dmp_init()!=0)
{
PCout(13)=1;
for(i=0;i<200;i++){}
PCout(13)=0;
for(i=0;i<200;i++){}
}
如果不成功的话,灯就一直闪。(不同板子,灯的引脚可能不一样)
5、两个轮子的极性特别特别重要,是调pid的基础,一定要把极性确定明白了,在后面注释上,再去调pid,(别问我是怎么知道的,调了一周都不对,回头才发现极性弄错了)。
6、调pid时按照up主的视频调,不要跳,极性!极性!极性!很重要。
7、我把up主的程序从stm32c8t6移植到stm32rct6上后dmp初始化总是不成功,不知道为什么,(移植过程就时把芯片型号改一改把容量改了,晶振改成72兆,别的没动,是不是我移植的不对呢?欢迎大家给给建议)
8、最近想弄弄蓝牙,但是总是无法通信,然后才发现没有对中断优先级分组、串口初始化(我真是个小可爱(大sb)),希望大家不要碰到和我一样的问题。
希望可以帮到大家
总结
本人才疏学浅,刚刚接触32单片机,以上可能有不对的地方,希望大家不要责怪,我会虚心接受建议和批评,欢迎大家一起讨论问题。
最后附上几张我的平衡车照片吧,嘻嘻