21845|33

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何计算有效值和谐波含量? [复制链接]

采样数据如下:
lBFUIN[256] =
{
1026,1032,1039,1045,1052,1058,1066,1073,1081,1087,1095,1104,1113,1121,1129,1138,1146,1155,1165,1172,1183,1192,1201,1212,1222,1231,1242,1251,1262,1272,1284,1294,1303,1313,1324,1335,1346,1356,1367,1377,1387,1398,1410,1420,1430,1440,1450,1461,1472,1481,1492,1503,1513,1523,1533,1542,1552,1562,1571,1580,1590,1599,1609,1618,1625,1635,1643,1651,1658,1667,1674,1682,1690,1697,1704,1710,1718,1723,1730,1737,1743,1747,1753,1757,1762,1768,1771,1777,1781,1784,1787,1792,1793,1797,1800,1800,1804,1806,1807,1808,1810,1810,1811,1809,1810,1811,1809,1809,1807,1806,1804,1802,1799,1798,1795,1792,1789,1785,1782,1779,1774,1770,1765,1761,1756,1750,1745,1738,1733,1727,1721,1714,1707,1700,1693,1686,1679,1671,1664,1656,1647,1637,1630,1622,1612,1603,1594,1586,1577,1566,1557,1547,1538,1527,1517,1507,1498,1488,1476,1467,1456,1445,1436,1426,1415,1405,1393,1383,1373,1362,1351,1340,1329,1319,1307,1298,1288,1277,1268,1257,1247,1238,1227,1217,1207,1197,1189,1178,1169,1161,1150,1141,1133,1124,1116,1107,1101,1092,1084,1077,1069,1062,1055,1048,1041,1036,1030,1024,1018,1012,1006,1001,996,993,987,983,980,976,972,970,966,964,962,959,958,956,954,953,954,952,951,951,951,952,953,953,955,956,959,961,962,966,968,972,975,978,981,986,989,995,1000,1004,1011,1017,1021,1028
};
经过cr4_fft_256_stm32(lBUFOUT, lBUFIN, 256);得到lBUFOUT值如下:
lBUFOUT[256] = 
{
0000040f ffe30022 fff20013 fff60018 ffe80016 fffbfff3 fffc0000 fffd0008 fff40004 fffcfff6 fffdfffe fffe0003 fff70001 fffcfffa fffdfffd fffe0001 fffa0001 fffdfffc ffffffff ffff0002 fffb0001 fffefffb 0000fffe ffff0001 fffc0001 fffffffc ffffffff ffff0001 fffb0000 fffffffc 0000ffff 00000001 fffd0001 fffffffd fffffffe ffff0001 fffdffff fffefffd ffffffff 0000ffff fffcffff fffffffe 0000ffff ffffffff fffd0000 fffffffd 00000000 0000ffff fffd0000 fffdfffe fffefffe fffe0000 fffeffff fffefffe ffffffff 00000000 fffd0000 fffefffe fffeffff fffeffff fffe0000 fffeffff fffffffe ffffffff ffff0001 fffeffff 0000ffff 00000000 00000000 ffffffff 0000ffff 00010000 ffff0000 fffeffff ffffffff 00010000 ffff0000 fffe0000 fffffffe 0000ffff ffff0001 ffffffff 00000000 0000ffff ffff0001 0000ffff 0000fffe 0000ffff 00000000 0000fffe 0000ffff 00010000 ffff0000 0000fffe 0000ffff 00010000 00000000 0000ffff 0001ffff 00000000 00000000 ffffffff 0000ffff 0001fffe 00000000 0000ffff 0000ffff 00000000 00000000 0000ffff 0001ffff 0001ffff 00000000 ffffffff 0000ffff 0000ffff 00000000 ffffffff 0000ffff 0001fffe 00000000 ffffffff fffffffe 0000ffff ffff0000 00000000 0000ffff 0001ffff 00000000 fffeffff ffff0000 ffffffff 00000000 fffeffff 00000000 00000000 ffff0000 fffeffff ffffffff 0000ffff ffff0001 fffe0000 ffffffff ffffffff ffff0000 ffff0000 ffffffff ffff0000 ffff0001 fffeffff 0000ffff ffffffff ffff0000 ffffffff ffffffff 0000ffff fffe0000 ffffffff 0000ffff 0000ffff 00000001 ffff0000 0000ffff ffffffff 00000000 ffffffff ffff0000 0000fffe ffff0000 ffff0000 00000000 0001fffe ffff0000 ffffffff 00000000 0000fffe 00000000 fffe0000 ffffffff ffffffff 00000000 ffff0000 ffffffff 0000fffe 00000000 fffe0000 ffffffff fffffffe 00000000 fffe0001 ffffffff 0000fffe 00010001 fffe0001 00000000 0001ffff 00010001 ffff0001 00000000 0001ffff 00010001 fffe0001 ffff0000 00000000 00010001 fffe0002 ffffffff 0000ffff 00010001 ffff0001 00000000 0000fffe 00010001 ffff0001 0000ffff 0000fffe 00010001 ffff0001 00000000 0000ffff 00010001 ffff0001 0000ffff 0000fffe 00020001 ffff0002 00000000 0000ffff 00020001 ffff0002 ffff0001 0000fffd 00030001 fffe0003 00000000 0000fffe 00030001 ffff0003 00000000 0000fffc 00050001 ffff0004 00010000 0001fffc 00060003 ffff0005 00000001 0001fff9 000a0005 ffff0009 00010001 0000fff6 00150017 0005001c 000a0016 00180024
};

