专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
用STM32采集了64个点的交流信号,如何计算有效值。。
2019-12-27 18:38
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
20750
35
35
采集的交流信号经过了FFT,出来了64点的幅度,相位,虚部和实部。如何计算交流电流有效值,频率?
现在用了很多计算方法,结果不太好!
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
35条回答
yuguoliang
2019-12-31 06:37
给个24点的参数。
#define PI 3.1415926
//24点付氏算法,返回long值并放大128倍,g:连续存放24点数据缓冲区首地址
#define FOURIER_R_24L(g) ( (int32)( 66l*( (int32)g[0] + (int32)g[10] - (int32)g[12] - (int32)g[22] )
+ (( (int32)g[1] + (int32)g[9] - (int32)g[13] - (int32)g[21] )<<7)
+ 227l*((int32)g[3] + (int32)g[7] - (int32)g[15] - (int32)g[19] )
+ 247l*((int32)g[4] + (int32)g[6] - (int32)g[16] - (int32)g[18] )
+ 181l*( (int32)g[2] + (int32)g[8] - (int32)g[14] - (int32)g[20] )
+ ((int32)g[5]<<8) - ((int32)g[17]<<8) ) )
//24点付氏算法,返回long值并放大128倍,g:连续存放24点数据缓冲区首地址
#define FOURIER_X_24L(g) ( (int32)( 247l*((int32) g[0] - (int32)g[10] - (int32)g[12] + (int32)g[22] ) + 227l*( (int32)g[1]
- (int32)g[9] - (int32)g[13] + (int32)g[21] ) + 181l*( (int32)g[2] - (int32)g[8] - (int32)g[14] + (int32)g[20] )
+ (((int32)g[3] - (int32)g[7] - (int32)g[15] + (int32)g[19] )<<7)
+ 66l*((int32)g[4] - (int32)g[6] - (int32)g[16] + (int32)g[18] )
+ ((int32)g[23]<<8) - ((int32)g[11]<<8) ) )
//24点半波付氏算法 //@2007.08.27 //ZHOUTING
//返回long值并放大128倍,g:连续存放24点数据缓冲区首地址
#define FOURIER_X_24L_HALF(g) ( (INT32)( 247l*((INT32) g[0] - (INT32)g[10])
+ 222l*((INT32)g[1] - (INT32)g[9])
+ 181l*((INT32)g[2] - (INT32)g[8])
+ (((INT32)g[3] - (INT32)g[7])<<7)
+ 66l*((INT32)g[4] - (INT32)g[6])
- ((INT32)g[11]<<8) ) )
#define FOURIER_R_24L_HALF(g) ( (INT32)( 66l*( (INT32)g[0] + (INT32)g[10] )
+ (( (INT32)g[1] + (INT32)g[9] )<<7 )
+ 181l*((INT32)g[2] + (INT32)g[8] )
+ 222l*((INT32)g[3] + (INT32)g[7] )
+ 247l*((INT32)g[4] + (INT32)g[6] )
+ ((INT32)g[5]<<8) ) )
计算如下: Aui[24] 放采样点
UiR = FOURIER_R_24L(Aui)>>8; //计算实部
UiX = FOURIER_X_24L(Aui)>>8;//计算虚部
fUi =sqrt_16( UiR*UiR+UiX*UiX);//计算有效值
AC_val_UIC = (int32)((fUi>>2) * ADJ_PARAM.ADJ_Aui_ratio)/10; //乘校准系数计算实际输入电压
加载中...
查看其它35个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#define PI 3.1415926
//24点付氏算法,返回long值并放大128倍,g:连续存放24点数据缓冲区首地址
#define FOURIER_R_24L(g) ( (int32)( 66l*( (int32)g[0] + (int32)g[10] - (int32)g[12] - (int32)g[22] )
+ (( (int32)g[1] + (int32)g[9] - (int32)g[13] - (int32)g[21] )<<7)
+ 227l*((int32)g[3] + (int32)g[7] - (int32)g[15] - (int32)g[19] )
+ 247l*((int32)g[4] + (int32)g[6] - (int32)g[16] - (int32)g[18] )
+ 181l*( (int32)g[2] + (int32)g[8] - (int32)g[14] - (int32)g[20] )
+ ((int32)g[5]<<8) - ((int32)g[17]<<8) ) )
//24点付氏算法,返回long值并放大128倍,g:连续存放24点数据缓冲区首地址
#define FOURIER_X_24L(g) ( (int32)( 247l*((int32) g[0] - (int32)g[10] - (int32)g[12] + (int32)g[22] ) + 227l*( (int32)g[1]
- (int32)g[9] - (int32)g[13] + (int32)g[21] ) + 181l*( (int32)g[2] - (int32)g[8] - (int32)g[14] + (int32)g[20] )
+ (((int32)g[3] - (int32)g[7] - (int32)g[15] + (int32)g[19] )<<7)
+ 66l*((int32)g[4] - (int32)g[6] - (int32)g[16] + (int32)g[18] )
+ ((int32)g[23]<<8) - ((int32)g[11]<<8) ) )
//24点半波付氏算法 //@2007.08.27 //ZHOUTING
//返回long值并放大128倍,g:连续存放24点数据缓冲区首地址
#define FOURIER_X_24L_HALF(g) ( (INT32)( 247l*((INT32) g[0] - (INT32)g[10])
+ 222l*((INT32)g[1] - (INT32)g[9])
+ 181l*((INT32)g[2] - (INT32)g[8])
+ (((INT32)g[3] - (INT32)g[7])<<7)
+ 66l*((INT32)g[4] - (INT32)g[6])
- ((INT32)g[11]<<8) ) )
#define FOURIER_R_24L_HALF(g) ( (INT32)( 66l*( (INT32)g[0] + (INT32)g[10] )
+ (( (INT32)g[1] + (INT32)g[9] )<<7 )
+ 181l*((INT32)g[2] + (INT32)g[8] )
+ 222l*((INT32)g[3] + (INT32)g[7] )
+ 247l*((INT32)g[4] + (INT32)g[6] )
+ ((INT32)g[5]<<8) ) )
计算如下: Aui[24] 放采样点
UiR = FOURIER_R_24L(Aui)>>8; //计算实部
UiX = FOURIER_X_24L(Aui)>>8;//计算虚部
fUi =sqrt_16( UiR*UiR+UiX*UiX);//计算有效值
AC_val_UIC = (int32)((fUi>>2) * ADJ_PARAM.ADJ_Aui_ratio)/10; //乘校准系数计算实际输入电压
一周热门 更多>