ADC采集数据的FFT变换分析

本文介绍了在信号处理中如何使用FFT对AD转换数据进行分析。通过模拟生成正弦信号并进行AD编码,然后进行64点FFT变换,提取直流和交流分量。文中强调了采集频率和采样点数对FFT结果的影响,并提供了相关代码实现。通过FFT运算,可以得到信号的频率成分,直流分量约为2.299V,50Hz交流分量约为0.284V。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在通常的信号采集应用中,肯定是需要对 ADC 数据进行数字处理后,才将数据作为计算的有效值,且在绝大多数的有波形数据存在的情况下,FFT 数据变换的应用,则是一个极为有用的工具。

现在的大学课本中也都会将“信号分析”作为电子类工科的主要课程,但学习后,对它的概念及使用方法也模糊不清,而更多的人是不清楚 FFT 的原理。

数据分析的基本处理流程是:数据采集数据倒位序处理FFT变换数据取模运算FFT反变换波形重绘。常常不需要绘制所采集的信号波形的情况下,最后两步是不需要的过程。该文就如何处理前面 4个过程进行说明,所使用的数据是使用软件仿真生成可用数据进行测试。

测试代码如下:

#define     PI   (3.1415926)

#define     PI2    (2*PI)

Complex     SinTab[64],VialCode1[64];  //定义复数数组,complex定义在FFT.H中

float       SineValue[64],PIdot;

int         VialCode[64];

 

PIdot = PI2/8;       // 确定一个周期内产生8个点的数据

initW(SinTab,64);    //产生FFT用的正弦表,为64点FFT做准备。该函数在FFT.H中定义,见下方

for(i1=0;i1<64;i1++) //产生正弦信号数据
{

   SineValue[i1] = 2.3+0.283*cos(PIdot*(i1%8)); 

//使用cos函数模拟生成每周期8个采集点的数源,产生的波形如图一所示

   VialCode[i1] = SineValue[i1]/0.00122; //假设ADC的分辨率为1.22mV,将上面产生的模拟信号,编码成ADC

                              //采集到的数据。即通常从ADC读出来的就是这个数据,产生的波形如图二所示

}

for(i1=0;i1<64;i1++)  //将模拟的ADC编码数据组装为复数,即模拟的A/D值放实部,虚部放0

{

  VialCode1[i1].real=VialCode[i1];
  VialCode1[i1].img=0;

}

fft(VialCode1,64,SinTab,1); //64点的FFT运算,在FFT.H中定义的

for(i1=0;i1<64;i1++) //将FFT后的数据进行取模,即实部的平方+虚部的平方后再开方

{

  VialCode[i1]=sqrt(VialCode1[i1].real*VialCode1[i1].real+VialCode1[i1].img*VialCode1[i1].img ); 

//波形图中取了第0和第9点的数据,如图三所示

}

图一

图二

图三

    图三中第一个数据是直流分量,值为:120640 那两个小尖尖的数据是 50Hz 的交流分量(第8点和倒数第7点):7422(因为是对称的),如按上述的 ADC 分辨率 = 1.22mV 来计算:

    0点直流:120640/64 = 1885    直流幅值 = 1885*1.22 = 2.299V。

    8点交流:7422/(64/2) = 232.56   交流幅值 = 232.56*1.22 = 0.284V。

比如 ADC 采集频率为 400Hz,则频率的分辩率为:400/64 = 6.25HZ。如果要看 50Hz 的信号,则 50/6.25 = 8,即交流分量的第8个点上。

所以在使用 FFT 分析数据时,有两个参数:采集频率、采集点数是很重要的。对于 ADC 所采集到的数据,无论是单极性数据,还是双极性数据,均可以直接进行 FFT 运算,结果都会是一样的。

实验用的 FFT 代码下载或见百度云盘/01、项目设计/10、单片机算法/02、FFT算法/ADC采集数据的 FFT 变换分析。


如若喜欢这篇文章,不妨留下您宝贵的点赞,这将是对我莫大的鼓励。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱上电路设计

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值