请问大侠如何得到有效值和谐波含量?
此帖出自stm32/stm8论坛

最新回复

                                 有效值中没有和谐波  详情 回复 发表于 2010-8-29 18:01
点赞 关注
 

回复
举报

60

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

好,看看。

                                  
此帖出自stm32/stm8论坛
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

cr4_fft_256_stm32 有问题的啊!

                                 这个有一个 BUG 的啊! 要更正一下才行的!
此帖出自stm32/stm8论坛
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 

谢谢!

                                 请问netjob如何更正?
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 

把 那个 64 改改

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 

那个东西是可变。不是固定的。

                                 ST没说明,姑且认为是个 BUG吧!
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 

netjob,能把你用的fft发给我一份,可以吗?

                                 yf_tang1106@163.com
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 

谢谢您的回复!

netjob 发表于 2008-12-5 12:47 ST MCU ←返回版面    

8楼: cr4_fft_32_stm32 

更改的是 32 点 RADIX-4 的FFT 汇编版本,测试通过。
Q14,Q15格式都可以, 而STM32提供的只有Q14格式。

STM32的 cr4_fft_256_stm32.S里有个BUG !

RADIX-2 FFT的是C版本的,任意点!16位整数算法。
可以使用Q14,Q15格式。
 
 



能把你的这个RADIX-2 FFT程序发给我一份吗?谢谢!
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 

ST的技术支持,请出来说一声吧

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 

能不能也给我发一份FFT程序

aj1600@163.com

       谢谢!
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

11
 

老大们...问题还没解决就酷了?
能不能把正确的公开了啊?!
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 

请大家就别问我要程序了。

楼主的 采用数据,  大概是 半个 周波, 二楼的是我把它扩展为一个周波的波形,也就是512点数据。

二楼的是512点FFT算的,不是256点FFT, 那个是PC上运算的结果。

上图是采样的波形,下图是频域。
频域图可以看出,谐波基本为0,从上图就可以看出来了。

有效值就是 lBUFOUT[1],他是32位的。其实他是两个16位的组合。
STM32 的FFT 是16位整数FFT. 
因此 有效值就是: 

short int img,rel;
rel=(lBUFOUT[1]>>16);
img=(lBUFOUT[1]&0xffff);
//可以先校正 比例
有效值=(rel*rel+img*img)的开方;
//或后校正比例,加权等。

下面是简单的介绍使用方法:
主要是把32位拆分为两个16位的short int类型数据。方便操作。

#define NPT 256
typedef struct Complex{
short int real;
short int imag;
    
}COMPLEX;
COMPLEX lBUFIN[NPT]; 
COMPLEX lBUFOUT[NPT];

int real,imag;

cr4_fft_256_stm32(lBUFOUT, lBUFIN, NPT);
real=(int)lBUFOUT[1].real;
imag=(int)lBUFOUT[1].imag;

