当前位置:   article > 正文

2023电赛H题小结_23年电赛h题dds复位解决频漂

23年电赛h题dds复位解决频漂

2023电赛H题小结

一、导入

  参加了今年的电赛,赛前也准备了许久,各种驱动、外设的使用、pid等等,等到时候正式参赛再学习具体需要哪方面的逻辑进行组合,可惜,最后还是有所欠缺,没能获奖,但是基本还是做了许多,不是很甘心最后的结果,最近也没有什么机会能重新继续进行下去,便于此先行小结。

大致流程描述如下:
加法器叠加->stm32的AD转换->fft->DA输出->AD与DA进行比较延时实现同频

二、题目重述

原题位置:https://res.nuedc-training.com.cn/topic/2023/topic_102.html
在这里插入图片描述

  简要概括就是将两个信号通过加法器进行相加,再通过分离电路分离出来两个信号,最后将输入与恢复的输出同频显示在示波器上。
  输入信号为三角波和正弦波,频率10k~100kHz,步进为5kHz,峰峰值不小于1V。
  *能控制A’和B’的初相位差(均为正弦波,且频率A是B的整数倍),分辨率5°,0~180可调。

三、解决办法

3.1 加法器

  这部分简单,网上随便就能找到,主要问题就是要选个合适的运放,因为100kHz也不低,需要带宽够避免失真,一般直插的TL082、5532就行。注意要双电源供电,一般这种运放只有双电源时才有最好的效果,单电源等效的双电源也不行(可能当时是我电路有问题,各位到时可以自己试试);而且输入信号是正弦波有负值的。双电源可以用芯片max7660或是max660产生,或是供电就是双的。
  叠加后要送入单片机,一般都是0-3.3V或是0-5V的供电,所以要给输入一个直流偏置,运放实现。

3.2 分离装置

  通过单片机的AD、DA实现,由于当时只会stm32F1系列,故基于此进行之后流程,F4系列有更高级的DSP库可以更简单实现相应功能,同时也有全硬件、dds的处理方法。

3.2.1 AD

  首先是AD,默认的时钟是72M,而stm32F1的AD时钟频率要低于14M,所以分频后最快为12M,按照采样时间计算公式计算T=1.5+12.5个周期,最少14个周期,所以最后采样频率为$ \frac{12}{14} $kHz,不方便计算同时容易丢失精度,所以将默认72M改为56M,这样按照上述方法就可得到1M的采样率,这样即使是最高100K的输入每周期也能有10个采样点。
  由于这个操作是不断进行的所以要使用DMA不断地读入才能保证1M的采样率还不影响主程序的进行。

3.2.2 fft

  对输入的叠加后的信号进行fft变换即可得到两个峰值,即对应的两个频率,可以用matlab先行仿真保证逻辑正确再写入单片机的程序内,避免将来产生问题时困惑。
  其次stm官方也提供了fft的库,直接下载导入对应位置即可使用,这里直接采用256个点的fft。

3.2.3 DA

  得到频率后就可以进行输出了,同样设置输出的频率为1M,输出模拟量时有个技巧,不在输出的时候现算,提前设置静态数组,将对应频率的波形数据写入,用空间换时间(速度),输出时直接调用。

3.2.4 同频

  这样的输出还是有问题,由于信号发生器与单片机并不同源,所以不可能同频,会有几十Hz的差异从而产生飘移。
  解决方法采用卷积。将输入信号的波形与标准波形进行卷积,即可知道差距是多少,因为只有两波形完全重合之时卷积结果才是最大的,找准这个点就可知道要如何调节,即延时(周期-最大值位置)后重新输出。不断进行此操作即可同频。但同时还要注意会有半个相位的问题。
  这些处理过程切记要写在DMA之外,不然…呵呵

四、资源备份

单片机程序:点击跳转◔.̮◔✧

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/845334
推荐阅读
相关标签
  

闽ICP备14008679号