直线轨道上声音延迟信号分析

利用滑轨测量不同位置下发送信号与接收信号之间的试验延迟,从而确定距离。通过分析评价这种测量方法的有效性。

数据的来源

数据时通过基于STM32F103RE的AD、DA1采样板来控制音响发送Chirp声音信号和采集MIC接收到的声音信号的。

数据采样系统

演示中所使用的滑轨长度大约为1米,滑块有效移动距离为0.9米。通过ZIGBEE无线控制命令控制滑块做直线均匀运动。

设置在滑轨上的声音传感器

设置在滑轨上的声音传感器

实验中的声音信号是由单片机产生并通过DA输出给蓝牙音箱的。
声音DA,AD转换速率为10kHz。输出声音的缓存区的长度为2500,所以发省的时间为250ms。

实际声音的长度为2048,。因此在输出和采样前后各有250个数据点(大约25ms)左右时静止的声音。

初始化声音输出缓冲区的代码如下。

//------------------------------------------------------------------------------
void InitDACBuffer(float fStartF, float fEndF) {
    float fAngle = 0;
    float fFrequency;
    float fDeltaT = 1.0 / DAC_OUTPUT_FREQUENCY;
    
    int i;
    int nStartID = 250;
    for(i = 0; i < DAC_BUFFER; i ++) g_nDACBuffer[i] = 0x7ff;
    
    for(i = 0; i < DAC_BUFFER - nStartID * 2; i ++) {
        
        g_nDACBuffer[i + nStartID] = (unsigned short)((sin(fAngle * 2 * 3.1415926) + 1.0) / 2 * 0xcff);
       
        
        fFrequency = (fEndF - fStartF) * (i + 1) / DAC_BUFFER + fStartF;
        fAngle += fFrequency * fDeltaT;
    }
}

发送和接收信号的波形见下一节“数据的格式”中的显示。

实验中测试面包板

实验中测试面包板

数据的格式

每个包里的数据波形包含有三个部分:第一部分包括有发送Chirp信号的最高频率和最低频率;第二部分是发送信号的波形;第三部分是接收信号的波形。

总共采集到100个不同位置下接收和发送信号的数据包。
每个数据包里的数据波形

每个数据包里的数据波形

发送和接收数据之间的互相关系数计算

计算每个数据包里的发送信号与接收信号之间的相关系数。从而确定最大的峰值位置:
第一个数据包中发送和接收数据之间的相关系数

第一个数据包中发送和接收数据之间的相关系数

具体计算相关系数处理算法如下面函数所示:

def procdatacor(send, rece):
    sm = mean(send)
    rm = mean(rece)

    send = [d - sm for d in send]
    rece = [d - rm for d in rece]

    sendspace = zeros(len(send) * 3)
    sendspace[len(send):len(send) * 2] = send

    corrdim = []
    for i in range(len(send)*2):
        recespace = zeros(len(rece) * 3)
        recespace[i:i+len(send)] = rece

        cor = corrcoef(sendspace, recespace)
        corrdim.append(cor[0][1])

    plt.plot(corrdim)
    plt.show()

相关系数的最大、最小位置与数据采样之间的关系

下图将每个数据包中相关系数的最大值点和最小值点的位置与数据采样点之间的绘制出来。随着数据序号的增多,对应接收声音的MIC位置原理音箱,相关系数的极值位置也在发生变化。基本上都是随着采用序列的增多而线性下降,反映了MIC的位置是线性原理声源的位置。
相关系数最大值最小值的位置与数据采用之间的关系

相关系数最大值最小值的位置与数据采用之间的关系

数据中最大值的位置基本上都是单调下降,只是在后期出现了略微的抖动。但是最小值的位置出现过较大的波动。这说明最大值的位置用于确定延迟时间比较稳定。

下图显示了相关系数最大值和最小值随着采样点位置之间的关系。随着采样点增多,音箱和麦克风之间的距离增加。相关系数的绝对值因为噪声的原因都会下降。整体上极大值点的相关系数呈现单调下降的趋势,而极小值点的数值变化呈现非单调的形态。这也从另外一个角度反映了为什么前面相关系数极小值点的位置出现抖动的原因。
相关系数最大值和最小值与采样位置之间的关系