有效值=sqrt(real*real+imag*imag);


注意:
『STM32的256点 FFT 的程序要把 NPT EQU 64 改为256,这样运算才正确的。』

此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

13
 

感谢netjob的热心回答!

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

14
 

还得请教netjob

在文件里面并没有找到"NPT EQU 64"这条语句,我尝试把"#define NPT  64"中的64改为256,编译出错(256超出一个字节的表达范围了)
相关链接:https://bbs.eeworld.com.cn/upfiles/img/200812/20081218173535820.zip
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

15
 

波形分析

平滑正弦波,数据点数为一个周波,起点不是零点而在横轴只下,峰-峰为1810-950=860,有效值860/2/1.414=304,横轴位于950+860/2=1380,如果从该点开始取值256个则得到完全对称的正弦波。
建议:如果测交流信号,横轴零点太低,应提高到2048左右,否则大信号时正峰值还没到4095,下峰值已经到零,引起削波失真,减少了动态范围。
经过FFT后,主要会得到两个大的频率含量,一个是直流分量,频率为零,幅值为1380,另一个是基波分量,幅值为304,从netjob的图上看,明确可以看到这两个分量的频率位置,但是幅值好象超程了。
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

16
 

确实是有问题!

就不改变 #define NPT       64
使用的 cr4_fft_256_stm32.s

使用一个周波数据256数据如下:
 0x0000,  0x0192,  0x0324,  0x04B5, 
 0x0646,  0x07D5,  0x0964,  0x0AF1, 
 0x0C7C,  0x0E06,  0x0F8D,  0x1112, 
 0x1294,  0x1413,  0x158F,  0x1708, 
 0x187E,  0x19EF,  0x1B5D,  0x1CC6, 
 0x1E2B,  0x1F8B,  0x20E7,  0x223D, 
 0x238E,  0x24D9,  0x261F,  0x275F, 
 0x2899,  0x29CD,  0x2AFA,  0x2C21, 
 0x2D41,  0x2E59,  0x2F6B,  0x3075, 
 0x3178,  0x3273,  0x3367,  0x3452, 
 0x3536,  0x3611,  0x36E4,  0x37AF, 
 0x3871,  0x392A,  0x39DA,  0x3A81, 
 0x3B20,  0x3BB5,  0x3C41,  0x3CC4, 
 0x3D3E,  0x3DAE,  0x3E14,  0x3E71, 
 0x3EC4,  0x3F0E,  0x3F4E,  0x3F84, 
 0x3FB0,  0x3FD3,  0x3FEB,  0x3FFA, 
 0x3FFF,  0x3FFA,  0x3FEB,  0x3FD3, 
 0x3FB0,  0x3F84,  0x3F4E,  0x3F0E, 
 0x3EC4,  0x3E71,  0x3E14,  0x3DAE, 
 0x3D3E,  0x3CC4,  0x3C41,  0x3BB5, 
 0x3B20,  0x3A82,  0x39DA,  0x392A, 
 0x3871,  0x37AF,  0x36E4,  0x3611, 
 0x3536,  0x3452,  0x3367,  0x3273, 
 0x3178,  0x3075,  0x2F6B,  0x2E59, 
 0x2D41,  0x2C21,  0x2AFA,  0x29CD, 
 0x2899,  0x275F,  0x261F,  0x24D9, 
 0x238E,  0x223D,  0x20E7,  0x1F8B, 
 0x1E2B,  0x1CC6,  0x1B5D,  0x19EF, 
 0x187E,  0x1708,  0x158F,  0x1413, 
 0x1294,  0x1112,  0x0F8D,  0x0E06, 
 0x0C7C,  0x0AF1,  0x0964,  0x07D5, 
 0x0646,  0x04B5,  0x0324,  0x0192, 
 0x0000,  0xFE6F,  0xFCDD,  0xFB4C, 
 0xF9BB,  0xF82C,  0xF69D,  0xF510, 
 0xF385,  0xF1FB,  0xF074,  0xEEEF, 
 0xED6D,  0xEBEE,  0xEA72,  0xE8F9, 
 0xE784,  0xE612,  0xE4A4,  0xE33B, 
 0xE1D6,  0xE076,  0xDF1A,  0xDDC4, 
 0xDC73,  0xDB28,  0xD9E2,  0xD8A2, 
 0xD768,  0xD634,  0xD507,  0xD3E0, 
 0xD2C0,  0xD1A8,  0xD096,  0xCF8C, 
 0xCE89,  0xCD8E,  0xCC9A,  0xCBAF, 
 0xCACB,  0xC9F0,  0xC91D,  0xC852, 
 0xC790,  0xC6D7,  0xC627,  0xC580, 
 0xC4E1,  0xC44C,  0xC3C0,  0xC33D, 
 0xC2C3,  0xC253,  0xC1ED,  0xC190, 
 0xC13D,  0xC0F3,  0xC0B3,  0xC07D, 
 0xC051,  0xC02E,  0xC016,  0xC007, 
 0xC002,  0xC007,  0xC016,  0xC02E, 
 0xC051,  0xC07D,  0xC0B3,  0xC0F3, 
 0xC13D,  0xC190,  0xC1ED,  0xC253, 
 0xC2C3,  0xC33D,  0xC3C0,  0xC44C, 
 0xC4E1,  0xC57F,  0xC627,  0xC6D7, 
 0xC790,  0xC852,  0xC91D,  0xC9F0, 
 0xCACB,  0xCBAE,  0xCC9A,  0xCD8E, 
 0xCE89,  0xCF8C,  0xD096,  0xD1A8, 
 0xD2C0,  0xD3E0,  0xD507,  0xD634, 
 0xD768,  0xD8A2,  0xD9E2,  0xDB28, 
 0xDC73,  0xDDC4,  0xDF1A,  0xE076, 
 0xE1D6,  0xE33B,  0xE4A4,  0xE612, 
 0xE783,  0xE8F9,  0xEA72,  0xEBEE, 
 0xED6D,  0xEEEF,  0xF074,  0xF1FB, 
 0xF385,  0xF510,  0xF69D,  0xF82C, 
 0xF9BB,  0xFB4C,  0xFCDD,  0xFE6F, 
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

