记2017全国大学生电子设计竞赛

2017年全国电子设计大赛早已落下帷幕,恰逢此时,我的个人博客也搭建完成。因此,我决定把我在国赛中的点点滴滴,写成我的第一篇博文,来纪念逝去的2017年的8月。

说起这次的国赛,真的是顺利的让人害怕。从三月份的组队,到8月初的准备,再到8月8号开始比赛,中间几乎没有什么波折。我的两个队友一个精通硬件,另一个专注理论,这让我可以放心地投入到软件的工作中,发挥我最大的能力。

7月底,飞思卡尔智能车比赛的那几天,很不幸的和BML的时间冲突了…并且我知道时间冲突的时候,BML门票和去上海的机票都已经买好了…因此我就光明正大的翘掉了飞卡的比赛。从上海回来以后,在家里宅了五六天,八月一开始就开始了为期一个月的实验室生活。

出于学长和老师的考虑,这次我们选择了信号题。信号题的本质就是用各种运放来设计个电路。因为之前自己掌握的都是一些偏应用的知识,理论知识还比较欠缺,因此我就拿了三天简单的学了学模电的理论知识,虽然还是有点懵逼,但想想还是头铁直接做吧,靠着以前的一些经验应该也不至于拖后腿。比赛前在实验室的时间里,老师也都是全程陪伴。老师给我们讲了可能出的几个题,其中有一个用正交正弦波和乘法器正交解调输入信号相频特性的题,弄得我是一脸懵逼。我以前既没接触过乘法器,也没学过信号,但幸好老师讲的比较透彻,一听就理解了。从这里我也意识到了自己知识的缺乏,发誓要好好学大二的专业基础课。用两三天恶补了模电基础和信号的基础,总算是能把老师押的题做出来了。

老师对于我们硬件的要求是提前把常用的小模块都做好,比赛的时候就可以省下不少时间,软件把各个外设的驱动都写好,比赛的时候直接拖过来用。软件的部分我倒是不怕,以我三四年的单片机编程积累,大部分淘宝能买到的模块我都玩过,驱动自然也是留了下来。顺便一说,驱动写的时候一定要考虑好移植性,管脚都用宏来定义。这样子移植起来非常快,能够节约本来就不多的时间。

单片机我们选择的是STM32F4。老师看到题目器件清单里有个低频示波器,就猜测有一个用示波器刷新显示的题。实际证明,老师还是厉害。于是我就开始了DMA+定时器+DAC的调试。这一调,可真是让我有点怀疑人生。 STM32的这一部分特别玄学,三个外设初始化的顺序要求非常严格,并且整体的初始化还必须放在主函数的特定地方,换个地方就没波形…这一调,本来以为一个小时就能搞定,硬生生浪费了我一下午加一晚上。不过好歹是调出来了,并且令人庆幸的是,比赛也用到了。

比赛,拼的就是谁的器件多,谁的器件好。所以比赛之前肯定都是要提前购买模块的,更何况我们的题目涉及高频,好多模块自己是做不出来的。因此快递就成为了一个非常重要的东西,我依稀记得比赛前几天,全国的人都在提前屯模块,一个卖高频模块的店铺火热程度一度赶超双十一。买个模块都要等两三天发货,开发票都是等电赛结束了统一发。不过这也就带来了一个问题,通过看哪个模块卖的度一定程度上可以预测题目!对,你没有听错,就是这么玄乎!老师也依据这个告诉我们,今年肯定有一个题,不是幅频特性就是相频特性的。

转眼之间就到了8月9号早晨。组委会说8点发题,但实际上七点五十就可以下载到试题了。看着比赛这比我博客还简陋的网页,我心情复杂地下载了试题,一看就看到了几个我们准备过的信号类题目——F题调幅信号处理实验电路,H题远程幅频特性测量装置和E题自适应滤波器。其中F题不但频率高达300MHz,信号也是微伏级别的,难度太大,并且我们也没有准备太多关于这一类试题的资料。E题自适应滤波器看到题目的一瞬间,顿时有一种不知所云的感觉,因此当即拍板做H题。这个H题中有一个“远程”,说白了就是用Wi-Fi把数据传到上位机上显示。我一看就乐开了花,程序不是我最喜欢干的吗…这个题程序部分和硬件部分各占一半左右,正好适合我和学长们的发挥,大家都可以做自己最擅长的部分。

