在上周终于将做了三个礼拜的平衡车项目结尾,实现了平衡、遥控以及抬起电机停转放下电机恢复的功能,超声波未能搞出来,原因是模块出了故障,等新的模块到要很久而且超声波的难度并不大,所以就阉割了这个功能,让组内的小伙伴们去搞这个吧。 本项目的总结将分为三部分:流程控制、硬件设计和控制算法。 平衡小车是通过读取、计算传感器的数据来控制电机的转动,从而达到小车的动态平衡。平衡小车的控制中用到了三级的PID算法,还是很有难度的,而对于小车的硬件结构来说,重心越低,越容易平衡,而重心越高平衡的难度就越大。 首先是平衡小车的控制流程图,我把路程图分为主函数、中断控制函数、直立环、速度环、转向环五个部分。 1、在主函数中完成系统各部分的初始化,并且在循环中每50ms在OLED显示运行数据。 2、由MPU6050的中断引脚触发的外部中断的中断函数是整个系统的控制函数,MPU6050每5ms触发一次中断,而我调节的周期为10ms 3、直立环是平衡小车最重要的部分,对于小车来说立起来是最终要的,在我的PID分类下有一篇专门记录如何将小车立起来的博客,我在这个过程也是花费了大量的时间,经过长时间的调节参数终于使小车可以稳定直立。 4、速度环的作用是使小车在平衡时趋向于原地静止,当然要想使小车完全不动的直立在原地是不可能的,通过速度环只能使小车尽可能的减少移动。 5、转向环可能是平衡小车中最不重要的一部分,但是想要使小车走直线或者可以通过遥控控制转向,转向环也是必不可少的,转向环通过编码器和加速度计的融合算法来使小车实现转向功能。