本文主要是介绍2023电赛参赛感悟+H题思路+给萌新的建议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
感悟分享
2023电赛终于落下了帷幕,经历了四天三夜的奋战,我们小组也取得了一个比较满意的成果——省二。这对于刚接触电赛的我们来说已经是一个很不错的结果了,虽然有一点小遗憾,不过大家整体都很满意。
2023H题思路
我们组选择的是H题:信号分离装置。据我所知,这道题我们学校选的人挺多的,别的学校选的人似乎也不少,所以竞争还是比较激烈的。
这道题的难点在于,分离出的两路信号需要连续稳定同频显示。由于要实现的是随机频率的信号分离,所以完全的模电方案是不现实的。而数电方案需要用到FPGA,但我们不会用,所以只能将两者结合,用stm32实现。
相信了解相关算法的同学应该能猜到我们的思路了。没错,就是先AD采样,然后用FFT算法得到A和B的频率。再根据实部和虚部求得幅度,以此判断信号是正弦波还是三角波。最后用DDS模块发出两路信号。
如果你之前联系过2021年A题,那么FFT算法不是难点(如果不懂的可以在评论区里问我,问的人多的话我专门写一篇介绍FFT)。这道题的难点在于“同频显示”,即必须控制DDS模块发出信号A' B' 与输入信号A B 的频率差控制在一个很小的范围。
举个例子。输入信号A的频率为50000.01Hz,输出信号A'的频率为50001.01Hz,那么二者的频率差就是1Hz,同频显示时每1s会步进一个周期,那就是频漂相当严重了,基本算是寄了。
我们使用的DDS模块为AD9833,它的工作范围为1k~1MHz,满足题目要求(20k~100k)。但它的步进为0.14Hz(商家给的,实际应该也差不多),不考虑信号源的误差,那么我们人为调整的话,能把频率差控制在0.07Hz以内,对应的就是14s漂一个周期。虽然没那么严重,但也是挺漂的,哈哈。
所以本题的难点就是要提高DDS模块的精度。试想,如果我们把频漂控制在100s一个周期,那是不是跟本没法看出来?毕竟测评时间是有限的,老师不可能盯着你的信号看上一分钟。如果频漂控制在300s一个周期,那不就是没有漂移?
总而言之,如果你找到了控制A与A'、B与B'的频率差的好办法,你基本上就能拿到省二了。当然,除了频漂,信号也不能有明显失真呦。
至于具体的方案,我这里就不细说了。等我哪天有时间再发一章,感兴趣的可以去我的投稿里找一找,毕竟这是我第一次写这种类型的博客,哈哈。
一点建议
之后就是给萌新的一些小建议了。毕竟两个月前,我们组三个人也是纯纯的萌新,既没接触过电赛,也没碰过stm32,数电没学过,模电还稀烂。在这样槽糕的条件下,靠着大家的相互鼓励和顽强毅力,硬是创出了一片天,说出去还是挺自豪的。
1、要培养自学能力。据我了解,大多数学校在电赛备战期间能给大家提供的帮助真的很有限,所以绝对不能什么都指望老师和学长。像我们学校,这次的国赛的集训是没有集中培训的。学校只给你提供实验室,然后有一两个学长能给你答疑解惑,学长大部分时间还有事,基本全都得靠自己。这就需要你能熟练运用互联网,从网上找到各种教学。
2、找到适合自己的教程。现在B站有很多教你嵌入式开发的视频,什么正点原子、野火之类的,CSDN上也有很多教学,但不一定适合你。我们学校一开始给我们推荐了正点原子的视频,emmm,说真的,我只建议你们看前三集。这玩意对初学者来说已经不是依托答辩了,而是依托陈年答辩。都啥年代了还在教你别用cube...说真的,我们组跟着正点原子的视频浪费了一个礼拜的时间,现在想想都后悔。
那有没有适合初学者的教学呢?有的,我这里分享几个链接,适合新入坑的小白学习。也欢迎大家在评论区里分享自己认为不错的教学。
电控入门教程/STM32系列教程.md · pocket/RoboWalker战队信息汇总 - Gitee.com
这是我初学stm32看的教程,非常棒。手把手教你怎么用cube配置ADC、DAC、PWM、串口通信、定时器中断等等。自己跟着他的教学过一遍,你就算入门stm32了。
[10-1] I2C通信协议_哔哩哔哩_bilibili
基础搞定了,下面就是进阶了。如果你是做小车的,那你学会串口通信、定时器什么的就够了。但如果你想做信号题,那你还得学复杂一点的通信协议:I2C 和 SPI 。这俩的话看江协科技的教学会比较好。不过他的教学是没用cube的,所以我建议你先学一学cube怎么配置,然后用cube完成I2C和SPI的配置。
STM32CUBEMX配置教程(十二)STM32的定时器触发的固定频率ADC采样(使用DMA)_stm32的adc采样的dma模式开启次数_怡步晓心l的博客-CSDN博客
至于其他的教程其实都是直接在CSDN上搜的,我没保存,就用这个做个例子。我建议小白不要上来直接用Keil写所有代码,试着学一学Cube会方便很多。如果没用过Keil但是学过C语言编程的,可以试试CLion,也可以用cube配置,在代码补全方面比Keil好很多。
3、确定研究方向。在对stm32有了初步了解后,小组成员就应该确定你们的选题方向了。电赛的类型主要有四类:自控、信号、电源、其他。
自控主要是小车和无人机,信号分为两类:高频和低频。低频主要是仪器仪表类,难度适中,适合新手入门;高频主要是无线电,即信号的调制与解调,需要有数电基础,且能熟练运用FPGA,难度较大。电源要看你们学校有没有相关资源,据我所知是有难度的。其他包括机器学习、物联网之类的,今年应该没考。
最后,祝所有参加电赛的同学们取得好成绩!
这篇关于2023电赛参赛感悟+H题思路+给萌新的建议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!