硬汉嵌入式论坛

 找回密码
 立即注册
查看: 10042|回复: 24
收起左侧

[有问必答] STM32 adc 采集两路正玄波信号,计算出相位差?

  [复制链接]

28

主题

274

回帖

358

积分

高级会员

积分
358
发表于 2021-3-10 10:58:02 | 显示全部楼层 |阅读模式
STM32 adc 采集两路正玄波信号,计算出相位差?
能否实现 ? STM32F407.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2021-3-10 11:04:01 | 显示全部楼层
FFT计算即可。
回复

使用道具 举报

28

主题

274

回帖

358

积分

高级会员

积分
358
 楼主| 发表于 2021-3-13 21:12:05 | 显示全部楼层
有没有 相关的 demo 例子? 谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2021-3-14 06:59:55 | 显示全部楼层
suozhang 发表于 2021-3-13 21:12
有没有 相关的 demo 例子? 谢谢

没有。
回复

使用道具 举报

28

主题

274

回帖

358

积分

高级会员

积分
358
 楼主| 发表于 2021-3-14 10:24:12 | 显示全部楼层
我的目的是 采集 两路 ADC 信号,计算 两路信号 相位差 , 现在 思路 是 ADC+DMA 方式, ADC 轮训采集 两路 数据,DMA 搬运,这样 buff里就是 按照顺序 存储的 通道1 和 通道2  的 值, 总计 1024个 值, 然后 进行 FFT 运算, 能否 算出 两路 信号 的相位差?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2021-3-15 09:49:45 | 显示全部楼层
suozhang 发表于 2021-3-14 10:24
我的目的是 采集 两路 ADC 信号,计算 两路信号 相位差 , 现在 思路 是 ADC+DMA 方式, ADC 轮训采集 两路 ...

保证同步采样。
回复

使用道具 举报

5

主题

61

回帖

76

积分

初级会员

积分
76
发表于 2021-3-15 17:25:15 | 显示全部楼层
同步采样 分成两个buff  FFT结果算出两个波形的相位,两个相位相见就可以
  1. fft(128,fft_I);
  2. fft(128,fft_U);
  3. for(a=0;a<64;a++)//计算相位差
  4.             {
  5.                 I_angle[a]=atan2f(fft_I[a].imag,fft_I[a].real)*180/PI;
  6.                 U_angle[a]=atan2f(fft_U[a].imag,fft_U[a].real)*180/PI;
  7.                 if(a<=1)
  8.                 angle[a]=I_angle[a]-U_angle[a];
  9.                else
  10.                 angle[a]=I_angle[a]-U_angle[1]*a;
  11.                 while(angle[a]>180)
  12.                     angle[a] -= 360;
  13.                 while(angle[a]<-180)
  14.                     angle[a] += 360;
  15.             }
复制代码
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2021-3-17 12:19:24 | 显示全部楼层
STM32无法进行同步采样吧,总是有时间差的,还要看你要求的精度
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2021-3-17 15:37:43 | 显示全部楼层
jinyi7016 发表于 2021-3-17 12:19
STM32无法进行同步采样吧,总是有时间差的,还要看你要求的精度

可以,不过得两路ADC做同步采样,使用那个定时器的两个通道同时触发就行。
回复

使用道具 举报

28

主题

274

回帖

358

积分

高级会员

积分
358
 楼主| 发表于 2021-3-18 08:57:36 | 显示全部楼层
的确可以 同步采样 ,使用 定时器 触发  ADC 1\2 DMA 同时采样 ,但是 目前效果不行  ,我 正在 分析原因中, 多重 ADC 模式 !
回复

使用道具 举报

28

主题

274

回帖

358

积分

高级会员

积分
358
 楼主| 发表于 2021-3-18 08:58:03 | 显示全部楼层
