一种正弦信号叠加高频噪声的信号基频率准确测量方法

1.问题

        当信号叠加有高频噪声时,特别是类似有变频器这类强干扰源存在的情况下,如何测得信号的准确频率,是个问题。FFT要求长时间采样,对于嵌入式应用,采样点数和时间消耗都是个问题。而即使用示波器的波形叠加功能,因为强干扰源的存在,无法找到准确的触发沿,也无法达到这个目的,除非使用深存储功能的示波器,抓取足够多的数据点...

        这里介绍一种处理的方法。可以在单片机环境下,准确测得信号的周期。周期的精确度,理论上,仅与时间轴的的采样周期有关。

2分析

        对于仅仅需要测得信号基准频率的场合,其实,利用:

https://blog.csdn.net/twicave/article/details/131214059?spm=1001.2014.3001.5502http://xn--4gq480b4ha8ot6pdndwov38bqpe8sfe3tejjqp1ah98br9t的方法,使用低于最低频率信号的采样时长,就可以计算出信号的基准频率的大致范围,以及信号的幅度信息,也能够估算出,0电平的位置。然后,利用上述信息。就可以估算出在任意采样率下,过零点时,采样值的可能跳变范围,而后,直接把采样率提高到最高采样率,然后卡过零点的有效跳变点。测得的数据视情况累加4~16个周期,确认每次测得的周长与理论预期一致;然后取平均即可。对于明显是N倍或更多倍有效周期的数据点,可以直接以N倍计入。

        但是注意,如果仅仅用零点和过零点的跳变来计算信号周期,测得的数据点中可能会混入高频的噪点,和半周期点:高频噪点是过零点时的高频抖动产生的。半周期点,是在原本是反向沿儿的位置,震荡,出现了正向沿儿。这些噪点,如果想要消除,可以引入信号的峰峰值来卡位。但是,从前一步,我们已经能够知晓周期的大致区间,所以,直接把不良数据点过滤掉即可。

        ad采样的部分,很明显是在中断处理函数中直接操作的,这部分逻辑要精简再精简,为将来的更高速的ad采样预留空间。

3.编码

 3.1 过零点的跳变估算。

注意,标准的正弦函数sinx/x = 1,我们可以利用这个特性,在幅度轴和时间轴产生伸缩的情况下,估算出过零点的导数(斜率):

def get_dtOfAd_cross_zero(ad_pkpk, pt_of_cycle, sample_rate_of_pt_inHz, sample_rate_to_sample_inHz):
    span_x_of_std_sin = math.pi*2;
    span_y_of_std_sin = 1.0;
    current_span_of_x = pt_of_cycle;
    current_span_of_y = ad_pkpk;
    curent_slop = 1.0*(ad_pkpk/span_y_of_std_sin)*(span_x_of_std_sin/current_span_of_x)
    return curent_slop*sample_rate_of_pt_inHz/sample_rate_to_sample_inHz;

 3.2 其他的部分逻辑较容易推导,从略。

  注意在处理沿儿时,可以排序后再丢弃数据,更快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子正

thanks, bro...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值