ajfan 发表于 2023-10-11 13:44:00

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

本帖最后由 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的相位角了?)

智涅 发表于 2023-10-11 14:11:13

FFT能算相位?
1方法,ADC采样后,保留一个最大值及对应的计数值(遇到基准脉冲清零),这个计数值最终转化为相位,这个占用cpu没多少吧?

ajfan 发表于 2023-10-11 14:24:37

FFT可以计算相位的,因为通道比较多,用CH372 上传比较吃力

下一页 发表于 2023-10-11 15:24:42

本帖最后由 下一页 于 2023-10-11 15:56 编辑

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

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



https://www.bilibili.com/video/BV1nL4y1s7tz/?spm_id_from=333.337.search-card.all.click&vd_source=76afb72c0b762455cbc4489b0123a905

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

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

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

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

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

lizengmao 发表于 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得到相位角.

下一页 发表于 2023-10-11 17:09:53

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

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

lizengmao 发表于 2023-10-11 17:12:14

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

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

ajfan 发表于 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的相位角精度啊?

ajfan 发表于 2023-10-11 21:05:45

本帖最后由 ajfan 于 2023-10-11 21:09 编辑

下一页 发表于 2023-10-11 15:24
1只有相位差概念,没有相位这个单一概念,相位是指一个信号跟另外一个信号之间的相位差异。如果非要在一个 ...
(引用自4楼)

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

下一页 发表于 2023-10-11 21:11:29

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

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

ajfan 发表于 2023-10-11 21:23:26

下一页 发表于 2023-10-11 21:11
8个通道,一般来说都是一个adc来回切换,这样不能保证同步采集
(引用自10楼)

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

ziruo2002ab 发表于 2023-10-11 21:53:36

峰值检测+比较器+计数器

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

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

lizengmao 发表于 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点

ajfan 发表于 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度的分辨率?是否还要换算?

lizengmao 发表于 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点。
频率的分辨率与角度的分辨率的关系,我没有认真研究过。

ziruo2002ab 发表于 2023-10-11 23:22:15

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

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

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

lizengmao 发表于 2023-10-11 23:28:15

按照我自己的测试,相位的分辨率与采样率有关。4x过采样比2x过采样的相位分辨率要好,表现是测试一颗电阻时,相位可以稳定的读取。
过采样可以提高解算的相位精度,但是过采样32x后,在LCR Meter上对提高相位精度无意义。我试过更高的过采样。当然也有可能我的硬件软件水平太差得到了错误的结果。
页: [1]
查看完整版本: 1KHZ 波形用FFT方式计算高点相位的思路