文章风格不同与以往,带着随意写下我不擅长的所谓自平衡,在意者慎入。
我不知道该如何写这篇文章,因为一提到制作自平衡小车的时候,我是拒绝的,其中缘由不谈也罢。我很少接触控制类的项目,也就略显羞涩了许多。跟随大四的尾巴,工作也快敲定了,面临即将到来的实习,不久将至的毕业,允诺两个同学毕业设计的帮助,对了,还有FPGA的学习,嘿嘿,这两个月满满的“充实”。
学样像样,既然选择,只顾风雨兼程。
一、车模,是借来的
之前走朋友那里拿来一个小车模型,这是不能少的,自己做一个小车还是不现实的。这里建议大家的电机选用直流减速电机,小车上的电机型号为JGA25-371,为大家提供一个参考。个人感觉直流减速电机比市面上DIY小车制作使用的香蕉直流电机在速度控制上更稳定。此外电机上自带编码器测速,用于测试小车的实际车速,至于如何测速,这是百度的问题。
左为车模;右为减速电机JGA25-371(带编码器测速)
二、给电机一股澎湃的热血
谈到电机,不得不谈到电机驱动了,我有使用过L298N电机驱动的经历,说实话这个电机驱动模块真心不错,12V单电源输入供电机驱动,自带的7805稳压芯片转5V电压直接供给单片机工作使用。简化了电路设计,方便用户连线。朋友建议我使用TB6612FNG直流电机驱动器件,原因很简单,它相对于传统的L298N效率上提高很多,无需外加散热片,只需外接电源滤波电容就可以直接驱动电机,外围电路更简单。
左为L289N电机驱动;中为TB6612FNG电机驱动;右为3.7V锂电池每节
三、32 KO 51
处理上,主控芯片我选用的STM32F10X,其实我一开始觉得是从简而谈,51就OK,但我还是想把小车做稳定些,考虑到这点,处理速度上32好些,还有我最看重的就是32自带捕获功能,编码器测速不会占用CPU处理空间,额,突然觉得世界还是充满希望的。
四、前方高能,自带纸巾
好了,现在是我最不愿谈到的MPU6050,没话说,因为宝宝我就是一脸懵逼。对于6050复杂的I2C协议,数据的抓取,我尚且游刃有余,但我后悔的是,我看了两天的卡尔曼滤波,因为我拿我的智商去挑战科学的博大精深,我只想说,你行,你上啊。。MPU6050集成三轴加速度计、陀螺仪。至于自平衡小车的平衡为什么需要这两个传感器,推荐大家看《飞思卡尔电磁组官网双轴自平衡小车资料第二版》,这里面也包括对PID的理论介绍,在此不加累赘。单片机只需要读取车体上沿轮子转动方向的姿态数据(6050数据)就可以进行对应操作了。
关键点来了,在动态环境下,每次采样的姿态数据不一定是真实可靠的,因为陀螺仪是测量角速度的,但是角速度转换为角度是需要一个积分过程,假如在输入时有一个极小的误差,那么随着积分这个误差将会越来越大,最后得出的角度自然也是不准确的。此时,卡尔曼滤波、互补滤波闪亮登场,亮瞎我的双眼。
五、机智如我
我在某宝上找到一款串口MPU6050模块。它在6050的基础上集成了姿态解算器,先进的数字滤波技术在这里完成,配合动态卡尔曼滤波算法,能够在动态环境下准确输出模块的当前姿态数据,有效降低测量噪声,提高了测量精度。通过处理器读取6050的测量数据,然后通过串口输出,免去了所谓滤波对我的折磨。串口MPU6050,你值得拥有。
串口MPU6050
小总结
器件的正确选型,对完善硬件平台的搭建,以及后期的软件调试起到关键作用,加上对于网上资料的查阅,给自己定位一个入门吧。我放弃对卡尔曼的执着,因为我初衷不在于去研究这类技术,只是为了功能的实现。后期小车的平稳驱动,软件调试、优化,还需花费我大量时间。许多时候,我们看重的还是结果,毕竟太多过程的美好是需要下功夫的,而且对于结果往往还并没有什么luan用。
如果以后有精力,有机会接触卡尔曼滤波的话,哼哼,我也不会爱你。
备注:我会在智慧科技(优先)、EDN、电子产品世界更新内容,信息不涉及商业用途
文章评论(0条评论)
登录后参与讨论