相关系数最大值和最小值与采样位置之间的关系

具体的数据在下面定义了。

maxvalue=[0.7830,0.7758,0.7729,0.7731,0.7668,0.7503,0.7751,0.7730,0.7782,0.7841,0.7473,0.7684,0.7714,0.7810,0.7877,0.7650,0.7608,0.7586,0.7632,0.7755,0.7584,0.7354,0.7355,0.7503,0.7597,0.7407,0.7111,0.7127,0.7282,0.7056,0.6768,0.6750,0.6956,0.7098,0.6905,0.6499,0.6416,0.6548,0.6884,0.6835,0.6162,0.6260,0.6249,0.6479,0.6513,0.5953,0.6341,0.6276,0.6397,0.6343,0.5821,0.6108,0.6067,0.6363,0.6207,0.5704,0.5904,0.5966,0.6311,0.6203,0.5841,0.5858,0.6012,0.6215,0.6221,0.6285,0.6072,0.6119,0.6231,0.5891,0.6146,0.6173,0.6211,0.6334,0.6149,0.6397,0.6255,0.6275,0.6352,0.6065,0.6018,0.6299,0.6196,0.6091,0.6602,0.6016,0.6062,0.6008,0.6128,0.6453,0.6204,0.6204,0.5847,0.5804,0.6387,0.6203,0.6083,0.5967,0.5889,0.6316]
minvalue=[-0.6342,-0.6369,-0.6264,-0.6296,-0.6099,-0.6089,-0.6119,-0.6203,-0.6281,-0.6104,-0.6083,-0.5946,-0.5710,-0.5558,-0.5558,-0.5531,-0.5423,-0.5341,-0.5338,-0.5040,-0.4885,-0.4703,-0.4564,-0.4617,-0.4521,-0.4356,-0.4286,-0.4047,-0.3920,-0.3978,-0.3870,-0.3920,-0.3929,-0.3878,-0.3828,-0.3687,-0.4246,-0.4203,-0.3992,-0.3809,-0.4303,-0.4736,-0.4748,-0.4354,-0.3996,-0.4855,-0.5114,-0.5116,-0.4837,-0.4538,-0.5201,-0.5607,-0.5686,-0.5395,-0.5189,-0.5606,-0.5867,-0.5899,-0.5631,-0.5538,-0.6091,-0.6042,-0.6106,-0.5677,-0.5554,-0.6106,-0.6312,-0.6211,-0.5904,-0.5568,-0.5929,-0.6090,-0.6307,-0.6135,-0.5663,-0.5696,-0.6131,-0.6156,-0.6124,-0.5683,-0.5583,-0.5527,-0.5609,-0.6065,-0.6042,-0.5879,-0.5671,-0.5638,-0.5846,-0.6087,-0.5863,-0.5443,-0.5613,-0.5796,-0.6079,-0.6001,-0.5644,-0.5570,-0.5519,-0.5827]
maxpos=[2497.0000,2497.0000,2497.0000,2497.0000,2497.0000,2496.0000,2496.0000,2496.0000,2496.0000,2496.0000,2496.0000,2495.0000,2495.0000,2495.0000,2495.0000,2495.0000,2494.0000,2494.0000,2494.0000,2494.0000,2494.0000,2493.0000,2493.0000,2493.0000,2493.0000,2493.0000,2492.0000,2492.0000,2492.0000,2492.0000,2492.0000,2491.0000,2491.0000,2491.0000,2491.0000,2491.0000,2490.0000,2490.0000,2490.0000,2490.0000,2490.0000,2489.0000,2489.0000,2489.0000,2489.0000,2488.0000,2488.0000,2488.0000,2488.0000,2488.0000,2487.0000,2487.0000,2487.0000,2487.0000,2487.0000,2486.0000,2486.0000,2485.0000,2486.0000,2486.0000,2485.0000,2484.0000,2484.0000,2485.0000,2485.0000,2484.0000,2483.0000,2483.0000,2484.0000,2484.0000,2483.0000,2483.0000,2482.0000,2483.0000,2483.0000,2482.0000,2482.0000,2481.0000,2482.0000,2482.0000,2481.0000,2481.0000,2481.0000,2481.0000,2481.0000,2481.0000,2480.0000,2480.0000,2480.0000,2480.0000,2480.0000,2479.0000,2479.0000,2479.0000,2479.0000,2479.0000,2478.0000,2478.0000,2478.0000,2478.0000]
minpos=[2492.0000,2492.0000,2492.0000,2492.0000,2492.0000,2492.0000,2491.0000,2491.0000,2491.0000,2491.0000,2491.0000,2491.0000,2491.0000,2491.0000,2490.0000,2490.0000,2490.0000,2490.0000,2490.0000,2490.0000,2489.0000,2489.0000,2489.0000,2489.0000,2489.0000,2488.0000,2488.0000,2488.0000,2488.0000,2482.0000,2482.0000,2486.0000,2486.0000,2486.0000,2481.0000,2482.0000,2484.0000,2484.0000,2485.0000,2485.0000,2484.0000,2483.0000,2483.0000,2483.0000,2483.0000,2482.0000,2482.0000,2482.0000,2482.0000,2482.0000,2481.0000,2481.0000,2481.0000,2481.0000,2481.0000,2481.0000,2480.0000,2480.0000,2480.0000,2480.0000,2480.0000,2480.0000,2479.0000,2479.0000,2479.0000,2479.0000,2479.0000,2479.0000,2479.0000,2479.0000,2478.0000,2478.0000,2478.0000,2478.0000,2478.0000,2477.0000,2477.0000,2477.0000,2477.0000,2477.0000,2476.0000,2476.0000,2476.0000,2476.0000,2476.0000,2476.0000,2475.0000,2475.0000,2475.0000,2475.0000,2475.0000,2474.0000,2474.0000,2474.0000,2474.0000,2474.0000,2473.0000,2473.0000,2473.0000,2473.0000]