17
 

256点FFT的结果如下:

{ 0,0 },  { -20,-8177 },  { 0,0 },  { -2,-4 },  
{ 0,0 },  { -1,-4 },  { 0,0 },  { 1,-3 },  
{ 0,0 },  { -1,-2 },  { 0,0 },  { 0,-1 },  
{ 0,0 },  { 0,-2 },  { 0,0 },  { 3,-2 },  
{ 0,0 },  { -1,-1 },  { 0,0 },  { 0,-1 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { 0,-1 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { -1,-1 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { 4,0 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,-1 },  
{ 0,0 },  { -1,-1 },  { 0,0 },  { 0,-1 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { 1,0 },  
{ 0,0 },  { -1,-1 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { -1,-1 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { 5,3 },  
{ 0,0 },  { -1,0 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,-1 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,-1 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 1,0 },  
{ 0,0 },  { -1,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { 0,-1 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 1,2 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { -1,1 },  
{ 0,0 },  { -1,0 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { -1,-1 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { 3,8 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 1,1 },  
{ 0,0 },  { -1,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,2 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,1 },  
{ 0,0 },  { -1,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { -3,5 },  
{ 0,0 },  { -1,0 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,-1 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { -1,1 },  
{ 0,0 },  { -1,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { -4,3 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { -1,1 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { 0,0 },  
{ 0,0 },  { 0,0 },  { 0,0 },  { -5,2 },  
{ 0,0 },  { -1,0 },  { 0,0 },  { -1,0 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { -4,1 },  
{ 0,0 },  { 0,-1 },  { 0,0 },  { -2,-1 },  
{ 0,0 },  { 0,-2 },  { 0,0 },  { 11,8148 },  
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

18
 

结果证明 STM32的程序

cr4_fft_256_stm32.s 结果不正确!

请 版主 帮忙看看是什么回事。
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

19
 

                                 最近刚要用这FFT做谐波分析,高数当年净翘课了,但愿ST速度解决这个问题!!
此帖出自stm32/stm8论坛
 
 
 

回复

293

帖子

0

TA的资源

纯净的硅(高级)

20
 

哈哈,你上学时翘课的遗留问题,ST如何解决?

                                  
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表