于是我们就开始了紧锣密鼓的制作。负责硬件的学长就开始各种调运放,AGC模块和RMS模块,我就负责构建程序。印象中第一天把写好的DAC显示波形的程序和显示驱动移植上去了,也调通了ESP8266的驱动。在等着学长焊拿废板子做的滤波器的空档,我学习了一下C#的GUI画法和Socket的实现,毕竟自己不是计算机专业的学生,这些计算机的东西都是现学的…好在自己C的基础比较扎实,一晚上就实现了socket。

第一天晚上,没有熬夜,一点就回去睡觉了。

第二天一来,就开始调TCP。当单片机发的hello World传到电脑上的时候,我的心情简直可以说是要开心爆了。接着难倒我的就是画图。我刚开始上网查的实现方式都是用GUI直接把程序当画板,直接往上画点和线,于是我就这么照做了…当画出坐标轴的时候,我的心情也是非常开心的!第二天除了学习C#,还跟学长一起焊了一些板子。单片机的程序也写了一部分。第二天就在不停的写程序中度过了。说到做电赛,其实最令我印象深刻的还是伙食。这四五天里,我基本上就没出过实验室,饭全靠学长学姐给我带,弄得我非常不好意思,但是又无法抗拒不用跑腿的诱惑,就心安理得的让学长帮我跑腿了……

第三天白天焊了DDS模块,终于让它不只是一堆杜邦线了,又把DDS模块的程序单独提到一片单片机里,把它和主芯片的通信调通(因为题目要求信号源和测量能独立),就到了晚上。到了晚上,我们意识到一个很严重的问题,就是题目要求信号源能输出5mV的信号,我们本来想用AD9854内置的幅度调节寄存器来调节幅度,但是发现他内置的调节是直接调节DAC的输出值,而不是内部做衰减。这就导致了小幅度信号失真的极其严重,甚至都看不出来是正弦波了。因此内置寄存器调节方案就被否了。因此,我们就采用外部衰减网络的方案,来让内部DAC输出的信号保持在一个比较大的幅度。但是这就又引入了一个问题,就是外部干扰的问题。这回信号倒是不失真了,但是杂波大大增加。我们就想了个馊主意——拿铜片把洞洞板盖住,走线周围都走上一圈地线,这一下子,信号真的好了不少。再有就是放大器的问题。题目要求能放大100倍,但是我们一块只能到30倍左右。我们又采用了一种很贱的方法——两块串联。别看简单,但很粗暴,倍数一下就上去了。好好的自动增益放大器,被我们用成了压控放大器。弄完这些,已经是三点多了。通宵说着容易,真熬过去还是真的难受。

第四天,我把程序完成了!已经可以实现单片机自动测量,传到电脑上显示了。我在比完赛才知道, 大部分程序画图都不是像我一样找点然后连线的,都是有现成的画图像的API的…绝望。

https://img.yuanze.wang/posts/2017nuedc/software.png
很丑的上位机程序

程序完成了,基本上大部分都完成了,我就开始思考那10分其他怎么做了。我想过我做过一个大物实验采集装置,可以实现自动采集数据存到SD卡里,我就把以前写的SD卡驱动和文件保存程序移植过来了,实现了个脱机测量功能,并且还移植了个USB库,让板子插到电脑上直接模拟一个U盘,省的带了一个读卡器。

调这个上位机的时候,真是一把辛酸泪。出于学校特殊的网络环境,想搞内网通信就必须自己用路由器搭一个Wi-Fi,可是这个Wi-Fi有没有外网,于是调上位机等于与彻底和网络拜拜了。希望学校校园网能考虑一下单片机认证的感受,搞一个单片机也可以完成的认证模式。

剩下的就是不断地优化、做板子、加固、装箱…到了最后一天晚上11点,终于封箱,一切都尘埃落定。看着这个箱子,心里各种感情都涌了上来。默默对自己说,他一定能行!你以为我可以睡觉了?那你就错了。最后的善后工作做完,时间已经到了五点钟。在桌子上趴下刚刚有困意,就听到了带队老师的呼唤——我们要出发了。

如期乘上了去山科的车,各种手续弄完以后,坐到了测试教室里。测试的老师貌似之前也没研究过这个题。第一个测的是我们学校的,他们一个队足足测了一个小时。老师是一边跟他们提问题一边测的。我们的作品拆箱以后,简单测试都OK了以后,我竟然趴在实验室睡着了。到了测试我们的时候,事情进展的异常顺利,所有指标都和我们在学校里测得一样。就这样,毫无波澜与悬念,我们完成了电赛的测试工作,乘上了回学校的的车。

https://img.yuanze.wang/posts/2017nuedc/project.jpg
我们的作品