分析相关峰值位置的变化与采样距离之间的关系

对于相关系数最大值峰值点的变化从开始的 p 1 = p_1 = 2497,一直变化到最后的 p 2 = p_2 = 2473。变化的数值: p 1 p 2 = p_1 - p_2 = 24。

由于实验中声音信号的采集频率 f s = 10 , 000 f_s = 10,000 Hz,所以上述峰值位置的变化所对应的时间延迟为: Δ t = p 1 p 2 f s = 24 10 × 1 0 3 = 2.4    ( m s ) \Delta t = {{p_1 - p_2 } \over {f_s }} = {{24} \over {10 \times 10^3 }} = 2.4\,\,\left( {ms} \right)
如果考虑到当时的室温为25℃左右,对应的空气中声音传播的速度: v a i r = 331 + 0.6 × T = 331 + 0.6 × 25 = 346    ( m / s ) v_{air} = 331 + 0.6 \times T = 331 + 0.6 \times 25 = 346 \:\:(m/s)

那么前面 Δ t \Delta t 所对应的距离为: D = Δ t × v a i r = 2.4 × 1 0 3 × 346 = 0.83    ( m ) D = \Delta t \times v_{air} = 2.4 \times 10^{ - 3} \times 346 = 0.83\:\:(m)

测量接收声音的MIC实际移动的距离为0.671米。这中间出现了 χ = 0.83 0.671 0.671 × 100 % = 23.7 % \chi = {{0.83 - 0.671} \over {0.671}} \times 100\% = 23.7\% 的误差。

具体为什么?现在我还不可得而知。

实际接收声音的MIC移动的距离

测量实际接收声音的MIC移动的距离


  1. AD\DA采样板的设计说明:https://blog.csdn.net/zhuoqingjoking97298/article/details/104180878 ↩︎

发布了257 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zhuoqingjoking97298/article/details/104206365