3.1 電能質(zhì)量,諧波分析
添加命令行
在電能檢測(cè)應(yīng)用中,電能質(zhì)量一項(xiàng)分析即諧波分析,諧波分量大,說(shuō)明電能質(zhì)量不好,
基于本板信號(hào)處理前端也實(shí)現(xiàn)了該功能。
shell_fun.h中
void FftFun(void* param);
shell_fun.c中
#include "fft.h"
shell_cmd_list中添加一行
{ (const uint8_t*)"fft", FftFun, "fft"}, /*打印幫助信息*/
添加命令執(zhí)行函數(shù)
void FftFun(void* param)
{
fft_main();
}
添加實(shí)現(xiàn)
Fft.c
#include "arm_math.h"
#include "arm_const_structs.h"
#include < stdio.h >
#define TEST_LENGTH_SAMPLES 2048
extern float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES];
static float32_t testOutput[TEST_LENGTH_SAMPLES/2];
static uint32_t fftSize = 1024;
static uint32_t ifftFlag = 0;
static uint32_t doBitReverse = 1;
static arm_cfft_instance_f32 varInstCfftF32;
static int testIndex = 0;
static float testtmp_f32_10khz[2048];
static int32_t adcbuffer[2048];
int32_t fft_main(void)
{
arm_status status;
float32_t maxValue;
status = ARM_MATH_SUCCESS;
status=arm_cfft_init_f32(&varInstCfftF32,fftSize);
//memcpy(testtmp_f32_10khz,testInput_f32_10khz,sizeof(testInput_f32_10khz));
adc_samp(adcbuffer,2048);
for(int i=0; i< 2048;i ++)
{
testtmp_f32_10khz[i] = (float)adcbuffer[i];
}
arm_cfft_f32(&varInstCfftF32, testtmp_f32_10khz, ifftFlag, doBitReverse);
arm_cmplx_mag_f32(testtmp_f32_10khz, testOutput, fftSize);
/* Calculates maxValue and returns corresponding BIN value */
arm_max_f32(testOutput, fftSize, &maxValue, &testIndex);
int32_t out = 0;
for(int i=0; i< TEST_LENGTH_SAMPLES; i++)
{
if(i >TEST_LENGTH_SAMPLES/2)
{
out = testOutput[i-TEST_LENGTH_SAMPLES/2]/1024;
}
else
{
out = testOutput[i]/1024;
}
printf("/*%ld,%ld*/rn", adcbuffer[i],out);
}
}
/** endlink */
Fft.h
#ifndef FFT_H
#define FFT_H
int fft_main(void);
#endif
測(cè)試
看到分析如下,前面是模擬輸入,后面是諧波分析結(jié)果
詳見(jiàn)視頻和工程源碼
審核編輯 黃宇
-
測(cè)試
+關(guān)注
關(guān)注
8文章
5104瀏覽量
126341 -
諧波
+關(guān)注
關(guān)注
7文章
804瀏覽量
41713 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
4899瀏覽量
97064 -
RTT
+關(guān)注
關(guān)注
0文章
65瀏覽量
17060
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論