1175|4

375

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

AD采样通过FFT算幅值和角度不对 [复制链接]

邀请:@54chenjq   参与回复

使用STM32F103采样3个交流电压、3个交流电流,但因为电流采样范围较宽,所以使用多级运放进行不同倍数的放大,共开通12个AD通道,3个电压通道,9个电流通道。

使用TIM3定时器,设置每周波(20ms)采64个点,DMA一直在传送;

  htim3.Instance = TIM3;
  htim3.Init.Prescaler = 2-1;
  htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim3.Init.Period = 11250-1;
  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
  {
    Error_Handler();
  }

 

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  /* USER CODE BEGIN Callback 0 */
  if (htim == (&htim3))
     {
             HAL_ADC_Start_DMA(&hadc1,(uint32_t *)ADC_Cache,12);
         }
  /* USER CODE END Callback 0 */
 
  /* USER CODE BEGIN Callback 1 */
 
  /* USER CODE END Callback 1 */
}

 

通过ADC回调函数将转换的采样取出来:

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
    if(hadc==&hadc1)
    {    
        adc_data[0].sample[pcnt]=ADC_Cache[0];
         adc_data[1].sample[pcnt]=ADC_Cache[1];
        adc_data[2].sample[pcnt]=ADC_Cache[2];

       。。。。。。。

      /*省略这一段就是12个通道的采样取值*/        

        pcnt++;
        pcnt&= 255;
        if(pcnt%64==0)
        {
          calc_flag=1;
            fft_ptn=pcnt;
      }
    }   
}

采到64个点,就置一个标志位,使用FFT算幅值和角度。使用的是ST自带的FFT计算库中的:

cr4_fft_64_stm32(lBUFOUT,lBUFIN,64);

再计算实部和虚部,通过实部虚部再算幅值和角度。

其中,幅值是算了1~9次谐波累加再开方作为幅值;

角度是phase=(atan2(lBUF_v[1].imag,lBUF_v[1].real)/PI*180.00),因为我认为1次正弦波就是50hz,角度就是该频率点下的角度。

问题是:

(1)算出来的幅值乘以系数后,只能在某个区间是对的,比如在200~240V电压之间是对的。将电压调低,算出来的数据就差的比较多,需要改系数,但对其他区间的电压采样又不对。

(2)算出来的角度,以A相为基准,认为是0度,用B相减去A相,C相减去A相,B,C角度总在变,一会是-121,118,一会是245,114,一会是-240,128,一会是-125,-248。

想问问这种可能是什么原因。

最新回复

电力行业32、36、64点FFT是比较常见的   详情 回复 发表于 2024-6-11 14:42
点赞 关注
 
 

回复
举报

1088

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
留各痕迹,这个问题确实不知道原由,用硬件电路搭建的过零比较器,输入50Hz不同幅度的正弦信号,也存在用边沿判断相位调不准的问题。
 
 
 

回复

1087

帖子

0

TA的资源

纯净的硅(高级)

板凳
 

我数学不是太好,但也做过一些FFT分析,效果很好。

有个原则:一个周期的数据无论采集密度多好(64点),都不能做FFT,否则结果离散度很大!

建议目前情况,512点试试,应该有一定效果,但不见得好。

点数越多,分析结果越准,我用过12位采样/1024点FFT,误差都在0.1%以内。非常稳定。

 

点评

对,64点,32点在电力中常用,而且算出来的没什么问题。 应该还是程序有问题。  详情 回复 发表于 2024-6-13 00:05
电力行业32、36、64点FFT是比较常见的  详情 回复 发表于 2024-6-11 14:42
个人签名چوآن شـين
 
 
 

回复

101

帖子

0

TA的资源

一粒金砂(中级)

4
 
Gen_X 发表于 2024-6-11 11:37 我数学不是太好,但也做过一些FFT分析,效果很好。 有个原则:一个周期的数据无论采集密度多好(64点) ...

电力行业32、36、64点FFT是比较常见的

 
 
 

回复

375

帖子

1

TA的资源

一粒金砂(中级)

5
 
Gen_X 发表于 2024-6-11 11:37 我数学不是太好,但也做过一些FFT分析,效果很好。 有个原则:一个周期的数据无论采集密度多好(64点) ...

对,64点,32点在电力中常用,而且算出来的没什么问题。

应该还是程序有问题。

 
 
 

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

开源项目 更多>>
    随便看看
    查找数据手册?

    EEWorld Datasheet 技术支持

    相关文章 更多>>
    推荐帖子
    全国大学生电子设计竞赛相关帖子汇总

    由于帖子的不断更新以及论坛的现实篇幅有限,故难免会有一些好贴沉下去而不能发挥余热~~~ 在此特整理汇总全国大学生电子设计竞赛 ...

    技术文章编辑CHM版

    技术文章.part0139355 技术文章.part0239356

    单片机系统常用电子元器件知识简析

    电阻种类及特点简介 电阻,英文名resistance,通常缩写为R,它是导体的一种基本性质,与导体的尺寸、材料、温度有关。欧姆定律 ...

    LPC1343+CC1100无线数据传输

    1、1、cc1100模块实物及连线图 49515 采用SSP的SPI通信方式,CC1100模块的SI ,SO ,SCK CSN ,管脚必须与1343的MISO,MOSI,SCK, ...

    helper2416_移植mysql_欢迎测试

    移植了一下mysql,相比之下比sqlite要大众一点关键是搞nodejs会用到,web什么的还是mysql主流,当然对于很多嵌入式应用sqlite足 ...

    RISC-V MCU IDE MRS(MounRiver Studio)开发之:设置工程编码字符集

    字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集是多个字符的集合,字符集种类繁多,每个字符 ...

    建议版主增加一个EMC专栏或者专题讨论。

    建议版主增加一个EMC专栏或者专题讨论。 随着我们的产品逐渐国际化,并且中国设计和研发能力的提高,产品可靠性以及标准化认 ...

    【雅特力AT-START-F437评测】5. FatFS文件系统移植(源码)

    FatFs是一个通用的FAT/exFAT文件系统模块,用于小型嵌入式系统。它完全是由 ANSI C 语言编写并且完全独立于底层的 I/O 介质。 ...

    Gartner发布2024年及以后对于 IT 组织与用户的重要预测

    分享个新闻:Gartner发布2024年及以后对于 IT 组织与用户的重要预测 2023年10月23日——Gartner发布对2024年及 ...

    【DigiKey“智造万物,快乐不停”创意大赛】基于Arduino Uno R4智能床头灯项目&6调试5

    本帖最后由 eew_cT3H5d 于 2024-1-11 16:10 编辑 第五部分:给Arduino Uno R4智能床头灯项目装个漂亮的外壳进行调试 外壳 ...

    关闭
    站长推荐上一条 1/10 下一条
    中星联华&ADI明日直播
    直播主题:大咖面对面,轻松玩转高速ADC性能测试
    直播时间:3月25日(周二)14:00
    活动奖励:京东卡、双肩包

    查看 »

     
    EEWorld订阅号

     
    EEWorld服务号

     
    汽车开发圈

     
    机器人开发圈

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

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

    北京市海淀区中关村大街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
    快速回复 返回顶部 返回列表