前言:上次云里雾里的说了一通,不知道对平衡车的控制有没有说到点子上。单纯的讲解原理可能会很无聊,但是作为一个技术宅来说,就算头皮发麻也要接着看下去。哈哈,吾理小子争取用通俗的语言把自己懂的知识讲解出来。
好了,闲话少说,进入正题。上文已经做好了平衡车站立起来的全部准备工作,接下来就是控制的核心了,如果对上面讲到的内容还没有看到,建议先看上一篇,否则会有莫名其妙的感觉。
首先,说说陀螺仪的安装位置,建议有条件的话装在电机轴的正上方,两轮子中点处,这样做的好处是角速度响应比较平均。但是,吾理小子的条件有限,陀螺仪装在了右侧轮子附近,安装位置看下图。(PS:陀螺仪一定要装稳)
安装好陀螺仪之后,接下来开始写程序。关于MPU6050的程序,吾理小子不想啰嗦,直接说比较关键的地方吧。相信用过STM32的小伙伴对原子哥不会陌生吧,小编也是原子哥的受益者,在这里顺便感谢一下原子哥。
小编移植了原子哥的MPU6050程序,所以要说一下初始化问题。我们知道陀螺仪上电之后要初始化,然后要自校准。原子哥的程序是以上电的时候陀螺仪的姿态为参考,解算姿态。也就是说,每次测量的姿态都是以上电时刻为基准的。那么可能有人和小编一样纳闷,如果每次都是相对的参考平面,那岂不是要每次扶着平衡车上电初始化啊。考虑到这个问题之后,小编尝试寻找MPU6050的绝对参考平面。
原子哥初始化程序中有一个DMP初始化,打开看看
看到下面有一个自检函数,Go to你会发现有这样一段代码: