搜索
bottom↓
回复: 16

1KHZ 波形用FFT方式计算高点相位的思路

[复制链接]

出340入0汤圆

发表于 2023-10-11 13:44:00 | 显示全部楼层 |阅读模式
200汤圆
本帖最后由 ajfan 于 2023-10-11 13:56 编辑

如下图波形,信号频率在1KHZ,需要检测波形峰值的相位,对应相位角希望分辨到1度(总360度),目前考虑:
1. 峰值检测+计数器方式(在每个基准脉冲时复位计数器)测量对应的峰值用时/周期,对应需要较多的硬件及占用MCU中断
2. 考虑用FFT检测相位

查了蛮多FFT资料,越查越糊涂了,请教下各位专家,对应FFT希望能分辨相位角1度(对应图上,希望能知道相对基准脉冲的峰值相位是多少度),对应的采样率,线数推荐设定多少?(是否要在1KHZ的频率下再能分辨360份?采样率360000?   还是不用考虑过多,假设设定采样率2KHZ,线数2000,对应分辨率1HZ,对应FFT中肯定能显示1KHZ,出来的FFT数据中就包含1KHZ的相位角了?)

附件: 您需要 登录 才可以下载或查看,没有帐号?注册

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出40入518汤圆

发表于 2023-10-11 14:11:13 | 显示全部楼层
FFT能算相位?
1方法,ADC采样后,保留一个最大值及对应的计数值(遇到基准脉冲清零),这个计数值最终转化为相位,这个占用cpu没多少吧?

出340入0汤圆

 楼主| 发表于 2023-10-11 14:24:37 | 显示全部楼层
FFT可以计算相位的,因为通道比较多,用CH372 上传比较吃力

出0入37汤圆

发表于 2023-10-11 15:24:42 | 显示全部楼层
本帖最后由 下一页 于 2023-10-11 15:56 编辑

1只有相位差概念,没有相位这个单一概念,相位是指一个信号跟另外一个信号之间的相位差异。如果非要在一个信号中讨论相位,可以是同一个信号不同频率之间,某一个频率的正弦波和另外一个频率的正弦波构成相位关系(根据傅里叶级数的观点,任何周期信号都是正弦波的线性叠加)。也就是说对于如图的一个单一频率的正弦波,没有相位概念,只能拿这个信号和另外一个信号做比较,才有相位概念。

2没有峰值相位这个概念,信号作为一个整体,峰值和过零点和付峰值在时域上位置关系都是锁死的,如果他们的位置关系发生了变换,那就是经过了非线性系统,信号不再是原来的信号了。



https://www.bilibili.com/video/B ... 455cbc4489b0123a905

这个视频可以看看,如何用简易的方式获取两个信号的相位差。

如果必须是FFT,需要把两个信号用同步的AD采集进去,然后分别做fft根据两个fft的结果求相位差。

至于精度问题,不单单取决于你的采样频率,还取决于你的采样长度,频率分辨率(间隔频率)=采样频率/采样点数。采样点数高一些,频率分辨率会更好。

前面有坛友说的峰值检测的方法,对有噪声的信号来说不合适,会造成较大的抖动和误差。

如果已知信号频率,还可以用信号相关性(点积,内积)的概念求两个信号的相位差。

出0入26汤圆

发表于 2023-10-11 16:49:43 | 显示全部楼层
用以下方法进行测试看看,我在LCR Meter解调上有试过:
1.确定要采集的信号频率,当前设定=1kHz
2.确定ADC采样率和总采样点数.采样率应大于2倍信号频率,采样点数决定了FFT的信号最小分辨率.例如,采样率5120Hz,采样点数1024点,则频率的分辨率为5120/1024=5Hz.实际上我在LCR Meter中,至少需要16x的过采样,即16kHz的采样率才得到较为稳定的相位角.LCR Meter需要相位分辨率<0.001度.如果你的应用不需要这么高的分辨率,可以适当降低采样率.
3.确定信号的基准0度相位:可以使用以下方法确定
  a.在信号过零的时候使用硬件触发ADC采样.
  b.ADC采样多采集几个周期,软件中查找ADC的峰值,然后检索出过零点,从过零点提取所需的ADC值.例如采集1280点,检索出1024点使用.
4.使用FFT对ADC采样进行解算,得到信号的实部和虚部.
5.使用三角函数atan或者atan2计算相位.
6.相位*180度/Pi得到相位角.

出0入37汤圆

发表于 2023-10-11 17:09:53 | 显示全部楼层
lizengmao 发表于 2023-10-11 16:49
用以下方法进行测试看看,我在LCR Meter解调上有试过:
1.确定要采集的信号频率,当前设定=1kHz
2.确定ADC采样 ...
(引用自5楼)

以上方法看上去可靠,补充一点,触发ADC的不用信号本身的过零点,而是问题中那个脉冲信号,就把信号和脉冲的相位关系确立了。

出0入26汤圆

