你的位置:首頁 > 測試測量 > 正文

敲擊揚(yáng)聲器震動(dòng)信號(hào)建模

發(fā)布時(shí)間:2023-07-27 來源:TsinghuaJoking 責(zé)任編輯:wenwei

【導(dǎo)讀】揚(yáng)聲器震動(dòng)的頻率特性可以通過敲擊它所獲得的沖激響應(yīng)來分析。?原本驅(qū)動(dòng)揚(yáng)聲器紙盆震動(dòng)的線圈此時(shí)可以用作震動(dòng)傳感器, 它將紙盆的震動(dòng)速度轉(zhuǎn)換成電壓信號(hào)。?通過示波器可以采集到這個(gè)信號(hào), ?本文將對(duì)敲擊揚(yáng)聲器所產(chǎn)生的震動(dòng)信號(hào)進(jìn)行觀察建模。


一、前言


揚(yáng)聲器震動(dòng)的頻率特性可以通過敲擊它所獲得的沖激響應(yīng)來分析。?原本驅(qū)動(dòng)揚(yáng)聲器紙盆震動(dòng)的線圈此時(shí)可以用作震動(dòng)傳感器, 它將紙盆的震動(dòng)速度轉(zhuǎn)換成電壓信號(hào)。?通過示波器可以采集到這個(gè)信號(hào), ?本文將對(duì)敲擊揚(yáng)聲器所產(chǎn)生的震動(dòng)信號(hào)進(jìn)行觀察建模。


1.jpg


二、敲擊揚(yáng)聲器

??

使用示波器連接揚(yáng)聲器的引線, 敲擊揚(yáng)聲器可以看到振動(dòng)的波形。?不同的敲擊力度和部位, 對(duì)應(yīng)的震動(dòng)還是有些區(qū)別。?示波器的探頭直接連接到揚(yáng)聲器的音圈輸出端口, 中間沒有施加任何信號(hào)放大電路。?這樣采集到的電壓信號(hào)反映了揚(yáng)聲器的單位沖激響應(yīng)。


2.jpg

??

為了便于分析,使用小型改錐敲擊揚(yáng)聲器紙盆中心,獲得了這樣一個(gè)簡單衰減振蕩波形。?選擇其中三個(gè)周期過零點(diǎn),?查看它們之間的時(shí)間差,?大約為19.5毫秒,?它的倒數(shù)對(duì)應(yīng)51.3Hz。?由于這是三個(gè)振蕩周期,所以原波形的振蕩頻率為153.9Hz。


1687751338231450.png

??

為了進(jìn)一步精確估計(jì)衰減振蕩波形參數(shù), 通過Python編程,從示波器讀取波形數(shù)據(jù)。?這是對(duì)讀取數(shù)據(jù)顯示的波形。?對(duì)原始示波器采集到的數(shù)據(jù)進(jìn)行50個(gè)數(shù)據(jù)點(diǎn)的平均, 獲得更加光滑的信號(hào)波形。


#!/usr/local/bin/python

# -*- coding: gbk -*-

#******************************

# TEST1.PY                     -- by Dr. ZhuoQing 2023-03-01

#

# Note:

#******************************

from headm import *

from tsmodule.tsvisa        import *

mso24open()

x,y = mso24read(1)

tspsave('wave1', x=x, y=y)

plt.plot(x, y)

plt.xlabel("Time(s)")

plt.ylabel("Voltage(V)")

plt.grid(True)

plt.tight_layout()

plt.show()

#------------------------------------------------------------

#        END OF FILE : TEST1.PY

#******************************


1687751325376022.png

▲ 圖1.2.1 敲擊揚(yáng)聲器中間獲得的波形


1687751316415239.png

▲ 圖1.2.2 50個(gè)數(shù)據(jù)進(jìn)行平滑之后的波形


三、信號(hào)建模

??

下面通過曲線擬合方式對(duì)揚(yáng)聲器振動(dòng)信號(hào)進(jìn)行建模。?由于信號(hào)前面的波形受到敲擊的影響, 所以并不純粹是揚(yáng)聲器自由響應(yīng)。?截取時(shí)間大于7毫秒之后的波形進(jìn)行處理。?這是揚(yáng)聲器在敲擊后7毫秒之后的震動(dòng)信號(hào)波形。?它是一個(gè)指數(shù)衰減振蕩信號(hào)。?可以使用一個(gè)帶有五個(gè)參數(shù)的函數(shù)表示。?通過Python編程, ?利用其中的曲線擬合工具來估計(jì)波形參數(shù)。?


下面是程序擬合過程。?定義帶有五個(gè)參數(shù)的指數(shù)衰減函數(shù),?根據(jù)觀察到的波形,初步估計(jì)函數(shù)的五個(gè)參數(shù)的初始值,調(diào)用曲線擬合函數(shù),?顯示獲得擬合參數(shù)。?利用這些參數(shù)計(jì)算出擬合曲線,并進(jìn)行繪制。?下面分析一下擬合結(jié)果。?這是五個(gè)信號(hào)參數(shù)擬合數(shù)值,?其中參數(shù)C代表著振蕩角頻率。?通過它,?可以計(jì)算出振蕩頻率 f0。?f0 等于 161.2 赫茲。?


