原创 自平衡小车从入门到放弃

2016-4-17 20:44 1511 3 3 分类: MCU/ 嵌入式

文章风格不同与以往,带着随意写下我不擅长的所谓自平衡,在意者慎入。

我不知道该如何写这篇文章,因为一提到制作自平衡小车的时候,我是拒绝的,其中缘由不谈也罢。我很少接触控制类的项目,也就略显羞涩了许多。跟随大四的尾巴,工作也快敲定了,面临即将到来的实习,不久将至的毕业,允诺两个同学毕业设计的帮助,对了,还有FPGA的学习,嘿嘿,这两个月满满的“充实”。

学样像样,既然选择,只顾风雨兼程。

一、车模,是借来的

之前走朋友那里拿来一个小车模型,这是不能少的,自己做一个小车还是不现实的。这里建议大家的电机选用直流减速电机,小车上的电机型号为JGA25-371,为大家提供一个参考。个人感觉直流减速电机比市面上DIY小车制作使用的香蕉直流电机在速度控制上更稳定。此外电机上自带编码器测速,用于测试小车的实际车速,至于如何测速,这是百度的问题。

20160417202910134.jpg20160417203050987.jpg

左为车模;右为减速电机JGA25-371(带编码器测速)

二、给电机一股澎湃的热血

谈到电机,不得不谈到电机驱动了,我有使用过L298N电机驱动的经历,说实话这个电机驱动模块真心不错,12V单电源输入供电机驱动,自带的7805稳压芯片转5V电压直接供给单片机工作使用。简化了电路设计,方便用户连线。朋友建议我使用TB6612FNG直流电机驱动器件,原因很简单,它相对于传统的L298N效率上提高很多,无需外加散热片,只需外接电源滤波电容就可以直接驱动电机,外围电路更简单。

20160417203224444.jpg20160417203256519.jpg20160417203323246.jpg

左为L289N电机驱动;中为TB6612FNG电机驱动;右为3.7V锂电池每节

三、32 KO 51

处理上,主控芯片我选用的STM32F10X,其实我一开始觉得是从简而谈,51就OK,但我还是想把小车做稳定些,考虑到这点,处理速度上32好些,还有我最看重的就是32自带捕获功能,编码器测速不会占用CPU处理空间,额,突然觉得世界还是充满希望的。

四、前方高能,自带纸巾

好了,现在是我最不愿谈到的MPU6050,没话说,因为宝宝我就是一脸懵逼。对于6050复杂的I2C协议,数据的抓取,我尚且游刃有余,但我后悔的是,我看了两天的卡尔曼滤波,因为我拿我的智商去挑战科学的博大精深,我只想说,你行,你上啊。。MPU6050集成三轴加速度计、陀螺仪。至于自平衡小车的平衡为什么需要这两个传感器,推荐大家看《飞思卡尔电磁组官网双轴自平衡小车资料第二版》,这里面也包括对PID的理论介绍,在此不加累赘。单片机只需要读取车体上沿轮子转动方向的姿态数据6050数据就可以进行对应操作了

关键点来了,在动态环境下,每次采样的姿态数据不一定是真实可靠的,因为陀螺仪是测量角速度的,但是角速度转换为角度是需要一个积分过程,假如在输入时有一个极小的误差,那么随着积分这个误差将会越来越大,最后得出的角度自然也是不准确的。此时,卡尔曼滤波、互补滤波闪亮登场,亮瞎我的双眼。

五、机智如我

我在某宝上找到一款串口MPU6050模块。它在6050的基础上集成了姿态解算器,先进的数字滤波技术在这里完成,配合动态卡尔曼滤波算法,能够在动态环境下准确输出模块的当前姿态数据,有效降低测量噪声,提高了测量精度。通过处理器读取6050的测量数据,然后通过串口输出,免去了所谓滤波对我的折磨。串口MPU6050,你值得拥有。

20160417203514891.jpg

串口MPU6050

小总结

器件的正确选型,对完善硬件平台的搭建,以及后期的软件调试起到关键作用,加上对于网上资料的查阅,给自己定位一个入门吧。我放弃对卡尔曼的执着,因为我初衷不在于去研究这类技术,只是为了功能的实现。后期小车的平稳驱动,软件调试、优化,还需花费我大量时间。许多时候,我们看重的还是结果,毕竟太多过程的美好是需要下功夫的,而且对于结果往往还并没有什么luan用。

如果以后有精力,有机会接触卡尔曼滤波的话,哼哼,我也不会爱你。

备注:我会在智慧科技(优先)、EDN、电子产品世界更新内容,信息不涉及商业用途

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
3
关闭 站长推荐上一条 /3 下一条