【全国大学生电子设计竞赛】2019电赛H题覆盘录——电磁曲射炮+综合测评

       这是我本科阶段的最后一战,本来期待一个完美收官,但是意外频频,打的不尽如人意,但收获还是有的,故在此覆盘,留下一些可供后来人参考的东西。

       在此感谢我的队友CJC,WJJ,陪我一起熬夜!

        笔者才疏学浅,如有错漏之处,还请告知于我及时更正,感激不尽!


1 国赛的备赛(赛前一个月)

       我们组确定了做控制类的题目,也就是说会选择飞行器另一道典型控制题所以在硬件的准备上,我主要着重于控制板的设计与调试以及飞控的调试,后来因为听说飞行器题目限定使用德州仪器的芯片,所以后期的重心主要在另一道控制题目上,我的队伍准备了:

  • STM32F407主控板(带有MPU6050/9250接口,7线OLED显示模块,一组SPI,4个ADC通道,4个DAC通道,4个定时器通道,4个串口,6个按键,2个LED,1个蜂鸣器,1套SPI,1套IIC)
  • 电源板(12V直流输入,12V/5V直流输出,2个直流电机驱动,2个步进电机驱动,4路舵机驱动)
  • 图像处理板(使用STM32H7,刷写micropython固件,可使用OpenMV的IDE编程,摄像头型号OV7725)
  • 无线调参器(用于快速地,实时地调节参数,带一块4.3寸液晶屏,8个按键,2个电位器旋钮,1个无源蜂鸣器,1个RGB灯,1个外置FLASH芯片)

4块板子统一了接口,可以用防反接的端子线互连

我的队友负责驱动代码的维护,确保每个模块都可以成功驱动(OLED,蜂鸣器,舵机,步进电机,直流电机,陀螺仪,串口,ADC,DAC,IIC,SPI)

反思:

  • 在准备过程中,存在由于任务分配不均导致的部分队员怠工的现象(广泛存在于各组,不是个案,不是所有人都是为了参赛的学习,有些人就是只想混个经历)。这种情况就需要多沟通,高年级学生作为实验室的主导者,不能无视,更不能同流合污。否则会陷入恶性循环!
  • 测试好的的代码包,需要在必要的地方添加注释,方便在使用时快速移植
  • 飞行器题目由于涉及到机器视觉,德州仪器的MSP430/432系列很难满足要求,DSP对于使用者的技术要求又偏高,所以在芯片限定上势必会适当放宽,准备期间的担心不成立(放弃飞行器的关键应该是实验室不具备调试飞行器的场地条件)

2 国赛进行时

拿到题目,在注意到飞行器题目需要SD卡后果断放弃(我的图像处理板没有画SD卡),开始准备 H题-电磁曲射炮

我把整个工作分为以下几个部分

  • 电磁炮及其驱动
  • 视觉部分(寻找靶标)
  • 炮台控制
  • 论文撰写

以下详细介绍各部分的分析与落实情况:

(1)电磁炮及其驱动:

电磁炮通过在网上搜索资料有了初步的理解,在了解了射程的要求后,我们认为单级线圈就可以满足题目要求的出射速度(事实上也的确如此),遂开始绕制线圈,开始使用电源组的漆包线绕制线圈,漆包线很细,导致线圈内阻很大,在使用电源箱测试时,短路电流也上不去(约7A@60V,等效内阻8.6Ω,可以说是相当大了),反复的测试还导致线圈发热脱胶(这不就是电热丝?),后来到电机维修的店里买了粗的漆包线,绕制了约150匝,线圈内阻就很小了。

【完整参数:约150匝,漆包线直径1.25mm,电阻约20mΩ】

内阻问题解决,电流可以上去了,但是通过计算可以看到,理论短路电流已经达到了3000A@60V,如此大的电流电源箱如何招架?就算存在,热功率也达到了180kW,这是不现实的,何况我们需要的是瞬时放电,所以大电容是再好不过的选择了,由于要求可控,需要一个开关来控制电容对线圈放电回路,我们找了一个空气开关来临时实现(在后期替换为MOS管,毕竟发射需要电控),经过测试,使用螺丝/铁钉作为炮弹时,绕制的线圈炮可以达到要求,(因为发射时炮弹获得的动能大致是固定的,动能E=1/2mv^2,只有质量m小一些,才能获得较大的速度v,当然,质量太小的物体在飞行时受到气流影响较为明显,主要表现为弹道发飘,落点不固定,因此需要在质量m与速度v之间做取舍)。

为确保精度,炮台使用了步进电机(航向与俯仰,共两个步进,使用16细分),步进电机驱动代码由大二队友负责,为了实现炮台两周的角度闭环,使用定时器充当了一个模拟编码器,对输入步进驱动器的脉冲进行计数,只要步进电机不丢相,根据脉冲数就可以确定步进电机当前的角度。

(2)视觉部分(寻找靶标)

使用了自制的摄像头板,刷写了micropython的固件,所以可以使用OpenMV的IDE进行编程,寻找靶标的逻辑比较简单:先找红色色块的区域,在色块附近区域使用霍夫变换的方法找指定半径范围内的圆,此算法相比于全图像霍夫变换,效率奇高(78fps),ov7725在不做任何处理的情况下,也就78fps左右以至于我都误以为帧率刷新的代码写错了。后来担心由于光照原因导致色块识别出错,改成了灰度图直接霍夫变换找圆,只不过对ROI做了一个固定的限制(上下端部分不要),测试帧率在60fps左右。最后,使用串口以115200的波特率将圆形圆心的座标发出,同时带有固定帧头帧尾校验和无圆心的特殊标志位,并且为方便调试,识别到靶标时,亮红色LED作为提示。全部代码实现后,实测帧率40-50fps左右,满足要求。