這里將原始波形和擬合曲線波形繪制在一起, 可以看到擬合參數(shù)的有效性。?利用測量波形進(jìn)行曲線擬合,所獲得的頻率值應(yīng)該比前面觀察到曲線過零點(diǎn)所獲得頻率更加準(zhǔn)確。


1687751301744108.png

▲ 圖1.2.3 曲線擬合后的結(jié)果


1687751290495758.png

▲ 圖1.3.2 信號(hào)波形擬合函數(shù)以及對(duì)應(yīng)的參數(shù)


#!/usr/local/bin/python

# -*- coding: gbk -*-

#******************************

# TEST2.PY                     -- by Dr. ZhuoQing 2023-03-01

#

# Note:

#******************************

from headm import *

from scipy.optimize        import curve_fit

x, y = tspload('wave1', 'x', 'y')

printf(len(x), len(y))

AVERAGE_NUM = 50

DATA_LENGTH = len(x)//AVERAGE_NUM

xx = array([sum(x[i*AVERAGE_NUM:i*AVERAGE_NUM+AVERAGE_NUM])/AVERAGE_NUM*1e3 for i in range(DATA_LENGTH)])

yy = array([sum(y[i*AVERAGE_NUM:i*AVERAGE_NUM+AVERAGE_NUM])/AVERAGE_NUM for i in range(DATA_LENGTH)])

c = where(xx>5)

xxx = xx[c]/1000

yyy = yy[c]

tspsave('wave11', xxx=xxx, yyy=yyy)

#------------------------------------------------------------

'''

plt.plot(xxx, yyy)

plt.xlabel("Time(s)")

plt.ylabel("Voltage(V)")

plt.grid(True)

plt.tight_layout()

plt.show()

'''

#------------------------------------------------------------

def fun(x,a,b,c,d,e):

    return a*exp(-b*x)*sin(c*x+d)+e

param = (1, 50, 2*pi*150, 0, 0)

param, conv = curve_fit(fun, xxx, yyy, p0=param)

printf(param)

ysim = fun(xxx, *param)

plt.plot(xxx, yyy, linewidth=3, label='Origin')

plt.plot(xxx, ysim, label='Fit')

plt.xlabel("Time(s)")

plt.ylabel("Voltage(V)")

plt.grid(True)

plt.legend(loc="upper right")

plt.tight_layout()

plt.show()

#------------------------------------------------------------

#        END OF FILE : TEST2.PY

#******************************

下面是文件 headm.py 的內(nèi)容:


import sys, os

sys.path.append(r'd:\python\teasoft')

STDFILE = open(r'd:\python\std.txt', 'a', 1)

sysstderr = sys.stderr

sysstdout = sys.stdout

sys.stderr = STDFILE

sys.stdout = STDFILE


from threading import Thread

import time, math, winsound, clipboard, random

from numpy import *


from tsmodule.tspdata   import *

from tsmodule.tspyt     import *

from tsmodule.tscmd     import *

from tsmodule.tsdopop   import *

from tsmodule.tsdraw    import *

import tsmodule.tsconfig

import matplotlib.pyplot as plt


plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(10,80*10/128))

plt.get_current_fig_manager().window.wm_geometry("+1950+300")

plt.rcParams.update({'font.size':14})


總結(jié)

??

本文通過示波器觀察并獲取了一種小型揚(yáng)聲器敲擊信號(hào)。該信號(hào)反映了揚(yáng)聲器的沖激響應(yīng)。?后面通過信號(hào)擬合進(jìn)行數(shù)學(xué)建模,?為之后對(duì)揚(yáng)聲器的頻率特性進(jìn)一步分析打下基礎(chǔ)。


作者:卓晴



免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)聯(lián)系小編進(jìn)行處理。


推薦閱讀:


輔助駕駛毫米波雷達(dá)信號(hào)處理流程詳解

中國移動(dòng)李晗:今年底將集采400G,推動(dòng)400G進(jìn)入商用階段

支持高速高精度控制和EtherCAT通信的RZ/T2L MPU

用于SiC MOSFET的隔離柵極驅(qū)動(dòng)器使用指南

產(chǎn)線能否持續(xù)運(yùn)轉(zhuǎn)?這個(gè)低調(diào)的器件說了算!

特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
共模電感 固態(tài)盤 固體繼電器 光傳感器 光電池 光電傳感器 光電二極管 光電開關(guān) 光電模塊 光電耦合器 光電器件 光電顯示 光繼電器 光控可控硅 光敏電阻 光敏器件 光敏三極管 光收發(fā)器 光通訊器件 光纖連接器 軌道交通 國防航空 過流保護(hù)器 過熱保護(hù) 過壓保護(hù) 焊接設(shè)備 焊錫焊膏 恒溫振蕩器 恒壓變壓器 恒壓穩(wěn)壓器
?

關(guān)閉

?

關(guān)閉