发表于 2023-10-11 17:12:14 来自手机 | 显示全部楼层
下一页 发表于 2023-10-11 17:09
以上方法看上去可靠,补充一点,触发ADC的不用信号本身的过零点,而是问题中那个脉冲信号,就把信号和脉 ...
(引用自6楼)

所以要用硬件获取这个脉冲信号啊。如我说的方法a

出340入0汤圆

 楼主| 发表于 2023-10-11 21:04:48 来自手机 | 显示全部楼层
lizengmao 发表于 2023-10-11 16:49
用以下方法进行测试看看,我在LCR Meter解调上有试过:
1.确定要采集的信号频率,当前设定=1kHz
2.确定ADC采样 ...

(引用自5楼)

0.001度是很小的分辨率了,我只要1或0.5度相位角分辨率就可以了,按你上面用16khz的采样,fft用多少线数才能得到你0.001的相位角精度啊?

出340入0汤圆

 楼主| 发表于 2023-10-11 21:05:45 来自手机 | 显示全部楼层
本帖最后由 ajfan 于 2023-10-11 21:09 编辑
下一页 发表于 2023-10-11 15:24
1只有相位差概念,没有相位这个单一概念,相位是指一个信号跟另外一个信号之间的相位差异。如果非要在一个 ...
(引用自4楼)


是有一个硬件的基准脉冲的,希望用全软件判断相位差,目前采样是8通道的同步adc,如果需要可以1个通道采样基准脉冲一个通道采样信号,这样起步时间就一致了

出0入37汤圆

发表于 2023-10-11 21:11:29 | 显示全部楼层
ajfan 发表于 2023-10-11 21:05
是有一个硬件的基准脉冲的,希望用全软件判断相位差,目前采样是8通道的同步adc,如果需要可以1个通道采 ...
(引用自9楼)

8个通道,一般来说都是一个adc来回切换,这样不能保证同步采集

出340入0汤圆

 楼主| 发表于 2023-10-11 21:23:26 来自手机 | 显示全部楼层
下一页 发表于 2023-10-11 21:11
8个通道,一般来说都是一个adc来回切换,这样不能保证同步采集
(引用自10楼)

用的是ad7606,应该是同步采样的,现在问题能采样到基准脉冲和信号,如何比较简单的判断有点难

出200入657汤圆

发表于 2023-10-11 21:53:36 | 显示全部楼层
峰值检测+比较器+计数器

峰值检测做到100ns的响应就比较困难了,对应1ms的周期是万分之一,也就是0.036°的分辨率。

如果用ADC也是同样的问题,采样率不可能无限高,成本不容许、高位数高采样率的ADC非常昂贵。

出0入26汤圆

发表于 2023-10-11 23:06:28 | 显示全部楼层
ajfan 发表于 2023-10-11 21:04
0.001度是很小的分辨率了,我只要1或0.5度相位角分辨率就可以了,按你上面用16khz的采样,fft用多少线数 ...
(引用自8楼)

16k采样率,采样了16个信号周期,即16*16=256点

出340入0汤圆

 楼主| 发表于 2023-10-11 23:13:44 来自手机 | 显示全部楼层
本帖最后由 ajfan 于 2023-10-11 23:15 编辑
lizengmao 发表于 2023-10-11 23:06
16k采样率,采样了16个信号周期,即16*16=256点
(引用自13楼)


16khz采样率/256点,分辨率是62.5hz,这个如何做到0.001度的分辨率?是否还要换算?

出0入26汤圆

发表于 2023-10-11 23:21:59 | 显示全部楼层
ajfan 发表于 2023-10-11 23:13
16khz采样率/256点,分辨率是62.5hz,这个如何做到0.001度的分辨率?是否还要换算? ...
(引用自14楼)

可能我没有说清楚,LCR Meter需要解算到0.001度的相位角。
62.5Hz是FFT的频率分辨率,因为软件DDS产生的1KHz会有误差,不一定就是1KHz。所以没有使用很小的频率分辨率。另外,很小的频率分辨率将导致ADC采样和FFT耗时增加。当时我用STM32G0,没有浮点运算单元,因此只能折中。后来改为了带FPU的STM32F4,提高了解算速度。采集点数提高到了480点。
频率的分辨率与角度的分辨率的关系,我没有认真研究过。

出200入657汤圆

发表于 2023-10-11 23:22:15 | 显示全部楼层
ajfan 发表于 2023-10-11 23:13
16khz采样率/256点,分辨率是62.5hz,这个如何做到0.001度的分辨率?是否还要换算? ...
(引用自14楼)

你这种想法不符合信息论:没有获取到的东西,如何知道?无中生有?

采样率限制死了时间分辨率。

出0入26汤圆

发表于 2023-10-11 23:28:15 | 显示全部楼层
按照我自己的测试,相位的分辨率与采样率有关。4x过采样比2x过采样的相位分辨率要好,表现是测试一颗电阻时,相位可以稳定的读取。
过采样可以提高解算的相位精度,但是过采样32x后,在LCR Meter上对提高相位精度无意义。我试过更高的过采样。当然也有可能我的硬件软件水平太差得到了错误的结果。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-28 00:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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