(3)炮台控制

炮台航向的控制非常简单,不再做过多叙述,在此详细介绍炮台俯仰的控制(俯仰角控制炮弹的垂直出射角)。

首先,根据高中物理可知,在理想情况下(无空气阻力,炮弹出射动能恒定,出射点与着弹点在同一水平处),45°出射时射程最远。具体公式我在比赛的时候推导过(但是现在找不到了),炮口在45°时,无论上擡还是下擡,着弹点都会向出射点靠近。但是要注意一点,很少有人的出射点是和地面水平的,也就是在炮弹发射之后,在达到与出射点同一水平高度时,还将继续飞行一段时间。

通过计算,考虑出射点高于实际着弹点情况下,在机械结构本身产生误差角δθ时,高射方式(大于45°出射)比低射方式(小于45°出射)产生的误差δx要小,但是由于我们炮台机械装置的局限,迫不得已采用了低射方式,不过在后续实测中,这点误差无关紧要。

在炮台控制中,射程主要和线圈的初始放电电压(电容电压)炮弹形状材质线圈匝数炮弹在炮膛中的位置出射角有关,前4个变量都可以被控制成常量,所以只需要控制出射角这一变量即可改变射程。出射角与射程的函数关系非常重要,由于公式推导复杂,我们采用直接的实测数据来拟合出这一函数关系。拟合的方式采用分段折线拟合,(多项式拟合在最后被实践证明为最不靠谱的拟合方式)。

(4)论文撰写

论文撰写部分完全交给了组内大一学弟负责。

反思:

在这个环节我犯了不少错误,也反映在这个过程中,我没有做好一个合格的领导者。以前我习惯单打独斗,软硬件都是自己来,这次比赛还是没有适应过来,虽然我主要做控制算法和视觉算法工作,但还是想每个部分都插一手,搞得其他两个队员很不满意,总感觉我在否定他们的工作。

此外,我自身没有形成比较权威的领导力也是一大问题,队里大二的队员本身实力较强,在写步进驱动代码的时候有很多自己的想法,经常以“我觉得没必要”驳回我的建议,当时考虑到队伍情绪问题没有做过多干涉,结果在后期写控制算法的时候才尝到恶果,这位兄弟的变量名取的模棱两可,他自己调用完全没问题,我在衔接的时候晕头转向。因此,我的建议是,在团队合作中,多沟通,及时消除所有拒绝合作的苗头;对于不好的编程习惯,一定要尽早杜绝。在代码交接的部分,一定要规范命名,多写注释!

在比赛过程中,我一开始在调一个激光跟随的发挥部分,做好之后发现我们的基础功能还没实现(此时已经过去大半天),才开始调基础功能,后来时间仓促,这个发挥部分也没有用得上。可以说白白浪费了许多时间。后来使用调参器改造成遥控,加上了预测弹道和着弹点的界面,感觉在界面花了太多时间,虽然最后这个部分得到了评委的肯定,但是如果用这个时间去打磨我们的基础部分,效果会更好。所以,做比赛还是应该按部就班,不要好高骛远。

在基础部分中,要求键盘给定距离和角度,当时图方便,航向角步进3°,射程步进5cm,(最后也没有改动)。比赛现场评委指定了20°位置,航向角的初始值为0°,我们的设置只能到18°或21°,导致总是打偏。

此外,没想到用来判断落点的所谓高速相机,竟然是评委的眼睛!(笑),然后是通过一个沙盘来判断落点。我现在才意识到沙盘的高度相当于缩短了我在上文图片中标出的ΔH,而且由于我们采用的是低射方式,距离越近,误差就越明显!我们在自己标定的时候,都是直接在瓷砖地面标定的(也有在厚的瑜伽垫标定的,这样就很逼近赛场情况了),2cm的沙盘,最大可以产生6cm的射程误差,我也总算理解了为什么比赛时落点总是比自己实测的时候短一点了。(很气)

 

3 综合测评备赛(赛前一周)

主要看了前几年的真题,在Multisim仿真了一下,也把部分电路在洞洞板上搭了一下,发现有源滤波的截止频率计算比较复杂,理论计算、仿真结果,bode图分析以及实物实测出来的参数竟然都各不一样。最后决定:如果遇到滤波,直接采用无源滤波的方案,幅值小就用运放放大。这部分准备较为充分。

准备了士力架,不吃午饭以省下午餐时间。

4 综合测评进行时

拿到题目不久,已经有了方案:

  • 方波:运放正反馈出个方波,由于压摆率问题导致波形不好看,送到与非门整形,一次整形不好看,再整一次(使用运放*1,与非门*2)
  • 正弦:三阶无源低通,后接反向比例放大(使用运放*1)
  • 矩形波:方波通过电位器给电容充电,和方波送入与非门,调节电位器可调节电容电压上升时间,从而在与非门输出可调脉宽矩形波。(使用与非门*1)
  • 余弦:方案A:对正弦积分使用(运放*1);方案B:信号过低通移相后放大(运放*1)【此想法未尝试,不保证有效】

比赛的时候不知为何,我的滤波器突然失效,队友的反向比例放大始终没有增益,就卡在这个问题直到比赛结束,大家都很绝望……

这个问题的出现是真的是没想到,感觉这就是“不可抗力”吧。


写在最后

比赛结束后,我的队友都比较沮丧(我也是),这世间最难过的事不是“做不到”,而是“本可以”。

诚然,比赛的成功是对参赛者能力的肯定,比赛的失利却绝不是对参赛者能力的否定,做学问需要不卑不亢,十年磨剑才是做学术的正确态度。谨记:功不唐捐,玉汝于成!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章