2023电赛H题小结

本文概述了作者参加电赛H题的经历,涉及加法器设计、STM32AD转换、FFT分析、DA输出同步等步骤,重点讲述了如何利用STM32F1的AD模块、FFT库和DMA技术来实现信号处理和频率调整以达到同频显示。
摘要由CSDN通过智能技术生成

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之外,不然…呵呵

四、资源备份

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

  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值