对不起大家,由于我是i人,语言组织能力几乎为0,所以不能跟大家现场分享,只能发论坛了。
然后我也是第一次写经验分享贴,同时我经验并不是很多,所以如果有什么地方写的不对还请见谅。
我们因为其它的项目,对这次比赛的投入时间并不多,随便画了个板子之后就不管了,最后一个晚上才跑过去调参,然后就通宵了,最后也是侥幸拿了一等奖,那么接下来我就分享一下我们遇到的困难和解决方案。
首先就是学习和使用TI芯片的问题
我学习TI的方式是翻阅官方文档和立创开发板的文档,这样有利于我直接速通,可能几个小时就能上手TI,这种方式可能对你的基础有很大的要求,我本人是精通计算机基础,对计算机、单片机的运行逻辑比较清楚,也理解代码运行的底层逻辑,所以对我来说,学TI和学32是差不多的,想要实现什么功能直接去搜相应的库函数就行了,就算没有库函数,也可以根据官方文档中对寄存器的配置方法,自己去写一个库函数。况且TI还有一个类似于cubemx一样的系统配置工具,更是大大的降低了入门的门槛,仿佛像搭积木一样简单。具体学TI要用什么开发环境,其实都差不多,keil和ccs都有系统配置工具。
所以这里就提到了我对单片机学习的认知,总结一下就是:人控制sysconfig,sysconfig控制库函数,库函数控制寄存器,寄存器控制单片机。我们学51,就是人直接写代码控制寄存器,而32由于寄存器太多,所以就有了库函数,人通过控制库函数间接控制单片机,大概就是这样子。
所以以后不管学习什么单片机,我觉得都是一样的套路
还有就是,你可能会莫名奇妙碰到一些BUG,我就是这样的,在我看来,这是速通留下的后遗症。举个例子,我画了一个板子,这个板子上面可以插上嘉立创的MSPM0G3507开发板,这个开发板不插上去的时候,代码可以烧录到flash上,但是一旦插到板子上的时候就烧到ram里面了,这个问题困扰了我挺久的,csdn和b站通通没有答案,最后还是翻阅官方文档把问题解决的。而这篇文档,当时速通的时候就略过了,我们板子占用了一个端口,而这个端口是MSPM0G3507的BSL端口,决定开发板的启动方式。启动时必须给低电平。我们画板子是随便画的,忽视了这一点,所以浪费了我很多时间。所以大家以后如果遇到什么困难,在网上找不到答案,可以考虑去翻官方文档,仔细品味就会找到答案。
然后是就模块移植的问题
通常来说模块移植大家都会,知道原理,但是这样很浪费时间,所以我们肯定要站在巨人的肩膀上出发。就像你搞计算机视觉也要用别人的库,况且现在还有openmv这种,硬件和软件都给你安排地明明白白的,搞起来就不会花很多时间,而没钱的可能买一些便宜的摄像头回来,自己钻研opencv,况且opencv也是别人写出来的库。所以我觉得要想效率高,就要得会抄(bushi),不对应该是模仿,反正你知道原理就好了。
但是如果不懂原理直接拿过来用就很糟糕了。比如MPU6050模块,我们这个赛题是肯定要开机自检准,角度置0的,但是别人移植的MPU6050可能是拿来做平衡车的,他把开机自检准的代码注释掉了,这会导致严重的航向角漂移,如果你不知道一点原理,你可能就会考虑换模块了。
再然后就是PID
PID的话,我推荐大家用匿名上位机+蓝牙模块来显示实时波形并调参,这样很直观。匿名上位机有一套通信协议,大家可以跟着文档来。里面一些代码是固定的,比如两个校验位,文档里是有计算公式的。然后我墙裂推荐大家使用串级PID来控制,我们因为条件有限,没有用上编码电机,所以只用到了两个单级PID,小车的直线行走效果没有达到最好。
然后还有循迹部分
循迹部分我们原来用的是三路模拟量循迹,但是这个模块极易受光线影响,我们最后换成了四路数字量循迹,然后又发现路数太少了,超级容易出线,然后又加了两路。循迹部分主要有两个困难。第一个就是数字量循迹常有的问题:摇摆
这里我们采用(权值法+PID)的混合体来解决的,推荐大家去试一试,也可以把微分部分的求导换成反比例函数,似乎有奇效,但是我没有认真实验过。第二个是模块本身的问题,由于我们的模块规格不一样,所以我们小车就算在线的正中间,也会出现传感器全部没有探测到黑线的情况(黑线刚好在两个传感器中间),这种情况我们称为全空。解决办法是设置一个全空率,如果小车处于全空,就让一个变量一直递增,因为小车有惯性,如果小车还在线上,那么小车不可能一直全空,如果小车检测到了黑线就把全空率置0,通过这种方法来判断小车是否真正地出线。有点类似于STM32ADC采样中提高精度的方法。第三个问题是传感器无法同时检测到黑线的问题,这样的话小车到了停止线就不会停,我们的方法就是枚举,列了一堆switch case。虽然菠萝部长说TI会有概率在break那里卡死,但是我们好像没有碰到过这种情况。
还有一个PCB的问题,大家画PCB一定要仔细审查,不然后面一堆问题!!!
还有电机选好一点的,会减少一点痛苦,我们的硬件纯纯就是一拖答辩。
最后就是调参,我墙裂建议大家一定要到现场调,不调不知道,一调全是BUG,我们也是直接通宵了。
然后也没有什么好说的了,如果哪里有问题,大家轻点喷。最后是比赛视频。