测试过程写的这么简单真的不是我的错,我们实际就是这样的,感觉就是我们拿过去给老师展示了一下参数就拿回来了的感觉。回来以后,睡了一整天觉。然后休息了了几天,直到出了综合测评名单,我们进综测啦!

进入综测意味着我们有机会进入国赛。于是我们又回到实验室,继续研究综测的题目。相比起之前的备赛,这回的气氛明显就放松了好多。所谓综测,就是把你们三个人关到实验室里,给你们个板子,让你们按照焊电路。我们需要准备的,就是模电书上的一些基本单元电路。由于我的模电知识和两个学长相比还是要薄弱一些,我就被光荣的任命为焊接员了。

到了综测,其实就是第二次山科一日游,原来去的80号人只剩下了不到20个。到了以后,跑到他们的实验楼里,每个人发个示波器、电源,发块定制的万用板,就开始按照题目的额要求来焊接了。不得不说这洞洞板是我用过质量最好的板子之一了,好焊好拆。就像之前说的一样,两个学长一个设计电路一个计算参数,电路就由我来焊接。

但是第一个20KHz方波发生器就出了点问题,因为运放是双电源的,题目要求5V单电源,学长们都懵逼了。但是一个学长的一句话“运放负端接1/2Vcc试试”,然后正弦波就奇迹般地出来!我们差点开心的跳起来,但是考虑到周围的人的感受,还是遏制住了内心的狂喜。因为这个电路只要第一个部分实现了,后面的都是水到渠成。于是两个学长一边设计,我一边焊接,提前将近两个小时就完成了所有指标。看着周围同学甚至还在焦头烂额的调20KHz方波的时候,我们已经把板子装到盒子里,开始起我们带的面包来了。不得不说,心里还是要一种莫名的开心的。测试也是很顺利,每个波形都OK。回到学校之后,接下来又是沉睡的一天。

又过了几天,复测名单也出来了,我们又赫然在列!我们真的进国赛了!这里吐槽一下组委会,有些题报的队伍少,按比例来进国赛的不到一个就直接不让进了,实在是有点过分。我们这个题是1.3个队伍进国赛,因此山东省就只有我们一个队伍进了国赛,突然就有一种代表省去参赛的使命感。接下来就是各种订票,加固箱子,等着去西安。

坐上去西安的火车,队友一个刚参加完西门子工业自动化杯,听说上海到西安的飞机票也可以报销,就直接坐飞机去西安了。另一个学长回家了,于是他就从家里直接去西安了,因此我们队三个人只有我一个人抱着大箱子坐着20个小时的火车去西安。这里还要感谢一下别的队的学长,感谢他们帮我扛那些特别沉的仪器。 人生第一次坐绿皮车,就是横跨大半个中国到西安,也是一种别样的滋味。这也是我记事以来第一次坐卧铺火车,脑子里都是新鲜感。不过这火车真的是比想象中挤得多,床上根本连坐都坐不起来。之所以坐绿皮车去,就是因为安检不严格,而且速度比较慢,抖得不厉害。要不我们箱子里各种铁疙瘩和线,说不准真被当成恐怖分子带着炸弹了。

到了西安,报道完了就是玩和吃啊!第一天晚上我们去回民街吃了一晚上,真的是吃了一晚上。东西不贵,但是一条两三公里的街上都是吃的,场景可以说是非常壮观了。

第二天当然就是测试了。说实话这个测试给我的印象还没有玩的印象深,就是拿过去重复了一下省赛的步骤,就按照原样把箱子抱回来了。不过抱回来的时候,我们就没有把它当亲孩子一样呵护的感觉了,回宾馆直接把它扔地上的。这天晚上,我们体验了一波西安交大的食堂,说实话,没我们学校的好吃。看着路上一个个军训的新生,一想他们高中个个都是班级第一名的水平,就莫名起敬,这才是真正的学霸。

晚上去大雁塔玩了一波,看了很好看的喷泉表演,就回宾馆睡觉了,但是一不小心就睡过了头,是同样睡过了头的老师到宾馆了叫我们,我们才醒过来。当我们坐上地铁的时候,猛然发现高铁可能要晚。你可以想象下了地铁,离发车只有15分钟的我们14个人,扛着各种仪器和大箱子,飞奔在火车站里取票过安检的样子。上车还没站稳,车就开了。这一波,刺激!

回来之后,等待我们的就是漫长的评审了。当获奖名单出来的时候,我们悬着的心才放了下来。

一等奖!