Blake 发表于 2021-3-15 17:25
同步采样 分成两个buff  FFT结果算出两个波形的相位,两个相位相见就可以

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2021-3-18 15:44:31 | 显示全部楼层
suozhang 发表于 2021-3-18 08:57
的确可以 同步采样 ,使用 定时器 触发  ADC 1\2 DMA 同时采样 ,但是 目前效果不行  ,我 正在 分析原因中 ...

不要用多重ADC方式,自己单独配置即可。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2021-3-18 15:46:51 | 显示全部楼层
suozhang 发表于 2021-3-18 08:57
的确可以 同步采样 ,使用 定时器 触发  ADC 1\2 DMA 同时采样 ,但是 目前效果不行  ,我 正在 分析原因中 ...

参考V5的一代示波器,使用一个定时器的三个通道同时触发三个ADC。
回复

使用道具 举报

28

主题

274

回帖

358

积分

高级会员

积分
358
 楼主| 发表于 2021-3-19 09:28:23 | 显示全部楼层
eric2013 发表于 2021-3-18 15:46
参考V5的一代示波器,使用一个定时器的三个通道同时触发三个ADC。

好的 收到
回复

使用道具 举报

0

主题

124

回帖

124

积分

初级会员

积分
124
发表于 2021-3-21 09:32:51 | 显示全部楼层
TIM1 或 8 的Channel 1 & 2 , 可以配置为XOR功能, 用这个能轻易的获取相差
回复

使用道具 举报

1

主题

26

回帖

29

积分

新手上路

积分
29
发表于 2021-3-31 11:44:25 | 显示全部楼层
Blake 发表于 2021-3-15 17:25
同步采样 分成两个buff  FFT结果算出两个波形的相位,两个相位相见就可以

你好 请问一下 为什么a>1以后 angle[a]=I_angle[a]-U_angle[1]*a; u的要乘上a呢
回复

使用道具 举报

5

主题

61

回帖

76

积分

初级会员

积分
76
发表于 2021-4-1 08:44:08 | 显示全部楼层
菜鸟中的萌新 发表于 2021-3-31 11:44
你好 请问一下 为什么a>1以后 angle[a]=I_angle[a]-U_angle[1]*a; u的要乘上a呢

计算出来的谐波必须要有一个参考才能计算出相位差,然后这个算的是电力数据,以电压基波为参考的,这个结果是对标电能质量分析仪的谐波数据
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-2-11 11:21:02 | 显示全部楼层
你好  请教一下 如何计算两路的相位差  
回复

使用道具 举报

4

主题

140

回帖

152

积分

初级会员

积分
152
发表于 2022-2-15 09:39:01 | 显示全部楼层
Blake 发表于 2021-4-1 08:44
计算出来的谐波必须要有一个参考才能计算出相位差,然后这个算的是电力数据,以电压基波为参考的,这个结 ...

感谢分享,再问下利于FFT如何计算频率呢
回复

使用道具 举报

1

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2022-5-15 22:41:54 | 显示全部楼层
请问实现了吗?
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-7-15 16:14:24 | 显示全部楼层
Edmund1964 发表于 2021-3-21 09:32
TIM1 或 8 的Channel 1 & 2 , 可以配置为XOR功能, 用这个能轻易的获取相差

请问有相关例程吗,网上找不到资料,不知该如何配置
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2022-8-26 14:33:33 | 显示全部楼层
请问楼主实现了吗,我测量的是电压、一次电流、二次电流,U-I2和I1-I2这两个的相位一直在变化,不知道是什么问题,虚心请教
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2022-8-26 14:36:33 | 显示全部楼层
请问楼主解决了吗,我测量出来电压不变,U-I2和I1-I2的角度在不断降低,虚心请教
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2024-2-28 14:21:50 | 显示全部楼层
Edmund1964 发表于 2021-3-21 09:32
TIM1 或 8 的Channel 1 & 2 , 可以配置为XOR功能, 用这个能轻易的获取相差

具体应该怎么操作呢
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-4-23 14:02:26 | 显示全部楼层
能实现 要知道信号频率 要不fft不好处理
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 12:19 , Processed in 0.253191 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表