粤H广宁 发表于 2016-10-13 16:44:41

讨论:K64,220V交流信号,AD采样 256点 FFT变换后,计算有效...

讨论:AC220V交流信号,AD采样256点 FFT变换后,计算有效值,求频率,求相位角

条件:
MCU:MK64FN1M0VQ12
AC220交流电压,经2.5mA:2.5mA电压互感器,由运算放大器对信号放大后送MCU AD采样 ,AD采样为每个周波采样256个点。其中,交流信号抬高1.65v(直流分量)

粤H广宁 发表于 2016-10-13 16:46:40

以下是电路原理

粤H广宁 发表于 2016-10-13 16:47:32

AD采样的256个AD值(sample_data),调用CORTEX-M4DSP_LIB 库 做FFT转换 FFT轮换后输出(out_data)

设想:
//对实数进行fft分析得到的都是实部和虚部的信息,就是复数信息,幅值就是实部和虚部的平方和再开根号,
//相位的话就是实部和虚部的比值,用三角函数中的sin之类的就可以求出来

status = arm_rfft_fast_init_f32(&aa,256);
if(status == ARM_MATH_SUCCESS)
arm_rfft_fast_f32(&aa,sample_data,out_data,0);

但FFT 转换的结果 觉得不对。。。。觉得不对。。。。有这方面经验的方便进来一起讨论并指导一下吗?谢谢!

粤H广宁 发表于 2016-10-13 16:48:48

以下是AD采样值sample_data(FFT数据源,1周波256个点),可以看到有明显的正弦波波形(交流电压采样AD值sample_data,并XCEL波形描述.png)

粤H广宁 发表于 2016-10-13 16:49:34

以下:调用arm_rfft_fast_f32(&aa,sample_data,out_data,0);后sample_data(FFT数据源)的表现为:

粤H广宁 发表于 2016-10-13 16:50:35

以下:调用arm_rfft_fast_f32(&aa,sample_data,out_data,0);后out_data(FFT后数据输出)的表现为:
觉得数据没有规律,按理由应该是 点N+实数0+虚数0。。。。。。实数N-1 虚数N-1的排列
但是FFT转换的结果不是

粤H广宁 发表于 2016-10-13 16:52:26

为了验证正常的FFT转换后的经果,我使用了网的一个例程:
用一个正弦波产生函数,产生正弦波数据,然后进行FFT变换,

正弦波数据产生函数:
FS = 50 * 256;//周期50HZ采样频率为第周波256个点
for(i=0;i<256;i++)
{
   sample_data = 1*sin(2*PI*50*i/FS) + 1;
   //sample_data = 2;
}   
得到的AD正弦波数据sample_data

粤H广宁 发表于 2016-10-13 16:52:59

调用arm_rfft_fast_f32(&aa,sample_data,out_data,0);后sample_data(FFT数据源)的表现为:

粤H广宁 发表于 2016-10-13 16:53:31

调用arm_rfft_fast_f32(&aa,sample_data,out_data,0);后out_data(FFT后数据输出)的表现为:

粤H广宁 发表于 2016-10-13 16:54:28

可以看到用正弦函数产生的正弦波数值,经FFT后得到正常的经果。
但是 我同样的AD采样的正弦波数据 为什么结果 就不一样呢?问题是出在哪里?
还有接下来的FFT变换后得到实数部分 虚数部分最终怎么样计算有效值,频率,相位等内容,大伙一起讨论指导一下吧,谢谢!

shian0551 发表于 2016-10-13 16:56:16

还有平滑数据呢.负责数据波动让你无法忍受.

shian0551 发表于 2016-10-13 17:07:16

晕,采样间隔.256数据不是一个周期.

粤H广宁 发表于 2016-10-13 17:19:24

本帖最后由 粤H广宁 于 2016-10-13 17:47 编辑

我是在一个周波里面采样256AD值的,第4楼的EXCEL表为了能正常看出来 连续的正弦波形,特意多加了采样,组成连续的正弦波 波形 只是做为一个描述

真正调用的是一个 256个点的AD值,在EXCEL表里面的表现形式是这样的,我应该更正一下 4楼的图片

粤H广宁 发表于 2016-10-13 17:49:47

我应该更正一下 4楼的图片,

yz_altang 发表于 2016-10-13 18:19:59

这个一看是要分析电能质量呀

粤H广宁 发表于 2016-10-13 19:42:21

yz_altang 发表于 2016-10-13 18:19
这个一看是要分析电能质量呀

是的 ,要做快速保护动作 数据记录,要做3相电流 3相电压 计算 ,
计算有功功率无功功率功率因素(当然有功功率 无功率 功率因素相位角之类的对实时性不高)

一天的蓝 发表于 2016-10-13 20:25:03

可能是频谱泄露了,才采样一个周期,,把输出的复数求abs画个频谱看看呗
以下 fs=256*50hz 采样1个周期:

以下 fs=256*10*50hz 采样10个周期:

粤H广宁 发表于 2016-10-14 08:52:32

一天的蓝 发表于 2016-10-13 20:25
可能是频谱泄露了,才采样一个周期,,把输出的复数求abs画个频谱看看呗
以下 fs=256*50hz 采样1个周期:



