恩智浦智能汽车竞赛电磁组总结

           送给大二做智能车的同学们
                                              ——秋名山车神队 电磁竞速组

您们好,刚入手智能车可能不知所措,会浪费很多的时间,不知所措,我把这一年走的弯路告诉大家,让大家开始就有一个目标,快速进入实验室的状态,首先我要告诉大家,其实学长们的确开始比你们懂得要多,但是经过一段时间我相信你们会比我们做的还要好,相信自己,自己的想法是很珍贵的,每一年的智能车规则不一样,车模也不一样,如果电磁明年变成直立,很多关于电机的控制都用不到了,但是每一个模块的控制还得一个个来,我就给大家讲一些控制,希望大家以后能用得到。
如果你们刚到实验室还没有智能车的一些材料,那么你尽量学习51郭天祥10天学会单片机视频,做一些小的玩意,智能车也是需要一定的基础的,做出小的作品对你以后参加智能车特别有用的,建议你们买一套51开发板,你们可以边看边写,照着视频里面的写,一旦你们点亮led灯后,会很有成就感,你们也会发现其他东西也并不是想象中的那么难,增加你们的信心,这也对你们参加挑战杯,其他比赛很有用的,我们会把51历程会发给大家的,同时安装好IAR,这也是智能车的调试软件,看一下山外的视频讲解。
如果你们接触到了智能车材料,而不知所措的话,你们一定要先知道,做智能车先要分配好任务,每个人都要有事做,做车千万不要自己的事做完了就不管了,既然是一个团队,就要互相帮助,单独的调车很痛苦的,多陪陪队友,才有动力,很多队半途放弃了,五六十个队只能留下十二个队,只要能坚持下来,会成功的,一直调半年的车,再大的兴趣也被磨得差不多了,所以提前做好准备。
下面开始主题,首先建议你们买成品板,买电机驱动,主板,如果还是可以用K60的话,强烈建议买山外K60FN(UD版)芯片,原因就是因为他历程给的多,省了大家很多很多时间,有了山外的库,我们就可以直接调用就行了,买过山外的板子后,我们当初寒假留校一星期,每一天都要给自己一个目标,比如第一天定目标完成电机控制,第二天完成舵机控制,第三天完成传感器采集,然后尝试把这几个程序合在一起,一起控制,前提一定要先买好材料,可以再考期末试的时候把开发板,主板,驱动板买回来,以防开始无所事事。
K60有四个中断,FNK60有4个FTM,大家尽量把程序分在各个中断里面,不要把所有程序都放在while中,事实证明,放在while会让单片机处理信息特别大,单片机容易热,也容易烧,放在中段里面,大大减少了单片机的工作量,而且处理速度反而更快,四个中断,一个用于舵机,舵机极限是300HZ,也就是他最大只能达到300HZ,也就是1000/300=3.3ms,就是说他最快反应时间也只是3毫秒,所以没必要让他在while中一直循环做无用功,同样的时间越短,舵机力量越小,在转弯的时候显得没力,所以我才用200HZ,也就是5MS反应一次,所以舵机中断时间我给的是5MS,最大限度的减少了单片机的工作量,同样的,我电机给的是50HZ,中断给20ms,传感器检测我也是给5ms中断和舵机放在一起,我的编码器中断给50ms,这个中断我给的大了,你们可以给20ms,让编码器速度检测的更快一点,屏幕给的是100ms,因为屏幕只是方便调试,不用太占用单片机的处理时间的,中断还会有优先级,优先级就是假如5ms的中断和10ms中断,5ms处理俩次之后同时到了10ms中断,当他们中断相遇时,就要有优先级来决定先处理哪一个中断,这里我给的是舵机(传感器采集)为第一优先级,电机为第二优先级,编码器为第三优先级,屏幕为第四优先级,,K60有4个FTM,我是B车模,只有一个电机,所以一个用于舵机,一个电机,一个编码器,注意的是,一个FTM只能控制一样东西,假如控制了舵机,就不能控制电机了。
我发了一个最终版的程序,里面可能加的东西有点多,不容易看,还有一份源程序,特别简洁,你们可以先按源程序改,在参考我最终程序,也不用完全按我的来,有一个好的想法真的可以把速度提升好多,珍惜你们的想法。
如果你们的车可以跑起来了,电磁组归一化很有必要的,因为不同的赛道,信号强弱也不同,不能车在本校的赛道可以跑,换个赛道就不行了,所以,要让他在其他赛道检测到的值转化到和本校赛道一样的值,这样车才能跑出更好的状态,归一化其实很简单,最终程序也详细注释了,就是在5秒内摇晃车子,每一个电感检测到的最大值和最小值记录下来,然后车子跑的时候采集到的值/(最大值-最小值)*100,这样检测到的值就会范围在0-100之间,特别容易处理这些值。
注意事项:
1.编码器当时我读了很长时间也读不出来速度,首先建议大家采用K60正交解码,可以测正反转,以后停车和刹车会好用一点,编码器有四根线,俩跟正负极,一根可以检测速度,一根检测正反转,当时读了很长时间也读出来是因为编码器俩跟信号线没有接上拉电阻,大家可以俩跟信号线分别接10k上拉电阻到5v电源上。
2.归一化之后的值正常在0-100,如果有时0-110,也正常,甚至在十字弯路段时,值可能会达到120多,所以大家在处理上坡时,给大家个方法中间加一个电感,中间归一化之后的的值大于130,说明到上坡了,然后就可以利用编码器记录距离,例如俩米,在上坡中可以加速,控制舵机小幅度打角.
///////////////特重要的
本程序控制舵机电感源代码当中就三个电感,其实俩个就行了,我就用俩个(三个是因为外侧电感值减去中间电感值,而俩个可以外侧减去另一外侧,只是为了确定左转还是右转,为丢线做准备的),中间也可以再放一个电感检测上坡,这三个是控制舵机的,这三个电感其实不用PID,只要处理好,电机给固定占空比,速度就可以达到2米以上了,如果速度还要提升,就要用PID了,还要加俩个竖直电感在最外侧(25cm宽度限制),竖直电感的最大的优势就是在直道上怎么晃基本没值,或者值很少,但是一到弯道,提前值就会变得好大,有很好的预测性,给单片机更好的处理来面对,所以我的想法就是如果舵机在1.5米的距离之内没有出现打死的情况(小幅度的晃动不算,)则判断为直道,如果被判断为直道且竖直电感值很大的话,则判断为长直道入弯,开始用PID减速,如果过了一会舵机打死,则判断为完全进入弯道,开始加速,这样最大化的减少了速度损失,使车在拐弯时十分的迅速,
3.关于大S弯判断:,很多车子发现都是大S连续弯容易将车子甩出去,想要处理好大S弯有不影响其他弯道的速度,就必须先把大S识别出来,识别很容易,我的想法是,舵机每打死一次,记一下,如果向左打死,记录一下为1,然后用编码器记距离,如果在1米内他向相反的方向(向右打死记为0)打死,则判断为大S ,然后给予处理,减速慢行,
4.十字弯也是,十字弯的特征是我俩边的电感值在经过十字弯时都特别大,所以我就记为十字弯,然后前半段减速,后半段加速,直到再次经过十字弯,判断为出十字弯,不过有风险,就像今年的比赛,有十字弯的不一定真的就是十字弯的一个圆,所以我不建议十字弯加速。
5.上坡的问题我前面也说过了,其实一个中间的水平电感就可以了,当他大于一定的值就判断为上坡,然后给一段上坡的距离,比如1.5米为上坡,在这1.5米内你可以加速,让舵机小幅度打角,让车平稳的过去,关于飞坡也要注意一下,虽然可以在上坡加速,但也要注意万一比赛像2017年的赛道,上坡后很快到弯道,车不容易减速。
6.如果你可以跑起来了,最好可以跑完一圈的,基本车在起跑的时候速度提的很慢,如果想提速,大家可以从起点记距离设定在开始1米内给特别高的占空比,让车把速度瞬间提起来,这样可以节约一定的时间,但是注意一下速度和距离不要太长,因为比赛的时候不知道开始的知道距离有多长,如果太长的话,可能车在第一个弯道减不下来(前提是有竖直电感,可以用PID控速的)。
7.在比赛的时候要留一个最低速,我当初留了一个大约1.7米每秒的最低速度,大家可能会发现车慢了反而会内切(大家可以修改丢线电感值来控制打死角),还有一个就很粗暴,我当时在很近的地方放俩个水平电感,因为近所以,所以电感也很低,俩电感的距离也近了,所以监测的值也大了,所以丢线也会变化的快一点,让车子能沿着漆包线走,当然直接在程序修改也是可以的。
8.大家无论选择什么组,在画板子是一定要加上LED 屏,因为加了屏幕,在以后的调试中真的可以起到很大的作用,节约很多时间,还有电磁组画传感器的时候,尽量画8个,最少6个,你多画几个就算不用也没事,万一以后用也不至于重新画板子,还有电磁碳素杆之间的连接,碳素杆要用实心的,2mm,2.5mm.3mm,在淘宝搜一下就行了,我们做的时候没有想到好的方法,所以采用了热熔枪固定,但是实践表明热熔胶容易变形,不够坚硬,直到我在快比赛的时候看到安工程的衔接处全部用3D打印机打印的一个小固件,很轻,而且不占地方,所以我希望你们可以借鉴一下。
我的程序在https://download.csdn.net/download/u011078253/12495722恩智浦智能汽车竞赛电磁组总结_第1张图片

你可能感兴趣的:(恩智浦智能车竞赛电磁组)