« 上一篇下一篇 »

两轮平衡车设计总结

1、直立控制中为什么需要测量角度和角速度?

答:小车平衡需要引入两个力,一个是回复力,一个是阻尼力,回复力与角度成正比,阻尼力与角速度成正比,所以需要测量这两个量。

2、直立控制中的两个参数为什么是比例参数与积分参数?

答:与角度相关的参数为P参数,与角速度相关的为D参数,因为角速度是角度的微分,所以P参数称为比例参数,D参数称为微分参数。

3、实现基本的直立效果,基本上不需要去考虑传感器的零点漂移。

4、还是要多了解点电路的基础知识,比如说接感性负载时,电源端应该接一个大的电解电容,用作滤波,防止尖峰电压烧坏器件。

5、还是要多了解一些数字信号处理的基础知识,比如各种滤波算法的原理,如互补滤波、低通滤波等。

6、做一件事情之前,整个系统的规划与设计非常重要,比如它对器件购买的影响就很大:规划好了,一次性买清,规划不好,不是这个没买就是那个没买。

7、信心最重要!

调试方面

一、电源

因为我们的负载(电机)是感性负载,所以我们需要在电机驱动模块的外面接一个大的电解电容,比如说220uf,这个一定要加上,因为我做的过程中烧了3次电机驱动,后来加了电解电容后,感觉好多了。

二、程序下载

程序下载时,一定要断开所有的电源连接,就是说只给单片机供电就行了,其他的电源,比如说驱动与12V电池的连接,以及编码器的电源,都要关掉。我之前烧了3次芯片,每次都是下载的时候烧掉的。

三、MPU6050数据获取

MPU6050支持I2C通信,可以写一个软件I2C的程序,来读取它的数据。

MPU6050的数据处理:最简单的就是读出原始数据,然后进行一阶互补滤波即可。官方的DMP库我也试着移植过,但是最后还是放弃了,感觉太复杂,然后其他的滤波算法,比如卡尔曼滤波,也太过复杂了。其实用个简单的一阶互补滤波和卡尔曼滤波性能差不多。

四、PID调节

   按照第七届飞思卡尔竞赛官方给出的教程,进行PID调节时,应按照如下步骤:

第一调直立环:先调P系数,直至小车出现较大的震荡;再调D系数,直至小车出现高频的抖动(这个地方要注意,不要盲目的去参照别人给出的系数值,一定要自己调,看效果,直到小车出现抖动方止)。

第二调速度环:先调I系数,直至小车能够较好的直立(其实一般而言光是调I是无法实现较长时间的直立的)或是有这种趋势;再调P系数,慢慢加大,如果你前面的几样参数比较合理的话,随着P的增大,车子稳定的时间就会变得越来越长,直到某一个P值,此时车子就会一直保持直立状态,并来回运动,而不会倒下,到这里,平衡小车的功能你就基本上已经实现了。

第三调转向环:我的转向环调来调去总觉不对,所以就不说了,具体请参照卓晴老师的视频。

上面所说的PID调节,我只是按照我的做法来论述的,基本上与视频里面的一致,所以具体的调试方法,请参考卓晴老师的视频(讲得很好)。

 

其实现在来看,平衡车的代码其实不难,只不过任务量较大,然后比较琐碎,再一个,整个系统的需要考虑的点也比较多,硬件上面相对来说比较复杂。好说歹说,不管怎么说,反正我做出来了,平衡小车、PID调节,至少证明我的能力还是比较强的,至少在实物调试上,我的能力上了一个台阶,而且,毕业设计的主体已经完成了,下面只剩下论文了。

做了两个多月,竟然没什么可写的,唉,这总结能力是真的需要提高!

最后一点:坚持与信心是制胜的关键!