是用MATLAB这个仿真软件吧? 刚接触FFT这个东东,以前的数学基本 还给老师了?哈哈。。谢谢!

senjet 发表于 2016-10-14 08:58:05

粤H广宁 发表于 2016-10-14 08:52
是用MATLAB这个仿真软件吧? 刚接触FFT这个东东,以前的数学基本 还给老师了?哈哈。。谢谢! ...

你在excel里直接用分析工具算一下FFT对比一下呗

粤H广宁 发表于 2016-10-14 09:14:39

senjet 发表于 2016-10-14 08:58
你在excel里直接用分析工具算一下FFT对比一下呗

Excel里面 用哪个工具,方便详细一点吗 谢谢!

senjet 发表于 2016-10-14 09:20:07

如果是excel2013的话,菜单-数据-数据分析-傅利叶分析。如果没有看到数据分析,则要 文件-选项-加载项-转到-选中“分析工具库”。google一下“EXCEL进行FFT”

fengyunyu 发表于 2016-10-14 09:21:52

这个貌似很成熟,坛里懂的大牛应该很多

粤H广宁 发表于 2016-10-14 14:07:27

fengyunyu 发表于 2016-10-14 09:21
这个貌似很成熟,坛里懂的大牛应该很多

嗯嗯 ,希望牛哥们出来指点2下

粤H广宁 发表于 2016-10-14 14:07:52

senjet 发表于 2016-10-14 09:20
如果是excel2013的话,菜单-数据-数据分析-傅利叶分析。如果没有看到数据分析,则要 文件-选项-加载项-转到 ...

嗯 嗯 ,谢谢!

again 发表于 2016-10-14 14:23:31

如果整周期采样无泄漏那么FFT后模值/(N/2)/1.414就是有效值

coslight_dt 发表于 2016-10-14 14:27:47

用matlab仿真一下 就知道了

again 发表于 2016-10-14 14:27:48

非整周期采样可以搜我以前发的频谱泄漏校正算法!论坛前几天也有人发那个APFFT也是可以的

again 发表于 2016-10-14 14:30:18

clear all;clc
N=256;
fs=1000;
f=51.1234;
a=1.2345;
ph=30.123;
dc=0.123;
t=0:N-1;
x=a*sin(2*pi*f*t/fs+ph*pi/180)+dc;
xfft=fft(x,N);
y=abs(xfft);
=max(y(2:N/2));
k=k+1;
z1=xfft(k)-(xfft(k-1)+xfft(k+1))/2;
z2=xfft(k+1)-(xfft(k)+xfft(k+2))/2;
ka=abs(z1)/abs(z2);
r=(2-ka)/(1+ka)
fo=(k-1+r)*fs/N
ao=2*pi*r*(1-r*r)*(abs(z1))/(N*sin(r*pi))
pho=(angle(z1)-pi*r)*180/pi+90

MATLAB输出结果,精度自己看
fo =

51.123401059088216


ao =

   1.234499850166726


pho =

30.122670622875049
这个是单频信号,多频的话这个三点校正算法频率间隔需要5个以上才比较好,你可以去看看频谱泄漏校正算法相关数据,丁康老师、王兆华老师推荐可以看

粤H广宁 发表于 2016-10-17 17:15:40

again 发表于 2016-10-14 14:30
clear all;clc
N=256;
fs=1000;


谢谢喔!

粤H广宁 发表于 2016-10-17 17:18:35

again 发表于 2016-10-14 14:23
如果整周期采样无泄漏那么FFT后模值/(N/2)/1.414就是有效值

我这个 采样 相对 来说 是一个比较完整的 周期了

bitcoin2 发表于 2016-10-17 17:47:32

定啊,支持,好帖子

粤H广宁 发表于 2016-10-18 21:30:11

matlab哪位兄弟能给我一个,12a版本的 带和谐的 网盘地址也行{:smile:}

笑笑我笑了 发表于 2016-10-18 21:37:06

这个用STM32+AD7606做过,直接做50Hz这一点的DFT就行了,不用FFT。要同步采样。

粤H广宁 发表于 2016-10-20 17:25:16

找到了一个 可以下载的MATLAB R2012a 的源,用迅雷下载。有需要的朋友可以去下载,带CRACK了。
ed2k://|file|%5B%E8%BF%88%E7%89%B9%E8%8E%B1%E5%B8%83%5D.MATLAB_

R2012a.rar|4588991005|cc999c77d6823f71d67524d80c8efe9b|h=pl3m5rxfkwq4jwh7ghs

wthhdrdamprxk|/

lihaimeng@163 发表于 2019-12-6 17:20:12

fft后,已经求得电流电压复数后,是怎么计算无功功率的,大哥能说下吗?

lihaimeng@163 发表于 2019-12-6 17:21:00

直接电流电压向量相称?取虚部?

lihaimeng@163 发表于 2019-12-6 17:27:17

频率怎么算出来的呢?
页: [1]
查看完整版本: 讨论:K64,220V交流信号,AD采样 256点 FFT变换后,计算有效...